textrank提取关键词与关键句

最近在用pg进行全文检索,如果检索全文则速度会慢,考虑可以检索关键句以提高速度。测试了一下textrank提取关键句,目前的思想是用全文提取关键词和关键句提取关键词进行比较,以评估关键句的提取。(提取关键词的方法现在用的是自己构建的领域词表(带权重)与文本tfidf分析出的词分数相结合,效果还可以,还没有想出更好的提关键词的方法)

测试了一下textrank,以下记录了textrank的原理:

一:PageRank简介
TextRank算法是由网页重要性排序算法PageRank算法迁移而来,PageRank最开始用来计算网页的重要性。整个www可以看作一张有向图图,节点是网页。如果网页A存在到网页B的链接,那么有一条从网页A指向网页B的有向边。
PageRank的计算公式:
在这里插入图片描述
P R i 是 网 页 i 的 中 重 要 性 ( P R 值 ) PRi是网页i的中重要性(PR值) PRiiPR
d 是 阻 尼 系 数 , 一 般 设 置 为 0.85 d是阻尼系数,一般设置为0.85 d0.85
B i 是 存 在 指 向 网 页 i 的 链 接 的 网 页 集 合 Bi是存在指向网页i的链接的网页集合 Bii
L j 是 网 页 j 中 的 链 接 存 在 的 链 接 指 向 的 网 页 的 集 合 ( 也 就 是 说 网 页 j 中 指 出 去 的 链 接 网 页 集 合 ) 。 ∣ O u t ( V j ) ∣ 是 集 合 中 元 素 的 个 数 。 Lj是网页j中的链接存在的链接指向的网页的集合(也就是说网页j中指出去的链接网页集合)。|Out(Vj)|是集合中元素的个数。 LjjjOut(Vj)
PageRank需要使用上面的公式多次迭代才能得到结果。初始时,可以设置每个网页的重要性为1。上面公式等号左边计算的结果是迭代后网页i的PR值,等号右边用到的PR值全是迭代前的。
一句话形象描述上图公式:所有指向网页i的网页j,网页j的重要性除以网页j向外指出链接的个数(由于网页j最多只能有一个链接指向网页i)的值的累积和作为网页i的重要性。

以上讲的是PageRank算法的简单模型,但是简单模型并不适用于只链出自己的网页或几个网页的链出形成一个循环的情况,所以考虑更具普遍性的PageRank算法模型——随机浏览模型。

随机浏览模型的假设是这样的:假定一个网页浏览者从一个随机页面开始浏览,浏览者不断点击当前网页的链接开始下一次浏览。但是,浏览者会逐渐厌倦并开始随机浏览网页。随机浏览的方式更符合用户的真实浏览行为,避免了上述情况的发生,由此产生了随机浏览模型,随机浏览模型中每个网页的PR值通过以下公式计算:
在这里插入图片描述
N 是 网 络 中 网 页 的 总 数 N是网络中网页的总数 N
1 − d 是 浏 览 者 随 机 跳 转 到 一 个 新 网 页 的 概 率 1-d是浏览者随机跳转到一个新网页的概率 1d

一个网页的PR值是由其他网页的PR值计算得到的。由于PR=A*PR(A为概率转移矩阵)满足马尔科夫链的性质,那么通过迭代可以得到所有网页的PR值。经过重复计算,这些网页的PR值会趋于正常和稳定。

随着研究的深入,目前PageRank算法被广泛应用于众多方面,例如学术论文的重要性排名、学术论文作者的重要性排序、网络爬虫、关键词与关键句的抽取等。

二、从PageRank算法到TextRank算法

TextRank算法是由PageRank算法改进而来的,二者的思想有相同之处,区别在于:PageRank算法根据网页之间的链接关系构造网络,而TextRank算法根据词之间的共现关系构造网络;PageRank算法构造的网络中的边是有向无权边,而TextRank算法构造的网络中的边是无向有权边。TextRank算法的核心公式如下,其中 w j i wji wji用于表示两个节点之间的边连接具有不同的重要程度:
在这里插入图片描述
提取关键词:

为了便于理解,给出使用TextRank算法提取关键词关键词组的具体步骤如下:

1)将给定的文本按照整句进行分割,即 T = [ S 1 , S 2 , . . . , S m ] T=[S_{1},S_{2},...,S_{m}] T=[S1,S2,...,Sm]

2)对于每个句子 S i ϵ T Si\epsilon T SiϵT,对其进行分词和词性标注,然后剔除停用词,只保留指定词性的词,如名词、动词、形容词等,即 S i = [ t i , 1 , t i , 2 , . . . , t i , n ] Si=[t_{i,1},t_{i,2},...,t_{i,n}] Si=[ti,1,ti,2,...,ti,n],其中 t i , j t_{i,j} ti,j为句子i中保留下的词;

