NLP入门之N元语法模型

在上边我们知道其实当今的自然语言处理的主流趋势是统计自然语言处理,而统计自然语言处理的基本目的就是结合语料库中的一些数据对于某些未知的数据进行处理,从而根据这些数据分布得到一些推论,大家想一想,我们在语料库里发现”你”和”吃饭了么”这两个词总是存在着一些附着关系,是不是我们就有预测在一些未知的文章中也会有这样附着关系?

在这一篇文章中,我们将会介绍下n元语法模型和解决因为数据缺乏的情况下引入的几种常用的平滑度算法,

1:n元语法模型

n元语法模型的基本的公式可以看作为下面的概率公式P:

这个公式所表示的含义其实是在产生第i个词的概率是由前边已经产生的从w1到wi-1的这个词概率来决定的,在这样的一个过程中,我们使用了先前词,也就是通过用先前词来去预测下一个将要出现的词,然后我们根据大量的文本观测,我们会知道这个词会不会越来越趋向于在这些词的后面.比如上边举例的”你””吃饭了么”,现在假设我们的文本中有1000句话,现在你吃饭了么出现了20次,这样的话我们就会得到相应的出现这个词的概率P(吃饭了么)=(20/1000)=(1/50).

当然,在实际的任务中没有那么多实际的文本历史供我们参考,很多时候出现的词或者句子我们之前都没有见过,这样的话我们以前的经验就没有办法预测了,比如:我们遇到了一个句子:”你吃饭不吃饭?”,这样的话就跟”你吃饭了么”在前半部分是一样,但是后边却有一个不一样的结尾.那要怎么解决这个问题呢?是不是把以前的文本出现过的历史组合进行总结,然后进行学习,对于预期将要出现的词,会不会出现一个合理的预测呢?

这样的组合文本历史的可能出现的方法就是我们常说的马尔科夫假设,这个假设其实说的就是上边所对应的问题,这个假设说的其实就是认为接下来要出现的词是由前边出现的词来影响的.如果按照上边的公式来说,因为前边是由i-1个词语,那么如果我们构造一个模型的话,所有的历史其实就是前边的i-1个词,这样的话我们构造的模型就成为(n-1)阶马尔科夫模型,或者说n元语法模型(因为我们要预测第n个词).

这里要说一下这个n的取值问题,一般情况下我们是不能把这个n取值过大的,要是过大的话,肯定会有很多的等价类,太多的自由参数未必是一件好事(其实把数据划分成多个等价类有利有弊,一方面如果我们把数据分割成多个类的话其实可以让我们有更多的辨别性,但是要是使用了太多的等价类,那么对于每个类别来说,他的训练数据很小,甚至有些部分没有训练数据,这样的话再去做目标特征的统计估计这时候就很不准确了,所以这时候如何去权衡,找到一个合适的类别数,是我们的一个探索目标.)那么这时候我们再去看看n的取值问题,一般情况下大多数常用的n的取值是n=2,3,4的情况,这个时候分别称为bigram(二元语法),trigram(三元语法),fourgram(四元语法).

现在假设一个说话者的使用词有20000个,那么参数的数量如下图所示:

从这个图上我们看到,到四元语法模型就已经拥有非常巨大的参数了,所以构造更多的语法模型显然是不现实的.

2:构建n元语法模型

1;通常构建模型的第一步是处理语料

首先我们需要对语料进行处理,因为根据n元语法要求,一个词的概率只跟前边的词的概率有关,因为要使所有的概率之和为1,因此我们要在句首和句尾加上一个句首标记和句尾标记,这样的话我们就可以计算,下边举一个例子:

p(I Love You)

在这样处理完句子之后,如果我们得到了一个确定的语料库,如果现在一个词出现了10次,比如:”good”后面有8次跟着”morning”,1次”boy”,一次”girl”,那么估计下一个词,我们会出现哪一种概率呢?

其实我们可以考虑使用相对概率来估计:

P(morning)=0.8

P(girl)=0.1

P(boy)=0.1

P(other)=0(other不属于上述三个词汇)

这样归类之后,去给这些数据计算他们的概率了,再去归一化,这样就可以计算出来:

在这里我们去用C(w1.......wn)来表示n元语法在给定文本中出现的次数,这样的话我们就有下边的计算公式:

像这样的估计的处理方式,我们叫做p(wn|w1.........wn-1)的最大似然估计(MLF)

之所以称为最大似然估计,是因为他选择的参数相对于训练数据给出了最高的概率(满足了正常随机约束),但是其实我在上网搜这个问题的时候,很多人说MLF是不太适合自然语言处理的,因为本身我们的语料库规模会很大,我们的数据会很稀疏,并且像上边那样的常用词概率这么高的情况是非常理想的状态,大部分词都是不常用的,那么这样就会出现一个问题,如果一个n元组正好在判别时没有了训练语料出现时,这时候的概率就会很差,就跟上边的词,good后边还可以跟很多的词,但是最大似然估计并不会认为会有其他的词跟在这个good后边.

那么应该怎么去解决这个问题,这个时候我们就会想应该要有一种更好的估计方法,要是能够判别出在训练数据中没有出现的事件,并且能够给出一定的概率,这时候一些研究者给出了更好方法:

如果可以通过稍微减少已经观察到的事件概率的大小,并且可以把少量的概率分配到没有看到过的事件上,这时候每件事件都会发生并且可能有效的工作,这个就是我们常说的折扣法,折扣的过程就叫做平滑(这难道是因为没有0值分布会比有0值分布更平滑?)

那么我们应该如何进行平滑,平滑的常用方式有几种,在下一篇文章中我们将讲述下几种常用的数据平滑方法.

初学NLP,不足之处请各位多多批评指正,在此谢过!

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

推荐阅读更多精彩内容