import jiebafrom nltkparse import stanfordimport os#分词#string = 东京2020年奥运会组委会和国际奥委会达成协议with opendUsersAdministratorDesktopdatacorpustxtencoding=utf-8 as f string = fread fcloseseg_list = jiebacu
出错的原因是找不到Stanford Parser的jar文件。在代码中,指定了parser_path为'./data/stanford-parser.jar',但实际上该路径下并没有stanford-parser.jar文件。
为了解决这个问题,可以按照以下步骤进行操作:
- 下载Stanford Parser的压缩包,可在官网(https://nlp.stanford.edu/software/lex-parser.shtml)上找到。
- 解压缩该压缩包,在解压后的文件夹中找到
stanford-parser.jar文件。 - 将
stanford-parser.jar文件拷贝到指定的路径'./data/stanford-parser.jar'下。
更改后的代码如下:
import jieba
from nltk.parse import CoreNLPParser
# 分词
with open('d:/Users/Administrator/Desktop/data/corpus.txt', encoding='utf-8') as f:
string = f.read()
f.close()
seg_list = jieba.cut(string, cut_all=False, HMM=True)
seg_str = '/'.join(seg_list)
print(seg_str)
# 进行基于PCFG的句法分析
parser = CoreNLPParser(url='http://localhost:9000')
sentence = parser.raw_parse(seg_str)
for line in sentence:
print(line.leaves())
line.draw()
上述代码使用了NLTK库的CoreNLPParser类替代了StanfordParser类,并且使用了Stanford CoreNLP服务器进行句法分析。在代码中,url参数指定了CoreNLP服务器的地址和端口号(默认为http://localhost:9000)。在运行代码之前,需要先启动CoreNLP服务器,具体操作可以参考NLTK官方文档(https://www.nltk.org/_modules/nltk/parse/corenlp.html)。
原文地址: http://www.cveoy.top/t/topic/ja31 著作权归作者所有。请勿转载和采集!