task2-TF-IDF

TF-IDF(termfrequency–inverse document frequency)

  • 定义
  • 主要思想
  • 公式
  • TF-IDF的实现

定义

TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

  • TF(term frequency ):词频,指的是在给定的文件中,某一个给定的词语在该文件中出现的次数
  • IDF(inverse document frequency):逆向文件频率,这是一个词语“权重”的度量,在词频的基础上,如果一个词在多篇文档中词频较低,也就表示这是一个比较少见的词,但在某一篇文章中却出现了很多次,则这个词IDF值越大,在这篇文章中的“权重”越大。所以当一个词越常见,IDF越低。

主要思想

如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
TF-IDF实际上是TF*IDF,一个词的TF-IDF越高就表示在这篇文章中的重要性越大,越有可能就是文章的关键词。

公式

对一个词语x,

  • IDF
    在这里插入图片描述
    N代表语料库中文本的总数,而N(x)代表语料库中包含词x的文本总数

考虑到某一个生僻词在语料库中没有,则分母变为0,为了使得式子有意义,常用的IDF需做一些平滑,使得语料库中没有出现的词也可以得到一个合适的IDF值,常用的平滑公式如下:
在这里插入图片描述

  • TF(x)

它原本是指词x在当前文本的词频,但是这个数字是对词数的归一化,以防止它偏向长的文件,(同一个词语在长文件里可能会比短文件有更高的词数,而不管该词语重要与否)。对于某一特定文件里的词语x来说,它的重要性可表示为:
在这里插入图片描述
则TF-IDF可表示为:
在这里插入图片描述

TF-IDF的实现

这里介绍两种用scikit-learn包计算TF-IDF的预处理的方法,

CountVectorizer+TfidfTransformer
  • CountVectorizer类会将文本中的词语转换为词频矩阵,矩阵中word[ i ][ j ],它表示j词在i类文本下的词频;
  • fit_transform(),学习词语词典并返回文档矩阵,矩阵中元素为词语出现的次数
直接用TfidfVectorizer处理

这里选择用TfidfVectorizer来对比赛的数据做处理,接上一篇处理数据的代码,

from sklearn.feature_extraction.text import TfidfVectorizer

tfidf=TfidfVectorizer()
x_train_tfidf=tfidf.fit_transform(x_train['word_seg'])
x_test_tfidf=tfidf.fit_transform(x_test['word_seg'])
print(x_train_tfidf)
print(x_test_tfidf)

x_train_tfidf:
在这里插入图片描述
x_test_tfidf:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值