python 调用 Stanford NLP 的问题

时间:2021-03-31 18:13:40

参考资料:http://www.it165.net/pro/html/201611/76661.html

说明操作的环境:系统是Ubuntu 16.04, IDE 采用Pycharm

1. 英语句子的词性标记

需要的操作步骤:在stanford NLP网页下载 stanford-postagger-2015-12-09.zip 抽取(解压)后文件夹为stanford-postagger-2015-12-09, 在主文件夹下新建nlpTools/stanfordNLTK文件夹, 将stanford-postagger-2015-12-09 下文件models和stanford-postagger-3.6.0.jar放到文件夹stanfordNLTK下, 运行代码:


from nltk.tag import StanfordPOSTagger
model_filename='/home/ubuntu/nlpTools/stanfordNLTk/models/english-bidirectional-distsim.tagger'
path_to_jar='/home/ubuntu/nlpTools/stanfordNLTk/stanford-postagger.jar'
def getPos(sent):
eng_tagger = StanfordPOSTagger(model_filename, path_to_jar)
print(eng_tagger.tag(sent.split()))

if __name__ == '__main__':
getPos('I am a student.')

2. 英语句子的依存分析(解析的结果错误百出,还不太明白原因)

下载的stanford-parser-full-2015-12-09.zip 抽取 (解压)stanford-parser-full-2015-12-09, 进入该文件夹,将slf4j-api.jar,stanford-parser.jar 和 stanford-parser-3.6.0-models.jar 放到文件夹 stanfordNLTK 下, 在stanford-parser-full-2015-12-09 下解压(抽取)stanford-parser-3.6.0-models.jar 文件 为stanford-parser-3.6.0-models, 路径为stanford-parser-3.6.0-models/edu/stanford/nlp/odels/lexparser, 将该文件下的englishPCFG.ser.gz 放到 stanfordNLTK文件夹下, 运行代码:

from nltk.parse.stanford import StanfordDependencyParser

eng_parser = StanfordDependencyParser('/home/ubuntu/nlpTools/stanfordNLTk/stanford-parser.jar','/home/ubuntu/nlpTools/stanfordNLTk/stanford-parser-3.6.0-models.jar','/home/ubuntu/nlpTools/stanfordNLTk/englishPCFG.ser.gz')
res = list(eng_parser.parse('the quick brown fox jumps over the lazy dog'.split()))
for row in res[0].triples():
print(row)

运行的结果有错误:

python 调用 Stanford NLP 的问题

我将此句子放到:http://nlp.stanford.edu:8080/corenlp/process

python 调用 Stanford NLP 的问题

仔细观察可得,两个结果是不一致的,都是斯坦福的工具解析的结果,我不太明白错误在哪儿?

待明确后补充