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