語言模型(N-Gram)

問題描述:因爲公司業務產品中,須要用戶本身填寫公司名稱,而這個公司名稱存在大量的亂填現象,所以須要對其作一些歸一化的問題。在這基礎上,能延伸出一個預測用戶填寫的公司名是否有效的模型出來。spa

目標:問題提出來了,就是想找到一種辦法來預測用戶填寫的公司名是否有效?blog

問題分析:要想預測用戶填寫的公司名稱是否有效,須要用到NLP的知識內容,咱們首先可以想到的是利用NLP中的語言模型,來對公司名稱進行訓練建模,並結合其餘的特徵(如:長度等)進行預測。字符串

1、N-Gram的原理產品

N-Gram是基於一個假設:第n個詞出現與前n-1個詞相關,而與其餘任何詞不相關。(這也是隱馬爾可夫當中的假設。)整個句子出現的機率就等於各個詞出現的機率乘積。各個詞的機率能夠經過語料中統計計算獲得。假設句子T是有詞序列w1,w2,w3...wn組成,用公式表示N-Gram語言模型以下:基礎

P(T)=P(w1)*p(w2)*p(w3)***p(wn)=p(w1)*p(w2|w1)*p(w3|w1w2)***p(wn|w1w2w3...)原理

 

通常經常使用的N-Gram模型是Bi-Gram和Tri-Gram。分別用公式表示以下:方法

Bi-Gram:  P(T)=p(w1|begin)*p(w2|w1)*p(w3|w2)***p(wn|wn-1)im

Tri-Gram:  P(T)=p(w1|begin1,begin2)*p(w2|w1,begin1)*p(w3|w2w1)***p(wn|wn-1,wn-2)統計

  • 注意上面機率的計算方法:P(w1|begin)=以w1爲開頭的全部句子/句子總數;p(w2|w1)=w1,w2同時出現的次數/w1出現的次數。以此類推。(這裏須要進行平滑)

2、N-Gram的應用db

根據上面的分析,N-Gram(有時也稱爲N元模型)是天然語言處理中一個很是重要的概念,一般在NLP中,它主要有兩個重要應用場景:

(1)、人們基於必定的語料庫,能夠利用N-Gram來預計或者評估一個句子是否合理。

(2)、另一方面,N-Gram的另一個做用是用來評估兩個字符串之間的差別程度。這是模糊匹配中經常使用的一種手段。

一、N-gram在兩個字符串的模糊匹配中的應用

首先須要介紹一個比較重要的概念:N-Gram距離。

(1)N-gram距離

它是表示,兩個字符串s,t分別利用N-Gram語言模型來表示時,則對應N-gram子串中公共部分的長度就稱之爲N-Gram距離。例如:假設有字符串s,那麼按照N-Gram方法獲得N個分詞組成的子字符串,其中相同的子字符串個數做爲N-Gram距離計算的方式。具體以下所示:

字符串:s="ABC",對字符串進行分詞,考慮字符串首尾的字符begin和end,獲得begin,A,B,C,end。這裏採用二元語言模型,則有:(begin,A)、(A,B)、(B,C)、(C,end)。

字符串:t="AB",對字符串進行分詞,考慮字符串首尾的字符begin和end,獲得begin,A,B,end。這裏採用二元語言模型,則有:(begin,A)、(A,B)、(B,end)。

此時,若求字符串t與字符串s之間的距離能夠用M-(N-Gram距離)=0。

然而,上面的N—gram距離表示的並非很合理,他並無考慮兩個字符串的長度,因此在此基礎上,有人提出非重複的N-gram距離,公式以下所示:

                                               

上面的字符串距離從新計算爲:

      4+3-2*3=1

二、N-Gram在判斷句子有效性上的應用

假設有一個字符串s="ABC",則對應的BI-Gram的結果以下:(begin,A)、(A,B)、(B,C)、(C,end)。則對應的出現字符串s的機率爲:

P(ABC)=P(A|begin)*P(B|A)*P(C|B)*P(end|C)。

 

三、N-Gram在特徵工程中的應用

在處理文本特徵的時候,一般一個關鍵詞做爲一個特徵。這也許在一些場景下可能不夠,須要進一步提取更多的特徵,這個時候能夠考慮N-Gram,思路以下:

以Bi-Gram爲例,在原始文本中,以每一個關鍵詞做爲一個特徵,經過將關鍵詞兩兩組合,獲得一個Bi-Gram組合,再根據N-Gram語言模型,計算各個Bi-Gram組合的機率,做爲新的特徵。

相關文章
相關標籤/搜索