Python NLTK Сделать корпус из ZIP-файлов

Я пытаюсь создать свой собственный корпус в НЛТК из ок. 200 тыс. Текстовых файлов, каждый из которых хранится в собственной папке zip. Это выглядит следующим образом:

  • Parent_dir
    • text1.zip
      • text1.txt

Я использую следующий код и пытаюсь получить доступ ко всем текстовым файлам из родительского каталога:

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

Я думаю, что сочетание этих методов дает ответ на вашу проблему.

Удачи!

Другие вопросы по тегам