詳解基于樸素貝葉斯的情感分析及 Python 實(shí)現(xiàn)
相對(duì)于「 基于詞典的分析 」,「 基于機(jī)器學(xué)習(xí) 」的就不需要大量標(biāo)注的詞典,但是需要大量標(biāo)記的數(shù)據(jù),比如:
還是下面這句話,如果它的標(biāo)簽是:
服務(wù)質(zhì)量 - 中 (共有三個(gè)級(jí)別,好、中、差)
╮(╯-╰)╭,其是機(jī)器學(xué)習(xí),通過(guò)大量已經(jīng)標(biāo)簽的數(shù)據(jù)訓(xùn)練出一個(gè)模型,
然后你在輸入一條評(píng)論,來(lái)判斷標(biāo)簽級(jí)別
寧馨的點(diǎn)評(píng) 國(guó)慶活動(dòng),用62開(kāi)頭的信用卡可以6.2元買一個(gè)印有銀聯(lián)卡標(biāo)記的冰淇淋, 有香草,巧克力和抹茶三種口味可選,我選的是香草口味,味道很濃郁。 另外任意消費(fèi)都可以10元買兩個(gè)馬卡龍,個(gè)頭雖不是很大,但很好吃,不是很甜的那種,不會(huì)覺(jué)得膩。 標(biāo)簽:服務(wù)質(zhì)量 - 中
樸素貝葉斯
1、貝葉斯定理
假設(shè)對(duì)于某個(gè)數(shù)據(jù)集,隨機(jī)變量C表示樣本為C類的概率,F(xiàn)1表示測(cè)試樣本某特征出現(xiàn)的概率,套用基本貝葉斯公式,則如下所示:

上式表示對(duì)于某個(gè)樣本,特征F1出現(xiàn)時(shí),該樣本被分為C類的條件概率。那么如何用上式來(lái)對(duì)測(cè)試樣本分類呢?
舉例來(lái)說(shuō),有個(gè)測(cè)試樣本,其特征F1出現(xiàn)了(F1=1),那么就計(jì)算P(C=0|F1=1)和P(C=1|F1=1)的概率值。前者大,則該樣本被認(rèn)為是0類;后者大,則分為1類。
對(duì)該公示,有幾個(gè)概念需要熟知:
先驗(yàn)概率(Prior)。P(C)是C的先驗(yàn)概率,可以從已有的訓(xùn)練集中計(jì)算分為C類的樣本占所有樣本的比重得出。
證據(jù)(Evidence)。即上式P(F1),表示對(duì)于某測(cè)試樣本,特征F1出現(xiàn)的概率。同樣可以從訓(xùn)練集中F1特征對(duì)應(yīng)樣本所占總樣本的比例得出。
似然(likelihood)。即上式P(F1|C),表示如果知道一個(gè)樣本分為C類,那么他的特征為F1的概率是多少。
對(duì)于多個(gè)特征而言,貝葉斯公式可以擴(kuò)展如下:

分子中存在一大串似然值。當(dāng)特征很多的時(shí)候,這些似然值的計(jì)算是極其痛苦的?,F(xiàn)在該怎么辦?
2、樸素的概念
為了簡(jiǎn)化計(jì)算,樸素貝葉斯算法做了一假設(shè):“樸素的認(rèn)為各個(gè)特征相互獨(dú)立”。這么一來(lái),上式的分子就簡(jiǎn)化成了:
P(C)P(F1|C)P(F2|C)...P(Fn|C)。
這樣簡(jiǎn)化過(guò)后,計(jì)算起來(lái)就方便多了。
這個(gè)假設(shè)是認(rèn)為各個(gè)特征之間是獨(dú)立的,看上去確實(shí)是個(gè)很不科學(xué)的假設(shè)。因?yàn)楹芏嗲闆r下,各個(gè)特征之間是緊密聯(lián)系的。然而在樸素貝葉斯的大量應(yīng)用實(shí)踐實(shí)際表明其工作的相當(dāng)好。
其次,由于樸素貝葉斯的工作原理是計(jì)算P(C=0|F1...Fn)和P(C=1|F1...Fn),并取最大值的那個(gè)作為其分類。而二者的分母是一模一樣的。因此,我們又可以省略分母計(jì)算,從而進(jìn)一步簡(jiǎn)化計(jì)算過(guò)程。
另外,貝葉斯公式推導(dǎo)能夠成立有個(gè)重要前期,就是各個(gè)證據(jù)(evidence)不能為0。也即對(duì)于任意特征Fx,P(Fx)不能為0。而顯示某些特征未出現(xiàn)在測(cè)試集中的情況是可以發(fā)生的。因此實(shí)現(xiàn)上通常要做一些小的處理,例如把所有計(jì)數(shù)進(jìn)行+1(加法平滑 additive smoothing,又叫拉普拉斯平滑 Laplace smothing)。而如果通過(guò)增加一個(gè)大于 0 的可調(diào)參數(shù) alpha 進(jìn)行平滑,就叫 Lidstone 平滑。

基于樸素貝葉斯的情感分類
原始數(shù)據(jù)集,只抽了10條

讀數(shù)據(jù)
讀取excel文件,用的pandas庫(kù)的DataFrame的數(shù)據(jù)類型
分詞
對(duì)每個(gè)評(píng)論分詞,分詞的同時(shí)去除停用詞,得到如下詞表
每個(gè)列表是與評(píng)論一一對(duì)應(yīng)的

統(tǒng)計(jì)
這里統(tǒng)計(jì)什么呢?統(tǒng)計(jì)兩種數(shù)據(jù)
1. 評(píng)論級(jí)別的次數(shù)
這里有三個(gè)級(jí)別分別對(duì)應(yīng) c0 → 好 2 c1 → 中 3 c2 → 差 5
2. 每個(gè)詞在句子中出現(xiàn)的次數(shù)
得到一個(gè)字典數(shù)據(jù) evalation [2, 5, 3] 半價(jià) [0, 5, 0] 劃算 [1, 1, 0] 不錯(cuò) [0, 2, 0] ········· 不滿 [0, 1, 0] 重要 [0, 1, 0] 清楚 [0, 1, 0] 具體 [0, 1, 0] 每個(gè)詞(特征)后的 list坐標(biāo)位:0,1,2分別對(duì)應(yīng)好,中,差
以上工作完成之后,就是把模型訓(xùn)練好了,只不過(guò)數(shù)據(jù)越多越準(zhǔn)確
測(cè)試
比如輸入一個(gè)句子
世紀(jì)聯(lián)華(百聯(lián)西郊購(gòu)物中心店)的點(diǎn)評(píng) 一個(gè)號(hào)稱國(guó)際大都市,收銀處的人服務(wù)態(tài)度差到極點(diǎn)。銀聯(lián)活動(dòng)30-10,還不可以連單。
得到結(jié)果
c2-差















 
 
 










 
 
 
 