TF-IDF介绍
TF-IDF是什么
TF-IDF是一种统计方法,用以评估一个词对于一篇文章或语料库中一篇文章的重要性。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
TF-IDF的使用场景
TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜索引擎还会使用基于链接分析的评级方法,以确定文件在搜寻结果中出现的顺序。
TF-IDF原理
- TF(Term Frequency) 表示词频,即一个词在在一篇文章中出现的次数,但在实际应用时会有一个漏洞,就是篇幅长的文章给定词出现的次数会更多一点。因此我们需要对次数进行归一化,通常用给定词的次数除以文章的总词数。
\[TF_w = \frac{给定词w出现的次数}{文章的总次数}\]
这其中还有一个漏洞,就是 ”的“ ”是“ ”啊“ 等类似的词在文章中出现的此时是非常多的,但是这些大多都是没有意义词,对于判断文章的关键词几乎没有什么用处,我们称这些词为”停用词“,也就是说,在度量相关性的时候不应该考虑这些词的频率。
- IDF(Inverse Document Frequency)逆文本频率指数,如果包含关键词w的文档越少,则说明关键词w具有很好的类别区分能力。某一关键词的IDF,可以用总的文章数量除以包含该关键词的文章的数量,然后对结果取对数得到
\[
IDF_w = \log(\frac{语料库文章的总数}{包含关键词w的文章数量 + 1})
\]
注:分母加1是为了避免没有包含关键词的文章时分母是0的情况
一个词预测主题的能力越强,权重就越大,反之,权重越小,因此一个词的TF-IDF就是:
\[
TF-IDF = TF*IDF
\]
实际应用
通常在新闻的分类,或者说文章的分类的时候我们会用到ID-IDF。如果让编辑来对新闻或者文章分类,他一定要先读懂文章,然后找出主题,最后根据主题的不同对文章进行分类。而让电脑对文章进行分类,就要求我们先把文字的文章变成一组可以计算的数字,然后通过算法来算出文章的相似性。
首先我们先来看怎么用一组数字(或者说一个向量)来表示一篇文章。对于一篇文章的所有实词(除去无意义的停用词),计算出他们的TF-IDF值,把这些值按照对应的实词在词汇表的位置依次排列,就得到了一个向量。比如,词汇表中有64000个词,其编号和词:
| 单词编号 | 汉字词 |
|---|---|
| 1 | 阿 |
| 2 | 啊 |
| ... | ... |
| 789 | 服装 |
| ... | ... |
| 64000 | 做作 |
在某一篇文章中,文章中的词的TF-IDF值对应为:
| 单词编号 | TF-IDF |
|---|---|
| 1 | 0 |
| 2 | 0.0034 |
| ... | ... |
| 789 | 0.034 |
| ... | ... |
| 64000 | 0.075 |
如果单词表的某个词在文章中没有出现,对应的值为零,这样我们就得到了一个64000维的向量,我们称为这篇文章的特征向量。然后每篇文章就可以用一个向量来表示,这样我们就可以计算文章之间的相似程度了。
向量的夹角是衡量两个向量相近程度的度量。因此,可以通过计算两篇文章的特征向量的夹角来判断两篇文章的主题的接近程度。那么我们就需要用余弦地理了。

∠A的余弦值为:
\[
cosA = \frac{b^2+c^2-a^2}{2bc}
\]
如果将三角形的两边b和c看成是两个以A为起点的向量,那么上述公式等于:
\[
cosA=\frac{<b,c>}{|b|·|c|}
\]
其中,分母便是两个向量b和c的长度,分子表示两个向量的内积。假设文章X和文章Y对应的向量是
\[
X_1,X_2,...,X_{64000}和Y_1,Y_2,...,Y_{64000}
\]
那么他们的夹角的余弦等于
\[
cosθ=\frac{x_1y_1+x_2y_2+...+x_{64000}y_{64000}}{\sqrt{x_1^2+x_2^2+x_{64000}^2}\cdot\sqrt{y_1^2+y_2^2+y_{64000}^2}}
\]
由于向量中的每一个变量都是正数,所以余弦的取值在0到1之间。当两篇文章向量的余弦等于1时,这两个向量夹角为零,两篇文章完全相同;当夹角的余弦接近于1时两篇文章越相似,从而可以归成一类;夹角的余弦越小,夹角越大,两篇文章越不相关。
现在假定我们已知一些文章的特征向量,那么对于任何一个要被分类的文章,就很容易计算出它和各类文章的余弦相似性,并将其归入它该去的那一类中。
如果事先没有已知的文章的特征向量呢,可以用自底向上不断合并的方法。
- 计算所有文章之间凉凉的余弦相似性,把相似性大于一个阈值的合并成一小类
- 把每个小类中的所有文章作为一个整体,计算小类的特征向量,在计算小雷之间两两的余弦相似性,然后合并成一个大类
这样不断做下去,类别越来越少,而每个类越来越大。当某一类太大时,这一类里的文章的相似性就很小了,这时就要停止迭代过程了,然后完成分类。
欢迎关注公众号:「努力给自己看」

