1. 程式人生 > >計算語言學之語言模型

計算語言學之語言模型

0. 寫在前面

這一章我們介紹語言模型。不過要說的是,這裡的語言模型基本上是基於字詞的,但是其思想也是要掌握的,如果以後到句子、段落、篇章的時候,這些思想都是十分有用的。

1. 語言模型

語言模型(LM)在自然語言處理中佔有重要地位,而且像n元語法模型是一個簡單但是比較有效的模型。只能說比較有效,但是想要提高到非常高的地步,還需要繼續改進才行。

1.1 n元語法

我們正常人的思維,肯定是這樣想的,一句話的每個單詞,都會與之前所有出現的詞相關,甚至是與後面出現的詞也相關(雙向RNN)。

而一個語言模型通常構建為字串s的概率分佈p(s),這裡p(s)試圖反應的是字串s作為一個句子出現的頻率。對於一個由l個基元(基元就是基本單元,這裡一般指字、詞、短語,沒有再大的了)構成的句子s

=w1w2wl其概率計算公式可以表示為:

p(s)=p(w1)p(w2|w1)p(w3|w1w2)p(wl|w1wl1)
=i=1lp(wi|w1wi1)

上面就是n元語法,它只考慮前n-1個詞與當前詞的關係,而且n的取值一般是1,2,3,…,7等這種比較小的數。之所以這樣做,當然是為了簡化計算,因為如果我們考慮的前n個詞過多的話,那麼我們的自由引數都是幾何式增長,計算機一是訓練不來,二是根本沒有這麼多語料可供我們使用。

1.1.1 一元文法

一元文法就是n=1,也就是隻考慮當前詞,這樣的話,就相當於是統計詞頻了。沒有什麼太大價值。

1.1.2 二元文法

二元文法則是n=2,這就有價值了,我們稱為是一階馬爾科夫鏈。因為有一個概率是我們能夠看到的,但是會影響最終結果的:

p(s)i=1lp(wi|wi1)
p(wi|wi1)=c(wi1wi)wic(wi1wi)這時最大似然估計。

如果是這樣子,那麼它就是這樣一個樣子,需要在頭和尾分別新增一個開頭標記和結尾標記w0wl的內容。

1.1.3 三元文法

三元文法則是n=3,這時平時用的比較多的,我們稱為二階馬爾科夫鏈。同樣的,它的樣子我們也可以寫出來:

p(s)i=1lp(wi|wi1wi2)
但有時候,如果資料太過稀疏的話,我們可能要考慮資料平滑了。
或者說可以使用下面式子來近似:
p
(wi|wi1wi2)=q1f(wi|wi1wi2)+q2f(wi|wi1)+q3f(wi)

其中q1+q2+q3=1,而且f(wi|wi1wi2)f(wi|wi1)f(wi)是通過訓練語料得到的相對頻率。

1.2 語言模型評價

評價一個語言模型的效能通常就是使用交叉熵或者困惑度來進行,
一個n元文法,總結來講,可以使用如下公式來統一:

