n-gram 语言模型 笔记整理

语言模型
某句子的概率可理解为 p(s) = p(w1, w2, … wn)
该联合概率分布就是语言模型
语言模型就是用来计算一个句子的概率的模型
克服词袋没考虑词序的问题
场景

  • 预计或者评估一个句子是否合理;
  • 评估两个字符串之间的差异程度,
  • 这也是模糊匹配中常用的一种手段;
  • 语音识别;
  • 机器翻译;
  • 文本分类。
  • 拼写纠错

马尔可夫假设
先将联合概率分布拆分成条件概率的连乘(贝叶斯定理)
p(x_1, x_2, … x_n) = p(x_1| )p(x_1) p(x_2|x_1) p(x_3|x_1, x_2) … p(x_n|x_1, x_2, …, x_{n-1}) p(| w_n )
其中 分别表示句子的首尾特殊标记
条件概率
P(B|A):A 条件下 B 发生的概率。 从一个大的空间进入到一个子空间(切片), 计算在子空间中的占比
P(B|A) = P(A, B) / P(A)
在这些条件概率里, 每一个词的概率需要考虑它前面的所有词. 而实际上, 相隔太远的两个词关联很弱
马尔可夫假设是指,假定每个词出现的概率只跟它前面的少数几个词有关
如 二阶马尔科夫假设只考虑前面两个词,相应的语言模型是三元模型
引入了马尔可夫假设的语言模型,也可以叫做马尔可夫模型
它的基本思想是将文本里面的内容按照词进行大小为N的滑动窗口操作, 形成了长度是N的词片段序列
N元模型
一元(unigram)
p(w_n)
二元(Bi-Gram)
p(w_n | w_n-1)
三元(Tri-Gram)
p(w_n | w_n-2, w_n-1)
常需要基于观察样本进行参数估计
自然想到极大似然估计
p(w_n | w_n-2, w_n-1) = count(w_n, w_n-2, w_n-1) / count(w_n-2, w_n-1)
当 N 从 3 开始继续增加时,语言模型的效果提升不显著,但资源耗费增加得很快
因此在实践中我们很少使用4-gram或者5-gram
模型平滑
p(w_n | w_n-2, w_n-1) = count(w_n, w_n-2, w_n-1) / count(w_n-2, w_n-1)
依赖于样本是否出现(样本不出现,并不能说明真的不存在)
因样本原因,大部分 p(w_n | w_n-2, w_n-1) 算出来为 0
原理
在必要的时候退化到低阶的模型,即一元、二元模型
策略
对所有非零概率打折,匀出一小部分概率给未出现的词串
低阶与高阶的线性插值

你可能感兴趣的:(n-gram 语言模型 笔记整理)