1. 相关配置版本
配置 | 版本 |
---|---|
python | 3.9.6 |
pyltp | 0.4.0 |
LTP | 3.4.0 |
2. 原因分析
pyltp 0.4.0不支持 segmentor = pyltp.Segmentor()
写法,改为 pyltp.Segmentor(model_path)
,如下:
def cut_words(words):
seg_model_path = os.path.join(LTP_DATA_DIR, 'cws.model')
segmentor = pyltp.Segmentor(seg_model_path)
words = segmentor.segment(words)
array_str="|".join(words)
print("array_str:")
array=array_str.split("|")
segmentor.release()
print(array)
return array
改完这里之后程序应该不会报错了,但是可能会终止运行,原因是下面postagger有一个类似segmentor的错误,但它不会报错,直接中断程序,改正后如下:
def words_mark(array):
# 词性标注模型路径,模型名称为`pos.model`
pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model')
postagger = pyltp.Postagger(pos_model_path) # 初始化实例
# postagger.load(pos_model_path) # 加载模型
postags = postagger.postag(array) # 词性标注
pos_str=' '.join(postags)
pos_array=pos_str.split(" ")
postagger.release() # 释放模型
return pos_array