【AI知识点】词频-逆文档频率(TF-IDF)

news/2024/10/4 13:08:41/

词频-逆文档频率TF-IDF,Term Frequency-Inverse Document Frequency)是一种用来衡量一个词在某个文档中的重要性,同时结合该词在整个文档集中的出现频率。它的核心思想是:在特定文档中出现频率高且在其他文档中较少出现的词会被赋予更高的权重,而那些在所有文档中普遍出现的词则会被削弱。

1. 词频(TF)

词频(Term Frequency,TF)表示某个词在文档中的出现频率,用来衡量该词在该文档中的相对重要性。它的计算公式为:

T F ( t , d ) = 词  t 在文档  d 中出现的次数 文档  d 中所有词的总数 TF(t, d) = \frac{\text{词} \ t \ \text{在文档} \ d \ \text{中出现的次数}}{\text{文档} \ d \ \text{中所有词的总数}} TF(t,d)=文档 d 中所有词的总数 t 在文档 d 中出现的次数

其中:

  • t t t 表示某个词。
  • d d d 表示某个文档。

词频的值范围为 [ 0 , 1 ] [0, 1] [0,1],即表示该词在该文档中出现的频率比例。


2. 逆文档频率(IDF)

逆文档频率(Inverse Document Frequency,IDF)用来衡量一个词在整个文档集中出现的稀有程度。如果一个词在很多文档中出现,则该词的IDF值较低,因为它对区分文档的贡献较小。IDF的公式为:

I D F ( t ) = log ⁡ ( M 1 + N ( t ) ) IDF(t) = \log \left( \frac{M}{1 + N(t)} \right) IDF(t)=log(1+N(t)M)

其中:

  • M M M 是文档集中的文档总数。
  • N ( t ) N(t) N(t) 是包含词 t t t 的文档数量。

在分母中加1是为了避免出现该词没有出现在任何文档中的情况(即 N ( t ) = 0 N(t) = 0 N(t)=0,防止分母为零)。


3. TF-IDF 的计算

TF-IDF 是词频和逆文档频率的乘积,用于衡量词在文档中的重要性。其公式为:

T F - I D F ( t , d ) = T F ( t , d ) × I D F ( t ) TF\text{-}IDF(t, d) = TF(t, d) \times IDF(t) TF-IDF(t,d)=TF(t,d)×IDF(t)

其中:

  • T F ( t , d ) TF(t, d) TF(t,d) 表示词 t t t 在文档 d d d 中的词频。
  • I D F ( t ) IDF(t) IDF(t) 表示词 t t t 在整个文档集中的逆文档频率。

TF-IDF 的值越大,表示该词在该文档中越重要,并且该词在整个文档集中不常见。相反,TF-IDF 值越小,表示该词在该文档集中出现频繁,因此它对区分文档的作用较小。


4. TF-IDF 的计算示例

假设我们有以下3篇文档:

  • 文档1:我喜欢吃苹果。
  • 文档2:我喜欢吃香蕉。
  • 文档3:苹果和香蕉都很好吃。

第一步:计算词频(TF)

我们先计算“苹果”一词在文档1中的词频。文档1中共有4个词,“苹果”出现了1次,因此它的词频为:

T F ( 苹果 , 文档1 ) = 1 4 = 0.25 TF(\text{苹果}, \text{文档1}) = \frac{1}{4} = 0.25 TF(苹果,文档1)=41=0.25

第二步:计算逆文档频率(IDF)

“苹果”出现在文档1和文档3中,共出现了2次,文档集的总文档数为3。因此,“苹果”的逆文档频率为:

I D F ( 苹果 ) = log ⁡ ( 3 1 + 2 ) = log ⁡ ( 3 3 ) = log ⁡ ( 1 ) = 0 IDF(\text{苹果}) = \log \left( \frac{3}{1 + 2} \right) = \log \left( \frac{3}{3} \right) = \log(1) = 0 IDF(苹果)=log(1+23)=log(33)=log(1)=0

第三步:计算 TF-IDF

将词频和逆文档频率相乘,计算“苹果”在文档1中的TF-IDF值:

T F - I D F ( 苹果 , 文档1 ) = 0.25 × 0 = 0 TF\text{-}IDF(\text{苹果}, \text{文档1}) = 0.25 \times 0 = 0 TF-IDF(苹果,文档1)=0.25×0=0

这个结果表明,尽管“苹果”在文档1中出现,但由于它在其他文档中也频繁出现,其区分能力不强,因此它在文档1中的TF-IDF值为0。


5. TF-IDF 的作用

  • 词频部分衡量某个词在特定文档中的出现频率,用以表示该词对该文档的贡献。
  • 逆文档频率部分则通过衡量该词在整个文档集中的出现稀有度,降低了在所有文档中都频繁出现的词的权重,从而更突出那些在特定文档中重要但在其他文档中少见的词。

6. TF-IDF 的应用

a. 信息检索

