情感分析之TF-IDF算法

情感分析之TF-IDF算法,第1张

http://minieastdaycom/bdmip/180414224336264html

在这篇文章中,主要介绍的内容有:

1、将单词转换为特征向量

2、TF-IDF计算单词关联度

文本的预处理和分词。

如何将单词等分类数据转成为数值格式,以方便我们后面使用机器学习来训练模型。

一、将单词转换为特征向量

词袋模型(bag-of-words model):将文本以数值特征向量的形式来表示。主要通过两个步骤来实现词袋模型:

1、为整个文档集(包含了许多的文档)上的每个单词创建一个唯一的标记。

2、为每个文档构建一个特征向量,主要包含每个单词在文档上的出现次数。

注意:由于每个文档中出现的单词数量只是整个文档集中很少的一部分,因此会有很多的单词没有出现过,就会被标记为0。所以,特征向量中大多数的元素就会为0,就会产生稀疏矩阵。

下面通过sklearn的CountVectorizer来实现一个词袋模型,将文档转换成为特征向量

通过countvocabulary_我们可以看出每个单词所对应的索引位置,每一个句子都是由一个6维的特征向量所组成。其中,第一列的索引为0,对应单词"and","and"在第一和二条句子中没有出现过,所以为0,在第三条句子中出现过一些,所以为1。特征向量中的值也被称为原始词频(raw term frequency)简写为tf(t,d),表示在文档d中词汇t的出现次数。

注意:在上面词袋模型中,我们是使用单个的单词来构建词向量,这样的序列被称为1元组(1-gram)或单元组(unigram)模型。除了一元组以外,我们还可以构建n元组(n-gram)。n元组模型中的n取值与特定的应用场景有关,如在反垃圾邮件中,n的值为3或4的n元组可以获得比较好的效果。下面举例说明一下n元组,如在"the weather is sweet"这句话中,

1元组:"the"、"weather"、"is"、"sweet"。

2元组:"the weather"、"weather is"、"is sweet"。

在sklearn中,可以设置CountVecorizer中的ngram_range参数来构建不同的n元组模型,默认ngram_range=(1,1)。

sklearn通过CountVecorizer构建2元组

二、TF-IDF计算单词关联度

在使用上面的方法来构建词向量的时候可能会遇到一个问题:一个单词在不同类型的文档中都出现,这种类型的单词其实是不具备文档类型的区分能力。我们通过TF-IDF算法来构建词向量,从而来克服这个问题。

词频-逆文档频率(TF-IDF,term frequency-inverse document frequency):tf-idf可以定义为词频×逆文档频率

其中tf(t,d)表示单词t在文档d中的出现次数,idf(t,d)为逆文档频率,计算公式如下

其中,nd表示文档的总数,df(t,d)表示包含单词t的文档d的数量。分母中加入常数1,是为了防止df(t,d)=0的情况,导致分母为0。取log的目的是保证当df(t,d)很小的时候,不会导致idf(t,d)过大。

通过sklearn的TfidfTransformer和CountVectorizer来计算tf-idf

可以发现"is"(第二列)和"the"(第六列),它们在三个句子中都出现过,它们对于文档的分类所提供的信息并不会很多,所以它们的tf-idf的值相对来说都是比较小的。

注意:sklearn中的TfidfTransformer的TF-IDF的计算与我们上面所定义TF-IDF的公式有所不同,sklearn的TF-IDF计算公式

通常在计算TF-IDF之前,会对原始词频tf(t,d)做归一化处理,TfidfTransformer是直接对tf-idf做归一化。TfidfTransformer默认使用L2归一化,它通过与一个未归一化特征向量L2范数的比值,使得返回向量的长度为1,计算公式如下:

下面通过一个例子来说明sklearn中的TfidfTransformer的tf-idf的计算过程,以上面的第一句话"The sun is shining"为例子

1、计算原始词频

a、单词所对应的下标

b、计算第三句话的原始词频tf(t,d)

c、计算逆文档频率idf(t,d)

注意:其他的词在计算tf-idf都是0,因为原始词频为0,所以就不需要计算idf了,log是以自然数e为底。

d、计算tf-idf

所以,第一个句子的tf-idf特征向量为[0,1,129,129,0,1,0]

e、tf-idf的L2归一化

  一、《诗经》中《小雅、采薇》的末章:昔我往矣,杨柳依依,今我来思,雨雪霏霏。下雪之初,先下雪珠,有时降雪也伴随着降雨,所以有“雨雪霏霏”之句。  二、晋联句诗 谢太傅寒雪日集儿女讲论文义事,雪下大了,公曰:“大雪纷纷何所似”,兄子曰:“撒盐空中差可拟”,兄女曰:“未若柳絮因风起”,便可以看作是韵同义贯的咏雪联句诗。  用“撒盐空中”和“柳絮因风起”来比拟“大雪纷飞”,各有千秋。有人认为“撒盐空中”一喻好,雪的颜色和下落之态跟盐比较接近,而柳絮呈灰白色,在风中往往上扬,甚至飞得更高更远,跟雪的飘舞方式不同。写物必须首先求得形似而后达于神似,形似是基础。  有人认为“柳絮因风起”一喻好,它给人以春天即将到来的感觉,有深刻的意蕴。而“撒盐”一喻所缺乏的恰恰是意蕴。好的诗句要有意象,意象是物象和意蕴的统一,“柳絮”一喻就好在有意象。  三、南朝梁吴均有一首《咏雪》五言诗,近于律体,是历来传诵的名篇:“微风摇庭树,细雪下帘隙。萦空如雾转,凝阶似花积。不见杨柳春,徒见桂枝白。泪无人道,相思空何益。”全诗前六句写景,后两句抒情,极有韵致,不论是写雪的动态美“如雾转”,还是写雪的静态美“似花积”,都能状难写之景如在目前。  四、 (一) 唐李白《北风行》:燕山雪花大如席,片片吹落轩辕台。  [赏析] 燕山一带的雪花大得像席子一样,一片一片吹落在轩辕台上 这是李白描写雪花的名句。燕山在今河北蓟县东南,这里泛指我国北方。轩辕台遗址在今河北怀来县乔山上。句中说“雪大如席”,这是高度的艺术夸张,但又不失其真实。正如鲁迅在《漫谈“漫画”》一文中所说:“‘燕山雪花大如席’是夸张,但燕山究竟有雪花,就含着一点诚实在里面,使我们立刻知道燕山原来有这么冷。如果说广州雪花大如席,那就变成笑话了。”  不知道你是哪个咏雪,就都找给你了

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/qinggan/7851297.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-09-07
下一篇2023-09-07

发表评论

登录后才能评论

评论列表(0条)

    保存