TF-IDF算法可用来提取文档的关键词,关键词在文本聚类、文本分类、文献检索、自动文摘等方面有着重要应用。

算法原理

TF:Term Frequency,词频

IDF:Inverse Document Frequency,逆文档频率

词频(TF):某一个词在该文件中出现的频率

计算方法为:

逆文档频率(IDF):总文件数目除以包含该词的文件数目

计算方法为:

分母加1是为了防止该词不在语料库中而导致被除数为零

最后,TF-IDF的计算方式为:

TF-IDF 的主要思想为:

如果某个词在一篇文档中出现的频率高(即 TF 高),并且在语料库中其他文档中很少出现(即 IDF 高),则认为这个词具有很好的类别区分能力

算法过程:先计算出文档中每个词的TF-IDF值,然后按降序排列,取排在最前面的几个词作为关键词进行输出

算法优点:

原理简单,能满足大多数实际需求

算法缺点:

单纯以 “词频” 衡量一个词的重要性,不够全面(文档频率小的词就越重要,文档频率大的词就越无用,显然这并不是完全正确的)

TF-IDF值的计算没有加入词的位置信息,不够严谨(出现在文档标题、第一段、每一段的第一句话中的词应给予较大的权重)

Python实现

jieba

jieba内置了TF-IDF算法,调用非常简单,例:

sen = '自然语言处理是人工智能和语言学领域的分支学科,此领域探讨如何处理及运用自然语言,包括多方面和步骤。'

print(' jieba extract:', jieba.analyse.extract_tags(sen, topK=topK)) # ['自然语言', '领域', '处理']

topK:返回 TF-IDF 值最大的关键词个数,此处为 3

sklearn

关键词提取需用到 CountVectorizer 和 TfidfVectorizer,示例代码:

corpus = [ # 语料

'自然语言处理是人工智能和语言学领域的分支学科,此领域探讨如何处理及运用自然语言,包括多方面和步骤。',

'计算机视觉是一门研究如何使机器“看”的科学,用摄影机和计算机代替人眼对目标进行识别、跟踪和测量。',

'机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。'

]

corpus = [jieba.lcut(sen) for sen in corpus]

with open('stop_words.txt', encoding='utf8') as f:

stop_words = [line.strip() for line in f.readlines()]

corpus = [' '.join(filter_stop_words(sen, stop_words)) for sen in corpus]

cvec = CountVectorizer()

cvec.fit_transform(corpus)

feature_words = cvec.get_feature_names()

feature_words = np.array(feature_words)

tvec = TfidfVectorizer()

tvec = tvec.fit_transform(corpus)

first_sen = tvec.toarray()[0]

max_indices = np.argsort(-first_sen)[:topK]

print('sklearn extract:', feature_words[max_indices]) # ['自然语言' '领域' '语言学']

参考:

