gensim 实现 TF-IDF;textRank 关键词提取

目录

TF-IDF 提取关键词

介绍

代码

textRAnk 提取关键词 


这里只写了两种简单的提取方法,不需要理解上下文,如果需要基于一些语义提取关键词用 LDA:TF-IDF,textRank,LSI_LDA 关键词提取-CSDN博客

TF-IDF 提取关键词

介绍

TF-IDF(Term Frequency-Inverse Document Frequency)

含义:

  • TF (Term Frequency): 词频,是指一个词语在当前文档中出现的次数。它衡量的是词语在文档内部的重要性,直观上讲,一个词语在文档中出现越频繁,表明它对该文档内容描述的贡献越大。

  • IDF (Inverse Document Frequency): 逆文档频率,是一个词语在整个文档集合中的稀有度度量。IDF值由所有文档的数量除以包含该词语的文档数量,然后取对数得出。一个词语在越多的文档中出现,其IDF值就越小,反之,出现在少数文档中的词语IDF值较大,表示这个词具有更高的鉴别力。

TF-IDF计算公式:

TF-IDF = TF(t, d) * IDF(t)

其中,t是词语,d是文档。

优点:

  1. 突出重点:通过结合词频和逆文档频率,TF-IDF可以较好地突出文档中重要的、有代表性的词语,抑制常见但不具备独特意义的词语。

  2. 适应性强:适用于多种应用场景,如信息检索、文本分类、关键词提取等,能够在一定程度上消除文档长度差异对结果的影响。

  3. 计算简洁:基于简单的数学模型,易于理解和实现。

  4. 单篇文档也可以用:对于单篇可以吧文档分割为多个段落,以字数,句号等分割,这样就形成了多篇文档,再用就可以了。

缺点:

  1. 忽视上下文:TF-IDF仅仅考虑了词语在文档内部和文档集合之间的相对重要性,但没有考虑词语间的关联性和语义关系,容易忽略词序和短语结构等信息。

代码

提取一段文本中的关键词,需要先分为对文本分割,一是怕文本太长,而是可能会影响结果;

再对每个句子分词,再开始词袋及下面模型;

这里没有踢掉停用词啥的

import jieba
from gensim import corpora, models# 文本预处理,将文档分为句子
text = '6月19日,《2012年度“中国爱心城市”公益活动新闻发布会》在京举行。' + \'中华社会救助基金会理事长许嘉璐到会讲话。基金会高级顾问朱发忠,全国老龄' + \'办副主任朱勇,民政部社会救助司助理巡视员周萍,中华社会救助基金会副理事长耿志远,' + \'重庆市民政局巡视员谭明政。晋江市人大常委会主任陈健倩,以及10余个省、市、自治区民政局' + \'领导及四十多家媒体参加了发布会。中华社会救助基金会秘书长时正新介绍本年度“中国爱心城' + \'市”公益活动将以“爱心城市宣传、孤老关爱救助项目及第二届中国爱心城市大会”为主要内容,重庆市' + \'、呼和浩特市、长沙市、太原市、蚌埠市、南昌市、汕头市、沧州市、晋江市及遵化市将会积极参加' + \'这一公益活动。中国雅虎副总编张银生和凤凰网城市频道总监赵耀分别以各自媒体优势介绍了活动' + \'的宣传方案。会上,中华社会救助基金会与“第二届中国爱心城市大会”承办方晋江市签约,许嘉璐理' + \'事长接受晋江市参与“百万孤老关爱行动”向国家重点扶贫地区捐赠的价值400万元的款物。晋江市人大' + \'常委会主任陈健倩介绍了大会的筹备情况。'
sentences = [sentence.strip() for sentence in text.split('。') if sentence.strip()]# 对每个句子进行分词
tokenized_sentences = [list(jieba.cut(sentence)) for sentence in sentences]# 创建词典并转化为词袋表示
dictionary = corpora.Dictionary(tokenized_sentences)
corpus = [dictionary.doc2bow(sentence) for sentence in tokenized_sentences]# 训练TF-IDF模型
tfidf = models.TfidfModel(corpus)# 计算TF-IDF值并提取关键词
keywords_freq = {}
for bow in tfidf[corpus]:for id, freq in bow:if dictionary[id] in keywords_freq:keywords_freq[dictionary[id]] = keywords_freq[dictionary[id]] + freqelse:keywords_freq[dictionary[id]] = freq# 结合词典信息,按TF-IDF值排序
keywords_tfidf = sorted(keywords_freq.items(), key=lambda x: x[1], reverse=True)# 提取前N个关键词
N = 10
print(keywords_tfidf[:N])

textRAnk 提取关键词 

TextRank算法是一种轻量级、易于实现的关键词提取和文本摘要方法,可用与单篇文档关键词提取,主要根据句子间的关联性对词进行分割关键词提取。

