python代码实现TF-IDF

news2025/2/28 23:39:57

1、TF-IDF解释

TF-IDF(Term frequency–inverse document frequency),中文翻译就是词频 - 逆文档频率,是一种用来计算关键词的传统方法。

TF(Term Frequency):TF 的意思就是词频,是指某个词(Term)在一篇新闻中出现的次数。

考虑一些非常常见的词,比如说 “你的”“我的”“今天” 这种词,可能在一篇新闻中会反复出现,但是这种词明显并不重要,于是有了 IDF。

IDF(Inverse Document Frequency):IDF 称为逆文档频率,这个词我们用公式来看一下可能更容易理解。
逆文档频率( I D F ) = l o g ( 新闻的总数量 包含某个词的新闻总量 + 1 ) 逆文档频率(IDF)=log(\frac {新闻的总数量}{包含某个词的新闻总量+1}) 逆文档频率(IDF=log(包含某个词的新闻总量+1新闻的总数量)

如果一个词越普通,那它越可能出现在所有的新闻中,那么分母就越大,IDF 的值就越接近 0。单纯地使用 IDF 作为关键词也不靠谱,如果你自己随便造了一个没人听过的词加在新闻中,比如说 “趿拉”,那么上式的分母非常小,所得到的 IDF 值会非常大,但是这个词明显没有什么意义。

TF-IDF: TF×IDF 结果,TF-IDF 与一个词在新闻中出现的次数成正比,与该词在整个语料上出现的次数成反比。

2、算法实现

在这里插入图片描述

import gensim.downloader as api # 是 Gensim 库提供的一个模块,用于方便地下载和管理预训练的自然语言处理模型和数据集。
from gensim.corpora import Dictionary#gensim.corpora 模块是 Gensim 库中的一个子模块,用于处理文档集合的表示形式,通常被用于构建和管理文本语料库。这个模块提供了一些类和函数,用于将文档表示为词袋模型(Bag-of-Words)或其他类型的文档表示形式,以便进行主题建模、相似度计算等任务。
dataset = api.load("text8")#如遇下载时找不到information.json文件,可在论坛找到文件包含的内容,创建文件在对应目录下
dct = Dictionary(dataset)#创建一个字典
new_corpus = [dct.doc2bow(line) for line in dataset]#对应字符和其出现的频数

from gensim import models
#Gensim 是一个用于进行自然语言处理的 Python 库,它提供了各种功能,包括文本处理、主题建模、文本相似度计算和词向量表示等。它特别擅长处理大规模的文本数据,并提供了高效的算法和数据结构来支持这些任务。
tfidf = models.TfidfModel(new_corpus)
tfidf.save("tfidf.model")
tfidf = models.TfidfModel.load("tfidf.model")
tfidf_vec = []
for i in range(len(new_corpus)):
    string_tfidf = tfidf[new_corpus[i]]
    tfidf_vec.append(string_tfidf)

print(tfidf_vec[1])#左边是这个词的 ID,右边是这个词的 TF-IDF 值

3、算法优缺点

优点

1、算法简单,十分容易理解,而且运算速度非常快。

缺点

1、文本比较短的时候几乎无效,如果一篇内容中每个词都只出现了一次,那么用 TF-IDF 很难得到有效的关键词信息;
2、无法应对一词多义的情况,尤其是博大精深的汉语,对于词的顺序特征也没办法表达。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1667529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

031.下一个排列Java实现

题意 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地&#…

上位机图像处理和嵌入式模块部署(树莓派4b使用的注意事项)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 树莓派系列开发板最早的时候,价格还是比较高的。不过由于它生态比较丰富,使用起来比较方便,所以大家都默认了它…

光学镜片镀膜自动上下料工艺解决方案

在当今竞争激烈的制造业市场中,如何提高产品质量和生产效率成为了企业关注的焦点。富唯镀膜上下料设备以其高精度上下料技术,成为了产业升级的得力助手。 产品介绍 实现功能:富唯镀膜上下料设备拥有先进的设计理念和精湛的技术工艺&#xff…

前端小技巧:如何自定义网页的右键菜单(如何禁用网页的右键菜单)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 右键菜单设置 📒📝 自定义右键菜单实现步骤📝 示例代码📝 涉及的JavaScript语法和参数📝 禁用特定区域的右键菜单⚓️ 相关链接 ⚓️📖 介绍 📖 在网页设计中,一个直观且个性化的右键菜单可以显著提升用户的交互…

【机器学习数据可视化-04】Pyecharts数据可视化宝典

一、引言 在大数据和信息爆炸的时代,数据可视化成为了信息传递和展示的关键手段。通过直观的图表和图形,我们能够更好地理解数据,挖掘其背后的信息。Pyecharts,作为一款基于Python的数据可视化库,凭借其丰富的图表类型…

【回溯 字典树(前缀树)】212. 单词搜索 II

本文涉及知识点 回溯 字典树(前缀树) LeetCode212. 单词搜索 II 给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。 单词必须按照字母顺序,通过 相邻的单元…

代码随想录——二叉树的层序遍历(Leetcode102)二叉树层序遍历的模板

题目链接 层序遍历(队列) 层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。这种遍历的方式和我们之前讲过的都不太一样。 需要借用一个辅助数据结构即队列来实现,队列先进先出,符合一层一层遍历的逻辑,而用…

【C/C++】C/C++ 校园失物招领系统设计与实现(源码+报告)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

【雷音系·雷修】倪琴古琴,倪诗韵亲签古琴

雷音系列雷修:“修”字取意善、美好的,更有“使之完美”之意。精品桐木或普通杉木制,栗壳色,纯鹿角霜生漆工艺。方形龙池凤沼。红木配件,龙池上方有“倪诗韵”亲笔签名,凤沼下方位置处有“雷•修”等级葫芦…

【C++】STL — map和set的使用详细介绍

前言 本章将继续学习STL中的两个很重要的容器map和set,其底层实现是封装了一个红黑树,我们通过本节来学习和深入了解一下这两大容器。。。 序列式容器: string 、Vector、List 、dequeue 关联式容器:MAP 、SET、nordered_map、uno…

NOR FLASH介绍

参考 http://t.csdnimg.cn/gHcrG 一、NOR FLASH简介 XIP技术:https://blog.csdn.net/ffdia/article/details/87437872?fromshareblogdetail NOR Flash 和 NAND Flash 的特点和应用举例: NOR Flash: 特点: 支持随机访问,可以直接…

Make3D数据集相关介绍

一、参考资料 Make3d数据集使用方法 二、相关介绍 1. 简介 Make3D 数据集的每帧图像的深度值均由激光雷达进行采集,相较于 Kinect 相机采集的深度信息,该测距仪可以得到室外图像更加精确的深度信息,而且测距范围更大,与普通的…

(动画详解)LeetCode面试题 02.04.分割链表

💖💖💖欢迎来到我的博客,我是anmory💖💖💖 又和大家见面了 欢迎来到动画详解LeetCode系列 用通俗易懂的动画的动画使leetcode算法题可视化 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读…

SOA构架介绍

1.SOA定义 SOA面向服务的架构是一种计算机环境设计、开发、部署和管理离散模型的方法,SOA中所有的功能都被定义成立独立的服务,所有的服务通过总线(ESB)或者流程管理连接。这种松耦合的结构使得服务器在交互的过程中无需考虑双方内部细节&am…

【云原生】 Kubernetes核心概念

目录 引言 一、部署方式回溯 (一)传统部署时代 (二)虚拟化部署时代 (三)容器部署时代 二、Kubernetes基本介绍 (一)为什么使用k8s (二)主要功能 &am…

数据库出现死锁的解决方法参考

死锁引起的原因一般是多个用户并发访问数据库导致的问题,或是因为某个进程挂死以后资源未释放导致的。通过onstat –p可查看deadlks项大于0即表示历史总计死锁次数。对于被锁的表进行操作的时候会出现-143 ISAM error: deadlock detected的错误。当其他会话访问此表…

FANUC机器人基本保养概述

对于工业机器人来说,定期保养机器人可以延长机器人的使用寿命。对于FANUC机器人来说,FANUC机器人的常规保养周期可以分为日常、三个月、六个月、一年、两年、三年。以下是FANUC机器人的基本保养周期概览: 在实际生产应用中,可以参…

【ROS2】节点

文章目录 ROS2 节点示例:创建并运行成功一个节点1. 创建功能包2. 编写源文件、CMakeLists.txt、package.xml3. 编译功能包4. 设置环境变量5. 运行节点6. 查看节点 参考链接 ROS2 节点 机器人的每一项功能,都被称为是一个节点。 每个节点都是一个独立的…

vm16安装最新版本的ubuntu虚拟机,并安装g++的步骤记录

背景 低版本的ubuntu安装G一直不成功,干脆安装最新版的 官网下载 bing搜索ubuntu 下载完成 vm16新建虚拟机 一直下一步,安装完成 终端输入命令 sudo apt-get update ᅟᅠ       sudo apt install gcc ᅟᅠ      sudo apt install g

proteus数模转换器DAC0832的应用

proteus proteus,即EDA工具软件。Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是比较好的仿真单片机及外围器件的工具。虽然国内推广刚起步,但已受到…