TF-IDF的Matlab程序,TF-IDF算法简析 - osc_sjg81se7的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. scaling之旅_机器学习算法之旅 - lwaif的个人空间 - OSCHINA - 中文开源技术交流社区...

    机器学习领域有很多算法,然后每种算法又有很多延伸,所以对于一个特定问题,如何确定一个正确的算法是很困难的.本文中我想给你们两种方法来归纳在现实中会遇到的算法. 学习方式 根据如何处理经验.环境或者任何 ...

  2. 精英主义 遗传算法 matlab,遗传算法优化 - osc_lfs4vsih的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.遗传算法简介 遗传算法是一种基于自然选择和群体遗传机理的搜索算法,它模拟了自然选择和自然遗传过程中的繁殖.杂交和突变现象.再利用遗传算法求解问题时,问题的每一个可能解都被编码成一个"染色 ...

  3. 频率域滤波matlab函数,频率域滤波(2) - osc_t0xmr011的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.频率域滤波的基本步骤: 1)使用函数tofloat把输入图像转换为浮点图像(im2double函数也可以) [f,revertclass] = tofloat(f) 2)使用函数paddedsiz ...

  4. matlab提示音,matlab发出声音 - osc_45mm6g1p的个人空间 - OSCHINA - 中文开源技术交流社区...

    我有时候运行一段很长的代码,在等待的时候去做别的事,希望程序运行完可以有一个提示音. 这可以用matlab的一个函数sound实现,该函数的输入参量是音频数据向量.采样频率和转换位数. % 响一声 s ...

  5. php 小程序 运动步数_小程序同步微信步数 - xiangqian1的个人空间 - OSCHINA - 中文开源技术交流社区...

    小程序获取微信运动步数,咱们看文档:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunDat ...

  6. 利用mysql建立随机森林_随机森林算法实例 - osc_4imme0wh的个人空间 - OSCHINA - 中文开源技术交流社区...

    根据成年人数据集来预测一个人的收入 1.准备数据集 我下载好了一个成年人数据集,从百度云下载 链接:https://pan.baidu.com/s/10gC8U0tyh1ERxLhtY8i0bQ 提取 ...

  7. java亲密数的解题思路,算法解题思路总结 - jjhgx的个人空间 - OSCHINA - 中文开源技术交流社区...

    算法解题思路: 细读算法要求 找到极限情况 找到临界情况,结果依赖 找到最终的结束求解点 编程实现:考虑算法的空间复杂度和时间复杂度 案例说明: 假设: 输入字符串为:s, 长度为:slen, s的第 ...

  8. java诸神之战游戏_mj回溯算法 - osc_7bgz0no1的个人空间 - OSCHINA - 中文开源技术交流社区...

    1)js版本 ​ /** * 基本思路: * 回溯法: 先挑选中将,再依次拆接出3个,3个的...直到结束,那么说明当前可以胡牌 */ let mahjong = [ "1T", ...

  9. opencv matlab三维点云,点云采样的三种方法 - 小白学视觉的个人空间 - OSCHINA - 中文开源技术交流社区...

    点击上方"小白学视觉",选择"星标"公众号 重磅干货,第一时间送达 编辑:3D视觉工坊 本文由知乎作者GeometryHub授权转载,不得擅自二次转载. 原文链 ...

最新文章

  1. c语言编程将图片上下翻转,C语言实现矩阵翻转(上下翻转、左右翻转)
  2. StringBuffer 案例
  3. html 如何去除浮动,CSS浮动? 如何清除浮动?
  4. 期货黄金与现货黄金比较
  5. Spring IOC容器-注解的方式【更简化】
  6. iterator遍历_HashMap 的 7 种遍历方式与性能分析!(强烈推荐)
  7. mysql1000w数据怎么加索引_给mysql一百万条数据的表添加索引
  8. linux系统移植和根文件系统制作
  9. ubuntu20.4 安装配置teamviewer
  10. spring boot高校科研管理系统毕业设计源码222055
  11. 软件推荐:Picasa
  12. 第三章、Zigbee模块参数(DRF2658C、DRF2659C、DRF2670C)
  13. php 微信h5支付 mweb,php微信H5支付讲解(MWEB)
  14. 读《期货市场计算机分析指南》笔记
  15. 【XSY3906】数数题(期望,多项式)
  16. ACM图论之存图方式
  17. 前端实践小项目(一)五星好评与暂停取值
  18. 2021年R1快开门式压力容器操作考试及R1快开门式压力容器操作考试资料
  19. 给li标签中的span设置属性margin-bottom不生效
  20. 2-3 打折促销* (10 分)

热门文章

  1. vue通过xlsx-style导出数据
  2. Ambari介绍_李孟_新浪博客
  3. 【IT项目管理】第6章 驾驭IT项目成本
  4. Web前端上下左右无限滚动广告
  5. Android 百度地图SDK 实现获取周边位置POI
  6. 薛定谔的猫与量子计算机,一种新型的量子计算机:依仗微小的“薛定谔的猫”...
  7. matlab解薛定谔方程,有限差分法解薛定谔方程与MATLAB实现
  8. 计算机科学与技术国民经济,计算机科学与技术毕业论文
  9. SaaS-多租户SaaS平台的数据库方案(数据库设计与建模)
  10. idea一键生成实体类