机器学习 - 文本特征处理之 TF 和 IDF

TF(Term Frequency,词频)和IDF(Inverse Document Frequency,逆文档频率)是文本处理和信息检索中的两个重要概念,常用于计算一个词在文档中的重要性。下面是详细解释:

TF(词频)

词频表示某个词在一个文档中出现的频率。其计算公式如下:

TF ( t , d ) = 出现次数 ( t , d ) 文档中词语总数 ( d ) \text{TF}(t, d) = \frac{\text{出现次数}(t, d)}{\text{文档中词语总数}(d)} TF(t,d)=文档中词语总数(d)出现次数(t,d)

其中:

  • ( t ) 表示词语
  • ( d ) 表示文档
示例:

假设有一个文档内容如下:

这 是 一个 示例 示例 文本
  • “示例”出现了2次,文档总共有6个词语。
  • 词频(TF)计算:

TF ( 示例 , d ) = 2 6 = 0.333 \text{TF}(\text{示例}, d) = \frac{2}{6} = 0.333 TF(示例,d)=62=0.333

IDF(逆文档频率)

逆文档频率用于衡量一个词在所有文档中的普遍重要性。词语越常见,其IDF值越低;词语越不常见,其IDF值越高。其计算公式如下:

IDF ( t ) = log ⁡ ( N 1 + 包含词语的文档数 ( t ) ) \text{IDF}(t) = \log \left( \frac{N}{1 + \text{包含词语的文档数}(t)} \right) IDF(t)=log(1+包含词语的文档数(t)N)

其中:

  • ( N ) 表示文档的总数
  • 包含词语的文档数 ( t ) \text{包含词语的文档数}(t) 包含词语的文档数(t) 表示包含词语 ( t ) 的文档数
示例:

假设有以下三个文档:

文档1:这 是 一个 示例 文本
文档2:这是 另一个 示例
文档3:这是 一段 示例 文字
  • “示例”在所有3个文档中都出现了。
  • 逆文档频率(IDF)计算:

IDF ( 示例 ) = log ⁡ ( 3 1 + 3 ) = log ⁡ ( 3 4 ) = − 0.124 \text{IDF}(\text{示例}) = \log \left( \frac{3}{1 + 3} \right) = \log \left( \frac{3}{4} \right) = -0.124 IDF(示例)=log(1+33)=log(43)=0.124

TF-IDF(词频-逆文档频率)

TF-IDF结合了TF和IDF两个指标,衡量一个词在文档中的重要性。其计算公式如下:

TF-IDF ( t , d ) = TF ( t , d ) × IDF ( t ) \text{TF-IDF}(t, d) = \text{TF}(t, d) \times \text{IDF}(t) TF-IDF(t,d)=TF(t,d)×IDF(t)

示例:

结合上述TF和IDF的计算,假设“示例”在某文档中的词频TF为0.333,IDF为-0.124:

TF-IDF ( 示例 , d ) = 0.333 × − 0.124 = − 0.0413 \text{TF-IDF}(\text{示例}, d) = 0.333 \times -0.124 = -0.0413 TF-IDF(示例,d)=0.333×0.124=0.0413

这种计算方式表明,尽管“示例”词在单个文档中较为频繁,但在所有文档中都很常见,因此其重要性并不高。

实际应用TF-IDF的示例

假设我们有以下三个文档:

文档1:我 喜欢 学习 机器学习
文档2:机器学习 是 很 有趣 的
文档3:我 喜欢 编程 和 机器学习
第一步:计算每个词的词频(TF)

计算每个文档中每个词的词频:

文档1:我 喜欢 学习 机器学习

我:1/4 = 0.25
喜欢:1/4 = 0.25
学习:1/4 = 0.25
机器学习:1/4 = 0.25

文档2:机器学习 是 很 有趣 的

机器学习:1/5 = 0.20
是:1/5 = 0.20
很:1/5 = 0.20
有趣:1/5 = 0.20
的:1/5 = 0.20

文档3:我 喜欢 编程 和 机器学习

我:1/5 = 0.20
喜欢:1/5 = 0.20
编程:1/5 = 0.20
和:1/5 = 0.20
机器学习:1/5 = 0.20
第二步:计算逆文档频率(IDF)
文档1:我 喜欢 学习 机器学习
文档2:机器学习 是 很 有趣 的
文档3:我 喜欢 编程 和 机器学习

计算IDF:

机器学习:log(3 / (1 + 3)) = log(3 / 4) = -0.124
我:log(3 / (1 + 2)) = log(3 / 3) = 0
喜欢:log(3 / (1 + 2)) = log(3 / 3) = 0
学习:log(3 / (1 + 1)) = log(3 / 2) = 0.176
是:log(3 / (1 + 1)) = log(3 / 2) = 0.176
很:log(3 / (1 + 1)) = log(3 / 2) = 0.176
有趣:log(3 / (1 + 1)) = log(3 / 2) = 0.176
的:log(3 / (1 + 1)) = log(3 / 2) = 0.176
编程:log(3 / (1 + 1)) = log(3 / 2) = 0.176
和:log(3 / (1 + 1)) = log(3 / 2) = 0.176
第三步:计算每个词的TF-IDF

