TFIDF学习笔记

由来

TFIDF是一种用于信息检索与数据挖掘的常用加权技术。

TFterm frequency)表示词频,其数值通常用某个词在文章中出现的频数归一化后的结果表示。很多单词可能在两个文档的频率一样,但是两个文档的长度差别很大,一个文档比另一个文档长很多倍。词频特征向量归一化来实现不同文档向量的可比性。

式中,分子是该词在文件中的出现次数,而分母则是在文件中所有字词的出现次数之和。

TF突出了某个词出现在某篇文档中的频繁程度 我们通过词可以获知整篇文档的主题。既然有了TF 为什么还要给出IDF的概念?我觉得有一篇博文讲得非常好,完美地解释了我的疑惑。原博 例2讲述了这么一个例子。有这么一个网页,想要通过网页上出现的词来确定它的主题。“原子能”、“的”和“应用”分别出现了 2 次、35 次 和 5 次。首先,肯定是看看哪些词出现得最为频繁。想要确定这个网页的主题,不能光用词的频数来解决,“的”这个词出现的最多,但是对确定主题没有帮助。类似于“的”这种的称为stop_words 应该删除。“原子能”出现2次,“应用”出现5次。归一化之后的值频数分别是0.2%和0.5%,然而“应用”这个词在其他的文献里出现得也比较频繁,似乎对主题的确定所起的作用要小于“原子能”,那是不是该给它赋一个更大权重呢?如何确定这个权重呢?

IDFinverse document frequency)逆向文件频率。

它等于总文件数目除以包含该词语的文件数目,再对结果取对数。

假设总的网页数目是10亿,“的”在所有的网页中全部出现过,那么,IDF=log(10/10)=0,"应用"这个词在5亿个网页中出现过,那么IDF=log(10/5)=log2,"原子能"这个词出现得没那么普遍,且出现的网页大多跟原子能有关,你一看这个词就能猜到网页的主题是什么。假设“原子能”只出现在1亿个网页中,那么IDF=log(10/1)=log10. 所以“的”,“应用”,“原子能”三个词的权重分别为:0,log2,log10,再分别乘以各自的TF,结果分别为:0,0.0015,0.002  最后的结果是“原子能”这个词更能说明网页的主题!!显然更符合实际情况。那么接下来就是如何通过编程知晓TFIDF的值呢?

当然是应用伟大的python 下的sklearn包,示例如下:

from sklearn.feature_extraction.text import TfidfVectorizer
text=['The dog ate a sandwich and I ate a sandwich']
vectorizer = TfidfVectorizer(stop_words='english')
print(vectorizer.fit_transform(text).todense())
print(vectorizer.vocabulary_)


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值