关键词提取 | 基于Textrank算法的两种关键词提取

这篇具有很好参考价值的文章主要介绍了关键词提取 | 基于Textrank算法的两种关键词提取。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、PageRank算法

二、TextRank算法

1. 关键词抽取(keyword extraction)

2. 关键短语抽取(keyphrase extration)

3. 关键句抽取(sentence extraction)

三、TextRank算法实现

1. 基于Textrank4zh的TextRank算法实现

2. 基于jieba的TextRank算法实现

3. 基于SnowNLP的TextRank算法实现

四、PageRank算法与TextRank算法的区别


TextRank 算法是一种基于谷歌的 PageRank 算法的用于文本的基于图的排序算法,通过把文本分割成若干组成单元(单词、句子)并建立图模型,利用投票机制对文本中的重要成分进行排序,常用于关键词提取和文本摘要。和 LDA、HMM 等模型不同, TextRank 不需要事先对多篇文档进行学习训练, 因其简洁有效而得到广泛应用

我们知道,关键词是能够表达文档中心内容的词语,常用于计算机系统标引论文内容特征、信息检索、系统汇集以供读者检阅。关键词提取是文本挖掘领域的一个分支,是文本检索、文档比较、摘要生成、文档分类和聚类等文本挖掘研究的基础性工作。


一、PageRank算法

PageRank 算法通过计算网页链接的数量和质量来粗略估计网页的重要性,算法创立之初即应用在谷歌的搜索引擎中,对网页进行排名。 PageRank 算法的核心思想如下:

  • 链接数量:如果一个网页被越多的其他网页链接,说明这个网页越重要,即该网页的PR值(PageRank值)会相对较高;
  • 链接质量:如果一个网页被一个越高权值的网页链接,也能表明这个网页越重要,即一个PR值很高的网页链接到一个其他网页,那么被链接到的网页的PR值会相应地因此而提高。

我们知道,PageRank (PR) 是一种用于计算网页权重的算法。我们可以把所有的网页看成一个大的有向图。在此图中,节点是网页。如果网页 A 有指向网页 B 的链接,则它可以表示为从 A 到 B 的有向边。构建完整个图后,我们可以通过以下公式为网页分配权重

textrank,自然语言处理,自然语言处理,nlp,人工智能

其中,是网页的重要性(PR 值),是阻尼系数,一般为 0.85,是整个互联网中所存在的有指向网页的链接的网页集合,是网页中存在的指向所有外部网页的链接的集合,该集合中元素的个数。

textrank,自然语言处理,自然语言处理,nlp,人工智能

这是一个示例,可以更好地理解上面的符号。我们有一个图表来表示网页如何相互链接。每个节点代表一个网页,箭头代表边。我们想得到网页  的权重。

我们可以将上述函数中的求和部分重写为更简单的版本:

textrank,自然语言处理,自然语言处理,nlp,人工智能

我们可以通过下面的函数得到网页  的权重:

textrank,自然语言处理,自然语言处理,nlp,人工智能

我们可以看到网页  的权重取决于入站页面的权重。我们需要多次运行此迭代才能获得最终权重。初始化时,每个网页的重要性为 1


二、TextRank算法

TextRank 算法是一种基于图的用于关键词抽取和文档摘要的排序算法,由谷歌的网页重要性排序算法 PageRank 算法改进而来,它利用一篇文档内部的词语间的共现信息(语义)便可以抽取关键词,它能够从一个给定的文本中抽取出该文本的关键词、关键词组,并使用抽取式的自动文摘方法抽取出该文本的关键句。TextRank 算法的基本思想是将文档看作一个词的网络,该网络中的链接表示词与词之间的语义关系

TextRank 算法计算公式:

textrank,自然语言处理,自然语言处理,nlp,人工智能

其中, 表示句子  的权重,右侧的求和表示每个相邻句子对本句子的贡前程度在单文档中,我们可以粗略的认为所有句子都是相邻的,无需像多文档一样进行多个窗的生成和抽取,仅需单一文档窗口即可, 表示两个句子的相似度  代表上次选代出的句子  的权重。 是阻尼系数,一般为0.85。

TextRank算法主要包括:关键词抽取、关键短语抽取、关键句抽取

1. 关键词抽取(keyword extraction)

关键词抽取是指从文本中确定一些能够描述文档含义的术语的过程。对关键词抽取而言,用于构建顶点集的文本单元可以是句子中的一个或多个字;根据这些字之间的关系(比如:在一个框中同时出现)构建边。根据任务的需要,可以使用语法过滤器(syntactic filters)对顶点集进行优化。语法过滤器的主要作用是将某一类或者某几类词性的字过滤出来作为顶点集。

