2015-12-02 2 views
4

Итак, я получил «стандартный» Stanford Parser для работы благодаря ответам danger89 на этот предыдущий пост, Stanford Parser and NLTK.Stanford Dependency Parser Setup и NLTK

Однако теперь я пытаюсь заставить анализатор зависимостей работать, и кажется, что метод, выделенный в предыдущей ссылке, больше не работает. Вот мой код:

import nltk 
import os 
java_path = "C:\\Program Files\\Java\\jre1.8.0_51\\bin\\java.exe" 
os.environ['JAVAHOME'] = java_path 


from nltk.parse import stanford 
os.environ['STANFORD_PARSER'] = 'path/jar' 
os.environ['STANFORD_MODELS'] = 'path/jar' 
parser = stanford.StanfordDependencyParser(model_path="path/jar/englishPCFG.ser.gz") 

sentences = parser.raw_parse_sents(nltk.sent_tokenize("The iPod is expensive but pretty.")) 

Я получаю следующее сообщение об ошибке: «модуль» объект не имеет атрибута «StanfordDependencyParser»

Единственное, что я изменил был «StanfordDependencyParser» от «StanfordParser». Любые идеи, как я могу заставить это работать?

Я также попытался парсер Stanford Neural зависимостями, импортируя его, как показано в документации здесь: http://www.nltk.org/_modules/nltk/parse/stanford.html

Это одна не работает.

Довольно новый для NLTK. Заранее благодарим за любой полезный ввод.

+0

Каков ваш вывод для импорта python -c nltk; print nltk .__ version __ "'? – alvas

ответ

0

Если единственное, что вы изменили, это «StanfordDependencyParser» и ошибка: module' object has no attribute 'StanfordDependencyParser' Я бы предположил, что StanfordDependencyParser было неправильным, чтобы изменить его. Вы скопировали весь код, связанный со стенографией?

+0

Я надеялся, что это тоже просто, но документация из http://www.nltk.org/_modules/nltk/parse/stanford.html, похоже, указывает, что StanfordDependencyParser существует. Мне интересно, нужно ли мне изменить этот оператор импорта: «from nltk.parse import stanford» – Max

5

API StanfordDependencyParser - это новый объект класса, созданный с версии 3.1 NLTK.

Убедитесь, что у вас есть последние NLTK доступны либо через пип

или через ваш менеджер пакетов Linux, например:

sudo apt-get python-nltk 

или в окнах, скачать https://pypi.python.org/pypi/nltk и установить, и он должен переписать вашей предыдущей версии NLTK.

Затем вы можете использовать API, как показано в документации:

from nltk.parse.stanford import StanfordDependencyParser 
dep_parser=StanfordDependencyParser(model_path="edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz") 
print [parse.tree() for parse in dep_parser.raw_parse("The quick brown fox jumps over the lazy dog.")] 

[выход]:

[Tree('jumps', [Tree('fox', ['The', 'quick', 'brown']), Tree('dog', ['over', 'the', 'lazy'])])] 

(Примечание: Убедитесь, что вы получите ваш путь к банку и os.environ правильно, в Windows, это something\\something\\some\\path, в unix это something/something/some/path)

См. Также https://github.com/nltk/nltk/wiki/Installing-Third-Party-Software#stanford-tagger-ner-tokenizer-and-parser и когда вам нужно решение TL; DR, см. https://github.com/alvations/nltk_cli

+0

Это работало после того, как я заново установил Spyder и заново установил NLTK. Я запускал оба Python2 и Python3 для какой-то другой работы и я думаю, что установка была «запутана». Спасибо! – Max

+1

Вы заметите, что после обновления вашего NLTK до версии v3.1 код @ danger89 больше не будет работать. Ознакомьтесь с обновленными ответами на http://stackoverflow.com/questions/13883277/stanford-parser-and-nltk – alvas

Смежные вопросы