语言模型(N-Gram)

问题描述:因为公司业务产品中,须要用户本身填写公司名称,而这个公司名称存在大量的乱填现象,所以须要对其作一些归一化的问题。在这基础上,能延伸出一个预测用户填写的公司名是否有效的模型出来。spa

目标:问题提出来了,就是想找到一种办法来预测用户填写的公司名是否有效?blog

问题分析:要想预测用户填写的公司名称是否有效,须要用到NLP的知识内容,咱们首先可以想到的是利用NLP中的语言模型,来对公司名称进行训练建模,并结合其余的特征(如:长度等)进行预测。字符串

1、N-Gram的原理产品

N-Gram是基于一个假设:第n个词出现与前n-1个词相关,而与其余任何词不相关。(这也是隐马尔可夫当中的假设。)整个句子出现的几率就等于各个词出现的几率乘积。各个词的几率能够经过语料中统计计算获得。假设句子T是有词序列w1,w2,w3...wn组成,用公式表示N-Gram语言模型以下:基础

P(T)=P(w1)*p(w2)*p(w3)***p(wn)=p(w1)*p(w2|w1)*p(w3|w1w2)***p(wn|w1w2w3...)原理

 

通常经常使用的N-Gram模型是Bi-Gram和Tri-Gram。分别用公式表示以下:方法

Bi-Gram:  P(T)=p(w1|begin)*p(w2|w1)*p(w3|w2)***p(wn|wn-1)im

Tri-Gram:  P(T)=p(w1|begin1,begin2)*p(w2|w1,begin1)*p(w3|w2w1)***p(wn|wn-1,wn-2)统计

  • 注意上面几率的计算方法:P(w1|begin)=以w1为开头的全部句子/句子总数;p(w2|w1)=w1,w2同时出现的次数/w1出现的次数。以此类推。(这里须要进行平滑)

2、N-Gram的应用db

根据上面的分析,N-Gram(有时也称为N元模型)是天然语言处理中一个很是重要的概念,一般在NLP中,它主要有两个重要应用场景:

(1)、人们基于必定的语料库,能够利用N-Gram来预计或者评估一个句子是否合理。

(2)、另一方面,N-Gram的另一个做用是用来评估两个字符串之间的差别程度。这是模糊匹配中经常使用的一种手段。

一、N-gram在两个字符串的模糊匹配中的应用

首先须要介绍一个比较重要的概念:N-Gram距离。

(1)N-gram距离

它是表示,两个字符串s,t分别利用N-Gram语言模型来表示时,则对应N-gram子串中公共部分的长度就称之为N-Gram距离。例如:假设有字符串s,那么按照N-Gram方法获得N个分词组成的子字符串,其中相同的子字符串个数做为N-Gram距离计算的方式。具体以下所示:

字符串:s="ABC",对字符串进行分词,考虑字符串首尾的字符begin和end,获得begin,A,B,C,end。这里采用二元语言模型,则有:(begin,A)、(A,B)、(B,C)、(C,end)。

字符串:t="AB",对字符串进行分词,考虑字符串首尾的字符begin和end,获得begin,A,B,end。这里采用二元语言模型,则有:(begin,A)、(A,B)、(B,end)。

此时,若求字符串t与字符串s之间的距离能够用M-(N-Gram距离)=0。

然而,上面的N—gram距离表示的并非很合理,他并无考虑两个字符串的长度,因此在此基础上,有人提出非重复的N-gram距离,公式以下所示:

                                               

上面的字符串距离从新计算为:

      4+3-2*3=1

二、N-Gram在判断句子有效性上的应用

假设有一个字符串s="ABC",则对应的BI-Gram的结果以下:(begin,A)、(A,B)、(B,C)、(C,end)。则对应的出现字符串s的几率为:

P(ABC)=P(A|begin)*P(B|A)*P(C|B)*P(end|C)。

 

三、N-Gram在特征工程中的应用

在处理文本特征的时候,一般一个关键词做为一个特征。这也许在一些场景下可能不够,须要进一步提取更多的特征,这个时候能够考虑N-Gram,思路以下:

以Bi-Gram为例,在原始文本中,以每一个关键词做为一个特征,经过将关键词两两组合,获得一个Bi-Gram组合,再根据N-Gram语言模型,计算各个Bi-Gram组合的几率,做为新的特征。

相关文章
相关标签/搜索