关键词提取技术:TF-IDF 和 TextRank 简介

        关键词提取是自然语言处理中的重要任务之一,用于自动提取文档中最能代表其内容的词汇。两种常用的关键词提取技术是 TF-IDF 和 TextRank。它们的工作机制和应用场景有所不同,下面将详细解释这两种技术。

1. TF-IDF(Term Frequency - Inverse Document Frequency)

        TF-IDF 是一种统计方法,用于评估某个词语在一篇文档中的重要性,基于词频(TF)和逆文档频率(IDF)。它的基本原理是:某个词语在文档中出现的次数越多(高词频),且在整个语料库中出现的次数越少(低逆文档频率),那么该词在当前文档中的重要性就越高。

公式:
  1. TF(词频):表示某个词在文档中出现的频率。它可以通过词在文档中的出现次数除以文档的总词数计算。

                TF(t)=\frac{Number of times term t appears in a document}{Total number of terms in the document}

     2. IDF(逆文档频率):表示词在整个语料库中的稀有程度。它通过总文档数与包含该词的文档数之比的对数值计算。

                IDF(t)=log(\frac{Total number of documents}{Number of documents containing term t})

     3. TF-IDF:通过将词频(TF)和逆文档频率(IDF)相乘,计算出某个词的重要性得分。

                TF-IDF(t)=TF(t)×IDF(t) 

特点:
  • 局限性:TF-IDF是基于统计的技术,因此它无法捕捉到词语之间的关系或上下文信息。
  • 适用场景:适合需要从文档中提取最具代表性的单词的任务,如文本分类、搜索引擎优化、关键词推荐等。

2. TextRank

        TextRank 是一种基于图(Graph)的无监督关键词提取算法,它是从PageRank算法中衍生而来,用于评估文本中每个词的重要性。TextRank通过构建词汇之间的关系图(共现关系)来计算每个词的权重,从而确定哪些词是最重要的关键词。

基本步骤:
  1. 文本预处理:将文档进行分词、去停用词和词干提取(或词形还原)。

  2. 构建词图:将文本中的词语作为图的节点。如果两个词在一个窗口中共同出现(窗口大小可以人为设置),则在这两个词之间建立一条边,表示它们具有一定的关联性。

  3. 边的权重:可以根据词语的共现次数或距离来赋予边权重。共现次数越多的词对彼此的重要性影响越大。

  4. 迭代计算:与PageRank算法相似,TextRank对图中的每个节点(词)进行迭代更新权重,直到收敛。计算公式为(因为不知道):

        其中,W(i) 表示句子 i 的权重,右侧的求和表示每个相邻句子对本句子的贡献程度,在单文档中,我们可以粗略的认为所有句子都是相邻的,不需要像多文档一样进行多个窗口的生成和抽取,仅需单一文档窗口即可," In(i) 表示指向 w(i) 的词集,Out(j) 是从 w(j) 出发的词集, w_{ji} 表示两个句子的相似度,  W(j)  代表上次迭代出的句子 j 的权重。d是阻尼系数,一股为0.85,以防止算法陷入死循环。

  1. 选择高分词作为关键词:最后,根据词的得分排序,选出得分最高的若干词作为关键词。
特点:
  • 上下文信息:TextRank能够考虑到词语之间的共现关系,因此可以捕捉到词语的上下文信息。
  • 无监督:它是一种无监督方法,不需要额外的标注数据。
  • 适用场景:适用于抽取多词短语、摘要生成、关键词提取等任务,尤其适合从长文本中提取重要信息。

3. TF-IDF 与 TextRank 的对比

特点TF-IDFTextRank
依赖数据依赖整个语料库无需依赖全局语料库
处理方式基于统计方法,忽略词与词之间的关系基于图模型,考虑词的共现和上下文信息
关键词类型通常提取单个词可以提取多词短语
计算复杂度计算简单,适合大规模数据计算复杂,需要构建图结构
应用场景搜索引擎、文本分类等摘要生成、关键词提取等

