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算法,但是結果不一樣,個人理解就是兩個算法的訓練集不一樣。