TextRank 算法

news2024/7/6 19:10:51

第1关:Jieba 在关键词提取中的应用

任务描述

本关任务:根据本关所学有关使用 Jieba 库进行关键词提取的知识,编写使用 Jieba 模块进行关键词提取的程序,并通过所有测试用例。

相关知识

为了完成本关任务,你需要掌握:

  1. Jieba 模块的使用;

  2. Jieba 提取关键词的方法。

Jieba 关键词提取

jieba 库是一款优秀的 Python 第三方自然语言处理库,在我们的实际开发过程中,jieba 库是我们的好帮手,本实训将介绍 jieba 在关键词提取方面的应用。再利用 jieba 进行关键词提取时,有两种方式,一种是基于 TF-IDF 算法,一种是基于 TextRank 算法。接下来我们具体介绍这两种方式。

基于 TF-IDF 算法的关键词抽取

TF-IDF 算法是一种统计方法,用以评估一个词语对于一个文件集或一个语料库中的一份文件的重要程度,即一个词语在一篇文章中出现次数越多,同时在所有文档中出现次数越少,越能够代表该文章。

示例:使用 jieba 中的 TF-IDF

 
  1. import jieba.analyse
  2. jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())

函数中各个参数的具体含义为:

  • sentence 为待提取的文本;

  • topK 为返回几个 TF/IDF 权重最大的关键词,默认值为20;

  • withWeight 为是否一并返回关键词权重值,默认值为 False ;

  • allowPOS 仅包括指定词性的词,默认值为空,即不筛选。

在使用 jieba 的 TF-IDF 算法时,需要注意的是,idf 的值是通过语料库统计得到的,所以,实际使用时,可能需要依据使用环境,替换为对应的语料库统计所得 idf 值;需要从分词结果中去除停用词;如果指定了仅提取指定词性的关键词,则词性分割非常重要,词性分割中准确程度,影响关键字的提取。

基于 TextRank 算法的关键词抽取

TextRank 采用图的思想,将文档中的词表示成一张无向有权图,词为图的节点,词之间的联系紧密程度体现为图的边的权值;计算词的权重等价于计算图中节点的权重;提取关键字,等价于找出图中权重排名 TopK 的节点。

示例:使用 jieba 中的 TextRank

 
  1. jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=("ns","n","vn","v")) # 直接使用,接口相同,注意默认过滤词性。
  2. jieba.analyse.TextRank() # 新建自定义 TextRank 实例

函数中各个参数的具体含义为:

  • sentence 为待提取的文本;

  • topK 为返回几个 TextRank 权重最大的关键词,默认值为20;

  • withWeight 为是否一并返回关键词权重值,默认值为 False ;

  • allowPOS 仅包括指定词性的词,默认值非空。

其基本思想为:将待抽取关键词的文本进行分词;以固定窗口大小(默认为5,通过 span 属性调整)、词之间的共现关系构建图;计算图中节点的 PageRank ,注意是无向带权图。

编程要求

在右侧编辑器中的 Begin-End 之间补充 Python 代码,使用 jieba 模块对所输入文本进行关键词提取,并输出前三个关键词。其中文本内容通过 input 从后台获取。

测试说明

测试输入: 以上信息提示,武汉疫情快速上升态势得到控制,湖北除武汉外,局部爆发的态势也得到控制,湖北以外省份疫情形势积极向好。下一步要从统筹推进疫情防控和经济社会发展出发,紧紧围绕社区防控和医疗救治两个重点,由全面防控向群专结合,精准防控转变。

预期输出:

 
  1. Building prefix dict from the default dictionary ...
  2. Dumping model to file cache /tmp/jieba.cache
  3. Loading model cost 1.309 seconds.
  4. Prefix dict has been built successfully. # 接口调用附加信息
  5. 疫情 武汉 湖北
import jieba.analyse
import warnings
warnings.filterwarnings("ignore")
sentence = input()

# 任务:基于jieba中的TF-IDF算法完成对sentence的关键词提取,提取前三个关键词并以一行输出
# ********** Begin *********#

kw = jieba.analyse.extract_tags(sentence,topK=3,withWeight=False,allowPOS=())
ans = ''
for w in kw:
    ans += w + ' '
    
print(ans)
# ********** End **********#

第2关:TextRank 算法

任务描述

本关任务:根据所学有关 TextRank 算法的知识,完成 TextRank 算法程序的编写并通过所有测试用例。

相关知识

为了完成本关任务,你需要掌握:

  1. PageRank 算法的思想;

  2. TextRank 算法的步骤与特点。

PageRank 算法

TextRank 算法的基本思想来源于 Google 的 PageRank 算法。因此在介绍TextRank 算法之前,我们先了解一下 PageRank 算法。PageRank 算法主要用于对在线搜索结果中的网页进行排序。让我们通过一个例子快速理解这个算法的基础。

图1

假设我们有4个网页——w1​,w2​,w3​,w4​。这些页面包含指向彼此的链接。有些页面可能没有链接,这些页面被称为悬空页面。

webpagelinks
w1[w4,w2]
w2[w3,w1]
w3[ ]
w4[w1]