4. 应用场景

  • TF-IDF
    • 用于文档的关键词提取和文本分类,如新闻文章的主题提取。
    • 搜索引擎中的文档检索系统,用于根据查询内容匹配相关文档。
    • 文本聚类任务,帮助定义聚类中心的核心关键词。
  • TextRank
    • 文本摘要生成:通过提取关键词或重要句子来生成文本摘要。
    • 文档关键词提取:适合从较长的文本中提取重要关键词和短语。
    • 内容推荐:根据提取的关键词为用户提供相关内容的推荐。

总结

        TF-IDF 和 TextRank 都是广泛应用的关键词提取技术。TF-IDF通过统计词频和文档频率计算关键词的权重,适合处理结构化文档或大规模文档集。而TextRank利用图模型考虑词语之间的共现关系,适合无监督的关键词提取和文本摘要生成。在实际应用中,两者可以根据任务需求结合使用,例如使用TextRank来提取多词短语,使用TF-IDF来处理高频词。

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

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

相关文章

Python | Leetcode Python题解之第485题最大连续1的个数

题目: 题解: class Solution:def findMaxConsecutiveOnes(self, nums: List[int]) -> int:maxCount count 0for i, num in enumerate(nums):if num 1:count 1else:maxCount max(maxCount, count)count 0maxCount max(maxCount, count)return …

未来智慧建筑:人工智能技术的无限可能

随着科技的不断发展,人工智能技术正逐渐渗透到各行各业,其中,在智能建筑领域的应用备受瞩目。智能建筑结合了传统建筑与先进科技的完美融合,在提高建筑效率、节能环保、增强安全性等方面发挥着重要作用。本文将探讨人工智能技术在…

MyBatis的占位符(day36)

1 学习目标 重点掌握#{}占位符的使用 2 MyBatis的占位符介绍 #{}占位符: 相当于JDBC中的问号(?)占位符&#xff0c;是为SQL语句中的值进行占位&#xff0c;如果参数值是字符串或者日期类型&#xff0c;会进行转义处理 我们使用#{}写的SQL语句: <update id"delete…

蓝牙资讯|苹果AirPods Pro 2耳机推送开发者Beta固件

科技媒体 MacRumors 报道&#xff0c;苹果公司邀请开发者&#xff0c;针对 Lightning 和 USB-C 接口的 AirPods Pro 2 耳机&#xff0c;推送了新的 7B5013d 固件版本&#xff0c;较之前的 7B5013c 有所提升。 苹果未来会向所有 AirPods Pro 2 用户推送本次固件更新&#xff0…

react18中实现简易增删改查useReducer搭配useContext的高级用法

useReducer和useContext前面有单独介绍过&#xff0c;上手不难&#xff0c;现在我们把这两个api结合起来使用&#xff0c;该怎么用&#xff1f;还是结合之前的简易增删改查的demo&#xff0c;熟悉vue的应该可以看出&#xff0c;useReducer类似于vuex&#xff0c;useContext类似…

springboot项目通过maven的profile功能实现通过不同文件夹的方式来组织不同环境配置文件

写在前面 本文看下springboot项目如何通过文件夹的方式来组织不同环境配置文件。 1&#xff1a;正文 一般的我们写springboot项目时配置文件是这个样子的&#xff1a; appliction.yaml --> 通过spring.profiles.activexxx来激活某个指定后缀的配置文件 application-evn1…

小程序项目实践(一)--项目的初始化以及前期的准备工作

目录 1.起步 1.1 uni-app 简介 1.2 开发工具 1.2.1 下载 HBuilderX 1.2.2 安装 HBuilderX 1.2.3 安装 scss/sass 编译 1.2.4 快捷键方案切换 1.2.5 修改编辑器的基本设置 1.3 新建 uni-app 项目 1.4 目录结构 1.5 把项目运行到微信开发者工具 1.6 使用 Git 管理项目 …

SpringBoot3响应式编程全套-R2DBC

目录 传送门前言一、R2DBC概念二、Spring Data R2DBC1、整合1.1、导入依赖1.2、编写配置 2、声明式接口&#xff1a;R2dbcRepository2.1、Repository接口2.2、自定义Converter2.3、配置生效 3、编程式组件 三、RBAC-SQL练习1、1-12、1-N 四、最佳实践五、附录 传送门 SpringMV…

