這個問題找遍全網沒看到詳細的介紹,最后用讀代碼+數學公式的方法才理解怎么用。
BigramAssocMeasures.pmi
作用:計算x和y的互信息(互信息是什么我就不科普啦)
這里有個誤區剛開始我以為是計算兩個詞之間的依賴程度,但是它其實是可以計算詞和類別的依賴程度的。
對照這個:
所以我就拿t表示特征,c表示類別,要想使用BigramAssocMeasures.pmi()計算t和c的互信息(這里舉的例子是二分類問題),需要傳參如下:
注意,文檔數量也可以理解為詞頻。且參數1和參數3不能為0。
- 參數1:“是這個特征也是這個類”的文檔數量,是int類型
- 參數2:[積極類的文檔數量, 消極類的文檔數量],是一個列表(不是列表也可以,可以迭代就行)
- 參數3:文檔總數,是int類型
from nltk import BigramAssocMeasures# 假設觀察頻率是3,背景頻率是5
ngram = 2
total = 7
unigram = [4, 3]# 使用BigramAssocMeasures.pmi()計算互信息
score = BigramAssocMeasures.pmi(ngram, unigram, total)
print(score)