p(s)i=1l+1p(wi|wi1in+1)
那麼p(wi|wi1in+1)=p(wi|wi

相關推薦

計算語言學語言模型

0. 寫在前面 這一章我們介紹語言模型。不過要說的是,這裡的語言模型基本上是基於字詞的,但是其思想也是要掌握的,如果以後到句子、段落、篇章的時候,這些思想都是十分有用的。 1. 語言模型 語言模型(LM)在自然語言處理中佔有重要地位,而且像n元語法模型

卷積新用語言模型

Language Modeling with Gated Convolutional Networks 長期以來,基於LSTM的深度學習演算法由於可以對任意長度的上下文進行建模而盤踞在自然語言處理界的山頂。卷積神經網路雖然蠢蠢欲動,卻始終不得其法。 而今,這

NLP底層技術語言模型

  本文結合cs224n:Natural Language Processing with Deep Learning的Lecture 8、Lecture 9內容,從語言模型(Language Model)講到N-Gram LM(N-Gram Language

自然語言處理語言模型綜述

一 文法型語言模型 文法型語言模型是人工編制的語言學文法,文法規則來源於語言學家掌握的語言學知識和領域知識,但這種語言模型不能處理大規模真實文字。 二 統計語言模型 統計語言模型常用的思想是用一個詞在句子中的neighborhood表示該詞 主要的統計語言模型有: 1.上

計算語言學概論複習筆記(分詞、語言模型、隱馬爾科夫、POS、ML、DL、MT)

01(計算語言學概論) 計算語言學的應用 機器翻譯 人機對話 資訊檢索 資訊提取 自動文摘 文字分類 拼寫檢查 音字轉換 什麼是計算語言學? 計算語言學是通過建立形式化的計算模型來分 析、理解

讀《數學美》第三章 統計語言模型

其它 bigram 利用 理解 googl track 推斷 art google 自然語言從產生開始。逐漸演變為一種基於上下文相關的信息表達和傳遞方式,在計算機處理自然語言時,一個最主要的問題就是為自然語言上下文相關的特性建立數學模型,叫做統計語言模型(Statist

(待續)科學計算與MATLAB語言資料分析

MATLAB資料分析專題 主要內容: 資料統計分析 多項式計算 資料插值 曲線擬合 第一節 資料統計分析 1)最值 求矩陣的最大和最小元素 max( ): 求向量或矩陣的最大元素 min( ): 求向

科學計算與MATLAB語言基礎知識

科學計算與MATLAB語言 MOOC 筆記 1、MATLAB基礎知識 MATLAB科學計算流程: MATLAB主要功能: MATLAB搜尋路徑 MATLAB數值資料: (1)數值資料型別 整型 浮點型 複數型

服務計算學習路-CentOS7 安裝 Go 語言開發環境

CentOS7 安裝 Go 語言開發環境 文章目錄 CentOS7 安裝 Go 語言開發環境 安裝 VSCode 編輯器 1.匯入金鑰以及設定repo檔案 2.使用yum安裝VSCode

語言模型中用到的幾種取樣不全版

1、蒙特卡洛數值積分 在科學計算領域,對一個已知分佈的p(x),函式f(x)的期望可以通過數值解法方法來近似計算。從p(x)中獨立抽取的n個樣本xi,其中i = 1, · · · , n。當 n足夠大時,f(x)的期望可以用這n個樣本的均值來近似: 根據大數定律,當n趨

NLP神經網路語言模型超級無敵最佳資料

語言模型 Attention Is All You Need(Transformer)原理小結 ELMo解析 OpenAI GPT解析 BERT解析 https://www.cnblogs.com/huangyc/p/9861453.html 從

R語言 時間序列ARIMA模型

自迴歸移動平均模型(arima)ARMA模型是對不含季節變動的平穩序列進行建模。ARIMA模型的本質和ARMA是一樣的,只是ARIMA針對不平穩的序列進行建模的,將ARMA模型裡的序列值進行差分就可以。

深度學習課程文字預處理、詞袋模型、word2vec、語言模型(1.9)

詞向量和語言模型 深度學習其實最成功的應用是在影象上,有了 CNN 可以很好地提取影象上的特徵,這些特徵經過幾層的神經網路結構可以很好地組合成比較抽象的特徵。 NLP 常見任務 自動摘要:媒體需要的頭條通過 NLP 自動提取 機器翻譯 主題識別 文字分類

Language Model perplexity by using tensorflow使用tensorflow RNN模型計算語言模型的困惑度

LM perplexity by using tensorflow 1、Language model perplexity是衡量語言模型好壞的重要指標,其計算公式P(sentence)^-(1/N) 2、tensorflow的RNN模型如何使用 參考API

數學美 第3章 統計語言模型

語料原理上越多越好,但是要把握好一個度的問題比如機器翻譯中的雙語預料就比較少的,還有就是有很多資料都有噪聲和錯誤的,訓練語料的噪聲高低也會對模型的效果產生一定的影響,因此在訓練資料的時候通常會對訓練資料進行預處理,一般情況下,少量的隨機噪聲清理的成本非常高,通常就不做處理,還有就是有些噪聲處理的太乾淨反而是不

SRILM使用訓練無平滑語言模型

【語料準備】 訓練語料 wget http://idiom.ucsd.edu/~rlevy/teaching/2015winter/lign165/lectures/lecture13/toy-example/corpus.txt 測試語料 wg

1《數學美》第3章 統計語言模型

目錄 第3章 統計語言模型 1、用數學的方法描述語言規律 本節提到的概念 本節人物 2、延伸閱讀:統計語言模型的工程訣竅 2.1、高階語言模型

計算廣告CTR預測--PNN模型

論文為:Product-based Neural Networks for User Response Prediction  1、原理 給大家舉例一個直觀的場景:比如現在有一個鳳凰網站,網站上面有一個迪斯尼廣告,那我們現在想知道使用者進入這個網站之後會不會有興趣點選這個廣告,類似這種使用者點選

5Python全棧路系列Django模型

模型續Python全棧之路系列之Django模型續連表操作一對一在app的models.py文件內添加以下內容用戶創建一對多關系的表:from django.db import models # Create your models here. class UserType(models.Model):

多路I/O轉接select模型

struct truct rose sleep 輸出 問題 pre strerror 結構 I/O復用使得程序可以同一時候監聽多個文件描寫敘述符。這對提高程序的性能至關重要。通常,網絡程序同一時候處理或者監聽多個socket文件描寫敘述符的時候可以考慮使用I/O復用模型