通俗理解n-gram语言模型

假设现在语料库的词汇量为V,对于长度为n的句子来说:

通过上面的表格可以看出,增加条件概率中的条件相对应的参数数量会呈现指数的增长。参数的数量越多表示模型相对越复杂。如果我们想要减少参数,最简单的方法就是简化模型,考虑极端情况下只保留p(w_i),此时计算句子的概率公式为:
\begin{aligned} p(s)=p(w_1,w_2,w_3...,w_n) &= \prod_{i = 1}^{n + 1}p(w_i|w_0w_1w_2...w_{i-1}) \\& \approx \prod_{i=1}^{n}p(w_i) \end{aligned}
依然使用上面我们自己构建的小型语料库:

商品 和 服务
商品 和服 物美价廉
服务 和 货币

如果想要计算p(BOS 商品 和 服务 EOS)的概率,只需要计算出p(BOS)、p(商品)、p(和)、p(服务)以及p(EOS)的五个概率值(依然使用最大似然估计来计算这些概率值):

  • p(BOS) = c(BOS) / 所有单词作为第一个词出现次数 = \frac{3}{3} = 1
  • p(商品) = c(商品) / 所有单词出现的次数 = \frac{2}{9}
  • p(和) = c(和) / 所有单词出现的次数 = \frac{2}{9}
  • p(服务) = c(服务) / 所有单词出现的次数 = \frac{2}{9}
  • p(EOS) = c(EOS) / 所有单词作为最后一个单词出现次数 = \frac{3}{3} = 1;

因此p(商品 和 服务) = p(BOS) \times p(商品) \times p(和) \times p(服务) \times p(EOS) = 1 \times \frac{2}{9} \times \frac{2}{9}\times \frac{2}{9} \times 1 = \frac{8}{27}

不使用条件概率使用p(w_i)认为当前单词出现的概率仅仅本身相关,我们称之为unigram,即一元语言模型。从V^1+V^2+...+V^n个参数缩减到了拥有V^1个参数的一元语言模型,显然模型太简单了。比如对于下面两个句子:

我 打 篮球
我 打 游泳

如果使用一元语言模型来这两个句子的概率值。

  • p(我 打 篮球) = p(BOS) \times p(我) \times p(打) \times p(篮球) \times p(EOS);
  • p(我 打 游泳) = p(BOS) \times p(我) \times p(打) \times p(游泳) \times p(EOS);

通过一元语言模型计算两个句子主要区别就在于p(篮球)和p(游泳)的概率值,其余概率值都是相同的,但是就两句话而言,"我 打 篮球"这句话要比"我 打 游泳"这句话的概率值要高很多。由于简化了模型,仅仅考虑当前单词的出现概率与本身有关,单词与单词之间是相互独立的。不过就上面两个句子而言,p(篮球 | 打) 要比p(游泳 | 打)的概率值要高,此时仅仅考虑当前单词自身的一元语言模型太简单了。

假设当前单词的出现概率仅仅与前面的1个单词相关,我们称之为bigram,即二元语言模型。二元语言模型的计算公式:
\begin{aligned} p(s)=p(w_1,w_2,w_3...,w_n) &= \prod_{i = 1}^{n + 1}p(w_i|w_0w_1w_2...w_{i-1}) \\& \approx \prod_{i=1}^{n}p(w_i|w_{i-1}) \end{aligned}
假设当前单词的出现概率仅仅与前面的2个单词相关,我们称之为trigram,即三元语言模型。三元语言模型的计算公式:
\begin{aligned} p(s)=p(w_1,w_2,w_3...,w_n) &= \prod_{i = 1}^{n + 1}p(w_i|w_0w_1w_2...w_{i-1}) \\& \approx \prod_{i=1}^{n}p(w_i|w_{i-1}w_{n-2}) \end{aligned}

以此类推,假设当前单词的出现概率仅仅与前面的n-1个单词相关,我们称之为n-gram语言模型。这种减少参数简化模型的假设方法就是马尔科夫假设。

n的取值 名称 含义
1 unigram 当前单词出现的概率仅仅与自身相关
2 bigram 当前单词出现的概率仅仅与前面的1个单词相关
3 trigram 当前单词出现的概率仅仅与前2个单词相关
... ... ...
n n-gram 当前单词出现的概率仅仅与前n-1个单词相关

随着n的取值越大,n-gram模型在理论上越精确,但是也越复杂,需要的计算量和训练语料数据量也就越大,并且精度提升的不够明显,所以在实际的任务中很少使用n\geq 4的语言模型。

无论是原始的语言模型还是n-gram语言模型,都是使用极大似然估计法来估计概率值,通过统计频次来近似概率值,统计频次极有可能统计不到较长句子的频次。

  • 如果分子为0,估计的概率值为0,由于连乘的方式会导致最终计算出句子的概率值为0;
  • 如果分母为0,分母为0,计算的公式将没有任何意义;

这被称为数据稀疏,对于n-gram语言模型来说,n越大,数据稀疏的问题越严重。即使是使用n相对比较小的二元语言模型,许多二元靠语料库也是统计不到的。比如对于下面这个小型的语料库:

商品 和 服务
商品 和服 物美价廉
服务 和 货币

"商品 货币"的频次就为0,当n-gram语言模型中的n越小,可统计的n元也就越丰富,一个很自然的解决方案就是利用低阶n元语法平滑到高阶n元语法。所谓的平滑就是字面上的意思:使n元语法频次的折线平滑为曲线。我们不希望二元语法"商品 货币"的频次突然跌倒0,因此使用一元语法"商品"和("或",不同的平滑方法可能需要不同的处理)"货币"的频次去平滑它。

平滑策略是语言模型的研究课题之一,人们提出了很多平滑技术,比如线性差值法(linear interpolation)、图灵平滑(Good-Turing)、加法平滑(Add-One Smoothing)等。

原文地址:
通俗理解n-gram语言模型

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,183评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,850评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,766评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,854评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,871评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,457评论 1 311
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,999评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,914评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,465评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,543评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,675评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,354评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,029评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,514评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,616评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,091评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,685评论 2 360

推荐阅读更多精彩内容