n-gram模型是天然語言處理裏面的一個傳統模型。咱們來看看他是怎麼實現的吧!要了解n-gram模型,咱們先來看看什麼是語言模型!學習
語言模型的定義是:語言模型是一種用來預測下一個單詞什麼的任務。好比咱們有一句話:3d
the students opened their _______. (其中能夠填寫books/laptops/exam/minds),那麼語言模型就是用來預測這個空當中應該填寫什麼單詞。blog
語言模型的正式定義爲:事件
也就是咱們在知道前面的單詞的狀況下,計算最後一個單詞X(t+1)的機率是多大,最後一個單詞X(t+1)能夠是詞表當中的任意單詞,咱們能夠將詞表當中的每個單詞都計算一遍。上面的這個公式其實也很容易理解,它是一個條件機率的公式,表示的是在 X(t),X(t-1),... ,X(1)發生的條件下,X(t+1)發生的機率。
搜索
一樣的,咱們除了獲得最後一個單詞發生的機率,咱們能夠獲得整段句子所發生的機率,可使用公式寫成下面這種形式:im
這樣就獲得整個句子發生的機率,整個公式在機率論與數理統計裏十分常見,也就是簡單將具有發生多個事件機率表達式進行展開,方便計算。統計
咱們的語言模型的運用很是常見,在生活當中,好比你使用了你的智能手機進行打字,就會出現這樣的場景:top
打字的輸入法就會預測你打字輸出的下一個單詞是什麼,機率越大的放在最前面。db
一樣的,咱們在進行谷歌搜索的時候,谷歌會幫咱們將後面的句子進行補全,其實也是用了這個語言模型來預測咱們後面的一個單詞是什麼;word
下面咱們進入到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模型實現的整個過程,筆者可能也有一些理解不當之處嗎,還請多多指正!