Python NLTK Сделать корпус из ZIP-файлов
Я пытаюсь создать свой собственный корпус в НЛТК из ок. 200 тыс. Текстовых файлов, каждый из которых хранится в собственной папке zip. Это выглядит следующим образом:
- Parent_dir
- text1.zip
- text1.txt
- text1.zip
Я использую следующий код и пытаюсь получить доступ ко всем текстовым файлам из родительского каталога:
from nltk.corpus.reader.plaintext import PlaintextCorpusReader corpus_path="parent_dir" corpus=PlaintextCorpusReader(corpus_path,".*") file_ids=corpus.fileids() print(file_ids)
Но Python просто возвращает пустой список, потому что он, вероятно, не может получить доступ к текстовым файлам из-за архивирования. Есть ли простой способ это исправить? К сожалению, я не могу разархивировать файлы из-за размера файлов.
1 ответ
Если все, что вы пытаетесь сделать, это получить идентификаторы файлов, просто используйте модуль 'glob', который не заботится о типах файлов.
Импортируйте модуль (если у вас его нет, pip install glob
):
from glob import glob
Получите ваш каталог использовать *
в качестве подстановочного знака, чтобы получить все в каталоге:
directory = glob('/path/to/your/corpus/*')
glob()
Метод возвращает список строк (в данном случае это пути к файлам).
Вы можете просто перебрать их, чтобы напечатать имя файла:
for file in directory:
print(file)
Эта статья выглядит как ответ на ваш вопрос о чтении содержимого zip-файла: Как читать текстовые файлы в zip-папке в Python
Я думаю, что сочетание этих методов дает ответ на вашу проблему.
Удачи!