记stanford-corenlp的使用

本文主要参考https://zhuanlan.zhihu.com/p/42200126解决了我的问题。

首先一定要下载正确包,我之前下载的是stanford-parser-full-2016-10-31这个,虽然也可以做依存句法分析,但不是我要的内容(害,就是想修改数据集,复现论文发现不行)。困了两天,发现正确的包应该是stanford-corenlp-full-2016-10-31。然后再将中文包下载好放到前面corenlp那个包中,就可以啦。

存在的问题是,用之前的parser包,下面的代码一直在运行(几个小时),但也不报错,修改了corenlp.py中的post端口也不行。使用命令行 java -mx1g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9011 -timeout 1500也不行,报错找不到加载主类。

from stanfordcorenlp import StanfordCoreNLP

#nlp = StanfordCoreNLP(r'./stanford-parser/', lang='zh')  ##之前搞错的
nlp = StanfordCoreNLP(r'./stanford-corenlp/', lang='zh')

sent = "哈尔滨是黑龙江的省会"

#print(nlp.parse(sent))
print(nlp.ner(sent))
print(nlp.dependency_parse(sent))
nlp.close()

一定要安装正确的包!!!

然后就出现了一个小问题---无法显示中文,如[(' ', 'DATE'), (' ', 'O')]。

解决方法:找到安装的stanford CoreNLP包下的corenlp.py文件,找到对应的方法ner();word_tokenize();pos_tag() 将方法中出现的token['originalText']改为token['word']

原文地址:https://www.cnblogs.com/harbin-ho/p/13713284.html