持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
语言模型
语言模型是对语言现象的数学抽象,给定一个句子w,语言模型就是计算句子出现概率p(w)的模型。
句子数量无穷无尽无法枚举,一本书也不会有完全相同的两个句子,这意味每个句子的频次都是1,大部分句子在语料库之外,概率都为0,这种现象为数据稀疏
句子由单词构成,给定词表的话单词是优先的,把句子建模成单词列表w=w1w2w3...wk,定义语言模型 p(w)=p(w1w2...wk)=p(w1∣w0)∗p(w2∣w0w1)∗...∗p(wk+1∣w0w1...wk)=∏t=1k+1p(wt∣w0w1...wt−1)
其中 w0=BOS,w1=EOS
问题:数据稀疏、计算代价大,例如"商品 和 服务"、"商品 和服 物美价廉"、"服务 和 货币"语料中,"商品 和 货币"计算出的概率为0
马尔科夫链与二元语法
马尔科夫假设简化语言模型:每个事件的发生概率只取决于前一个事件,这串时间构成的因果链被称为马尔科夫链,基于此假设 p(wt∣w0w1...wt−1)=p(wt∣wt−1)
由于每次计算只涉及两个单词的二元接续,该语言模型被称为二元语法模型 p(w)=p(w1w2...wk)=p(w1∣w0)∗p(w2∣w1)∗...∗p(wk+1∣wk)=∏t=1k+1p(wt∣wt−1)
二元语法模型解决了数据稀疏问题,语料库外的新句子的概率非0。上述语料计算出"商品 和 货币"计算出的概率为1/6
N元语法
利用类似思路得到N元语法:每个单词的概率取决于该单词之前的n个模型
p(w)=∏t=1k+n−1p(wt∣wt−n+1...wt−1),当n大于等于4时,数据稀疏和计算代价变得显著
数据稀疏与平滑策略
二元语法接续靠语料库也统计不到,例如“商品 货币”的频次为零
策略:使用低阶n元语法平滑高阶n元语法,使n元语法频次的折线平滑为曲线。我们不希望二元语法某些语句突然跌到零,因此使用一元语法的频次去平滑它。
最简单的一种是线性差值法,定义新的二元语法概率p(wt∣wt−1)=λpML(wt)+(1+λ)N1,其中N是语料库总频次