pylpt: segmentor = Segmentor() TypeError: __init__(): incompatible constructor argument终极解决方案

1. 相关配置版本

配置版本
python3.9.6
pyltp0.4.0
LTP3.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
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放学等我_红橙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值