[NLP 線上自學] D05 NLP 中文斷詞
本章節必須熟悉:
- 何謂斷詞
- 了解內部運算,並可實作斷詞
斷詞(Tokenize):這個動詞的意思就是希望可以將一個句子藉由工程方式,切割成一個一個的字元。
英文 (歐美語系) 和中文(東亞語系) 的斷詞有很大的差異,英文僅需利用空白自元就可輕易的將詞順利切割;但是中文無法這樣進行斷詞,又該如何進行切割?
目前常見的有三種斷詞方法:
- 基於辭典的分詞法:準備好詞典庫來匹配待訓練的文句。
- 基於統計的機器學習算法:HMM, CRF, SVM
- 基於深度學習的算法:雙向LSTM
目前最流行的中文斷詞是「結巴」,主要是基於傳統的機器學習來完成斷詞的。
結巴(Jieba)斷詞演算法,包含兩部分:
針對存在於字典的字詞:
- 根據字典產生Trie樹 (字典樹、字首術、前綴樹)
- 根據Trie樹建立給定輸入句的DAG (有向無環圖)
- 使用動態規劃(DP)找出最大機率路徑,此路徑即為基於詞頻最大的分詞結果
針對不存在於字典的字詞:
- 使用隱碼可夫模型 (HMM) 和維特比演算法 (Viterbi) 來進行分詞辨識