我是靠谱客的博主 寒冷山水,最近开发中收集的这篇文章主要介绍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)]

最后

以上就是寒冷山水为你收集整理的N-gram提取特征的全部内容,希望文章能够帮你解决N-gram提取特征所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部