2. 关键短语抽取(keyphrase extration)

关键词抽取结束后,我们可以得到的 N 个关键词,在原始文本中相邻的关键词构成关键短语。因此,从 get_keyphrases 函数的源码中我们可以看到,它先调用 get_keywords 抽取关键词,然后分析关键词是否存在相邻的情况,最后确定哪些是关键短语。

3. 关键句抽取(sentence extraction)

句子抽取任务主要针对的是自动摘要这个场景,将每一个 sentence 作为一个顶点,根据两个句子之间的内容重复程度来计算他们之间的“相似度”,以这个相似度作为联系,由于不同句子之间相似度大小不一致,在这个场景下构建的是以相似度大小作为 edge 权重的有权图。


三、TextRank算法实现

1. 基于Textrank4zh的TextRank算法实现

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@Project : 关键词提取
@File    : 基于Textrank4zh的TextRank算法实现.py
@IDE     : PyCharm
@Author  : 源于花海
@Date    : 2023/10/10 21:24
"""
from textrank4zh import TextRank4Keyword


def keywords_extraction(text):
    tr4w = TextRank4Keyword()
    tr4w.analyze(text, window=2, lower=True)
    keywords = tr4w.get_keywords(6, word_min_len=2)
    return keywords


if __name__ == "__main__":
    text = "自然语言处理是一门涉及计算机科学、人工智能和语言学等多个领域的交叉学科。"
    keywords = keywords_extraction(text)
    print(keywords)

2. 基于jieba的TextRank算法实现

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@Project : 关键词提取
@File    : 基于jieba的TextRank算法实现.py
@IDE     : PyCharm
@Author  : 源于花海
@Date    : 2023/10/10 22:12
"""
import jieba
from jieba.analyse import textrank

# 定义待处理文本
text = "自然语言处理是一门涉及计算机科学、人工智能和语言学等多个领域的交叉学科。"

# 使用jieba库的TextRank算法提取关键词
keywords = textrank(text, topK=3)

print("关键词提取结果:", keywords)

关键词提取结果:

分词结果: ['自然', '语言', '处理', '是', '一门', '涉及', '计算机', '科学', '、', '人工智能', '和', '语言学', '等', '多个', '领域', '的', '交叉', '学科', '。']
关键词提取结果: ['计算机科学', '语言学', '人工智能']

