Я только начал работать с nltk, и мне трудно получить модуль согласования для работы с условными переменными. Я хотел бы вернуть согласование для любого данного слова в латинском тексте, но поскольку язык изменен, я хочу иметь возможность указывать стебель, идентифицировать любое слово в корпусе, содержащем основу, и возвращать согласование для этого , Код я использую:Использование условных переменных с модулем согласования nltk
book1 = open('Book1.txt', 'rU').read()
token1 = nltk.word_tokenize(book1)
text1 = nltk.Text(token1)
word = raw_input("What stem do you want to search?\n > ")
text1.concordance([w for w in text1 if w.startswith(word)])
Который возвращает ошибку:
Traceback (most recent call last):
File "C:\Users\admin\Desktop\start_nltk_horace.py", line 68, in <module>
concordance()
File "C:\Users\admin\Desktop\start_nltk_horace.py", line 49, in concordance
text1.concordance([w for w in text1 if w.startswith(word)])
File "C:\Python27\lib\site-packages\nltk\text.py", line 314, in concordance
self._concordance_index.print_concordance(word, width, lines)
File "C:\Python27\lib\site-packages\nltk\text.py", line 177, in print_concordance
offsets = self.offsets(word)
File "C:\Python27\lib\site-packages\nltk\text.py", line 156, in offsets
word = self._key(word)
File "C:\Python27\lib\site-packages\nltk\text.py", line 312, in <lambda>
key=lambda s:s.lower())
AttributeError: 'list' object has no attribute 'lower'
Просто указав text1.concordance(word)
возвращает то, что я ищу без каких-либо проблем (при условии ввода я полностью отказался-слово) , но я должен был бы повторить функцию шесть-х раз, чтобы получить согласование для всех разных выражений слова.
Это сработало отлично, спасибо большое! – Faulconbridge