在搜索引擎中,TF-IDF 用于衡量查询词与文档的相关性。那些具有高 TF-IDF 值的词被认为更能代表文档的内容,从而使文档在搜索结果中的排名更高。

b. 文本分类

TF-IDF 被广泛用于文本分类任务中,通过将每个文档表示为词汇的 TF-IDF 向量,这些向量可以作为分类模型的输入特征。

c. 文本相似性计算

在文本相似性任务中,TF-IDF 被用于将文档表示为向量,然后通过计算这些向量之间的余弦相似度(Cosine Similarity)来衡量文档的相似程度。


7. TF-IDF 的优缺点

优点:

  • 简单且有效:易于实现并且计算开销较小。
  • 强调重要词汇:通过TF-IDF,可以突出在特定文档中重要但在其他文档中较少出现的词。
  • 过滤常见词:IDF有效地降低了诸如“的”、“是”等常见词的影响。

缺点:

  • 忽略词序和上下文:TF-IDF不考虑词语的顺序和上下文关系,可能会丢失一些语义信息。
  • 对多义词和同义词无能为力:无法区分同义词或处理多义词的不同语境。

8. TF-IDF 与词嵌入的对比

  • 词袋模型(Bag-of-Words, BOW):TF-IDF是词袋模型的一种增强版。词袋模型只考虑词频,TF-IDF在此基础上引入了逆文档频率,强调了区分文档的能力。
  • 词嵌入模型(如Word2Vec, BERT):与TF-IDF的静态词频统计不同,词嵌入模型通过深度学习学习到词语的稠密向量表示,并能够捕捉词语之间的语义关系。词嵌入模型能够处理词序、上下文以及多义词的语义差异,因此在捕捉文本语义方面比TF-IDF更加有效。

9. 总结

TF-IDF 是一种通过结合词频和逆文档频率来衡量词在文档中的重要性的方法。它在信息检索文本分类、文本相似性等任务中应用广泛,虽然它无法捕捉词语的上下文语义,但仍然是处理文本数据的基础工具之一。


http://www.ppmy.cn/news/1534423.html

相关文章

深入探讨分布式数据库:技术架构、应用案例与性能优化

1. 引言 在大数据时代,数据量呈指数级增长,传统的单机数据库面临诸多挑战,如性能瓶颈、可扩展性不足和单点故障等问题。分布式数据库应运而生,通过将数据分散存储在多个节点上,提供高可用性和可扩展性,成为…

电商技术选型:Spring Boot在线商城系统

4 系统设计 ONLY在线商城系统的设计方案比如功能框架的设计,比如数据库的设计的好坏也就决定了该系统在开发层面是否高效,以及在系统维护层面是否容易维护和升级,因为在系统实现阶段是需要考虑用户的所有需求,要是在设计阶段没有经…

论文推荐 |【Agent】自动化Agent设计系统

论文标题: Automated Design of Agentic Systems 论文地址: https://arxiv.org/abs/2408.08435 GitHub地址: https://github.com/ShengranHu/ADAS 自动化代理设计在性能和通用性方面显著超越了手动方法。 • 引入了自动化代理系统设计&am…

Redis: Sorted Set 底层算法的简单分析

概述 我们先看下 Shorted Set 有序集合的内部数据结构所谓有序集合,比如有个容器,容器里边都已经排好序了,那无非就是快速的查找和插入不管你是查找还是插入,肯定要确定那个位置最简单的办法就是从最开头开始,挨个比较…

QCamera6.7笔记

1.QCamera​ .h文件 #include <QtWidgets/QMainWindow> #include "ui_QCamera_test1.h" #include <QCamera> #include <QtMultimedia> #include <QtMultimediaWidgets> #include<QMediaCaptureSession> #include <QMediaDevices&…

Linux下驱动开发实例

驱动开发 驱动与硬件的分离 在传统的嵌入式系统开发中&#xff0c;硬件信息往往是直接硬编码在驱动代码中的。这样做的问题是&#xff0c;当硬件发生变化时&#xff0c;比如增加或更换设备&#xff0c;就需要修改驱动程序的代码&#xff0c;这会导致维护成本非常高。因此&…

Flume面试整理-Flume是什么?

Apache Flume 是一个分布式的、可靠的、高可用的数据收集和传输系统,专为从各种数据源(如日志文件、网络流)收集、聚合和传输大量数据而设计。它主要用于在大数据生态系统中,特别是Hadoop环境中,将数据从多个分散的来源实时地传输到一个集中的存储系统(如HDFS、HBase等)…

【30天玩转python】自动化与脚本编写

自动化与脚本编写 Python 因其简洁的语法和强大的标准库&#xff0c;非常适合用于自动化任务和编写脚本。通过编写 Python 脚本&#xff0c;可以自动执行重复性工作、简化日常任务、批量处理文件和数据&#xff0c;甚至管理服务器等。本篇文章将介绍如何使用 Python 编写自动化…