N-gram提取特征

N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。

每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。

例子

比如我们现在使用单元Unigram、二元的Bi-gram和三元的Tri-gram模型来对进行特征提取。

我们的训练样本为:

1)我去了北京天安门

2)我是中国人

 

那么我们对每一个样本进行单元Unigram、二元的Bi-gram和三元的Tri-gram模型提取。

单元Unigram来说

对于:“我去了北京天安门”

抽取 我 去了 北京 天安门

对于:“我是中国人”

抽取 我 是 中国人

 

二元Bi-gram

对于:“我去了北京天安门”

抽取 我 去了/ 去了 北京/ 北京 天安门/

对于:“我是中国人”

抽取 我 是 / 是 中国人/

三元Tri-gram

对于:“我去了北京天安门”

抽取 我 去了 北京/ 去了 北京 天安门/

对于:“我是中国人”

抽取 我 是 中国人/

 

那么从上面可以得出,我们的特征向量包含我在训练数据中利用单元Unigram,二元Bi-gram,以及三元Tri-gram抽取出的不同特征,组成我的特征向量维度。

然后以后对应一句话,直接进行Unigram,Bi-gram,Tri-gram进行抽取特征,出现哪个特征,就统计它的频数,最后填在特征向量中即可。

比如上面的特征向量我列举一下顺序如:

我、是、中国人、去了、北京、天安门、我 是、是 中国人、我 去了、去了 北京、北京 天安门、我 去了 北京、去了 北京 天安门、 我 是 中国人、

抽取特征过程

那么对于一句话“我是中国人”进行N-gram特征抽取的方法是。

单元Unigram来说

对于:“我是中国人”

抽取 我 是 中国人

二元Bi-gram

对于:“我是中国人”

抽取 我 是 / 是 中国人/

三元Tri-gram

对于:“我是中国人”

抽取 我 是 中国人/

于是我们就在出现的词语维度赋值为1,其余没有出现过的特征赋值为0,相当于one-hot特征。得到特征向量如下:

[1,1,1,0,0,0,1,1,0,0,0,0,0,0,1]

得到的上面这个特征向量就是我们使用N-gram提取特征方法提取出来的特征。

N-gram 算法采用固定长度为 N 的滑动窗口进行切分,目前常用 N-gram 模型是二元的 Bi-gram 和三元的 Tri-gram 模型。对两种模型的切分方法进行比较,比如 “北京 欢迎 你的 到来”,Bi-gram 切分就是 “北京欢迎  欢迎你的  你的到来”,Tri-gram 切分就是 “北京欢迎你的  欢迎你的到来”。这里说明一下为什么北京欢迎你的到来 的Bigram不是 北京 京欢 欢迎 迎你 你的 的到 到来,因为切分是以词为单位,这里一定要注意。

总结

如果我们使用N-gram提取特征,使用unigram,bigram,trigram提取特征的情况,在词汇表大小为V的时候,特征向量维度长度为[V(unigram)+V^2(bigram)+V^3(trigram)]

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值