我使用一個1.6M的鳴叫語料庫來訓練一個樸素的貝葉斯情緒引擎。計算兩個數據集--C#中的文本分析和情緒的概率分佈的熵
我有正克兩個字典(Dictionary<string,int>
其中string
是我的n-gram和int
是n-gram中的出現在我的語料庫#)。第一個列表是從正面推文中拉出的,第二個列表是從負面推文中拉出的。在一篇關於這個主題的文章中,作者拋棄了常見的n-gram(即n-gram並不強烈地表示任何情緒,也沒有指出句子的客觀性,這種n-gram在所有數據集中均勻地出現)。我在概念上理解得非常好,但他們提供的公式根植於數學,而不是代碼,我無法破譯我應該做的事情。
我花了幾個小時在網上搜索如何做到這一點。我找到了搜索引擎熵計算的例子,通常是計算一個字符串的熵,最常用的代碼塊是Shannons熵。
我對這個空間也比較陌生,所以我確信我的無知在這方面起了一點作用,但我希望有人能幫助我在正確的方向推動我。總結:
給定兩個詞典,PosDictionary
& NegDictionary
,我該如何計算相同n元克的熵?
僞碼是好的,和我想象它看起來是這樣的:
foreach(string myNGram in PosDictionary) {
if(NegDictionary.ContainsKey(myNGram) {
double result = CalculateEntropyOfNGram(myNGram);
if(result > someThetaSuchAs0.80) {
PosDictionary.Remove(myNGram);
NegDictionary.Remove(myNGram);
}
}
}
我認爲是這樣的過程,我需要服用。我不知道是什麼CalculateEntropyOfNGram
函數看起來像...
(編輯) Here is the link用來形容熵/突顯過程中的PDF格式的(5.3節)
您可以給出版物的鏈接嗎? – rocksportrocker
添加鏈接。我很抱歉。 –