今天来说一下什么是TF-IDF,我记得这个东西从2017年开始就一直缠绕着我,今天我把它撕扯下来,拼凑着这样的一篇趣文,我想看过之后,大家就算没学过高等数学,那么对于它的原理也会了然于胸了。为了能以一种接地气的方式表达出它的原理,本文几乎不涉及复杂的数学公式,尽管那些公式在我看来是那么的富有美感……

这里有一篇文章,一篇很长很长的文章,有赤道那么长(此处运用夸张的修辞手法,形象生动的描绘出文章之长)。现在我们想不在人工干预的情况下,使用计算机提取出文章的关键词,那么应该怎么做呢?这个问题涉及到了计算机技术的很多前沿领域,例如:信息检索、文本挖掘、文本处理等等。一想到这些,大家难免会想,这得需要多么复杂的技术才能完成这项工作,但是巧合的是,有这么一个算法,可以完美的解决这个问题,这就是TF-IDF算法。我们的故事从这里才算正式开始~


对于鸢尾花,大家想必都不陌生吧。和大多数人一样我对这种花也是爱恨交织,并不是因为在法国,人们会将它制成香水,而是因为它的花瓣、花萼简直就是机器学习路上的利器。既然这么方便,我们还是用鸢尾花来举例吧,这里有一篇叫做《欧洲鸢尾花的成长》的文章,我们接下来想要使用计算机将这篇文章的关键词取出。

一、词频(Term Frequency,缩写为TF)

首先我们想到如果一个词语能够成为关键词,那么最起码它应该在文章中出现过很多次,那么这就涉及到一个词频的统计。统计结果当然没有让我们失望,出现最多的是那些“的”、“了”、“是”之类的词语,这些词语肯定不能成为关键词,它们有一个非常美丽的统称,叫“停用词”,意思就是停止使用了,这些词对我们毫无帮助,一般在进行词频统计之前就需要过滤掉。

这里出现了第一个假设:假设我们已经将这些词语过滤掉了,现在剩下的都是有着实际意义的词语。这时候我们遇到了另外一个问题,我们发现“欧洲”、“鸢尾花”、“成长”这三个词出现的次数一样,这不就说明这三个词作为关键词的话,它们的重要性都是一样的吗?显然,它们的重要性是不一样的,“欧洲”在其他地方,可能较“鸢尾花”和“成长”更常见些,所以我们有理由相信,在这篇文章中,“鸢尾花”和“成长”的重要程度要高于“欧洲”的重要程度。所以我们需要另外一个参数来衡量一个词语是不是经常出现的词语。换句话说,我们需要给每个词语分配一个权重值,以此来判断该词的重要程度。

1、计算词频:(1)词频 = 某个词在文章中出现的次数有时候为了不同文章(不同文章长短不一)之间便于比较,通常会对词频进行标准化,标准化的方式如下:(2)词频 = 某个词在文章中出现的总次数 ÷ 文章的总词数

二、逆文档频率(Inverse Document Frequency,缩写为IDF)

如果一个词语不经常出现,但是它在本文中却经常出现,那么我们有理由怀疑它能反映本文的特性,也就是我们需要的关键词。上面提到的权重值在此处还有另外一个叫法,那就是逆文档频率,它的大小与一个词语的常见程度成反比。所谓的TF-IDF就是词频和逆文档频率的乘积,某个词对文章的重要程度越高,它的TF-IDF值就越大,所以排在前面的这几个词就是文章的关键词。

2、计算逆文档频率:此时需要一个语料库,用来模拟语言的使用环境,例如:这是属于科学类的文章,那么所有的科学类文章做成一个大的语料库。
逆文档频率 = log(语料库的文档总数 ÷ (包含该词的文档数 + 1))3、计算TF-IDF
TF-IDF = 词频 × 逆文档频率

通过上述公式可以看出,TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语料库中的出现次数成反比。所以,自动提取关键词的算法就很清楚了,就是计算出文档的每个词的TF-IDF值,然后按降序排列,取排在最前面的几个词。

通过计算发现在文章中一共有1000个词语,"欧洲"、"鸢尾花"、"成长"各出现20次,则这三个词的"词频"(TF)都为0.02。然后,通过网页搜索发现,包含"的"字的网页共有250亿张,假定这就是科学类网页总数。包含"欧洲"的网页共有62.3亿张,包含"鸢尾花"的网页为0.484亿张,包含"成长"的网页为0.973亿张。则它们的逆文档频率(IDF)和TF-IDF如下:

  包含该词的文档数 IDF TF-IDF
欧洲 62.3亿 0.603 0.0121
鸢尾花 0.484亿 2.713 0.0543
成长 0.973亿 2.410 0.0482

从上表可以看出,“鸢尾花”的TF-IDF最高,“成长”次之,“欧洲”的TF-IDF值最低。

好了,到此大家是不是对TF-IDF的原理有了一定的了解了,你们在这个过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题~

