作者:黃天元,復旦大學博士在讀,熱愛數據科學與R,熱衷推廣R在工業界與學術界的應用。郵箱:[email protected].歡迎合作交流

前文參考:

HopeR:R語言自然語言處理:中文分詞

HopeR:R語言自然語言處理:詞性標註與命名實體識別

HopeR:R語言自然語言處理:關鍵詞提取(TF-IDF)

HopeR:R語言自然語言處理:關鍵詞提取與文本摘要(TextRank)

HopeR:R語言自然語言處理:詞嵌入(Word Embedding)

情感分析,就是根據一段文本,分析其表達情感的技術。比較簡單的情感分析,能夠辨別文本內容是積極的還是消極的(褒義/貶義);比較複雜的情感分析,能夠知道這些文字是否流露出恐懼、生氣、狂喜等細緻入微的情感。此外,情感的二元特性還可以表達為是否含有較大的感情波動。也就是說,狂喜和暴怒都屬於感情波動,而寵辱不驚則屬於穩定的情感狀態。

情感分析方法主要分為兩種:1.詞法分析;2.機器學習。

其中,機器學習需要依賴於標註和特徵提取,這裡大有文章可做,但是很難提煉出共性,因此這裡不進行特殊的介紹。主要就是以人工標註的情感數值作為響應變數,然後另一方面對於文本進行向量化處理(詞嵌入),然後用模型進行擬合,最後得到一個好的模型對新的文本進行情感的評估。需要注意的是,對文本進行情感特徵的提取也是有文章可以做的,只要能夠正確認識哪些文本能夠提供情感信息,就能夠更好地捕捉文本的情感方向和程度。

tidytext進行詞法分析的技術路線

另一個方法,就是詞法分析。它的原理非常簡單,事前需要定義一個情感詞典。比如「喜歡」這個詞我們定義為1分。那麼「我喜歡你」這句話,「我」和「你」都是中性詞,均為0分,「喜歡」為1分,這句話的總分就是1分。「我喜歡你,但討厭他」,這樣一句話中有「討厭」這個詞,在情感詞典中分數為「-1」,那麼整句話的得分就是0。這樣,我們就可以對每一個文本進行分詞,然後使用內連接(inner join)來提取其中的情感詞語,並根據情感詞語的得分,來評估這段文本的情感得分。我找了兩個我認為比較好的R包來實現這個功能:

1.tidytext(juliasilge/tidytext); 2.SentimentAnalysis(sfeuerriegel/SentimentAnalysis)。

這些包基本能夠通過複製粘貼代碼就能夠實現對文本情感的分析,這裡不進行贅述。不過這些包都是針對英文的,中文的情感詞典則比較匱乏。經過搜索,比較好的有大連理工大學提供的情感辭彙本體庫(大連理工大學信息檢索研究室(DUTIR)-搜人搜物搜信息,重情重義重認知)。不過我認為這些中文詞庫還是遠遠無法達到應用級的水準,真的要用,就需要自己構建情感詞庫。經過思考,我擬定的方法如下:1.對需要分析的文本進行分詞,並進行詞頻的分析(TF);2.根據出現最多的一些詞,對它們可能代表的情感進行評估;3.構建自定義情感詞典,導入分詞器中進行分詞,並通過詞典表對其進行情感打分。

只有了解這些文本的特點,才能夠更好地進行分詞並提取出情感信息。這種分析可以廣泛應用到用戶評價分析、輿情分析,能夠成為一個非常重要的輔助參考。針對個性化的詞典,還能夠精準評估一些文本是否出現了「特殊的」情感,比如極端情緒或我們特別感興趣的情緒(不滿?特別滿意?威脅恐嚇?)。這種分析還可以擴展到句法分析,也就是什麼句型與相應的情緒具有強烈的相關性,未來這個領域大有可期。

推薦閱讀:

相关文章