n-gram模型是天然语言处理里面的一个传统模型。咱们来看看他是怎么实现的吧!要了解n-gram模型,咱们先来看看什么是语言模型!学习
语言模型的定义是:语言模型是一种用来预测下一个单词什么的任务。好比咱们有一句话:3d
the students opened their _______. (其中能够填写books/laptops/exam/minds),那么语言模型就是用来预测这个空当中应该填写什么单词。blog
语言模型的正式定义为:事件
也就是咱们在知道前面的单词的状况下,计算最后一个单词X(t+1)的几率是多大,最后一个单词X(t+1)能够是词表当中的任意单词,咱们能够将词表当中的每个单词都计算一遍。上面的这个公式其实也很容易理解,它是一个条件几率的公式,表示的是在 X(t),X(t-1),... ,X(1)发生的条件下,X(t+1)发生的几率。
搜索
一样的,咱们除了获得最后一个单词发生的几率,咱们能够获得整段句子所发生的几率,可使用公式写成下面这种形式:im
这样就获得整个句子发生的几率,整个公式在几率论与数理统计里十分常见,也就是简单将具有发生多个事件几率表达式进行展开,方便计算。统计
咱们的语言模型的运用很是常见,在生活当中,好比你使用了你的智能手机进行打字,就会出现这样的场景:top
打字的输入法就会预测你打字输出的下一个单词是什么,几率越大的放在最前面。db
一样的,咱们在进行谷歌搜索的时候,谷歌会帮咱们将后面的句子进行补全,其实也是用了这个语言模型来预测咱们后面的一个单词是什么;word
下面咱们进入到n-gram模型的部分。
在学习了语言模型以后,你可能就会感到很疑惑,怎么样才可以实现一个语言模型,将语言模型训练出来呢?
答案很简单:那就是训练一个n-gram模型!
下面进入n-gram模型的定义:
n-gram的定义:g-gram就是n个连续的单词串连在一块儿。
1-gram(只有一个单词):words,I,think
2-gram:I think, ha ha, the students
3-gram: I think so, I think he, I do not think
以此类推
如今咱们作出一个简单的假设,假设第 X(t+1)个单词是什么仅仅取决于以前的(n-1)个单词。那么前面的(n-1)个单词正好能够组成一个(n-1)-gram。所以咱们能够用前面的(n-1)个单词来计算第 X(t+1)个单词出现的几率。列式以下:
在上面的公式当中,咱们将条件几率的公式进行了展开,分子分母分别相除。在上面的公式当中,其实逗号 “,” 就至关于 “∩“ 符号,表示两个事件的交集。那么咱们如何计算出这个值呢?很简单,用数数!公式以下:
下面举一个数数的例子:
得解!这样n-gram就能够经过这个公式来计算下一个单词出现的几率了!以上就是n-gram模型实现的整个过程,笔者可能也有一些理解不当之处吗,还请多多指正!