TF-IDF的原理概述相关推荐

  1. 搜索引擎:文本分类——TF/IDF算法

    原理 TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类.TFIDF实际上是:TF * IDF,TF ...

  2. SLAM总结(一)- SLAM原理概述与简介

    SLAM总结(一)- SLAM原理概述与简介 SLAM(Simultaneous Localization and Mapping):同时定位和建图,定位是定位机体在世界坐标系下的位姿(pose.tr ...

  3. tf-idf词向量和bow_使用词袋Bow和TF IDF进行多标签分类

    tf-idf词向量和bow 1.加载数据 (1. Load the data) For this study, we are using Kaggle data for Toxic Comment C ...

  4. nvGRAPH原理概述

    nvGRAPH原理概述 nvGRAPH的API参考分析. 简介 数据分析是高性能计算的不断增长的应用.许多高级数据分析问题可以称为图形问题.反过来,当今许多常见的图形问题也可以称为稀疏线性代数.这是N ...

  5. Vue底层实现原理概述

    Vue是一个典型的MVVM框架,模型(Model)只是普通的JavaScript对象,修改它则视图(View)会自动更新.这种设计让状态管理变得非常简单而直观.那么Vue是如何把模型和视图建立起关联的 ...

  6. 【tensorflow】全连接层函数tf.layers.dense()原理

    TensorFlow全连接层函数tf.layers.dense()原理 - jian shu https://www.jianshu.com/p/3855908b4c29 最近在用TensorFlow ...

  7. 关键词提取算法—TF/IDF算法

    关键词提取算法一般可分为有监督学习和无监督学习两类. 有监督的关键词提取方法可以通过分类的方式进行,通过构建一个较为完善的词表,然后判断每个文档与词表中的每个词的匹配程度,以类似打标签的方式,达到关键 ...

  8. 《深入理解Android》一2.1 浏览器工作原理概述

    本节书摘来自华章出版社<深入理解Android>一书中的第2章,第2.1节,作者孟德国 王耀龙 周金利 黎欢,更多章节内容可以访问云栖社区"华章计算机"公众号查看 2. ...

  9. tf/idf_Neo4j:带密码的TF / IDF(和变体)

    tf/idf 几周前,我写了一篇博客文章,介绍了如何使用scikit-learn在HIMYM成绩单上运行TF / IDF,以按情节找到最重要的短语,然后我很好奇在Neo4j中很难做到. 我首先将Wik ...

  10. Neo4j:带密码的TF / IDF(和变体)

    几周前,我写了一篇博客文章,介绍了如何使用scikit-learn在HIMYM成绩单上运行TF / IDF,以按情节找到最重要的短语,然后我很好奇在Neo4j中很难做到. 我首先将Wikipedia的 ...

最新文章

  1. 静态路由_【零基础学云计算】静态路由!静态路由!静态路由!原理与配置
  2. JQUERY动态生成当前年份的前5年以及后 2年
  3. Linux系统入门之如何安装Linux系统
  4. 进入保护模式(二)——《x86汇编语言:从实模式到保护模式》读书笔记14
  5. Linkis源码目录结构详解
  6. 云服务器怎么设置域名,云服务器域名设置在哪里
  7. 梳子刻字刻什么好_校园石阶上被人刻了1700多个字?!这次网友却说好
  8. 利用Fiddler抓包调试工具,实现mock数据特殊场景深度测试(二)
  9. bilibili 解析_广西财经大学《殙》舞蹈解析
  10. python后台架构Django教程——manage.py命令
  11. ASP.NET C# 实现钉钉签名算法
  12. IE下javascript cookie path
  13. Tomcat8安装、配置与启动
  14. java随机星星怎么闪_原生js实现星星闪烁的效果
  15. 什么是锐度sharpness
  16. android隐藏虚拟按键的几种方式
  17. 2018/8/16第二周
  18. Java 特殊回文。123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
  19. 大数据开发和java的前景_大数据开发和javaEE后端开发哪个就业前景好?
  20. 我对SOA的反思:SOA架构的本质

热门文章

  1. android 位置共享_如何与Android的受信任联系人共享您的位置
  2. ABP框架官网例子实践(2)(ASP.NET core+Multi Page Web Application)
  3. 架构师接龙:腾讯高级工程师邝宇恒VS. 百度架构师侯震宇
  4. 王垠:机器与人类视觉能力的差距(3)
  5. 【java实现二维码的生成(源码)】
  6. 为什么要购买阿里云服务器?云服务器用途有哪些?
  7. C语言零基础学习日记
  8. 哈工大李治军老师操作系统笔记【10】:内核级线程实现(Learning OS Concepts By Coding Them !)
  9. TensorFlow 手写实现卷积神经网络CNN
  10. 时隔24年,《失孤》原型父子相认!身体特征结合DNA对比,公安如何定位被拐儿童...