3)构建词图 G = ( V , E ) G=(V,E) G=(V,E),其中V为节点集合,由以上步骤生成的词组成,然后采用共现关系构造任意两个节点之间的边:两个节点之间存在边仅当它们对应的词在长度为K的窗口中共现,K表示窗口大小,即最多共现K个单词,一般K取2;

4)根据上面的公式,迭代计算各节点的权重,直至收敛;

5)对节点的权重进行倒序排序,从中得到最重要的t个单词,作为top-t关键词;

6)对于得到的top-t关键词,在原始文本中进行标记,若它们之间形成了相邻词组,则作为关键词组提取出来。

提取关键句

从给定文本中提取关键句时,将文本中的每个句子分别看作一个节点,如果两个句子有相似性,则认为这两个句子对应的节点之间存在一条无向有权边,衡量句子之间相似性的公式如下:
在这里插入图片描述
S i 、 S j S_{i}、S_{j} SiSj:两个句子

w k w_{k} wk:句子中的词

分子部分的意思是同时出现在两个句子中的同一个词的数量,分母是对句子中词的个数求对数后求和,这样设计可以遏制较长的句子在相似度计算上的优势。

根据以上相似度计算公式循环计算任意两个节点之间的相似度,设置阈值去掉两个节点之间相似度较低的边连接,构建出节点连接图,然后迭代计算每个节点的TextRank值,排序后选出TextRank值最高的几个节点对应的句子作为关键句。

textrank用法举例:

textrank4zh地址
参考:https://www.letianbiji.com/machine-learning/text-rank.html

# -*- encoding:utf-8 -*-import codecs
from textrank4zh import TextRank4Keyword, TextRank4Sentencetext = codecs.open('./text/01.txt', 'r', 'utf-8').read()
tr4w = TextRank4Keyword(stop_words_file='./stopword.data')  # 导入停止词# 使用词性过滤,文本小写,窗口为2
tr4w.train(text=text, speech_tag_filter=True, lower=True, window=2)  print('关键词:')
# 20个关键词且每个的长度最小为1
print('/'.join(tr4w.get_keywords(20, word_min_len=1)) ) print('关键短语:')
# 20个关键词去构造短语,短语在原文本中出现次数最少为2
print('/'.join(tr4w.get_keyphrases(keywords_num=20, min_occur_num= 2)))  tr4s = TextRank4Sentence(stop_words_file='./stopword.data')# 使用词性过滤,文本小写,使用words_all_filters生成句子之间的相似性
tr4s.train(text=text, speech_tag_filter=True, lower=True, source = 'all_filters')print('摘要:')
print('\n'.join(tr4s.get_key_sentences(num=3))) # 重要性最高的三个句子

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

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

相关文章

中文文本中的关键字提取

关键词提取就是从文本里面把跟这篇文章意义最相关的一些词语抽取出来。这个可以追溯到文献检索初期,关键词是为了文献标引工作,从报告、论文中选取出来用以表示全文主题内容信息的单词或术语,在现在的报告和论文中,我们依然可以看…

关键词提取-TFIDF(一)

系列文章 ✓ 词向量 ✗Adam,sgd ✗ 梯度消失和梯度爆炸 ✗初始化的方法 ✗ 过拟合&欠拟合 ✗ 评价&损失函数的说明 ✗ 深度学习模型及常用任务说明 ✗ RNN的时间复杂度 ✗ neo4j图数据库 分词、词向量 TfidfVectorizer 基本介绍 TF-IDF是一种统计方法,用…

hanlp关键词提取算法TextRank

欢迎关注鄙人公众号,技术干货随时看! 技术交流qq群: 659201069 鄙人的新书《elasticsearch7完全开发指南》,欢迎订阅! https://wenku.baidu.com/view/8ff2ce94591b6bd97f192279168884868762b8e7 《kibana权威指南…

Jieba进行词频统计与关键词提取

文章目录 1 词频统计1.1 简单词频统计1.2 加入停用词 2 关键词提取2.1 关键词提取原理2.2 关键词提取代码 1 词频统计 1.1 简单词频统计 导入jieba库并定义文本 import jieba text "Python是一种高级编程语言,广泛应用于人工智能、数据分析、Web开发等领域…

关键词提取(keyword extraction)技术

目录 1 统计方法(Statistical Method)1.1 TF1.2 TFIDF1.3 YAKE 2 图方法(Graph Based Approaches)2.1 PageRank2.2 TextRank2.2 SingleRank2.3 TopicRank2.4 PositionRank 3 语义模型(Semantic Models) 1 统…

TextRank关键词提取算法

参考:百度AI Studio课程_学习成就梦想,AI遇见未来_AI课程 - 百度AI Studio - 人工智能学习与实训社区 (baidu.com) 1.关键词提取算法分类 1.有监督 将关键词提取问题转换成二分类问题,判断每个候选关键词是否为关键词该类算法,需…

