演算法情感
『壹』 情感分析之TF-IDF演算法
http://mini.eastday.com/bdmip/180414224336264.html
在這篇文章中,主要介紹的內容有:
1、將單詞轉換為特徵向量
2、TF-IDF計算單詞關聯度
文本的預處理和分詞。
如何將單詞等分類數據轉成為數值格式,以方便我們後面使用機器學習來訓練模型。
一、將單詞轉換為特徵向量
詞袋模型(bag-of-words model):將文本以數值特徵向量的形式來表示。主要通過兩個步驟來實現詞袋模型:
1、為整個文檔集(包含了許多的文檔)上的每個單詞創建一個唯一的標記。
2、為每個文檔構建一個特徵向量,主要包含每個單詞在文檔上的出現次數。
注意:由於每個文檔中出現的單詞數量只是整個文檔集中很少的一部分,因此會有很多的單詞沒有出現過,就會被標記為0。所以,特徵向量中大多數的元素就會為0,就會產生稀疏矩陣。
下面通過sklearn的CountVectorizer來實現一個詞袋模型,將文檔轉換成為特徵向量
通過count.vocabulary_我們可以看出每個單詞所對應的索引位置,每一個句子都是由一個6維的特徵向量所組成。其中,第一列的索引為0,對應單詞"and","and"在第一和二條句子中沒有出現過,所以為0,在第三條句子中出現過一些,所以為1。特徵向量中的值也被稱為原始詞頻(raw term frequency)簡寫為tf(t,d),表示在文檔d中詞彙t的出現次數。
注意:在上面詞袋模型中,我們是使用單個的單詞來構建詞向量,這樣的序列被稱為1元組(1-gram)或單元組(unigram)模型。除了一元組以外,我們還可以構建n元組(n-gram)。n元組模型中的n取值與特定的應用場景有關,如在反垃圾郵件中,n的值為3或4的n元組可以獲得比較好的效果。下面舉例說明一下n元組,如在"the weather is sweet"這句話中,
1元組:"the"、"weather"、"is"、"sweet"。
2元組:"the weather"、"weather is"、"is sweet"。
在sklearn中,可以設置CountVecorizer中的ngram_range參數來構建不同的n元組模型,默認ngram_range=(1,1)。
sklearn通過CountVecorizer構建2元組
二、TF-IDF計算單詞關聯度
在使用上面的方法來構建詞向量的時候可能會遇到一個問題:一個單詞在不同類型的文檔中都出現,這種類型的單詞其實是不具備文檔類型的區分能力。我們通過TF-IDF演算法來構建詞向量,從而來克服這個問題。
詞頻-逆文檔頻率(TF-IDF,term frequency-inverse document frequency):tf-idf可以定義為詞頻×逆文檔頻率
其中tf(t,d)表示單詞t在文檔d中的出現次數,idf(t,d)為逆文檔頻率,計算公式如下
其中,nd表示文檔的總數,df(t,d)表示包含單詞t的文檔d的數量。分母中加入常數1,是為了防止df(t,d)=0的情況,導致分母為0。取log的目的是保證當df(t,d)很小的時候,不會導致idf(t,d)過大。
通過sklearn的TfidfTransformer和CountVectorizer來計算tf-idf
可以發現"is"(第二列)和"the"(第六列),它們在三個句子中都出現過,它們對於文檔的分類所提供的信息並不會很多,所以它們的tf-idf的值相對來說都是比較小的。
注意:sklearn中的TfidfTransformer的TF-IDF的計算與我們上面所定義TF-IDF的公式有所不同,sklearn的TF-IDF計算公式
通常在計算TF-IDF之前,會對原始詞頻tf(t,d)做歸一化處理,TfidfTransformer是直接對tf-idf做歸一化。TfidfTransformer默認使用L2歸一化,它通過與一個未歸一化特徵向量L2范數的比值,使得返迴向量的長度為1,計算公式如下:
下面通過一個例子來說明sklearn中的TfidfTransformer的tf-idf的計算過程,以上面的第一句話"The sun is shining"為例子
1、計算原始詞頻
a、單詞所對應的下標
b、計算第三句話的原始詞頻tf(t,d)
c、計算逆文檔頻率idf(t,d)
注意:其他的詞在計算tf-idf都是0,因為原始詞頻為0,所以就不需要計算idf了,log是以自然數e為底。
d、計算tf-idf
所以,第一個句子的tf-idf特徵向量為[0,1,1.29,1.29,0,1,0]
e、tf-idf的L2歸一化
『貳』 怎樣通過句法分析分析句子情感演算法例子
怎樣通過句法分析分析句子情感演算法例子?現階段主要的情感分析方法主要有兩類:
基於詞典的方法
基於機器學習的方法
基於詞典的方法主要通過制定一系列的情感詞典和規則,對文本進行段落拆借、句法分析,計算情感值,最後通過情感值來作為文本的情感傾向依據。
基於機器學習的方法大多將這個問題轉化為一個分類問題來看待,對於情感極性的判斷,將目標情感分類2類:正、負。對訓練文本進行人工標標注,然後進行有監督的機器學習過程。例如想在較為常見的基於大規模語料庫的機器學習等。