【自然語言處理】:n-gram模型深度理解


n-gram模型是自然語言處理里面的一個傳統模型。我們來看看他是怎么實現的吧!要了解n-gram模型,我們先來看看什么是語言模型!

一.語言模型

語言模型的定義是:語言模型是一種用來預測下一個單詞什么的任務。比如我們有一句話:

 

 

 the students opened their  _______. (其中可以填寫books/laptops/exam/minds),那么語言模型就是用來預測這個空當中應該填寫什么單詞。

語言模型的正式定義為:

 也就是我們在知道前面的單詞的情況下,計算最后一個單詞X(t+1)的概率是多大,最后一個單詞X(t+1)可以是詞表當中的任意單詞,我們可以將詞表當中的每一個單詞都計算一遍。上面的這個公式其實也很容易理解,它是一個條件概率的公式,表示的是在 X(t)X(t-1),...   ,X(1)發生的條件下,X(t+1)發生的概率。

同樣的,我們除了得到最后一個單詞發生的概率,我們可以得到整段句子所發生的概率,可以使用公式寫成下面這種形式:

 

 這樣就得到整個句子發生的概率,整個公式在概率論與數理統計里十分常見,也就是簡單將具備發生多個事件概率表達式進行展開,方便計算。

我們的語言模型的運用非常常見,在生活當中,比如你使用了你的智能手機進行打字,就會出現這樣的場景:

 

 打字的輸入法就會預測你打字輸出的下一個單詞是什么,概率越大的放在最前面。

同樣的,我們在進行谷歌搜索的時候,谷歌會幫我們將后面的句子進行補全,其實也是用了這個語言模型來預測我們后面的一個單詞是什么;

 

 下面我們進入到n-gram模型的部分。

 

二.n-gram模型

在學習了語言模型之后,你可能就會感到很疑惑,怎么樣才能夠實現一個語言模型,將語言模型訓練出來呢?

答案很簡單:那就是訓練一個n-gram模型!

下面進入n-gram模型的定義:

n-gram的定義:g-gram就是n個連續的單詞串連在一起。

1-gram(只有一個單詞):words,I,think

2-gram:I think, ha ha, the students

3-gram: I think so, I think he, I do not think

以此類推

現在我們做出一個簡單的假設,假設第 X(t+1)個單詞是什么僅僅取決於之前的(n-1)個單詞。那么前面的(n-1)個單詞正好可以組成一個(n-1)-gram。因此我們可以用前面的(n-1)個單詞來計算第 X(t+1)個單詞出現的概率。列式如下:

 

在上面的公式當中,我們將條件概率的公式進行了展開,分子分母分別相除。在上面的公式當中,其實逗號 “,” 就相當於 “∩“ 符號,表示兩個事件的交集。那么我們如何計算出這個值呢?很簡單,用數數!公式如下:

 

 下面舉一個數數的例子:

 

得解!這樣n-gram就可以通過這個公式來計算下一個單詞出現的概率了!以上就是n-gram模型實現的整個過程,筆者可能也有一些理解不當之處嗎,還請多多指正!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM