TopicRank论文解读

简介: TopicRank是2013年的一种无监督关键词抽取算法,其还是一种基于图的关键词抽取算法,主要创新点在于会依赖文档的主题进行辅助辅助排序。候选关键词将以主题进行划分,被用作完整的词图节点。

TopicRank: Graph-Based Topic Ranking for Keyphrase Extraction


TopicRank简介


TopicRank是2013年的一种无监督关键词抽取算法,其还是一种基于图的关键词抽取算法,主要创新点在于会依赖文档的主题进行辅助辅助排序。候选关键词将以主题进行划分,被用作完整的词图节点。


相对于TextRank算法,我们算法的优势在于:1、对主题而不是单词进行排序,是一种更直接的方法,可以涵盖文档主要主题的关键短语集。为此,我们只需从每一个排名靠前的聚类中选择一个候选关键词。将候选关键字短语聚类到主题中也消除了冗余,同时强化了边缘。(这点非常重要,关键词排名的性能很大程度上取决于图的简洁性,以及它精确表示文档的语义能力)2、使用了一个完整的图能够好地捕捉主体之间的语义关系。


TopicRank思想


SingleRank是对文档中每一个词(通常是名词或者形容词),然后后面对所有的词进行组合,最终对组合后的词进行重要性排序。(组合计算的公式是对词中的每个字得分进行相加,这样就会导致有些其实是非关键词的词得分偏高), 在此基础上,作者提出的TopicRank是通过对单个和多个单词表达式进行排序(其实也就是直接且分出词,在构建词图,而不是将文档先划分成每个字,在构建字图,在组合成词)。


TopicRank实现


a67dbeecfcd24caba3c55e4e7f3de8c9.png


图1 TopicRank实现流程图


TopicRank实现的两大步骤:


1.对文档进行处理(句子分割、词性标记和序列标注)。

2.根据主题在文档中的重要性对主题进行排序,并通过为每个最重要的主题选择一个关键短语候选来提取关键短语。

关键词候选词通常是独立处理的,它们所代表的主题信息分散在整个图中。


图的构建方式,包含边的权重和图的点:


image.png


其中w i , j 代表的是关键词结点c i 和c j 之间在文档中的的距离(也称为偏移位置);pos(c i)代表的是关键词节点c i 的所有偏移位置。


15f7a34c25e642cba98009b109bcc117.png


图2 TopicRank抽取示例


TopicRank实现


实验数据集:Inspec、SemEval 2010、WikiNews(https://github.com/adrien-bougouin/WikinewsKeyphraseCorpus)、DEFT。

表1 四种数据集详情


48e0cbfe0b3c411a9b75ae959e97378f.png


TextRank是一个未加权的图,SingleRank是一个用词之间共出现次数加权的图。也就是是否考虑了窗口进入算法中。


算法实现参考:TopicRank源码实现


TopicRank总结


TopicRank针对SingleRank的不足提出了一种基于主题为背景的无监督关键字抽取算法。TopicRank算法先对候选词进行层次聚类,得出多个不同主题,然后将这些主题作为结点添加到完全图上。这个完全图代表了文档的主题呈现。使用PageRank算法对主体进行评分,然后通过每个排名靠前的主题中选择最具代表性的候选主题来提取关键短语。


优势:对于数量冗余的候选词进行聚类,抽取的关键词将覆盖文档的大多数主题。完全图的使用还捕捉了主体之间的关系,而无需任何手动定义的参数,比使用共现窗口连接的效果更佳。

目录
相关文章
|
消息中间件 安全 Java
【RabbitMQ高级篇】消息可靠性问题
【RabbitMQ高级篇】消息可靠性问题
310 0
|
存储 SQL JSON
Spark - 一文搞懂 parquet
parquet 文件常见于 Spark、Hive、Streamin、MapReduce 等大数据场景,通过列式存储和元数据存储的方式实现了高效的数据存储与检索,下面主要讲parquet 文件在 spark 场景下的存储,读取与使用中可能遇到的坑。......
2725 0
Spark - 一文搞懂 parquet
|
Java 开发者 Python
Python中的self是什么你知道嘛?
在Python类中规定,函数的第一个参数是实例对象本身,并且约定俗成,把其名字写为self。其作用相当于java中的this,表示当前类的对象,可以调用当前类中的属性和方法。
|
6月前
|
机器学习/深度学习 数据可视化 PyTorch
深入解析图神经网络注意力机制:数学原理与可视化实现
本文深入解析了图神经网络(GNNs)中自注意力机制的内部运作原理,通过可视化和数学推导揭示其工作机制。文章采用“位置-转移图”概念框架,并使用NumPy实现代码示例,逐步拆解自注意力层的计算过程。文中详细展示了从节点特征矩阵、邻接矩阵到生成注意力权重的具体步骤,并通过四个类(GAL1至GAL4)模拟了整个计算流程。最终,结合实际PyTorch Geometric库中的代码,对比分析了核心逻辑,为理解GNN自注意力机制提供了清晰的学习路径。
473 7
深入解析图神经网络注意力机制:数学原理与可视化实现
|
存储 数据管理 数据库
CRUD操作实战:从理论到代码实现的全面解析
【7月更文挑战第4天】在软件开发领域,CRUD代表了数据管理的四个基本操作:创建(Create)、读取(Read)、更新(Update)和删除(Delete)。这四个操作构成了大多数应用程序数据交互的核心。本文将深入讲解CRUD概念,并通过一个简单的代码示例,展示如何在实际项目中实现这些操作。我们将使用Python语言结合SQLite数据库来演示,因为它们的轻量级特性和易用性非常适合教学目的。
1196 2
|
10月前
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
519 7
|
11月前
|
机器学习/深度学习 人工智能 监控
深度学习之模型攻击(Model Attack)详解
模型攻击通常指在机器学习和人工智能领域中,故意设计的行为或方法,旨在操纵或欺骗机器学习模型的输出。这类攻击可能导致模型做出错误的决策或泄露敏感信息,对于安全性至关重要的应用(如金融服务、医疗和自动驾驶)尤其具有破坏性。
493 3
|
自然语言处理
怎样能写出完美的Prompt
【8月更文挑战第20天】怎样能写出完美的Prompt
|
机器学习/深度学习 自然语言处理 算法
什么是自然语言处理的语义理解?
【4月更文挑战第8天】
428 2
什么是自然语言处理的语义理解?
|
JavaScript 数据安全/隐私保护 开发者
导航守卫有哪三种?分别有什么作用
导航守卫有哪三种?分别有什么作用
239 0