关于分词后相同词性词语合并的方法

近日一项进行的工作中,需要判断一段文本中的实体名词。在操作过程中,发现网上没有对相同词性的词语进行合并的方法,比如我要将一句话中同为名词的词语给合并出来。
如,原句为“经刑侦总队核实,冻结原因涉及通州分局永顺派出所案件,非本人使用”
经分词的结果为“经 刑侦 总队 核实 , 冻结 原因 涉及 通州 分局 永顺 派出所 案件 ,非 本人 使用”
我想要的结果是将名词合并,即“经 刑侦总队 核实 , 冻结 原因 涉及 通州分局永顺派出所案件 ,非 本人 使用”

合并两个词语成为一个词语,在分词方法中可以建立词典,但是当面临大量的文本语料中是没有方法快速的建立所有名词组合的词典的,故放弃该方法

本人使用的分词方法为北大的pkuseg,需合并的词性为n-名词与j-简称,代码为:

import pkuseg
cixing = ['n','j']
seg1 = 	pkuseg.pkuseg(postag=True)
fenci_sentence = seg1.cut('经刑侦总队核实,冻结原因涉及通州分局永顺派出所案件,非本人使用')
Noun_aggregation = []
sum_noun = 0
sum_no_noun = 0
for i in range(0, len(fenci_sentence)):
    if i == 0:
        if any(e in fenci_sentence[0][1] for e in cixing) == True:
            sum_noun += 1
            Noun_aggregation.append(fenci_sentence[0][0])
        else:
            sum_no_noun += 1
            Noun_aggregation.append(fenci_sentence[0][0])
    else:
        if any(e in fenci_sentence[i][1] for e in cixing) != True:
            sum_no_noun +=1
            Noun_aggregation.append(fenci_sentence[i][0])
        elif any(e in fenci_sentence[i-1][1] for e in cixing) != True and any(e in fenci_sentence[i][1] for e in cixing) == True:        
            sum_noun += 1
            Noun_aggregation.append(fenci_sentence[i][0])
        else:
            Noun_aggregation[sum_noun + sum_no_noun - 1] = Noun_aggregation[sum_noun + sum_no_noun - 1] + fenci_sentence[i][0]
print(" ".join(Noun_aggregation))

输出结果为"经 刑侦总队 核实 , 冻结 原因 涉及 通州分局永顺派出所案件 , 非 本人 使用"

本人认为这种方法非常低效,这么多的判断条件o(╥﹏╥)o,肯定是不能大量应用的,自己之前数据结构的知识不是学的很好,这应该是属于遍历吧,但我没想到应该怎么用,所以也希望能够有网上的朋友分享下经验,优化上述的代码,非常非常感谢

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值