在深度学习中,存在一种技术名为N元语言模型。
首先介绍什么是语言模型,语言模型的基本任务是在给定词序列
w
1
w
2
…
w
t
−
1
w_1w_2\ldots w_{t-1}
w1w2…wt−1的条件下,对下一时刻t可能出现的词
w
t
w_t
wt的条件概率
P
(
w
t
∣
w
1
w
2
…
w
t
−
1
)
P(w_t|w_1w_2\ldots w_{t-1})
P(wt∣w1w2…wt−1)进行估计。一般把
w
1
w
2
…
w
t
−
1
w_1w_2\ldots w_{t-1}
w1w2…wt−1称为语言模型的历史,在给定历史词序列的前提下,进行下一个词的预测,类似于我们经常玩的词语接龙。·
为了估计
P
(
w
t
∣
w
1
w
2
…
w
t
−
1
)
P(w_t|w_1w_2\ldots w_{t-1})
P(wt∣w1w2…wt−1),我们可以利用条件概率的计算公式,即:
P
(
w
t
∣
w
1
w
2
…
w
t
−
1
)
=
P
(
w
1
w
2
…
w
t
)
P
(
w
1
w
2
…
w
t
−
1
)
P(w_t|w_1w_2\ldots w_{t-1})=\frac{P(w_1w_2 \dots w_t)}{P(w_1w_2 \dots w_{t-1})}
P(wt∣w1w2…wt−1)=P(w1w2…wt−1)P(w1w2…wt)
其中
P
(
w
1
w
2
…
w
t
−
1
)
P(w_1w_2 \dots w_{t-1})
P(w1w2…wt−1)和
P
(
w
1
w
2
…
w
t
)
P(w_1w_2 \dots w_t)
P(w1w2…wt)可以分别用字串
w
1
w
2
…
w
t
−
1
w_1w_2 \dots w_{t-1}
w1w2…wt−1和
w
1
w
2
…
w
t
w_1w_2 \dots w_{t}
w1w2…wt在文档中出现频次进行估计。
但是这样做有一个问题,当字串
w
1
w
2
…
w
t
−
1
w_1w_2 \dots w_{t-1}
w1w2…wt−1或者
w
1
w
2
…
w
t
w_1w_2 \dots w_{t}
w1w2…wt长度过长时,它们出现的频次往往较低,影响概率估计的准确性。极端情况下,当字串就是文档本身,或者文档除去最后一个词外的所有词,这时频次为1,估计的偶然性较大。
为此,学界采用马尔科夫假设,认为文本中某个单词出现的概率只和前n-1个单词上文窗口有关,将语言模型简化为
P
(
w
t
∣
w
t
−
(
n
−
1
)
…
w
t
−
2
w
t
−
1
)
P(w_t|w_{t-(n-1)}\ldots w_{t-2} w_{t-1})
P(wt∣wt−(n−1)…wt−2wt−1),相应的,条件概率的计算公式简化为:
P
(
w
t
∣
w
t
−
(
n
−
1
)
…
w
t
−
2
w
t
−
1
)
=
P
(
w
t
−
(
n
−
1
)
…
w
t
−
2
w
t
−
1
)
P
(
w
t
−
(
n
−
1
)
…
w
t
−
1
w
t
)
P(w_t|w_{t-(n-1)}\ldots w_{t-2} w_{t-1})=\frac{P(w_{t-(n-1)}\ldots w_{t-2} w_{t-1})}{P(w_{t-(n-1)}\ldots w_{t-1} w_{t})}
P(wt∣wt−(n−1)…wt−2wt−1)=P(wt−(n−1)…wt−1wt)P(wt−(n−1)…wt−2wt−1)
这时模型更关注文档中长度为n的连续出现的一组词序列,即n-gram。
我们是使用训练集中各种n-gram出现的频次来估计它们在语料库中的概率分布,n-gram的频次分布存在不均衡现象。有些比较多,有些比较少。采用加1平滑,补不足,增加那些从来没有出现过的n-gram的出现概率(之前利用频次估计的概率可能为0,即不可能事件,太过绝对,加1使冷门n-gram概率估计很小但不为0);同时损有余,削弱热门n-gram的出现概率(类比于王者荣耀的强势英雄,所有英雄都加强了,强势英雄相对就削弱了,或者是一个分数,分子增加了1,但是分母增加了100,分数的值也即出现概率相对也就缩小了)。