用機器學習做情感分析很方便。本文將介紹如何用機器學習的方法在R語言中進行情感分析。在R語言中,由Timothy P.Jurka開發的情感分析和更通用的文本挖掘包已經得到了很好的發展。妳可以看看情緒包和神奇的RTextTools包。其實Timothy也寫過壹個低記憶下多元Logistic回歸(也叫最大熵)的R-packet maxtent。
然而,RTextTools包不包含樸素貝葉斯方法。E1071包可以很好的執行樸素貝葉斯方法。E1071是維也納科技大學(TU Wien)統計系的壹門課程。這個包的主要開發者是David Meyer。
我們了解文本分析的知識還是很有必要的。用R語言處理文本分析是公認的事實(詳見R語言自然語言處理)。Tm包就是其中成功的壹部分:它是R語言在文本挖掘中應用的壹個框架。它在文本清理(詞幹、刪除停用詞等)方面做得很好。)並將文本轉換成術語-文檔矩陣(dtm)。下面是對它的介紹。文本分析最重要的部分是得到每個文檔的特征向量,其中單詞特征是最重要的。當然,妳也可以把單個詞的特點擴展成兩個短語、三個連詞、n個連詞等等。在本文中,我們以單個單詞的特征為例進行論證。
註意n-合取是用r中的ngram包處理的,以前Rweka包提供了壹個處理它的函數,有興趣的人可以看看這個案例。現在可以在RTextTools包中設置create_matrix函數的參數ngramLength來實現。
第壹步是讀取數據:
創建條目-文檔矩陣:
現在,我們可以使用這個數據集來訓練樸素貝葉斯模型。請註意,e1071要求響應變量為數字或階乘。我們使用以下方法將字符串數據轉換為因子數據:
測試結果的準確性:
很明顯,這個結果和python得到的結果是壹樣的(本文是python得到的結果)。
其他的機器學習方法呢?
讓我們使用RTextTools包來處理它。
首先,指定相應的數據:
其次,該模型由多種機器學習算法訓練:
現在,我們可以使用訓練好的模型對測試集進行分類:
有多準確?
獲得模型結果的總結(尤其是結果的有效性):
結果的交叉驗證:
結果可以在我的Rpub頁面上找到。可以看出,maxent和樸素貝葉斯的準確率是壹樣的,其他方法的準確率更差。這是可以理解的,因為我們給出的是壹個非常小的數據集。在擴大訓練集後,我們可以使用更復雜的方法來分析推文的情感,從而獲得更好的結果。示例演示如下:
推文的情感分析
數據來自victornep。Victorneo用python展示了推文的情感分析。這裏,我們用r來處理它:
讀取數據:
首先,嘗試樸素貝葉斯。
然後,嘗試其他方法:
在此,我們也希望得到官方的檢測結果。包括:
1.analytics @ algorithm _ summary:包括準確率、召回率、準確率和F值的匯總。
2.analytics@label_summary:類標簽摘要
3.analytics@document_summary:所有數據和分數的原始匯總。
4.analytics@ensemble_summary:所有準確率/覆蓋率的匯總。
現在讓我們看看結果:
與樸素貝葉斯方法相比,其他算法的結果更好,召回準確率高於0.95。結果可以在Rpub中查看。
原文鏈接:http://www.xueqing.cc/CMS/article/107.