Stanford Dependency Parser Setup и NLTK
Так что я заставил работать "стандартный" Stanford Parser благодаря ответам danger89 на этот предыдущий пост, Stanford Parser и 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."))
Я получаю следующую ошибку: у объекта 'module' нет атрибута 'StanfordDependencyParser'
Единственное, что я изменил, это "StanfordDependencyParser" из "StanfordParser". Любые идеи, как я могу заставить это работать?
Я также попробовал анализатор Stanford Neural Dependency, импортировав его, как показано в документации здесь: http://www.nltk.org/_modules/nltk/parse/stanford.html
Этот тоже не сработал.
Довольно новый для НЛТК. Заранее спасибо за любой полезный вклад.
2 ответа
StanfordDependencyParser
API - это новый объект класса, созданный с версии NLTK 3.1.
Убедитесь, что у вас есть последняя версия NLTK, доступная через pip
pip install -U nltk
или через менеджер пакетов linux, например:
sudo apt-get python-nltk
или в windows загрузите 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
правильно, в винде это something\\something\\some\\path
в Unix это something/something/some/path
)
Смотрите также https://github.com/nltk/nltk/wiki/Installing-Third-Party-Software, а когда вам нужно решение TL;DR, смотрите https://github.com/alvations/nltk_cli
Если единственное, что вы изменили, это StanfordDependencyParser, и возникает ошибка: module' object has no attribute 'StanfordDependencyParser'
Я бы предположил, что StanfordDependencyParser
было неправильно менять его на. Вы скопировали весь код, который вы связали с дословно?