當前位置:成語大全網 - 書法字典 - R語言中的情感分析和機器學習

R語言中的情感分析和機器學習

來源|青雪數據網

用機器學習做情感分析很方便。本文將介紹如何用機器學習的方法在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.