當前位置:成語大全網 - 新華字典 - 如何用 Python 中的 NLTK 對中文進行分析和處理

如何用 Python 中的 NLTK 對中文進行分析和處理

最近正在用nltk 對中文網絡商品評論進行褒貶情感分類,計算評論的信息熵(entropy)、互信息(point mutual information)和困惑值(perplexity)等(不過這些概念我其實也還理解不深...只是nltk 提供了相應方法)。

我感覺用nltk 處理中文是完全可用的。其重點在於中文分詞和文本表達的形式。

中文和英文主要的不同之處是中文需要分詞。因為nltk 的處理粒度壹般是詞,所以必須要先對文本進行分詞然後再用nltk 來處理(不需要用nltk 來做分詞,直接用分詞包就可以了。嚴重推薦結巴分詞,非常好用)。

中文分詞之後,文本就是壹個由每個詞組成的長數組:[word1, word2, word3…… wordn]。之後就可以使用nltk 裏面的各種方法來處理這個文本了。比如用FreqDist 統計文本詞頻,用bigrams 把文本變成雙詞組的形式:[(word1, word2), (word2, word3), (word3, word4)……(wordn-1, wordn)]。

再之後就可以用這些來計算文本詞語的信息熵、互信息等。

再之後可以用這些來選擇機器學習的特征,構建分類器,對文本進行分類(商品評論是由多個獨立評論組成的多維數組,網上有很多情感分類的實現例子用的就是nltk 中的商品評論語料庫,不過是英文的。但整個思想是可以壹致的)。

另外還有壹個困擾很多人的Python 中文編碼問題。多次失敗後我總結出壹些經驗。

Python 解決中文編碼問題基本可以用以下邏輯:

utf8(輸入) ——> unicode(處理) ——> (輸出)utf8

Python 裏面處理的字符都是都是unicode 編碼,因此解決編碼問題的方法是把輸入的文本(無論是什麽編碼)解碼為(decode)unicode編碼,然後輸出時再編碼(encode)成所需編碼。

由於處理的壹般為txt 文檔,所以最簡單的方法,是把txt 文檔另存為utf-8 編碼,然後使用Python 處理的時候解碼為unicode(sometexts.decode('utf8')),輸出結果回txt 的時候再編碼成utf8(直接用str() 函數就可以了)。