语言模型

定义

维基上对语言模型的解释是

A statistical language model is a probability distribution over sequences of words. Given such a sequence, say of length $m$ , it assigns a probability $P(w_1,…,w_m)$ to the whole sequence.

语言模型是个概率分布,用来计算一个词语序列出现的概率。

如何计算这个概率

一个简单的办法

举个例子

我 明天 吃 食堂

食堂 我 吃 明天

(人工分好词了~)

第一句话出现的概率

第二句话出现的概率

等号右边的每个项可以根据语料库算出其先验概率。通常来说,第一句话概率会比第二句高(正常人更可能说出第一句话)。

这里的想法是:一句话中,一个词的出现概率会受前面所有词的影响。

更一般的,给定一个语句 $s=w_1w_2…w_m$

该语句的先验概率为

但是这么算有个问题,句子长了或者词汇很多的话, 可能出现的词对组合就爆炸了。

比如,词库里有5000个词,算由三个词组成的句子的概率,3个位置5000个词,就有$5000^3=125000000000$ 种可能组合。

另外,算长句子出现概率时,可能后面那些长的组合在语料库中就没出现过,算出来全是零。

n元文法(n-gram)

之前的算法是把一个词前面出现过的所有词都考虑进去了,上述的两个问题也由此产生。

如果只考虑一个词前面一个或几个词的话,问题就小很多了,起码组合可能种类减少了很多。

对一个词只考虑它前面$n-1$个词,这就是n元文法。

即给定语句 $s=w_1w_2…w_m$

(为了保证条件概率在$i=1$时有意义,同时为了保证句子内所有字符串的概率和为 1,在句子首尾增加两个标志)

$s=w_0w_1…w_{m+1}, w_0=”<BOS>”, w_{m+1}=”<EOS>”$

它的概率为

特别的

当 $n=1$ 时,该模型被称为 一元文法 (uni-gram, monogram)

当 $n=2$ 时,该模型被称为 二元文法 (bi-gram), 也称 一阶马尔可夫链

当 $n=3$ 时,该模型被称为 三元文法 (tri-gram), 也称 二阶马尔可夫链

其中 二元 三元 较为常用。

下面举个二元文法的例子

给定语料:

“John read Moby Dick”,

“Mary read a different book”,

“She read a book by Cher”

加下标志:

“<BOS> John read Moby Dick <EOS>”,

“<BOS> Mary read a different book <EOS>”,

“<BOS> She read a book by Cher <EOS>”

算下句子 “<BOS> John read a book <EOS>” 的概率

好的,算完了,再来看下句子”<BOS> book read a John<EOS>”,很明显,它的出现概率为零,因为第一个组合的概率 当然,里面还有其他词对没在语料库中出现过。

所以,”<BOS> John read a book <EOS>” 比 “<BOS> book read a John<EOS>” 更可能出现。

概率为零的 “<BOS> book read a John<EOS>” 基本不会出现,这看上去很合理。

但是,看这句话:”<BOS> Cher read a book<EOS>” , 由于

这句话的概率算出来是零,尽管它看上去是个正常的句子。

这个问题是由 数据匮乏/数据稀疏(Data Sparsity) 引起的。(例子中,语料库中缺少”Cher”开头和含有”Cher read”的句子)

数据平滑

解决这问题,需要用上 数据平滑(Data Smoothing)

一个简单粗暴的方法是 加一法(Add-One Smoothing)

基本思想: 每种情况出现的次数加1。

以二元文法为例

用它来算下前面几个例句的概率:

所有句子都会得到一个概率,根据以上概率可以看出

“John read a book” 最有可能出现,而尽管”Cher read a book”的概率很低,它也比”book read a John”的概率高十倍。

数据平滑的方法还有很多,比如 减值法/折扣法(Discounting)删除插值法(Deleted Interpolation),详情可以移步

https://nlp.stanford.edu/~wcmac/papers/20050421-smoothing-tutorial.pdf

参考

中国科学院大学-自然语言处理-2018

https://www.bilibili.com/video/av46707588/