Я много узнаю об обработке естественного языка с помощью nltk, могу многое сделать, но не могу найти способ читать тексты из пакета. Я пробовал такие вещи:

from nltk.book import *
text6 #Brings the title of the text
open(text6).read()
#or
nltk.book.text6.read()

Но, похоже, это не работает, потому что у него нет fileid. Кажется, никто раньше не задавал этот вопрос, поэтому я предполагаю, что ответ должен быть легким. Вы знаете, как читать эти тексты или как преобразовать их в строку? заранее спасибо

2
Juan C 14 Мар 2018 в 20:07

2 ответа

Лучший ответ

Давайте углубимся в код =)

Во-первых, код nltk.book находится на https: // github .com / nltk / nltk / blob / develop / nltk / book.py

Если присмотреться, тексты загружаются как объекты nltk.Text, например для text6 из https://github.com /nltk/nltk/blob/develop/nltk/book.py#L36:

text6 = Text(webtext.words('grail.txt'), name="Monty Python and the Holy Grail")

Объект Text взят из https: // github .com / nltk / nltk / blob / develop / nltk / text.py # L286, вы можете узнать больше о том, как его использовать, на http://www.nltk.org/book/ch02.html

webtext - это корпус из nltk.corpus, поэтому, чтобы перейти к необработанному тексту nltk.book.text6, вы можете загрузить веб-текст напрямую, например

>>> from nltk.corpus import webtext
>>> webtext.raw('grail.txt')

fileids появляется только тогда, когда вы загружаете объект PlaintextCorpusReader, а не из объекта Text (обработанный объект):

>>> type(webtext)
<class 'nltk.corpus.reader.plaintext.PlaintextCorpusReader'>
>>> for filename in webtext.fileids():
...     print(filename)
... 
firefox.txt
grail.txt
overheard.txt
pirates.txt
singles.txt
wine.txt
3
alvas 15 Мар 2018 в 09:48

Похоже, они уже разбили его на токены для вас.

from nltk.book import text6

text6.tokens
1
Jon 14 Мар 2018 в 18:19