当前位置: 首页 > news >正文

自然语言处理 TF-IDF

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。


本文目录

    • TF-IDF 简介
    • TF-IDF 算法
      • TF
      • IDF
      • TF-IDF
    • TF-IDF 的缺点


TF-IDF 简介

TF-IDF(Term Frequency-Inverse Document Frequency,词频-逆文档频率)是一种用于信息检索和文本挖掘的常用加权技术,它用于评估一个单词对于一个文档集合中某个特定文档的重要程度。在自然语言处理、搜索引擎优化和机器学习等领域中,TF-IDF 被广泛应用于关键词抽取、相似性计算、文档排名等多个场景。

组成部分:

  1. TF (Term Frequency)

    • TF 表示词频,即一个给定词语在特定文档中出现的次数或频率。
    • 通常,TF 的计算方法是对单个文档中的词频进行归一化,可以简单地计算为该词语在文档中出现的次数除以文档总词汇数,或者使用更复杂的加权方式来降低非常长文档中高频但不一定重要的词语的影响。
  2. IDF (Inverse Document Frequency)

    • IDF 是逆文档频率,反映了一个词语在整个文档集合(语料库)中的普遍重要性。
    • 它是通过将所有文档的数量除以包含该词语的文档数量,然后对得到的商取对数来计算的。
    • IDF 值越大,说明这个词越稀有,即它在较少的文档中出现过,因此具有更高的鉴别度。

TF-IDF 综合指标:

  • 将 TF 和 IDF 结合起来,就得到了 TF-IDF 值,用来衡量一个词语对于特定文档的重要性。
  • 当一个词语在某文档中出现得越频繁(TF 高),且在全体文档中出现得越少(IDF 大),则其 TF-IDF 值越高,表明该词语对于区分这份文档来说越关键。

通过应用 TF-IDF 算法,我们可以过滤掉那些在所有文档中都常见的词语(如“的”、“和”等停用词),同时提升那些在个别文档中频繁出现且在整个语料库中较罕见的词语的权重,从而更好地识别文档的主题和关键内容。

TF-IDF 算法

TF

TF 表示词频,即一个给定词语在特定文档中出现的次数或频率,通常由以下公式计算:

TF ( t ) = t 在文档中出现的次数 文档中的总词数 \text{TF}(t) = \frac{t\text{在文档中出现的次数}}{\text{文档中的总词数}} TF(t)=文档中的总词数t在文档中出现的次数

其中, t t t 表示一个词语, TF ( t ) \text{TF}(t) TF(t) 表示该词语的 TF 值。

IDF

IDF 是逆文档频率,反映了一个词语在整个文档集合(语料库)中的普遍重要性,通常由以下公式计算:

IDF ( t ) = log ⁡ 语料库中的文档总数 包含词语 t 的文档数目 + 1 \text{IDF}(t) = \log \frac{\text{语料库中的文档总数}}{\text{包含词语}t\text{的文档数目}+1} IDF(t)=log包含词语t的文档数目+1语料库中的文档总数

其中, t t t 表示一个词语, IDF ( t ) \text{IDF}(t) IDF(t) 表示该词语的 IDF 值,分母加 1 为拉普拉斯平滑,避免分母为 0。

使用 log 函数不仅可以使一些在每篇文档中几乎都有出现的常用词语(如“的”、“和”等停用词)的 IDF 值趋近于 0,从而降低它们的权重,同时也可以使那些仅在极个别文档中出现但不是很重要的词(如错别字)的 IDF 值不至于过高。

TF-IDF

TF-IDF 是 TF 和 IDF 的结合,用来衡量一个词语对于特定文档的重要性,通常由以下公式计算:

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

其中, t t t 表示一个词语, TF-IDF ( t ) \text{TF-IDF}(t) TF-IDF(t) 表示该词语的 TF-IDF 值。

TF-IDF 的缺点

TF-IDF(词频-逆文档频率)算法在自然语言处理和信息检索中广泛应用,但存在以下主要缺点:

  1. 无法捕捉语义信息:TF-IDF 仅基于词频和文档频率计算单词的重要性,并未考虑词语之间的语义关系。这意味着对于具有相似含义的词汇,尽管它们在不同的文本中可能有不同的出现形式,但算法无法自动识别并给予相同的权重。

  2. 忽略词序与上下文:TF-IDF 不考虑词语在句子或文档中的具体顺序和上下文依赖关系,这对于理解某些语境下的确切含义至关重要。

  3. 对长文档和稀有词汇处理不足:由于单纯依赖频率统计,TF-IDF 可能会过于强调出现在长文档中次数多但实际重要性一般的词汇,同时赋予罕见词汇过高的权重,即使这些词汇可能是噪音或者无关紧要的。

  4. 不能反应词的位置信息:TF-IDF 没有包含词在文档中的位置信息,而标题、开头或结尾的词通常具有更重要的意义。

  5. 数据集偏斜的影响:如果一个词汇在少数几个文档中频繁出现,但在整个语料库中并不常见,TF-IDF 可能错误地认为这个词对那些文档非常关键,但实际上它可能只代表了那些特定文档的主题特性而非普遍重要性。

  6. 生僻词的问题:一些生僻词或专业术语可能会得到较高的 IDF 值,但这并不能保证它们在所有情况下都构成相关或重要的关键词。

因此,在处理复杂的自然语言理解和语义相关的任务时,往往需要结合其他技术,例如使用深度学习模型如 BERT 等来补充 TF-IDF 方法的不足。

相关文章:

  • 有关UE5在VisualStudio升级后产生C++无法编译的问题及处理方案
  • 【Vue】为什么Vue3使用Proxy代替defineProperty?
  • Log4j2的PatternLayout详解
  • 如何使用Python+Flask搭建本地Web站点并结合内网穿透公网访问?
  • TypeScript实战系列之强力爆破泛型的困扰
  • vuex store,mutations,getters,actions
  • C++ 多线程编程中的条件变量std::condition_variable
  • 西瓜书学习笔记——层次聚类(公式推导+举例应用)
  • 在Ubuntu中修改系统时间并使其在掉电时保存
  • linux bash shell的getopt以及函数用法小记
  • 使用nginx对视频、音频、图片等静态资源网址,加token签权
  • python笔记10
  • 腾讯云Linux(OpenCloudOS)安装tomcat9(9.0.85)
  • Vite+Vue3使用Vue-i18n笔记
  • sql 行转列 日周月 图表统计
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【RocksDB】TransactionDB源码分析
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Docker 笔记(2):Dockerfile
  • Docker入门(二) - Dockerfile
  • If…else
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Mac转Windows的拯救指南
  • Mocha测试初探
  • mysql中InnoDB引擎中页的概念
  • Odoo domain写法及运用
  • Spring框架之我见(三)——IOC、AOP
  • SQLServer之创建数据库快照
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 前端js -- this指向总结。
  • 设计模式 开闭原则
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 自定义函数
  • ​力扣解法汇总946-验证栈序列
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #pragma once
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (Java)【深基9.例1】选举学生会
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (区间dp) (经典例题) 石子合并
  • (十一)手动添加用户和文件的特殊权限
  • (转)甲方乙方——赵民谈找工作
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net framework profiles /.net framework 配置
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .Net6 Api Swagger配置
  • .NET构架之我见
  • .Net小白的大学四年,内含面经
  • .Net中wcf服务生成及调用