如上表所示,各个网页之间的关系有:

  • w1​ 有指向 w2​、w4​ 的链接;

  • w2​ 有指向 w3​ 和 w1​ 的链接;

  • w4​ 仅指向 w1​ ;

  • w3​ 没有指向的链接,因此为悬空页面。

为了对这些页面进行排名,我们必须计算一个称为 PageRank 的分数。这个分数是用户访问该页面的概率。

为了获得用户从一个页面跳转到另一个页面的概率,我们将创建一个正方形矩阵 M,如图2所示,它有 n 行和 n 列,其中 n 是网页的数量。

图 2 正方形矩阵

矩阵中的每个元素表示从一个页面链接进另一个页面的可能性。如图3所示,高亮的方格包含的是从 w1​跳转到 w2​ 的概率。

图 3 概率正方形矩阵

如下是概率初始化的步骤:

  1. 从页面 i 连接到页面 j 的概率,也就是 M[i][j] ,初始化为1/页面i的出链接总数wi

  2. 如果页面 i 没有到页面 j 的链接,那么 M[i][j] 初始化为 0 ;

  3. 如果一个页面是悬空页面,那么假设它链接到其他页面的概率为等可能的,因此 M[i][j] 初始化为1/页面总数

因此在本例中,矩阵 M 初始化后如图4所示:

图 4 初始化后的矩阵

最后,这个矩阵中的值将以迭代的方式更新,以获得网页排名。

TextRank 算法

掌握了 PageRank 算法后,让我们理解 TextRank 算法。两种算法的相似之处列举如下:

  • 用句子代替网页;

  • 任意两个句子的相似性等价于网页转换概率;

  • 相似性得分存储在一个方形矩阵中,类似于 PageRank 的矩阵 M 。

图 5 TextRank 算法

TextRank 算法是一种抽取式的无监督的文本摘要方法。其步骤如下:

  1. 把所有文章整合成文本数据;

  2. 把文本分割成单个句子;

  3. 为每个句子找到向量表示(词向量);

  4. 计算句子向量间的相似性并存放在矩阵中;

  5. 将相似矩阵转换为以句子为节点、相似性得分为边的图结构,用于句子 TextRank 计算;

  6. 一定数量的排名最高的句子构成最后的摘要。

编程要求

在右侧编辑器中的 Begin-End 之间补充 Python 代码,实现 TextRank 算法,完成对所输入文本的关键词提取,输出前三个关键词。其中文本内容通过 input 从后台获取。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

测试输入: 在抗击新型冠状病毒的特殊时期,有这样一群人,面对疫情,他们逆向而行,穿梭在辖区的街头巷尾。一只口罩、一双手套,简单的防护措施,就是他们为自己武装的勇气。作为抗击疫情战场上不可或缺的组成部分,社区工作者们用爱筑起了疫情防控的第一道防线。

预期输出:

 
  1. Building prefix dict from the default dictionary ...
  2. Dumping model to file cache /tmp/jieba.cache
  3. Loading model cost 1.259 seconds.
  4. Prefix dict has been built successfully.# 接口调用的附加信息
  5. 疫情 防护 手套
from jieba import analyse
text = input() # 原始文本
# 任务:使用jieba模块中有关TextRank算法的模块完成对text中前三个关键字的提取并输出
# ********** Begin *********#

kws = analyse.textrank(text)
ans = ''
i = 0 
for w in kws:
    ans+=w+' '
    i+=1
    if i > 2:
        break

print(ans)

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

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

相关文章

单细胞差异基因火山图绘制

做完单细胞差异基因分析(FindMarkers/FindAllmarkers)之后,按照常规流程绘制出来的火山图看上去会很奇怪。 1、为什么火山图顶部聚集了很多基因? 这是由于单细胞有别于bulk的特性,会出现两组细胞之间的p值过于显著出现或接近0的情况&#xff…

Unity3D截屏保存本地和上传方法

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、模型截图保存👉1-1 模型格式👉1-2 设置图片大小👉1-3 代码如下 👉二、截图上传给后端保存👉壁纸分享👉总结 &#x1f44…

cad由于找不到mfc140u.dll的解决方法,彻底解决mfc140u.dll丢失问题

在计算机辅助设计(CAD)的时候,我们可能会遇到各种错误和问题。其中,“CAD由于找不到mfc140u.dll,无法继续执行代码”的错误提示。这个问题可能会导致CAD无法启动运行,因此,我希望通过分享我的经…

云计算【第一阶段(22)】进程和计划任务管理

一、查看进程 1.1、程序和进程的关系 程序 保存在硬盘,光盘等介质中的可执行代码和数据静态保存的代码 进程 在cpu及内存中运行的程序代码动态执行的代码父,子进程:每个程序可以创建一个或多个进程 1.2、查看进程 1.2.1、静态查看进程…

Geotools系列说明之入门介绍与坐标系转换说明

Geotools介绍 借用官网的介绍 GeoTools is an open source Java library that provides tools for geospatial data 就是提供java处理地理空间的工具详细内容请参考官网 Geotools环境搭建 我们这里只讨论Geotools在Maven中和Idea的项目实战,至于Geotools的服务端…

