文档章节

关于TF-IDF

小M武毅
 小M武毅
发布于 2014/01/11 22:41
字数 802
阅读 223
收藏 2

以下定义摘自wikipedia。注意,TF-IDF最后计算所得的结果是某一个词在文档全集中的重要程度。如果按重要程度对所有的词排序,则可以根据这个规则确定那些词可以作为搜索引擎中的stopword。


TF-IDF(term frequency–inverse document frequency)是一种用于 资讯检索文本挖掘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个 语料库中的其中一份 文件的重要程度。字词的重要性随着它在文件中出现的次数成 正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被 搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,互联网上的搜寻引擎还会使用基于连结分析的评级方法,以确定文件在搜寻结果中出现的顺序。



在一份给定的文件里,词频(term frequency,TF)指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被正规化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词频,而不管该词语重要与否。)对于在某一特定文件里的词语 ti 来说,它的重要性可表示为:

  •  \mathrm{tf_{i,j}} = \frac{n_{i,j}}{\sum_k n_{k,j}}

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

逆向文件频率(inverse document frequency,IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到:

  •  \mathrm{idf_{i}} =  \log \frac{|D|}{|\{j: t_{i} \in d_{j}\}|}

其中

  • |D|:语料库中的文件总数

  •  |\{ j: t_{i} \in d_{j}\}| :包含词语ti的文件数目(即 n_{i,j} \neq 0的文件数目)如果该词语不在语料库中,就会导致被除数为零,因此一般情况下使用1 + |\{j : t_{i} \in d_{j}\}|

然后

  •  \mathrm{tf{}idf_{i,j}} = \mathrm{tf_{i,j}} \times  \mathrm{idf_{i}}

某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。


有很多不同的数学公式可以用来计算TF-IDF。这边的例子以上述的数学公式来计算。词频 (TF) 是一词语出现的次数除以该文件的总词语数。假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是3/100=0.03。一个计算文件频率 (DF) 的方法是测定有多少份文件出现过“母牛”一词,然后除以文件集里包含的文件总数。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是10,000,000份的话,其逆向文件频率就是 ln(10,000,000 / 1,000)=4。最后的TF-IDF的分数为0.03 * 4=0.12。


© 著作权归作者所有

小M武毅
粉丝 2
博文 7
码字总数 1618
作品 0
昌平
高级程序员
私信 提问
使用scikit-learn计算文本TF-IDF值(更新中)

一、TF-IDF介绍 (一)术语介绍 TF-IDF(Term Frequency-InversDocument Frequency)是一种常用于信息处理和数据挖掘的加权技术。该技术采用一种统计方法,根据字词的在文本中出现的次数和在...

海天一树X
2018/05/30
0
0
BM25下一代Lucene相关性算法

前言 Lucene自6.0起使用BM25相关性算法代替了之前的相关性算法,切换到之后,基于Lucene的Solr 和 Elasticsearch应用程序会获得怎样的提升?本文主要内容包括:介绍最初的算法及其过程;BM2...

Mr韶先生
2017/11/13
0
0
python文本相似度计算

步骤 分词、去停用词 词袋模型向量化文本 TF-IDF模型向量化文本 LSI模型向量化文本 计算相似度 理论知识 两篇中文文本,如何计算相似度?相似度是数学上的概念,自然语言肯定无法完成,所有要...

lyy0905
2017/04/28
0
0
Elasticsearch——multi termvectors的用法

前一篇已经翻译过termvectors的使用方法了,这对于学习如何使用tf-idf来说是很有帮助的了。 更多内容参考我整理的ELK教程 什么是TF-IDF? 今天早晨起来,看《ES IN ACTION》的时候,遇到了这个...

青夜之衫
2017/12/05
0
0
干货 | 自然语言处理(3)之词频-逆文本词频(TF-IDF)详解

微信公众号 关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 在()中讲到在文本挖掘预处理中,在向量化后一般都...

mbx8x9u
2017/12/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在Python上使用“ pip”安装psycopg2?

我正在使用virtualenv ,需要安装“ psycopg2”。 我已经完成以下工作: pip install http://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282......

javail
27分钟前
7
0
How to Install Java on Debian 9

In this tutorial, we will walk through installing Java on Debian 9. Java is one of the most popular programming languages used to build different kinds of applications and syste......

Ciet
31分钟前
16
0
typescript学习资料

typescript 教程 深入理解 TypeScript

IT追寻者
40分钟前
6
0
剑指Offer - 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值

题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,...

SongAlone
42分钟前
9
0
将C ++模板函数定义存储在.CPP文件中

我有一些模板代码,希望将其存储在CPP文件中,而不是内联在标头中。 我知道只要您知道将使用哪种模板类型就可以做到。 例如: .h文件 class foo{public: template <typename T> vo...

技术盛宴
43分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部