python自然语言分析 何翠仪_如何用 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() 函數就可以了)。
另外這篇文章也有很詳細的講到nltk 的中文應用,很值得參考:http://blog.csdn.net/huyoo/article/details/12188573
總結
以上是生活随笔為你收集整理的python自然语言分析 何翠仪_如何用 Python 中的 NLTK 对中文进行分析和处理?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vlan为什么能隔离广播域_路由交换技术
- 下一篇: 智能指针的释放_看完这篇,别再说不会智能