3. 基于SnowNLP的TextRank算法实现

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@Project : 关键词提取
@File    : 基于SnowNLP的TextRank算法实现.py
@IDE     : PyCharm
@Author  : 源于花海
@Date    : 2023/10/10 22:24
"""
from snownlp import SnowNLP
from snownlp import seg

# 定义待处理文本
text = "自然语言处理是一门涉及计算机科学、人工智能和语言学等多个领域的交叉学科。"

# 使用SnowNLP的分词功能对文本进行分词
words = SnowNLP(text).words

# 使用SnowNLP的TextRank算法提取关键词
keywords = SnowNLP(text).keywords(3)

print("分词结果:", words)
print("关键词提取结果:", keywords)

输出结果如下:

分词结果: ['自然', '语言', '处理', '是', '一门', '涉及', '计算机', '科学', '、', '人工智能', '和', '语言学', '等', '多个', '领域', '的', '交叉', '学科', '。']
关键词提取结果: ['语言', '处理', '自然']

可以看到,我们成功地使用 SnowNLP 的 TextRank 算法提取出了该文本中的关键词:语言、处理、自然文章来源地址https://www.toymoban.com/news/detail-850763.html


四、PageRank算法与TextRank算法的区别

  • PageRank 算法根据网页之间链接关系构造网络,TextRank 算法根据词之间共现关系构造网络;
  • PageRank 算法构造的网络中的边是有向无权边,TextRank 算法构造的网络中的边是无向有权边

到了这里,关于关键词提取 | 基于Textrank算法的两种关键词提取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 文本分析-使用jieba库实现TF-IDF算法提取关键词

    文本分析-使用jieba库实现TF-IDF算法提取关键词

    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+         TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率)是一种用于资讯检索与资

    2024年02月11日
    浏览(8)
  • 关键词的提取方法

    为了方便用户快速了解文章的中心主题,会抽取文章的一些中心词来表达文章的中心思想。抽取就是通过一定的方法抽取出能表达文章的中心主题的一系列方法。 的提取方法主要分为以下四类 (1)基于语义的方法 在词典的帮助下,通过词法与句法分析进行自动分

    2024年02月06日
    浏览(7)
  • NLP自然语言处理——关键词提取之 TF-IDF 算法(五分钟带你深刻领悟TF-IDF算法的精髓)

    NLP自然语言处理——关键词提取之 TF-IDF 算法(五分钟带你深刻领悟TF-IDF算法的精髓)

    🔥博客主页: 是dream 🚀 系列专栏: 深度学习环境搭建、环境配置问题解决、自然语言处理、语音信号处理、项目开发 💘 每日语录:要有最朴素的生活和最遥远🌏的梦想,即使明天天寒地冻,山高水远,路远马亡。 🎉 感谢大家点赞👍收藏⭐指证✍️         

    2024年02月04日
    浏览(7)
  • Python实现自动关键词提取

    Python实现自动关键词提取

    随着互联网的发展,越来越多的人喜欢在网络上阅读小说。本文将通过详细示例,向您介绍如何使用Python编写爬虫程序来获取网络小说,并利用自然语言处理技术实现自动文摘和提取功能。 1. 网络小说数据抓取 首先,请确保已安装必要依赖包(如requests、BeautifulSoup)

    2024年02月10日
    浏览(10)
  • Python实现百度关键词提取URL,轻松搞定!

    Python实现百度关键词提取URL,轻松搞定!

    随着互联网的发展,搜索引擎已成为人们获取信息的主要途径。百度搜索引擎作为国内最受欢迎的搜索引擎之一,对于网站SEO优化而言,排名靠前的和URL是至关重要的。本文将介绍如何使用Python实现百度提取URL,帮助网站优化者更好地了解自己的网站在百度搜索

    2024年02月06日
    浏览(6)
  • Excel:通过Lookup函数提取指定文本关键词

    Excel:通过Lookup函数提取指定文本关键词

    函数公式 :=LOOKUP(9^9,FIND($G 2 : 2: 2 : G 6 , C 2 ) , 6,C2), 6 , C 2 ) , G 2 : 2: 2 : G$6) 公式解释 : lookup第一参数为9^9:代表的是一个极大值的数据,查询位置里面最接近这一个值的数据; lookup第二参数用find函数代替,目的就是查询我们的在对应文本找那个的位置; lookup第三参数

    2024年02月11日
    浏览(5)
  • 【NLP模型】文本建模(2)TF-IDF关键词提取原理

    【NLP模型】文本建模(2)TF-IDF关键词提取原理

            tf-idf是个可以提取文章的模型;他是基于词频,以及词的权重综合因素考虑的词价值刻度模型。一般地开发NLP将包含三个层次单元:最大数据单元是语料库、语料库中有若干文章、文章中有若干词语。这样从词频上说,就有词在文章的频率,词在预料库的频率

    2024年02月08日
    浏览(10)
  • 基于Word2vec词聚类的关键词实现

    基于Word2vec词聚类的关键词实现

    基于Word2Vec的词聚类提取包括以下步骤: 整个流程的核心在于使用Word2Vec模型得到词向量,然后通过聚类算法将相似的词语归为一簇,最终提取每个簇的代表性词语作为。这种方法能够捕捉词语之间的语义关系,提高的表达力。 词向量的预处理 基于word2

    2024年01月18日
    浏览(7)
  • 双方案-基于Mysql 与 ElasticSearch实现关键词提示搜索与全文检索

    双方案-基于Mysql 与 ElasticSearch实现关键词提示搜索与全文检索

    就喜欢搞这种不需要怎么费劲的东西,只需要把思路阐述清楚,随笔性质的博文,顺手啊,几乎不用改定就可以当博文发布出去。 那么,这里的话我们要做的就是实现这个的一个搜索功能,这个前端我就不说了,实现起来起来其实还是容易的,就是费劲。我们主要关注

    2024年01月18日
    浏览(3)
  • 基于 Jieba 和 Word2vec 的关键词词库构建

    基于 Jieba 和 Word2vec 的关键词词库构建

    最近有空,把论文中用到的技术和大家分享一下(以组件化的形式),本文是第一篇,将讲述如何从大量的语料中获取诸多和构建词库或 xx 词库( 细分领域 )。举例以 购物网站的在线评论 作为语料库,对其进行分词等操作,最终构建词库( 以物

    2024年02月16日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包