jieba 库有实现封装好的,有这么几个参数:

topK=10 选择前几个关键词
withWeight=True 是否显示权重分数
allowPOS=('v') 限制关键词词性,值保留括号中的词性的词,默认为('ns', 'n', 'vn', 'v')
withFlag=True 为 true 那返回格式为 [pair(word1, weirght1),..] 列表
from jieba import analysetext = '6月19日,《2012年度“中国爱心城市”公益活动新闻发布会》在京举行。' + \'中华社会救助基金会理事长许嘉璐到会讲话。基金会高级顾问朱发忠,全国老龄' + \'办副主任朱勇,民政部社会救助司助理巡视员周萍,中华社会救助基金会副理事长耿志远,' + \'重庆市民政局巡视员谭明政。晋江市人大常委会主任陈健倩,以及10余个省、市、自治区民政局' + \'领导及四十多家媒体参加了发布会。中华社会救助基金会秘书长时正新介绍本年度“中国爱心城' + \'市”公益活动将以“爱心城市宣传、孤老关爱救助项目及第二届中国爱心城市大会”为主要内容,重庆市' + \'、呼和浩特市、长沙市、太原市、蚌埠市、南昌市、汕头市、沧州市、晋江市及遵化市将会积极参加' + \'这一公益活动。中国雅虎副总编张银生和凤凰网城市频道总监赵耀分别以各自媒体优势介绍了活动' + \'的宣传方案。会上,中华社会救助基金会与“第二届中国爱心城市大会”承办方晋江市签约,许嘉璐理' + \'事长接受晋江市参与“百万孤老关爱行动”向国家重点扶贫地区捐赠的价值400万元的款物。晋江市人大' + \'常委会主任陈健倩介绍了大会的筹备情况。'
textrank = analyse.textrank
keywords = textrank(text, topK=10)
# 输出抽取出的关键词
print(keywords)textrank = analyse.textrank
keywords = textrank(text)
# 输出抽取出的关键词
print(keywords)textrank = analyse.textrank
keywords = textrank(text, topK=10, withWeight=True)
# 输出抽取出的关键词
print(keywords)textrank = analyse.textrank
keywords = textrank(text, topK=10, withWeight=True, allowPOS=('v'))
# 输出抽取出的关键词
print(keywords)textrank = analyse.textrank
keywords = textrank(text, topK=10, allowPOS=('v'), withFlag=True)
# 输出抽取出的关键词
print(keywords)

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

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

相关文章

MySQL中批量修改某个字段的一部分字符,可以使用UPDATE语句结合REPLACE函数

示例语句 UPDATE your_table_name SET your_column_name REPLACE(your_column_name, old_string, new_string) WHERE your_column_name LIKE %old_string%; 原因: 项目用了一个服务上传地址原来是http开头,数据库存的地址也是http,后来加了…

基于java EE医疗机械设备采购管理系统设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 系统开发相关技术 3 1.1 J2EE技术简介 3 1.2 SSH框架技术 3 1.3 JQuery技术 3 1.4 CSS技术 3 1.5 XML技术 3 1.6 Ajax技术 4 1.7 MySQL数据库 4 1.8 本章小结 4 2 系统分析 5 2.1 概要分析 5 2.2 功能需求分析 6 2.3 功能初步设计 6 2.4 …

COMSOL热应力仿真

热应力 热膨胀子节点 热膨胀输入类型 假如直接知道热膨胀大小,可以直接对热应变进行赋值。 约束与载荷 对于自由膨胀,可以添加抑制刚体运动。 案例分析 在参数部分,设定体积参考温度Tref,假定在25[degC]模型无热应变。 APP开发器-…

vue 使用 PrintJs 实现打印pdf效果

一、print.js介绍 Print.js主要是为了帮助我们直接在应用程序中打印PDF文件,而无需离开界面,并且不使用嵌入。对于用户不需要打开或下载PDF文件的特殊情况,他们只需要打印它们。 例如,当用户请求打印在服务器端生成的报告时&…

选型搜索引擎之参考Elasticsearch

简介 Elasticsearch(简称ES)是一个基于Apache Lucene的开源、分布式、RESTful接口的全文搜索引擎。其设计用于云计算环境,能够达到实时搜索、稳定、可靠、快速、安装使用方便的效果。Elasticsearch是用Java开发的,并作为Apache许…

IRLINK(红外遥控器)

工具 1.Proteus 8 仿真器 2.keil 5 编辑器 原理图 讲解 简介 红外遥控:是利用红外线进行通信的设备,由红外LED调制后的信号发出,由专用的红外接头进行解调; 通信方式:单工、异步; 红外LED波长&#x…

与缓存相关的状态码

