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 было неправильно менять его на. Вы скопировали весь код, который вы связали с дословно?

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