[NLP]如何進行情感分析
本文介紹的是如何進行情感識別。
在自然語言中(尤其社交媒體和購物網站中),每一句話都隱含了具體的情感傾向,比如中性、正面、負面。比如:今天天氣不錯;今天心情不太好;蘋果手機不錯;地球是圓的。對於人來說,可以很輕易的就分辨出上述句子是正面的、中性的、負面的。
但是在自然語言處理中是如何進行判斷的呢?下面就對基本的情感分析方法進行介紹。
1.準備
1.1 種子詞庫
在真正開始前,首先想想人看到一句話是如何思考的。
比如:今天天氣不錯。對於今天和天氣來說,只是具體的對話物件,表明討論的是今天的天氣;而真正起作用的是‘不錯’,表明今天的天氣令人很舒暢,或者心情變好。因為才會得出‘今天天氣不錯’是正面的評價。
這裡我們不關心具體的評價物件,但是可以很清楚看出某些詞對於情感傾向識別是起關鍵作用的。那麼我們是否可以建立一個標準情感詞庫作為情感分析的種子詞庫呢?答案是肯定的。
情感傾向的種子詞庫建立是通過分析語料庫,首先對語料庫去除停用詞,然後對與其中的詞進行分類,分別為:正面、負面、中性。比如:
正面:不錯、很好、很棒、偉大
負面:不好、很壞、討厭、無用
中性:手機、地球、一般、還行
1.2 文件頻率和文件共現頻率
文件頻率是指某一個詞在文件中出現的次數,用
文件共現頻率是指在同一個文件中共同出現的詞的出現次數,用
假設我們有很多商品評價或者微博比如下面的形式:
1.xxxxxxxx
2.xxxxxxx
3.xxxx
4.xxxxxx
那麼如何統計
1.3 PMI
PMI(Pointwise Mutual Information),中文稱為互資訊,描述的是兩個事件在概率分佈上的近似度量。計算公式如下:
如果
相反,如果
1.4 情感分析
我們給每一個句子都給出一個得分score,得分通過
對於socre:
score>0表示正面情感
score=0表示中性情感
socre<0表示負面情感
2.編碼
有了上文的準備工作就可以進行編碼了,程式碼邏輯為:
- 1.統計和儲存
p(w) 和p(w1,w2) - 2.統計和儲存pmi(w_1,w_2)矩陣
- 3.分別計算待測短語中詞與正面情感詞庫所有詞的PMI,將得到的PMI相加得到
∑pmi(wi,wp) - 4.分別計算待測短語中詞與負面情感詞庫所有詞的PMI,將得到的PMI相加得到
∑pmi(wi,wn) - 5.計算情感傾向總得分
score=∑pmi(wi,wp)−∑pmi(wi,wn)
3.總結
本文介紹的只是簡單的情感分析方法,實際的工作並不是這麼簡單。本文介紹的方法也有很多不足的地方:
- 需要的人工參與量大
- 模型效果對語料庫依賴度高
- 某些修飾詞和否定詞的作用被忽略,比如不偉大,不開心
這些都是需要後續改進的地方。
另外新申請了個個人公眾號,分享關於學習AI的經歷,歡迎關注!
version_1_20171008