python配合yolov11开发分类训练软件

上一篇文件写了用yolo分类模型开发分类软件&#xff0c;这边文章在上个分类软件的基础上加入训练功能环境配置:pycharm&#xff0c;PySide6 6.6.1 &#xff0c;PySide6-Addons 6.6.1&#xff0c;PySide6-Essentials 6.6.1&#xff0c;torch 2.3.1cu121&#xff0c;torchaudio 2…

Spring AI Java程序员的AI之Spring AI(三)RAG实战

Spring AI之RAG实战与原理分析 前言RAGDocumentDocumentReaderDocumentTransformerDocumentWriter VectorStoreSimpleVectorStoreRedisVectorStore元数据搜索组装提示词 前言 检索增强生成&#xff08;RAG&#xff09;是一种结合信息检索和生成模型的技术&#xff0c;用于将相…

C语言——数组

1.数组的概念 数组是一组相同类型元素的集合&#xff1b; 数组中可以存放1个或多个元素&#xff0c;但数组元素个数不能为0。 同时数组可以分为一维数组和多维数组&#xff0c;多维数组一般常见 是二维数组。 2.一维数组的创建和初始化 一维数组的创建的基本语法&#xff1a; …

大数据-168 Elasticsearch 单机云服务器部署运行 详细流程

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

【C++】类和对象(类的默认成员函数)

目录 一.构造函数 二.析构函数 三.拷贝构造函数 四.赋值运算符重载 五.取地址运算符重载 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。一个类&#xff0c;我们不写的情况下编译器会默认生成以下6个默认成员函数。 一.构造…

目标检测中的损失函数

损失函数是用来衡量模型与数据的匹配程度的&#xff0c;也是模型权重更新的基础。计算损失产生模型权重的梯度&#xff0c;随后通过反向传播算法&#xff0c;模型权重得以更新进而更好地适应数据。一般情况下&#xff0c;目标损失函数包含两部分损失&#xff0c;一个是目标框分…

Vue3万能初始化

项目创建后第一步 项目创建&#xff1a;Vue3创建-CSDN博客 创建后执行下面 删除默认提供的HelloWorld.vue组件和src/APP.vue中的默认样式和内容。 App.vue&#xff0c;代码&#xff1a; <template></template><script setup></script><style&g…

数控机械制造工厂ERP适用范围有哪些

在当今制造业高速发展的背景下&#xff0c;企业资源计划(ERP)系统已成为提升工厂管理效率、实现生产自动化与信息化的关键工具。特别是对于数控机械制造工厂而言&#xff0c;一个合适的ERP系统能够帮助其优化生产流程、提高产品质量、降低生产成本并增强市场竞争力。 1. 生产计…

IP数据包格式、ICMP封装步骤

IP数据包格式 版本号&#xff1a;占4位&#xff0c;表示IP协议的版本&#xff0c;目前广泛使用的是IPv4&#xff0c;其版本号为4。 首部长度&#xff1a;占4位&#xff0c;表示IP首部的长度&#xff0c;单位为32位字节。首部长度最小为20字节&#xff0c;最大为60字节。 服务…

dayjs日期格式化,开发uniapp或unicloud前后端进行时间格式转换

一、 为什么要用日期格式化 因为在开发项目过程中&#xff0c;会遇到各种各样的日期格式&#xff0c;有的显示完整的年-月-日 时:分:秒&#xff0c;而有的场景就只显示月-日等格式&#xff0c;还有就是显示当前时间和注册时间的间隔时长等&#xff0c;场景非常多&#xff0c;如…

idea2024年版本

最简单安装2024.2版本idea 内带安装教程 ** 下载链接&#xff1a;https://pan.quark.cn/s/ab24afbaa43f 提取码&#xff1a;KHrq

jmeter发送post请求

在jmeter中&#xff0c;有两种常用的请求方式&#xff0c;get和post.它们两者的区别在于get请求的参数一般是放在路径中&#xff0c;可以使用用户自定义变量和函数助手等方式进行参数化&#xff0c;而post请求的参数不能随url发送&#xff0c;而是作为请求体提交给服务器。而在…