今天發現一個不用npl實現分詞的方法
jieba分詞
全自動安裝:
pip install jieba (window環境)
pip3 install jieba (Linux環境)
-
首先進行將語句轉換為UTF-8或者GBK。
-
然後根據使用者指定的模式,是否全模式,是否採用HMM隱馬爾科夫,來設定cut方式。
-
然後根據正則,將輸入文字分為一個個語句。
-
最後遍歷語句,對每個語句單獨進行分詞。
def calc(self, sentence, DAG, route): N = len(sentence) route[N] = (0, 0) logtotal = log(self.total) for idx in xrange(N - 1, -1, -1): # route[idx] = (該漢字到最後一個漢字的最大路徑機率, # 最大路徑機率時該漢字對應的詞語結束位置). # 遍歷DAG中該漢位元組點的結束位置,也就是DAG[idx], # 計算idx到x之間構成的詞語的機率,然後乘以x到語句結束位置的最大機率, # 即可得到idx到語句結束的路徑最大機率. route[idx] = max( (log(self.FREQ.get(sentence[idx:x + 1]) or 1) - log(total) + route[x + 1][0] , x) for x in DAG[idx]) # 每個詞的機率 = 字典中該詞的詞數 / 字典總詞數。