将每个词的词频乘以其逆文档频率:

文档1:我 喜欢 学习 机器学习

我:0.25 * 0 = 0
喜欢:0.25 * 0 = 0
学习:0.25 * 0.176 = 0.044
机器学习:0.25 * -0.124 = -0.031

文档2:机器学习 是 很 有趣 的

机器学习:0.20 * -0.124 = -0.0248
是:0.20 * 0.176 = 0.0352
很:0.20 * 0.176 = 0.0352
有趣:0.20 * 0.176 = 0.0352
的:0.20 * 0.176 = 0.0352

文档3:我 喜欢 编程 和 机器学习

我:0.20 * 0 = 0
喜欢:0.20 * 0 = 0
编程:0.20 * 0.176 = 0.0352
和:0.20 * 0.176 = 0.0352
机器学习:0.20 * -0.124 = -0.0248
详细分析

通过正确的TF-IDF计算,我们可以更准确地确定每个文档中最重要的词语。

文档1分析

  • “学习”的TF-IDF值最高(0.044),表明在文档1中,“学习”是最重要的词语。
  • “我”和“喜欢”的TF-IDF值为0,因为它们在多个文档中都很常见。
  • “机器学习”的TF-IDF值为-0.031,表明它虽然在文档中出现,但在所有文档中都很常见,因此在区分这个文档时并不重要。

文档2分析

  • “是”、“很”、“有趣”、“的”这四个词的TF-IDF值相同(0.0352),表明它们在文档2中同等重要。
  • “机器学习”的TF-IDF值为-0.0248,同样因为它在所有文档中都很常见。

文档3分析

  • “编程”和“和”的TF-IDF值最高(0.0352),表明它们在文档3中最重要。
  • “我”和“喜欢”的TF-IDF值为0,因为它们在多个文档中都很常见。
  • “机器学习”的TF-IDF值为-0.0248,同样因为它在所有文档中都很常见。
应用TF-IDF结果

这些TF-IDF值帮助我们更准确地理解每个文档的关键内容和主题。例如:

  • 在文档1中,“学习”是关键词,可以推测文档的主题是学习相关内容。
  • 在文档2中,“是”、“很”、“有趣”、“的”这几个词同等重要,可能表示文档在描述机器学习的有趣性。
  • 在文档3中,“编程”和“和”是关键词,可以推测文档的主题涉及编程和机器学习的关系。

通过这些TF-IDF值,我们可以更有效地进行文本分类、主题提取和信息检索,提高处理文本数据的准确性和效率。

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

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

相关文章

【Python文件】操作终极指南:高效管理和处理文件系统的必备技能

目录 ​编辑 1. 文件的基础操作 1.1 打开/关闭文件 ​编辑 示例代码 文件对象 使用with语句打开文件 2. 读文件 2.1 使用read方法读取文件 2.2 使用readline方法读取文件 2.3 使用readlines方法读取文件 2.4 使用for循环读取文件 3. 写文件 3.1 使用write方法写文…

B组亚太赛数学建模

问题1 1.对训练数据集进行数据清洗,处理缺失值和异常值。 2.采用散点图作为可视化手段。 3.采用皮尔逊相关系数进行相关性分析。 4.提出预防措施。 问题2 1.采用k-means聚类算法将洪水概率分为高中低三个群组。 2.通过线性回归模型计算特征权重。 3.选择特定…

django高校教务系统-计算机毕业设计源码81661

目 录 摘要 1 绪论 1.1 研究背景 1.2目的及意义 1.3论文结构与章节安排 2 高校教务系统设计分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4…

【新能源时代!看大模型(LLMs)如何助力汽车自动驾驶!】

文末有福利! 引言 本文主要介绍大模型(LLMs)如何助力汽车自动驾驶,简单来说,作者首先带大家了解大模型的工作模式,然后介绍了自动驾驶大模型的3大应用场景,最后指出自动驾驶大模型将会是未来的发展趋势,只…

制定事件响应计划的四个关键步骤,如何做到风险闭环

一个有效的安全事件响应策略的关键组成部分有哪些?一个有效的安全事件响应策略包括四个关键组成部分,它们协同工作以确保对网络安全问题的快速和有效响应。 一个有效的安全事件响应策略的关键组成部分有哪些? 一个有效的安全事件响应策略包括…

Linux笔记之二

Linux笔记之二 一、文件属性学习二、软链接和硬链接1.软链接2.硬链接 三、Vim编辑器四、账号管理总结 一、文件属性学习 Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同…

HTML5使用<mark>标签:高亮显示文本