Altium Designer软件下载安装「PCB设计软件」安装包资源获取

Altium Designer作为一款集成化的电子产品开发系统,它主要适用于Windows操作系统,为电子设计工程师们提供了一个高效、便捷的工作平台。 在Altium Designer中,原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出…

DVWA 靶场 File Inclusion 通关解析

前言 DVWA代表Damn Vulnerable Web Application,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

KVB App:集运价格飙升:地缘风险下的投资新机遇

摘要 随着全球地缘政治局势的反复和海运需求的持续高企,集装箱运价在近期不断攀升,吸引了越来越多的投资者。摩根大通的最新报告指出,地缘风险加剧和航运市场需求旺盛使得即期运费可能继续走高。本文将深入分析当前集运市场的情况及其对投资者…

备份和还原

stai和dnta snat:源地址转换 内网---外网 内网ip转换成可以访问外网的ip 内网的多个主机可以使用一个有效的公网ip地址访问外部网络 DNAT:目的地址转发 外部用户,可以通过一个公网地址访问服务内部的私网服务。 私网的ip和公网ip做一个…

SQLite、MySQL、PostgreSQL 3个关系数据库之间优缺点对比

引言 关系数据模型以行和列的表格形式组织数据,在数据库管理工具中占主导地位。今天还有其他数据模型,包括NoSQL和NewSQL,但是关系数据库管理系统(RDBMS)仍然占主导地位用于存储和管理全球数据。 本文比较了三种实现最…

40岁学习java是否需要报班学习?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!应该不需要。各种公开免费的…

新能源行业必会基础知识-----电力市场概论笔记-----绪论

新能源行业知识体系-------主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/139946830 目录 1. 电力市场的定义2. 对传统电力系统理论的挑战 1. 电力市场的定义 1. 我国电力市场的进程 我国新一轮电力体制改革的5大亮点&…

摒弃反模式:使用Kotlin委托优化Android BaseActivity

摒弃反模式:使用Kotlin委托优化Android BaseActivity 在Android开发中,许多开发者习惯于创建名为“BaseActivity”或“BaseFragment”的基类,以便在所有Activity或Fragment中共享一些通用行为。这种方法乍一看似乎是个好主意,但实…

C语言实现KMP算法

#include<stdio.h> #include<string.h> #include<stdlib.h>void getNextArray(char * sub_str, int sub_str_length, int * next_array); int kmpSearch(char * sub_str, char * main_str);int main(void) {// 1 声明用于算法处理的字符串char origin_str[] …

整数智能与上海数据交易所携手,共筑数据要素市场新篇章

近期&#xff0c;整数智能荣获上海数据交易所“数据治理服务商”证书&#xff0c;正式加入上海数据交易所数商生态&#xff0c;成为上海数据交易所官方认证的数据治理服务商。 在数字经济的浪潮中&#xff0c;上海数据交易所一直扮演着引领者和推动者的角色。紧扣建设国家级…

CID引流电商:传统电商破局的新动力

摘要&#xff1a;CID引流电商为传统电商带来破局新机遇&#xff0c;通过跨平台引流、精准定位和高效转化&#xff0c;解决了流量获取难、成本高的问题&#xff0c;提升了销售业绩和市场竞争力。CID引流电商助力传统电商在激烈竞争中保持领先&#xff0c;推动行业持续发展。 随…

气象相关图表制作-字体图标、图片、折线的堆叠

开发工作中有个需要展示气温&#xff08;折线&#xff09;、天气&#xff08;图片&#xff09;、风羽&#xff08;字体图标&#xff09;的图表展示需求&#xff0c;之前用过highcharts的关于类似的chart&#xff0c;里面的风雨用的是自带的图片&#xff0c;但是现在要求风羽需要…

2024年Apache DolphinScheduler 社区开源之夏活动中选公示

各位社区伙伴们&#xff0c;经过严格的评审和筛选&#xff0c;我们非常高兴地向大家公布Apache DolphinScheduler 社区在本年度的开源之夏活动中&#xff0c;中选的学生和导师名单&#xff01; 序号项目名称中选学生导师1增加Raft注册插件胡世豪朱学通2k8s任务功能扩展戴明辰伏…

【原创工具】孔夫子旧书网店铺图书采集工具1.0

目录 1 概述2 演示效果2.1 图文2.2视频3 核心逻辑3.1 导出数据4 附件下载5 使用方式1 概述 爬取孔夫子旧书网的店铺图书信息(条码、书名、售价、定价),支持导出和调速(默认速度5条/s)、支持识别该店铺最新上架图书和总计图书数量,采集结果和官网排序一致,可以对比测试 2…

启动台出现agent app的解决方法~

启动台出现agent app的解决方法&#xff5e; 如果用了战网&#xff0c;Battle.net&#xff0c;在卸载后有一个agent app&#xff0c;启动台删除不掉&#xff0c;应用程序里面没有&#xff0c;怎么办呢&#xff1f; 解决方法&#xff1a;找到这个app所在位置&#xff0c;可以通…