TF-IDF介绍的更多相关文章
- TF/IDF(term frequency/inverse document frequency)
TF/IDF(term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明. 一. TF/IDF描述单个term与特定document的相 ...
- 文本分类学习(三) 特征权重(TF/IDF)和特征提取
上一篇中,主要说的就是词袋模型.回顾一下,在进行文本分类之前,我们需要把待分类文本先用词袋模型进行文本表示.首先是将训练集中的所有单词经过去停用词之后组合成一个词袋,或者叫做字典,实际上一个维度很大的 ...
- 55.TF/IDF算法
主要知识点: TF/IDF算法介绍 查看es计算_source的过程及各词条的分数 查看一个document是如何被匹配到的 一.算法介绍 relevance score算法,简单来说 ...
- Elasticsearch由浅入深(十)搜索引擎:相关度评分 TF&IDF算法、doc value正排索引、解密query、fetch phrase原理、Bouncing Results问题、基于scoll技术滚动搜索大量数据
相关度评分 TF&IDF算法 Elasticsearch的相关度评分(relevance score)算法采用的是term frequency/inverse document frequen ...
- 基于TF/IDF的聚类算法原理
一.TF/IDF描述单个term与特定document的相关性TF(Term Frequency): 表示一个term与某个document的相关性. 公式为这个term在document中出 ...
- 使用solr的函数查询,并获取tf*idf值
1. 使用函数df(field,keyword) 和idf(field,keyword). http://118.85.207.11:11100/solr/mobile/select?q={!func ...
- TF/IDF计算方法
FROM:http://blog.csdn.net/pennyliang/article/details/1231028 我们已经谈过了如何自动下载网页.如何建立索引.如何衡量网页的质量(Page R ...
- tf–idf算法解释及其python代码实现(下)
tf–idf算法python代码实现 这是我写的一个tf-idf的简单实现的代码,我们知道tfidf=tf*idf,所以可以分别计算tf和idf值在相乘,首先我们创建一个简单的语料库,作为例子,只有四 ...
- tf–idf算法解释及其python代码实现(上)
tf–idf算法解释 tf–idf, 是term frequency–inverse document frequency的缩写,它通常用来衡量一个词对在一个语料库中对它所在的文档有多重要,常用在信息 ...
- 信息检索中的TF/IDF概念与算法的解释
https://blog.csdn.net/class_brick/article/details/79135909 概念 TF-IDF(term frequency–inverse document ...
随机推荐
- IIS支持http协议的:put、delete等方法
HTTP常见方法:DELETE, GET, HEAD, OPTIONS, POST, PUT, PATCH 以下是从网上搜索的方法:其实经过测试,只配置最后那个web.config就可以实现这个功能: ...
- 贪心算法和动态规划[zz]
http://www.cnblogs.com/asuran/archive/2010/01/26/1656399.html 贪心算法 1.贪心选择性质 所谓贪心选择性质是指所求问题的整体最优解可以通过 ...
- iOS设计模式 - 适配器
iOS设计模式 - 适配器 效果 说明 1. 为了让客户端尽可能的通用,我们使用适配器模式来隔离客户端与外部参数的联系,只让客户端与适配器通信. 2. 本教程实现了适配器模式的类适配器与对象适配器两种 ...
- Alpha 冲刺报告(1/10)
Alpha 冲刺报告 队名:洛基小队 峻雄(组长) 已完成:α版要完成的第一部分的游戏内容规划 明日计划:学习脚本教程,熟悉一下相关API 剩余任务:物品背包交互脚本 困难:对于JS脚本的不熟悉:如何 ...
- memcached源码剖析5:并发模型
网络连接建立与分发 前面分析了worker线程的初始化,以及主线程创建socket并监听的过程.本节会分析连接如何建立与分发. 初始状态 A,可以摸清楚master线程的大致逻辑: 1)初始化各个wo ...
- 项目管理利器-Maven(Windows安装)
什么是Maven? 安装Maven环境: 下载地址:https://maven.apache.org/download.cgi Maven3.3+JDK1.7以上版本 下载windows版本 解压到本 ...
- Java并发案例01---多线程之死锁
多线程之死锁案例一 package example; /** * 模拟死锁 * @author maple * */ public class DeadLock { public int flag = ...
- ZOJ1081 Points Within
嘟嘟嘟 题面:给一个\(n\)个点的多边形和\(m\)个点,判断每一个点是否在多边形内. 解法:射线法. 就是从这个点引一条射线,如果与多边形有奇数个交点,则在多边形内部. 那么只用枚举每一条边,然后 ...
- 【nodejs】学习笔记
学习链接:http://www.cnblogs.com/zhongweiv/p/nodejs_environment.html (一)简介及环境安装 Node.js是让Javascript脱离浏览器运 ...
- 5、Dubbo-监控中心
5.1).dubbo-admin 图形化的服务管理页面:安装时需要指定注册中心地址,即可从注册中心中获取到所有的提供者/消费者进行配置管理 5.2).dubbo-monitor-simple 简单的监 ...