斯坦福依赖分析器设置和NLTK

2024-05-16 03:38:13 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,感谢danger89对上一篇文章Stanford Parser and 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神经依赖性解析器,如这里的文档所示导入它:http://www.nltk.org/_modules/nltk/parse/stanford.html

这个也没用。

对NLTK来说很陌生。提前感谢您的帮助。


Tags: pathimportparser解析器parseosenvironjava
2条回答

如果您只更改了'StanfordDependencyParser'和错误状态:module' object has no attribute 'StanfordDependencyParser',我会假设StanfordDependencyParser是错误的更改。你把所有链接到的代码都一字不差地复制了吗?

StanfordDependencyParserAPI是自NLTK 3.1版以来创建的一个新类对象。

确保通过pip获得最新的NLTK

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'])])]

(注意:确保获得jar的路径并且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

相关问题 更多 >