导入斯坦福词性标注器到nltk时遇到问题

1 投票
2 回答
7227 浏览
提问于 2025-04-17 01:46

这可能是个很简单的问题。我想通过nltk使用斯坦福的词性标注器,具体信息可以在这里找到。问题是我的nltk库里没有斯坦福模块。所以我把它复制到了正确的文件夹里,并进行了编译。现在,当我尝试运行一个示例时,模块能被找到,但模块里的类却找不到。有人能告诉我我哪里出错了吗?我觉得这可能很傻。

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

我用py_compile编译了stanford.py文件。我是不是漏掉了什么?

2 个回答

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(',', [',']), Tree('NP', [Tree('PRP$', ['My']), Tree('NN', ['name'])]), Tree('VP', [Tree('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: 在这个例子中,解析器和模型的文件都在同一个文件夹里。

注意 2:

  • 斯坦福解析器的文件名是:stanford-parser.jar
  • 斯坦福模型的文件名是:stanford-parser-x.x.x-models.jar

注意 3: englishPCFG.ser.gz 文件可以在模型.jar 文件里找到(路径是 /edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz)。请使用一些解压软件来“解压”模型.jar 文件。

3

你现在只是在引入 stanford 这个库。如果想要使用 StanfordTagger,你需要用以下两种方式之一:

>>> from nltk.tag.stanford import StanfordTagger

(假设 `StanfordTagger` 没有在其他模块里嵌套)或者通过下面的方式来访问它:

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

撰写回答