【中文情感分析】SO-PMI算法(HarvestText库的修正以及解析)
生活随笔
收集整理的這篇文章主要介紹了
【中文情感分析】SO-PMI算法(HarvestText库的修正以及解析)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡述
在最近的RA過程中,需要使用一個庫,同時對其的原理需要理解。然后就研究了一些,發現了幾個有趣的,其中一個HarvestText中文情感分析。
- 我研究了他的源碼后,再結合理論知識發現了這個庫在情感分析上的一個很重要的問題。并提交了代碼,完成了合并。下面是我的fork后的庫
- https://github.com/Sean16SYSU/HarvestText
文章目錄
- 簡述
- SO-PMI算法
- PMI
- SO-PMI計算
SO-PMI算法
- 輸入:文章集合。pos詞匯集和neg詞匯集(不需要給分數)
- 輸出:未知詞匯的分數
PMI
- PMI,Pointwise Mutual Information, 即點互信息, log?2P(A,B)P(A)P(B)\log_2\frac{P(A, B)}{P(A)P(B)}log2?P(A)P(B)P(A,B)?
- P(A),詞匯A出現的文章的概率
- P(B),詞匯B出現的文章的概率
- P(A, B) , 詞匯AB一起出現在文章中的概率
- 因為基數都是一樣的(文章數量),所以做一定的數學變換即可。
SO-PMI計算
- 對于詞匯A,計算其情感:
∑pw∈POS(PMI(A,pw))?∑nw∈NEG(PMI(A,nw))\sum_{pw \in POS}( PMI(A, pw)) - \sum_{nw \in NEG}( PMI(A, nw))pw∈POS∑?(PMI(A,pw))?nw∈NEG∑?(PMI(A,nw))- pw:positive word (積極詞匯)
- nw:negative word (消極詞匯)
- 根據這個公式,我們可以發現計算出來的分數值是可能大于1或者小于-1的。
- 沒有準確的上下界,會使得整個實現沒那么友好。
而我的其中一個貢獻也就是在提出這個不存在上下限的問題上。
文章的解決方案也是很簡單的,就是pos詞匯的分數被被除以pos詞匯中分數的最大值(正數)。同理,neg詞匯的分數會被除以neg詞匯中分數的最小值(負數)。
總結
以上是生活随笔為你收集整理的【中文情感分析】SO-PMI算法(HarvestText库的修正以及解析)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【解决办法】No module name
- 下一篇: Python过滤掉numpy.array