1、 先描述下现象
>>> aa='北京时间月日晚刘强东的刑辩律师在接受澎湃新闻记者电话采访时表示刘强东涉嫌
强奸一案中的指控与证据是有出入的一旦调查结束证据将会披露给公众证明他是无罪的'
=======过滤词性,能识别“刘强东”
>>> ' '.join([k for k,w in analyse.extract_tags(aa,topK=2000,withWeight=True,allowPOS=('nr',))])
>>> '刘强东'
========未过滤词性,未能识别“刘强东”
>>> ' '.join([k for k,w in analyse.extract_tags(aa,topK=2000,withWeight=True)])
'刘强 证据 日晚 刑辩 新闻记者 澎湃 强奸 无罪 一案 指控 出入
涉嫌 律师 公众 采访 证明 将会 披露 电话 一旦 调查 结束
接受 北京 时间 表示'
>>>
2、 原因
analyse.extract_tags在判断是否过滤词性后,会选择不同的算法进行分词:
self.tokenizer = jieba.dt
self.postokenizer = jieba.posseg.dt
其实就是分词算法与词性标注算法,查了下说两者的原理都用到HMM与Viterbi算法,但是结果不一样,个人理解就是两个算法的训练集不一样。