1

这可能是一个非常琐碎的问题。我正在尝试通过此处给出的 nltk 使用 stanford pos tagger问题是我的 nltk 库不包含 stanford 模块。因此,我将其复制到相应的文件夹中并进行了相同的编译。现在,当我尝试运行一个示例时,模块被检测到,而不是模块内的类。谁能告诉我哪里出错了??同样,这可能非常愚蠢。

>>> from nltk.tag import stanford 
>>> st = StanfordTagger('bidirection-distsim-wsj-0-18.tagger')

我使用 py_compile 来编译 stanford.py 文件。我错过了什么吗

4

2 回答 2

3

您只是在导入stanford. 为了访问StanfordTagger,您需要使用以下任一项:

>>> from nltk.tag.stanford import StanfordTagger

(假设 `StanfordTagger 没有进一步嵌套在模块中)或通过以下方式访问它

>>> st = stanford.StanfordTagger('bidirection-distsim-wsj-0-18.tagger')
于 2011-09-08T08:13:28.967 回答
0

如果你想使用斯坦福解析器,使用这个:

import os
from nltk.parse import stanford
os.environ['STANFORD_PARSER'] = '/folder/with/standford/jars'
os.environ['STANFORD_MODELS'] = '/folder/with/standford/jars'

parser = stanford.StanfordParser(model_path="/location/of/the/englishPCFG.ser.gz")
print parser.raw_batch_parse(("Hello, My name is Melroy.", "What is your name?"))

输出:

[Tree('ROOT', [Tree('S', [Tree('INTJ', [Tree('UH', ['Hello'])]), Tree(',', [',']),树('NP',[树('PRP$',['My']),树('NN',['name'])]),树('VP',[树('VBZ',[ 'is']), Tree('ADJP', [Tree('JJ', ['Melroy'])])]), Tree('.', ['.'])])]), Tree(' ROOT', [Tree('SBARQ', [Tree('WHNP', [Tree('WP', ['What'])]), Tree('SQ', [Tree('VBZ', ['is' ]), Tree('NP', [Tree('PRP$', ['your']), Tree('NN', ['name'])])]), Tree('.', ['? '])])])]

注意 1: 在这个例子中,解析器和模型 jar 都在同一个文件夹中。

笔记2:

  • stanford解析器的文件名是:stanford-parser.jar
  • stanford 模型的文件名是:stanford-parser-xxx-models.jar

注 3: englishPCFG.ser.gz 文件可以在 models.jar 文件中找到(/edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz)。请使用来存档管理器“解压缩”models.jar 文件。

于 2014-03-08T12:55:40.987 回答