全网最详细中英文ChatGPT-GPT-4示例文档-从0到1快速入门关键词提取应用——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门关键词提取应用场景 Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例 其它资料下载 ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字&a…

马斯克的Starship,除了“大”还有什么呢?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 种种迹象表明,由ChatGPT引发的算力军备竞赛已经悄然而至了。 终于,到了检验人类最大火箭发射的时候了。 2023年4月17日,SpaceX将其大型深空火箭Starship发射升空,发射地点为Sp…

细思极恐!GPT-4太强,发明者们也不懂!智能到底是怎么突然「涌现」的?

本文来源 新智元 编辑:LRS 【新智元导读】不可解释的智能,未来该如何发展? 2023年至今,ChatGPT和GPT-4始终霸占在热搜榜上,一方面外行人都在惊叹于AI怎么突然如此强大,会不会革了「打工人」的命&#xf…

ChatGPT真的像说的那么神,什么都能做吗?

神到不至于,但确实给我的工作生活带来不少便利! 我用的是LintCode刷题网里面自带的这个ChatGPT,不花钱就能直接用! 像用它来解决不会的LeetCode题,动动手指解析秒出,对于我这种经常刷题的人来说就比较方便…

textarea输入换行字符提交给后台后,前台获取数据没有换行

解决方案&#xff1a; 需要提交数据库之前把textarea中的换行字符转换为<br>存储到数据库。 当读取的时候在把<br> 替换成textarea的换行符\n就好了 注意&#xff1a;使用replace 方法的时候需要用正则表达式&#xff0c;否则只能替换第一个换行 例如&#xff…

input按回车换行

需求描述&#xff1a;页面是table里面嵌入input,用户要求按回车去下一个input 之前由于用到elementUI的,用于改变许多类型&#xff0c;之后就自己用原生的input去实现 具体代码&#xff1a; <inputtype"number":ref"ipt index":class"ipt index…

enter无法换行

第一种方法&#xff1a;按住window Insert第二种方法&#xff1a;按住Fn Insert

Notepad++显示所有字符:空格换行

因项目需要&#xff0c;写了一个脚本&#xff0c;在windows下&#xff0c;可以正常运行。Push到设备后&#xff0c;报错。 经过Debug, 发现将脚本中的CRLF&#xff0c;改为LF, OK notepad 显示全字符&#xff0c;设置方法&#xff1a; 英文版&#xff1a;View -> Show Sy…

天猫精灵,还缺点啥?

我也是99买的天猫精灵&#xff0c;马大侠在下一盘大棋。也用了京东的叮咚&#xff08;感觉应该是合作开发而已&#xff0c;纯是为了应景&#xff0c;你有我有全都有而已&#xff09;&#xff0c;体验感不行&#xff0c;而且居然这个青春版还不能语音控制了&#xff0c;只能手机…

天猫精灵打开电脑 语音控制电脑

“天猫精灵” “哎&#xff0c;我在&#xff01;” “打开电脑” 上了一天班&#xff0c;回到家就想静静的玩会游戏&#xff0c;吼一句天猫精灵&#xff0c;立马帮你开机&#xff0c;多么舒服装x的体验。然而现实是骨感的&#xff0c;精灵无此功能&#xff0c;网上有人让弄个智…

亲测超好用的一款流程图制作软件(内含制图技巧分享)

什么是流程图&#xff1f;流程图是思维导图的一种图形模式&#xff0c;通过固定的流程和图形组合而成&#xff0c;通常应用于IT业、建筑业、数字统计行业中。因为思维导图慢慢热门起来&#xff0c;所以其他领域也都开始慢慢学习这款思维工具&#xff0c;并通过思维导图工具整理…

7款流程图制作软件大盘点!轻松绘制流程图

流程图可能是我们使用最广泛的一种图形图表&#xff0c;几乎在各个领域都会用到&#xff0c;诸如系统流程图、产品流程图、数据流程图……借助流程图&#xff0c;我们可以将事物的结构、任务的进程、甚至是算法的思路都有效视觉化。 流程图的广泛应用&#xff0c;也直接催生出…

如何做流程图?这几个实用的制作流程图方法分享给你

说到流程图的制作&#xff0c;相信大家都并不陌生&#xff0c;在日常的工作和学习中&#xff0c;我们都会根据需求接触到各种各样的流程图&#xff0c;有时还要自己动手绘制流程图并使用&#xff0c;但你是否会因为不会绘制流程图而感到苦恼呢&#xff1f;没关系&#xff0c;今…

ChatGPT一分钟做流程图

ChatGPT一分钟做流程图它能不能帮我们制作流程图呢&#xff1f;必须是可以的&#xff0c;今天我们再来介绍一个如何用ChatGPT快速制作流程图的方法。 下面以PowerBI分析流程为例&#xff0c;先向ChatGPT进行提问&#xff1a; 你是一个高级数据分析师&#xff0c;熟悉数据分析…