使用RAKE简单实现关键词提取

2024-04-06 03:04

本文主要是介绍使用RAKE简单实现关键词提取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 算法说明
  • 算法步骤
    • 提取可能的关键词
      • spacy处理文本
      • 注意:关键词不是token
    • 对关键词所含的每个token进行评分
    • 对于关键词进行评分计算和排序返回
  • 算法分析

算法说明

RAKE的全称叫做Rapid Automatic Keyword Extraction,是一个用来自动从文章中抽取关键词的简单的算法。它的思想是对文本进行切分得到可能的关键词,对于关键词中所含的token根据频率等角度进行评分,最后对于关键词进行评分返回评分最高的作为选择的关键词。

算法步骤

提取可能的关键词

第一步是需要把句子切分成为可能的关键词。一般使用停用词和标点进行切分。认为停用词和标点之间的内容就是可能的关键词。

spacy处理文本

在处理文本的时候,我们手动处理的效率和正确率都不一定准确,这个时候比较好的方式就是可以借用spacy库来处理。

import spacy
sentence = "today is a sunny day!"
nlp = spacy.load("en_core_web_sm", disable=['parse', 'ner'])
doc = nlp(sentence)

spacy会帮助我们对于句子进行tokenization, 并且有对于每个token,可以使用token.is_stop, token.is_punct的方式来去掉停用词或者标点符号。

想要查看包含的停用词有哪些?

stop_words = nlp.Defaults.stop_words
stop_words

注意:关键词不是token

我们用token处理但是不代表关键词就是token。关键词可能是多个token组成的

对关键词所含的每个token进行评分

第二步就是对于第一步抽取出来的每个关键词中包含的token进行评分,评分的公式为:

score ( t ) = deg ( t ) freq ( t ) \text{score}(t) = \frac{\text{deg}(t)}{\text{freq}(t)} score(t)=freq(t)deg(t)

其中freq(t)指的是某个token在文档中出现的总的次数,deg(t)指的是这个tokne和其他的token一起出现的次数。简单的解释就是,如果一共有两个关键词
key1和key2
key1中有token1, token2, token3, token4
key2中有token2, token6, token5
那么和token1一起出现的词的个数就是4个,和token2一起出现的词的个数就是4+3 = 7个

对于关键词进行评分计算和排序返回

在计算得到上述的评分之后,我们可以发现,其实这个评分是针对于token的,但是我们想要的其实是对于关键词的评分,计算的方式是将每个关键词中的token的得分进行加和就能得到最后的关键词的评分。最后将这个评分进行排序,选出评分较高的作为关键词。

算法分析

(1)优势
相比于TextRank的方法来说,RAKE的计算更快
Rose S, Engel D, Cramer N, et al. Automatic keyword extraction from individual documents[J]. Text mining: applications and theory, 2010: 1-20.

(2)劣势
当文本的停用词不全面的时候,输出的词可能是非常长并且不相关的
M. G. Thushara, T. Mownika and R. Mangamuru, “A Comparative Study on different Keyword Extraction Algorithms,” 2019 3rd International Conference on Computing Methodologies and Communication (ICCMC), Erode, India, 2019, pp. 969-973, doi: 10.1109/ICCMC.2019.8819630.

这篇关于使用RAKE简单实现关键词提取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/878844

相关文章

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

Java进行日期解析与格式化的实现代码

《Java进行日期解析与格式化的实现代码》使用Java搭配ApacheCommonsLang3和Natty库,可以实现灵活高效的日期解析与格式化,本文将通过相关示例为大家讲讲具体的实践操作,需要的可以... 目录一、背景二、依赖介绍1. Apache Commons Lang32. Natty三、核心实现代

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Python文件操作与IO流的使用方式

《Python文件操作与IO流的使用方式》:本文主要介绍Python文件操作与IO流的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python文件操作基础1. 打开文件2. 关闭文件二、文件读写操作1.www.chinasem.cn 读取文件2. 写

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

PyQt6中QMainWindow组件的使用详解

《PyQt6中QMainWindow组件的使用详解》QMainWindow是PyQt6中用于构建桌面应用程序的基础组件,本文主要介绍了PyQt6中QMainWindow组件的使用,具有一定的参考价值,... 目录1. QMainWindow 组php件概述2. 使用 QMainWindow3. QMainW

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

python通过curl实现访问deepseek的API

《python通过curl实现访问deepseek的API》这篇文章主要为大家详细介绍了python如何通过curl实现访问deepseek的API,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... API申请和充值下面是deepeek的API网站https://platform.deepsee

java变量内存中存储的使用方式

《java变量内存中存储的使用方式》:本文主要介绍java变量内存中存储的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍2、变量的定义3、 变量的类型4、 变量的作用域5、 内存中的存储方式总结1、介绍在 Java 中,变量是用于存储程序中数据