7. 基礎語言模型:N-Gram

柯頌竹
Programming with Data
Nov 27, 2020

當我們想到可口可樂的時候,可能會「聯想」到百事可樂(而不是珍珠奶茶),人們長期在學習累積語言後有判斷合不合理與聯想的能力。那 NLP 有沒有這樣判斷合不合理與聯想的能力呢?N-gram 就是基於這樣聯想的語言模型,換句話說,語言模型就是利用機率大小來判斷句子合不合理。

語言模型可以應用的場景很多,N-Gram 常用的應用場景像是「選字推薦」、「錯字勘正」、「分詞系統」等。

語言模型機率

若想得到一個句子出現的機率則要使用連鎖率,以「我喜歡深度學習更喜歡NLP」為例,則機率為

P(我喜歡深度學習更喜歡NLP) = P(我)*P(喜|我)*P(歡|我,喜)*…*P(P|我喜歡深度學習更喜歡NL)

為了簡化問題,我們可以假設當前的字出現只跟前一個字有關

P(我喜歡深度學習更喜歡NLP) = P(我)*P(喜|我)*P(歡|喜)*…*P(P|L)

這樣的假設算法即是 N-Gram 模型中 n=2 的情形,又稱作 Bigram

N-Gram 模型

N-Gram 語言模型是基於統計的語言模型算法,主要是將文本中的內容取最靠近的 N 個字當作條件機率計算的先驗條件,形成長度是 N 的字詞片段序列。每個字詞片段及稱為 gram。 常見的 N-Gram 模型有 Unigram(1-gram),Bigram(2-gram),Trigram(3-gram)。

Bigram 語言模型

為了考慮字詞在開頭與結尾的情境,可以加入 start 的 token 與 end 的 token 的在文本中。

N 的大小

  • 當N值較大:對字詞的約束性更高,具有更高的辨識力,複雜度較高
  • 當N值較小:字詞在文本出現的次數較多,更可靠的統計結果,但對字詞的約束性較小

當 Trigram 預測每個字的機率都是零,也就是說它並沒有看過前面兩個字再搭配一個字的組合,這個時候該怎麼辦?

其實,我們可以用 Bigram 和 Unigram 來輔助解決這個問題,我們稱之為 Smoothing of Language Models,它有兩大類方法,我們接下來逐一介紹。

Back-off Smoothing

Interpolation Smoothing

--

--

柯頌竹
Programming with Data

熱愛自由行、參觀各種形式的展覽,踏上過20個國家的領土。歡迎詢問各種在歐洲自由行的問題。偶爾分享一下資料分析的讀書筆記。