中文向量化處理比英文多了一個步驟,就是斷詞。
為什麼要多了斷詞這個步驟? 原因是英文的一個單字代表一個意思,比如 “traditional” 這一個單字的意思就是中文的 “傳統的”。英文只要一個單字 “traditional”,中文卻要用三個字來表示 “傳統的”。
把 “傳統的” 變成一個單字 (類似英文的一個單字),這就是斷詞。這跟斷章取意有相同的效果,斷的不好,就有不同的意思,所以必需僅甚。
安裝套件
pip install jieba wordcloud matplotlib
結巴演算
中文的斷詞演算法目前大致有二套,一套是中研院開發的斷詞系統,另外一套是中國大陸開發的 jieba (結巴) 演算法。中研院開發的東西請直接跳過去,只有”非常爛”。大陸的 jieba 演算法,就非常容易且精準。
jieba 是模仿說話會結巴的人,把他們的斷點思維變成一個演算法。發明這種演算法的人,真的是聰明到極點。
結巴字典下載
開始進行中文斷詞之前,需下載結巴字典(中文繁体)。結巴字典位於 : https://github.com/APCLab/jieba-tw : 進入jieba目錄,點選 dict.txt,然後按右邊的 download
斷詞測試
底下的代碼,可以測試斷詞的效果。先把字典 dict.txt 及停用詞 stops.txt 載入。
斷詞的函數為 jieba.cut(),cut() 函數有二個模式,由 cut_all 參數控制。此參數如果為True 時,是精準全斷詞模式,會把所有能斷詞的方式都列出來,可以增加文與文之間的比較性,所以準確度會更高,但會更耗時。
如下的代碼,在全精準模式下會多出好幾種斷詞的方式。
