python代码实现TF-IDF

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、无法应对一词多义的情况,尤其是博大精深的汉语,对于词的顺序特征也没办法表达。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图片批量管理迈入智能新时代:一键输入关键词,自动生成并保存惊艳图片,轻松开启创意之旅!

在数字化时代,图片已成为我们表达创意、记录生活、传递信息的重要工具。然而,随着图片数量的不断增加,如何高效、便捷地管理这些图片,却成为了一个令人头疼的问题。 第一步,进入首助编辑高手主页面,在上方…

Vagrant + docker搭建Jenkins 部署环境

有人问,为什么要用Jenkins?我说下我以前开发的痛点,在一些中小型企业,每次开发一个项目完成后,需要打包部署,可能没有专门的运维人员,只能开发人员去把项目打成一个war包,可能这个项…

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

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

3D 生成重建010-SyncDreamer从单视图生成一致性的多视图

3D 生成重建010-SyncDreamer从单视图生成一致性的多视图 文章目录 0论文工作1论文方法2 效果 0论文工作 在zero123中,首先探索了给2d图像扩散模型注3d空间感知能力。可以将原图输入模型,通过相机位置的相对偏移生成对应的新视图。 这篇论文就是在zero1…

PAD如何实现在用RJ45上网的同时还能保证PAD的续航?|边充电边上网

在数字化时代,手机已经成为我们生活、工作的得力助手。当提及手机边上网边充电时,或许您会想:“这不是常态吗?”但今天,我们要探讨的是一个更为特殊而重要的场景——有线网络直连手机。对于那些需要稳定网络连接、不能…

51输出周期为40ms的方波(C+汇编)

题目 已知Fosc12MHz,T1工作于方式1, ①:实现20ms延时,求定时器初值TH0?TL0?写出具体的计算过程。 ②:利用汇编或C语言编程实现输出周期为40ms的方波。 周期为40ms的方波,半周期就…

weblogic 反序列化 CVE-2018-2628

这个漏洞因为java版本问题一直下载不了ysoserial反序列化工具,没办法生成payload。这里记录一下漏洞原理。 一、漏洞简介 Weblogic Server中的RMI 通信使用T3协议在Weblogic Server和其它Java程序(客户端或者其它Weblogic Server实例)之间传…

四川景源畅信:小白做抖音电商怎么样?

在数字时代,抖音已成为一个不可忽视的电商平台。对于初入行的小白来说,涉足抖音电商似乎既充满机遇又伴随着挑战。要判断小白做抖音电商的可行性,我们不妨从几个关键方面进行深入探讨。 一、市场趋势与流量获取 抖音作为新媒体的代表之一&…

2-1 EXTI外部中断(gd32)

中断的概念 中断硬件结构/软件结构 EXTI中断 EXTI硬件结构 注:EXTI线在同一时刻只能连接一个GPIO口,如果我们先连接了PA0,然后又连接了PB0那么此时PA0这个IO口就失去作用。 中断触发函数 中断优先级 中断优先级 数值越小优先级越高,抢占优先级…

[AutoSar]BSW_Diagnostic_004 ReadDataByIdentifier(0x22)的配置和实现

目录 关键词平台说明背景一、配置DcmDspDataInfos二、配置DcmDspDatas三、创建DcmDspDidInfos四、创建DcmDspDids五、总览六、创建一个ASWC七、mapping DCM port八、打开davinci developer,创建runnabl九、生成代码 关键词 嵌入式、C语言、autosar、OS、BSW、UDS、…

【HCIP学习】BGP选路、过滤及属性

一、BGP路由选路原则(13条) 1、首先丢弃下一跳(NEXT_HOP)不可达的路由; 2、优选Preferred-value值最大的路由;默认为0; Preferred-value:定义:首选项。 属性值&#…

5. 简单说一说uniapp中的语法吧

前言 如果你 知道Vue3并且对Vue3的语法有一定了解,请跳过这一章,由于后续项目主要是基于Vue3TypeScript,因此提前简单概述一些Vue3的基础语法~ 本文的目的是 期望通过对本文的阅读后能对Vue3的每个语法有一个简单的印象,至少要知…

Android 13 系统自定义安全水印

效果 源码实现 frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java public final void showSafeModeOverlay() {View v LayoutInflater.from(mContext).inflate(com.android.internal.R.layout.safe_mode, null);WindowManager.Layout…

《C++学习笔记---初阶篇6》---string类 上

目录 1. 为什么要学习string类 1.1 C语言中的字符串 2. 标准库中的string类 2.1 string类(了解) 2.2 string类的常用接口说明 2.2.1. string类对象的常见构造 2.2.2. string类对象的容量操作 2.2.3.再次探讨reserve与resize 2.2.4.string类对象的访问及遍历操作 2.2.5…

宝塔面板怎么解决nginx跨域问题

1.找到宝塔的nginx配置文件 宝塔有一点不同,nginx配置文件不在nginx的安装目录中,应当去/www/server/panel/vhost/nginx找到 2.添加你要跨域的地址 location /api {proxy_pass http://localhost:8080;proxy_set_header Host $host;proxy_set_header X-…

爱普生推出5G基站可用耐高温高稳定性温补晶振

爱普生推出了六款新的温补晶振型号:TG7050CKN,TG7050SKNTG7050CMN,TG7050SMN,TG-5510CA,TG-5511CA。这几款的特点就是耐高温温度可达105℃C高温,而且都是高稳定性温补晶振,而且都是7050尺寸,这个…

map 和 set 的介绍和简单使用

目录 1. 序列式容器和关联式容器 2. 键值对 2.1. make_pair 3. 树形结构的关联式容器 3.1. set (Key 模型) 3.1.1. std::set::find 和 std::set::count 3.2. map (Key-Value 模型) 3.2.1. std::map::insert 3.2.2. std::map::operator[] 3.3. multiset 3.4.1. std::…

[Java EE] 文件IO(一):文件概念与文件系统操作

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

vscode怎么设置背景图片?

vscode背景图片是可以自己设置的,软件安装后默认背景的颜色是黑色的,这是默认的设计,如果要修改背景为指定的图片,那么我们需要安装插件,然后再通过代码来设置背景图片的样式,下面我们就来看看详细的教程。…

大数据交通行政执法监测系统

交通行政执法监测系统应用系统按照监测主体可分为:出租车交通违法监测,客车交通违法监测,货车、危化品车辆交通违法监测,非法营运车辆监测。功能模块涵盖:特征识别、档案查询、预警分析等。 (1)…