1、<mark>标签的使用 mark 标签用于表示页面中需要突出显示或高亮的一段文本&#xff0c;这段文本对于当前用户具有参考作用。它通常在引用原文以引起读者注意时使用。<mark>标签的作用相当于使用一支荧光笔在打印的纸张上标出一些文字。它与强调不同&#xff0c;…

短视频商城系统源码揭秘:架构设计与实现

在短视频平台和电商平台蓬勃发展的背景下&#xff0c;短视频商城系统应运而生&#xff0c;融合了短视频内容和电商功能&#xff0c;给用户带来了全新的购物体验。本文将揭示短视频商城系统的源码架构设计与实现&#xff0c;帮助开发者了解该系统的内部工作原理及其关键技术。 …

深度学习基础以及vgg16讲解

一 什么是卷积 上图所示&#xff0c;为图像边缘提取得一个卷积过程&#xff0c;卷积核就是计算当前像素左右两边得像素差&#xff0c;这个差值越大代表越可能是图像边缘。因此当实现其它功能时&#xff0c;只需要调整卷积核得参数即可。深度学习的训练其实就是在确定这些参数。…

学习笔记——动态路由——OSPF(邻接/邻居)

十、OSPF的邻接/邻居 1、OSPF路由器之间的关系 (1)基本介绍 在OSPF网络中&#xff0c;为了交换链路状态信息和路由信息&#xff0c;邻居设备之间首先要建立邻接关系&#xff0c;邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。 OSPF路由器的两种关系&#x…

Type-C接口快充取电技术的实现

Type-C接口快充取电技术的实现 Type-C接口快充取电技术主要通过USB PD&#xff08;Power Delivery&#xff09;协议实现。这种技术利用了Type-C接口的物理特性和PD协议的智能性&#xff0c;实现了高效、安全、快速的充电过程。具体实现过程如下&#xff1a; 接口连接与检测&a…

51单片机基础11——蓝牙模块控制亮灭

串口初试——蓝牙模块 蓝牙模块的使用1. 软硬件条件2. 蓝牙模块3. 代码(分文件处理之后的代码) 蓝牙模块的使用 1. 软硬件条件 单片机型号&#xff1a;STC89C52RC开发环境&#xff1a;KEIL4烧录软件串口通信软件&#xff1a;stc-isp蓝牙模块&#xff1a;HC-04LED模块(高电平点…

STM32CubeMX——定时器产生PWM基础(HAL库)

目录&#xff1a; 一、STM32CubeMX 配置1、选择定时器通道&#xff1a;2、设置 TIM2 channel1 的预分频器、自动重装等值&#xff1a; 二、keil5 进一步编程1、开启定时器2 通道 1 的 PWM 输出&#xff1a;2、改变 CCR 值&#xff08;改变占空比&#xff09;&#xff1a; 参考文…

【技术支持】vscode代码格式化空格数量问题

问题 使用AltShiftF代码格式化时&#xff0c;发现有些文件格式化后缩进为2格个空格&#xff0c;有些文件正常4个空格 刨析 发现vue创建的文件使用的是两个空格&#xff0c;而且换行符表示方式也不一样 LF 是 Unix 和 Unix-like 系统&#xff08;如 Linux 和 macOS&#xff0…

C#中委托与事件

一、委托 1.1概念 委托是一种引用类型&#xff0c;它可以用于封装并传递方法作为参数。委托可以理解为是一个指向方法的**“指针”&#xff0c;它允许将方法作为参数传递给其他方法或存储在数据结构中&#xff0c;然后稍后调用这些方法。&#xff08;委托可以看作时函数的容器…

汽车IVI中控开发入门及进阶(三十三):i.MX linux开发之开发板

前言: 大部分物料/芯片,不管MCU 还是SoC,都会有原厂提供配套开发板,有这样一个使用原型,在遇到问题时或者进行开发时可以使用。 i.MX 8QuadXPlus MEK board: 1、要测试display显示器,可使用i.MX mini SAS将“LVDS1_CH0”端口连接到LVDS到HDMI适配器的cable。 2、要测试…

Stream练习

运用点&#xff1a; 流内数据类型转换(map)、filter、limit、skip、concat(让两个流合并) 题目&#xff1a; 操作1、2&#xff1a; ArrayList<String> manList new ArrayList<>();ArrayList<String> womanList new ArrayList<>();Collections.addAl…

多模态MLLM都是怎么实现的(11)--从SadTalker到快手LivePortait

我之前出差带休假差不多两个礼拜吧&#xff0c;今天回北京更新一篇 我确实找到了一个有意思的东西&#xff0c;LivePortrait 这东西开源了&#xff0c;你可以认为是目前做得最好的"Sadtalker"&#xff0c;国内也有dream-talker&#xff0c;EMO之类的。 我之前看EMO的…

C++——模板详解(下篇)

一、非类型模板参数 模板参数分为类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之后的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类&#xff08;函数&#xff09;模板的一个参数&#xff0c;在类&#…