与缓存相关的 HTTP 状态码主要涉及客户端和服务器之间对资源缓存的处理和验证,以下是一些常见的与缓存相关的状态码: 1. **200 OK**: - 当服务器成功处理了客户端的请求时,会返回状态码 200 OK。这意味着请求成功,…

老鼠出迷宫 --- 方法调用和数组下标运用综合练习 普通版!!

package Migon; public class Mingon { public static void main(String[] args){ //0表示走 &#xff0c;1表示障碍物 //创建一个8行7列的数组 int[][] map new int[8][7]; for(int i 0 ;i<7;i){ map[0][i] 1; …

【微信小程序】传参存储

目录 一、本地数据存储 wx.setStorage wx.setStorageSync 1.1、异步缓存 存取数据 1.2、同步缓存 存取数据 二、使用url跳转路径携带参数 2.1、 wx.redirectTo({}) 2.2、 wx.navigateTo({}) 2.3、 wx.switchTab({}) 2.4 、wx.reLaunch({}) 2.5、组件跳转 三、…

docker拉取镜像失败的解决方案大全

更换国内源 创建或修改 /etc/docker/daemon.json 文件&#xff0c;修改&#xff1a; {"registry-mirrors" : ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https:…

C#使用自定义的方法设计二叉树类及其方法

目录 一、涉及到的知识点 1.树结构 2.树结构的数据类型定义 &#xff08;1&#xff09;结构定义 &#xff08;2&#xff09;基本操作 3.二叉树 &#xff08;1&#xff09;定义和特点 &#xff08;2&#xff09;遍历二叉树的输出结果 二 、二叉树的实例 一、涉及到的知…

Web APIs 5 Window对象、本地存储

Web APIs 5 一、Window对象1、BOM2、定时器-延时函数3、JS执行机制4、location对象案例&#xff1a;5秒钟之后跳转的页面 5、navigator对象6、histroy对象 二、本地存储本地存储 localStorage本地存储 sessionStorage存储复杂数据类型案例&#xff1a;学生就业统计表字符串拼接…

html css 导航栏 2

鼠标划过会向上移动改变颜色 html文件 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>导航栏</title><link rel"stylesheet" href"css/dhl1.css" /></head><body><div …

动态规划(带你了解 原理 实践)

目录 引言 一、动态规划的基本概念 二、动态规划的应用 1. 背包问题 2. 最短路径问题 3. 0-1背包问题的变种 4. 字符串匹配与编辑距离 5. 金融投资组合优化 6. 生产调度问题 7. 项目管理中的资源分配 三、动态规划算法的优缺点 优点 1 效率高 2 通用性强 缺点&a…

Java高频面试之消息队列与分布式篇

有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 消息队列的基本作用&#xff1f; 异步通信&#xff1a;消息队列提供了异步通信的能力&#xff0c;发送方可以将消息发送到队列中&#xff0c;而无需等待接收方立即处理。发送方和接收方可以解耦&#x…

排序——希尔排序、插入排序

本节复习排序中的希尔排序&#xff0c;希尔排序属于插入排序。 希尔排序的代码和插入排序非常类似。 思想却相对于插入排序来说复杂。 在复习希尔排序之前&#xff0c; 我们需要先复习一下插入排序。 目录 插入排序 插入过程 代码实现 希尔排序 希尔排序的思想 代码实…

蓝桥杯之【01背包模版】牛客例题展示

牛客链接 #include <bits/stdc.h> using namespace std; int n,V; const int N1010; int v[N],w[N]; int dp[N][N]; int main() {cin>>n>>V;for(int i1;i<n;i){cin>>v[i]>>w[i];}for(int i1;i<n;i){for(int j1;j<V;j){dp[i][j]dp[i-1][…

Svg Flow Editor 原生svg流程图编辑器(一)

系列文章 Svg Flow Editor 原生svg流程图编辑器&#xff08;二&#xff09; 效果展示 项目概述 svg flow editor 是一款流程图编辑器&#xff0c;提供了一系列流程图交互、编辑所必需的功能&#xff0c;支持前端研发自定义开发各种逻辑编排场景&#xff0c;如流程图、ER 图、…

【xv6操作系统】Lab systems calls

一、实验前须知 阅读 xv6 文档的第 2 章和第 4 章的 4.3 节和 4.4 节以及相关源文件&#xff1a; 系统调用的用户空间代码在 user/user.h 和 user/usys.pl 中。 内核空间代码在 kernel/syscall.h 和 kernel/syscall.c 中。 与进程相关的代码在 kernel/proc.h 和 kernel/proc.c…

for语句的实际应用(3)

3145&#xff1a;【例24.3】 奇数求和 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 9847 通过数: 5442 【题目描述】 计算非负整数 m 到 n&#xff08;包括 m 和 n&#xff09;之间的所有奇数的和&#xff0c;其中&#xff0c;m 不大于 n&#xff0c;且 n 不大…