iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
自我挑戰組

NLP 新手的 30 天入門養成計畫系列 第 17

[Day 17] - 簡單介紹貝式分類器在 NLP 的應用

  • 分享至 

  • xImage
  •  

我規劃的下一個篇章是如何將非結構化的文字轉換成向量的形式,讓電腦可以處理,不過在這之前,我想要先來聊聊貝式分類器是如何應用在 NLP 任務上的。

根據我有點模糊的印象,貝式定理在高中和大學的時候有接觸過,剛好可以趁著這次機會來複習一下。

大家應該對條件機率 ( Conditaionl Probability ) 不陌生吧,它的定義是 ”事件 A 在事件 B 發生的條件下發生的機率”,我們可以用這個公式來表達:
https://ithelp.ithome.com.tw/upload/images/20240822/20159088EqcUDFTp5w.png
根據條件機率,我們可以推導出貝式定理的公式:
https://ithelp.ithome.com.tw/upload/images/20240822/2015908819RpjwdNkZ.png
https://ithelp.ithome.com.tw/upload/images/20240822/20159088FplCK7VeR1.png
這個就是貝式定理,其中:

  • P(A|B) 是 posterior ( 後驗機率 )
  • P(B|A) 是 likelihood ( 概似性 )
  • P(A) 是 prior ( 先驗機率 )

它的概念就像是我們如果要判斷今天出門會不會遇到塞車,通常會先考量尖峰時間、有沒有經過塞車路段、是不是連假等因素,而這些因素正是由過去觀察他們和發生塞車之間的機率來得知的。

那麼,我們要如何把貝式定理的概念用在 NLP 上面呢?

Naive Bayes Classification

單純貝式分類器在 NLP 領域中通常用來解決文本分類的問題,假設我們收到了下面這幾條產品評論:

Comment label
The quality is fantastic and I am thoroughly impressed Positive
It is the most effective product I have used Positive
I am very impressed with the fantastic performance of this item Positive
The product is poorly designed which is really disappointing Negative
I am very disappointed and would not recommend it Negative

這個小小的資料集包含了評論和對應的分類標籤,我們希望可以通過這個資料集去訓練一個模型,當它收到新的評論的時候可以判斷這則評論是正面的還是負面的。

首先,通過貝式定理可以計算出:
https://ithelp.ithome.com.tw/upload/images/20240822/20159088czOlkRBxW2.png
我們去計算了在 positive 文檔出現的情況下,該文檔包含單詞 impressed 的機率,以及它們各自出現的機率,進而推論出當某一篇未知文檔包含單詞 impressed 的時候,它屬於正面評論的機率很大。

如果我們換一個比較中性的單詞 product 來計算的話:
https://ithelp.ithome.com.tw/upload/images/20240822/20159088fnLL1o3IUJ.png
這個結果顯示出 product 不太適合用來判斷正面或負面評論。

而 Naive Bayes 就是在這個計算方式的基礎下繼續延伸,那麼就開始一步步推導公式吧!

一個句子可以拆分出很多單詞,每個單詞都有它對某些類別的偏重,如果要完全判斷這個句子屬於哪一個類別的話,可以拓展成:
https://ithelp.ithome.com.tw/upload/images/20240822/20159088xytF4x0Ovf.png
其中 X_i 代表這個句子中所有的單詞,argmax 是 “argument maximun”,它出現在式子前面的意思是從所有的類別中找出機率最大的那一個,所求出來的 y^* 就是這個句子最有可能的類別。

然後,又因為所有文檔固定不變的情況下,單詞出現的機率也是固定的,所以分母的部分可以忽略掉 ( 等同於正比的關係 ),整個式子變成:
https://ithelp.ithome.com.tw/upload/images/20240822/20159088VIdLJjcecE.png
此外,我們假設每一個單詞出現的機率彼此之間是獨立的,因此他們都出現的機率可以用乘法來表示:
https://ithelp.ithome.com.tw/upload/images/20240822/20159088bEhmP5wZDb.png
然而,這會出現一個尷尬的問題,因為如果所有單詞出現的機率都要相乘的話,數字會變的超級小,於是我們加上 log,讓它從連乘變連加:
https://ithelp.ithome.com.tw/upload/images/20240822/20159088y7SoR0fAZD.png
公式推導到這裡大致告一段落,還有剩下一些小細節需要調整,像是為了避免單詞出現個數為零而做的拉普拉斯修正,我們就先不深入談下去。

最後,我們來做個整理吧!Naive Bayes 其實並不難理解,因為它是從條件機率出發,一路推導到最終的公式,它的計算方便快速,適合用在分類任務上,比方說垃圾郵件分類或情緒分類。

不過它的缺點也很明顯,剛剛在推導公式的時候也有提到,它的計算方式必須建立在單詞之間的出現機率互相獨立,然而這在現實世界中並不成立,因此它只能做為一個基本的模型,進行簡單的分類任務。

推薦文章

PS : 今天還是沒搞懂公式要怎麼在這裡打出來...


上一篇
[Day 16] - 怎麼判斷你的檢索結果好不好 (2)
下一篇
[Day 18] - 文字向量化的前世今生:簡介
系列文
NLP 新手的 30 天入門養成計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言