中文关键词提取算法

news2024/11/29 4:39:47

中文关键词提取算法

如何提取query或者文档的关键词?

一般有两种解决思路:

  1. 有监督方法,把关键词提取问题当做分类问题,文本分词后标记各词的重要性打分,然后挑出重要的topK个词;
  2. 无监督方法,使用TextRank、TFIDF等统计算法区分各词的term weight,然后按weight排序后挑出重要的topK个词。

有监督方法

有监督的关键词提取分两种做法。

特征工程方法

用一个树模型(如Xgboost)做分类模型,提取句子分词后各词的文本特征、统计特征、语言模型特征等,再把特征喂给分类模型,模型区分出各词的重要性得分,这样挑出topK个词就是提取的结果;分类模型的训练集是事先人工标注过的,每个词一个label。

特征工程可以参考:https://github.com/shibing624/pke_zh

  • 文本特征:包括Query长度、Term长度,Term在Query中的偏移量,term词性、长度信息、term数目、位置信息、句法依存tag、是否数字、是否英文、是否停用词、是否专名实体、是否重要行业词、embedding模长、删词差异度、以及短语生成树得到term权重等
  • 统计特征:包括PMI、IDF、TextRank值、前后词互信息、左右邻熵、独立检索占比(term单独作为query的qv/所有包含term的query的qv和)、统计概率、idf变种iqf
  • 语言模型特征:整个query的语言模型概率 / 去掉该Term后的Query的语言模型概率

训练样本形如:

邪御天娇 免费 阅读,3 1 1

重要度label共分4级:

  • Super important:3级,主要包括POI核心词,比如“方特、欢乐谷”
  • Required:2级,包括行政区词、品类词等,比如“北京 温泉”中“北京”和“温泉”都很重要
  • Important:1级,包括品类词、门票等,比如“顺景 温泉”中“温泉”相对没有那么重要,用户搜“顺景”大部分都是温泉的需求
  • Unimportant:0级,包括语气词、代词、泛需求词、停用词等

深度学习方法

比较朴素的思路是直接用深度模型做分类任务,取代人工提取特征,模型端到端产出分类预测label。
此处的深度模型可以是TextCNN、Fasttext、Transformer等,也可以是BERT预训练模型,适用于分类任务的模型都行。分类任务可以参考:https://github.com/shibing624/pytextclassifier

还有一种方法是Seq2Seq生成模型,基于query生成式给出关键词结果,或者生成句子摘要,代表性的模型有T5、Bart、Seq2Seq等。生成任务可以参考:https://github.com/shibing624/textgen

以上方法的实现可以参考我写的开源项目,此处不再赘述,本文重点介绍无监督方法。

无监督方法

无监督的关键词提取算法有:

  • 统计方法
  • TFIDF
  • YAKE
  • 图方法
  • TextRank
  • SingleRank
  • TopicRank
  • MultipartiteRank
  • PositionRank
  • 语义模型
  • KeyBert

经验来看,TFIDF是很强的baseline,有较强普适性,基本能应付大部分关键词抽取场景,简单有效,速度很快。TextRank虽然算法复杂些,但其应用效果不比TFIDF强,而且涉及网络构建和随机游走迭代,效率极低。

TFIDF

TF-IDF是一种很简单但却很有效的方法,计算文本中的每个term会考虑两个因素。一是term本身在文档中的词频TF,另一个是倒文本频率(Inverse Document Frequency)IDF,这个指标衡量的是有多少文本包含了该term。IDF主要用来惩罚那些在很多文本中都有出现的term,往往这些term都是一些无关紧要的停用词等。

TFIDF整个核心思想就是,term在一个文档的重要程度取决于该term在该文档的频率和在其它文档的出现的次数。意思是term在该文档出现了多次,而在其他文档不常出现,那么该term很能代表该文档的含义。这种思想也是TFIDF经常用来做文本分类任务的特征提取的原因。

小结

  • 优点:能够识别出独特性强的词语
  • 缺点:不能识别复杂的词语关系,并且有时候会识别出不相关的关键词。效率较高,因为算法简单且只需要计算词频和逆文档频率。

YAKE

paper:A Text Feature Based Automatic Keyword Extraction Method for Single Documents

YAKE(Yet Another Keyword Extractor)是一种无监督的关键词提取算法,基于词语分散性的关键词提取算法。特征提取主要考虑五个因素(去除停用词后):

  1. 是否大写:英文大写字母的term(除了每句话的开头单词)的重要程度比那些小写字母的term重要程度要大
  2. 词的位置:文本越开头的部分句子的重要程度比后面的句子重要程度要大
  3. 词频:一个词在文本中出现的频率越大,相对来说越重要,同时为了避免长文本词频过高的问题,会进行归一化操作
  4. 上下文关系:一个词与越多不相同的词共现,该词的重要程度越低
  5. 词在句中频率:一个词在越多句子中出现,相对更重要
    中文只用后4个指标来计算候选词的得分,从而筛选TopK关键词。

小结

  • 优点:效率高,不需要考虑语义关系和词语位置,因此适用于大量文档的关键词提取
  • 缺点:语义关系和词语位置的考虑不足,因此可能会提取到不够重要的关键词

TextRank

PageRank算法

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

PageRank算法的核心思想如下:

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

TextRank算法
paper:TextRank: Bringing Order into Texts

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

TextRank算法的基本思想是将文档看作一个词的网络,该网络中的链接表示词与词之间的语义关系。

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

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

  2. 关键短语抽取(keyphrase extration)
    关键词抽取结束后,我们可以得到的N个关键词,在原始文本中相邻的关键词构成关键短语,然后分析关键词是否存在相邻的情况,最后确定哪些是关键短语。

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

小结

  • 优点:能够识别出复杂的词语关系
  • 缺点:复杂度较高,需要调整许多参数,而且可能误识别关键词。效率一般,因为需要建立关系图并进行多次遍历。

SingleRank

paper:CollabRank: Towards a Collaborative Approach to Single-Document Keyphrase Extraction

SingleRank是PageRank的变体,主要有两个变化:

  1. 不同于PageRank,每个边都有相同的分值,SingleRank会根据窗口大小词之间的距离计算不同的边权重
  2. 与TextRank不同的是,SingleRank保留所有的unigrams词,然后类似TextRank方法,滑动窗口方式计算更高的n-grams词,背后的原理是,两个分值较低的unigram,有可能产生较高分值的bi-gram。

小结

  • 优点:实现简单
  • 缺点:词频不能反映词的重要性,可能识别出不相关的关键词。效率较高

TopicRank

paper:TopicRank: Graph-Based Topic Ranking for Keyphrase Extraction

TopicRank把主题当做相似关键短语的簇,这些topics会根据在文档的重要性进行排序,然后选取topK个最相关的topics,每个topic选择一个最重要的关键短语来代表文档的核心关键词。

TopicRank算法的步骤如下:

  1. 主题识别:主要抽取名词短语来表征文档的主题,短语中有超过25%重合的单词就考虑为相似短语,用 Hierarchical Agglomerative Clustering (HAC) algorithm进行了聚类相似的短语。
  2. 图构建:这里的图中的节点是topics,边的权重,根据两个topics之间的语义关系进行分配,而语义关系的强弱根据两个主题的关键短语之间的距离公式。
  3. 关键短语选择:一旦topic进行排序后,选择topK个topics,每个topic选择一个最重要的关键短语作为输出,所有topics总共产生topK个关键短语。有三个策略选择一个topic最适合的关键短语:1) 选择关键短语中最开始出现在文档的那个关键短语;2) 选择频率最高的那个关键短语;3) 选择聚焦的群簇中心的那个关键短语。

小结

  • 优点:可以考虑文档中词语的语义关系,因此可以更好地提取出与文档主题相关的关键词
  • 缺点:效率不高,因为需要进行大量的计算以建立主题模型

MultipartiteRank

paper:Unsupervised Keyphrase Extraction with Multipartite Graphs

MultipartiteRank是一种基于多元关系的关键词提取算法。在TopicRank的基础上,在多部分图结构中对主题信息进行编码,并将关键词候选词和主题表示在一个图中,并利用它们之间的相互加强关系来提取关键词。
在这里插入图片描述

小结

  • 优点:可以考虑多种关系,如语义关系和词语位置,从而更好地提取关键词
  • 缺点:需要大量的计算,因此效率不高

PositionRank

paper:PositionRank: An Unsupervised Approach to Keyphrase Extraction from Scholarly Documents

PositionRank也是一种基于图结构的算法,与TextRank类似,是基于PageRank的图关系计算词的得分,根据词的位置和词频来计算每个词的权重值。算法主要两个部分组成:

  1. 图的构建:类似TextRank,根据POS选择关键词构建图的节点,节点的边根据窗口size共现次数来计算两个词的边的权重分值。
  2. Position-Biased PageRank,会根据每个词位置的倒数计算权重,若一个词出现在文档多个位置,则分值相加。核心思想是:越在一个文档靠前的位置,权重越大,同时频率出现越高,权重也越大。假设一个词在文档的位置时第2,第5,第10,则权重分值为:1/2+1/5+1/10=0.8,再归一化。

该方法在迭代计算词权重的过程中融入了位置信息,融入方式有两种,一种是融入了该词出现的所有位置,另外一种是融入了该词出现的第一个位置。第一种融入方式效果好些。

实验结果:PositionRank优于目前一些主流的图方法和统计方法。

小结

  • 优点:可以考虑文档中词语的位置,因此可以更好地提取出文档中重要的关键词
  • 缺点:效率不高,因为需要考虑多个文档和词语的位置。

KeyBERT

paper:Keyword Extraction with BERT

是一种基于 Transformer 模型的关键词提取算法,利用了预训练的语言模型的能力来提取关键词。使用BERT的embedding表示层和简单余弦相似性来查找文档中与文档本身最相似的子短语。做法是:

  1. 使用Sentence-BERT计算文档的embedding表示;
  2. 对文档中的Ngram短语计算其embedding表示;
  3. 使用余弦相似度来查找与文档最相似的单词/短语;
  4. 最相似的topK个单词可以被识别为最能描述整个文档的单词,即关键短语。

实验结果:准确率最高,速度最慢。

小结

  • 优点:可以考虑多种语言特征,如语义关系和词语位置,因此效果较好
  • 缺点:效率较低,因为需要大量的计算以生成关键词

Reference

关键词提取(keyword extraction)技术
https://github.com/MaartenGr/KeyBERT
PositionRank等四种花式变体的算法思想与开源实现

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

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

相关文章

likeshop单商户SaaS版V1.8.2说明!

likeshop单商户SaaS版V1.8.2主要更新如下: 新增 前端登录引导用户填写头像昵称 PC端—注册页面显示服务协议和隐私政策 PC端—首次进入商城弹出协议提示 PC端—结算页新增门店自提的配送方式 后台—PC端菜单导航栏的跳转链接支持添加自定义链接 ​​ ​​ ​ 优…

2022年“网络安全”赛项宜昌市选拔赛 任务书

2022年“网络安全”赛项宜昌市选拔赛 任务书 任务书 一、竞赛时间 共计3小时。 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段单兵模式系统渗透测试 任务一 数据库服务渗透测试 任务二 Wireshark数据包分析 任务三 Windows操作系统渗透测试 任务四 系统漏…

腾讯云企业网盘正式入驻数字工具箱

腾讯技术公益继腾讯电子签等入驻后,上线近半年的腾讯技术公益数字工具箱再次迎来新成员——腾讯云企业网盘,现已正式接受公益机构申请公益权益。腾讯云企业网盘(https://pan.tencent.com)是由腾讯云推出的一款安全、高效、开放的企…

python+flask开发mock服务

目录 什么是mock? 什么时候需要用到mock? 如何实现? pythonflask自定义mock服务的步骤 一、环境搭建 1、安装flask插件 2、验证插件 二、mock案例 1、模拟 返回结果 2、模拟 异常响应状态码 3、模拟登录,从jmeter中获取…

Kafka 消费者

与生产者对应的是消费者,应用程序可以通过 KafkaConsumer 来订阅主题,并从订阅主题中拉取消息。 消息者与消费组 消费者(Consumer)负责订阅 Kafka 中的主题(Topic),并且从订阅的主题上拉取消息…

低代码开发平台|制造管理-生产过程管理搭建指南

1、简介1.1、案例简介本文将介绍,如何搭建制造管理-生产过程。1.2、应用场景先填充工序信息,再设置工艺路线对应的工序;工序信息及工艺路线列表报表展示的是所有工序、工艺路线信息,可进行新增对应数据的操作。2、设置方法2.1、表…

女生做大数据有发展前景吗?

当前大数据发展前景非常不错,且大数据领域对于人才类型的需求比较多元化,女生学习大数据也会有比较多的工作机会。大数据是一个交叉学科涉及到的知识量比较大学习有一定的难度,女生比较适合大数据采集和大数据分析方向的工作岗位。 大数据采…

【沁恒WCH CH32V307V-R1与Arduino的串口通讯】

【沁恒WCH CH32V307V-R1的单线半双工模式串口通讯】1. 前言2. 软件配置2.1 安装MounRiver Studio3. UASRT项目测试3.1 打开UASRT工程3.2 CH307串口发送数据到Arduino实验3.3 CH307串口接收数据Arduino实验5. 小结1. 前言 本例演示了采用CH307串口3与Arduino软串口收发通信&…

Python的深、浅拷贝到底是怎么回事?一篇解决问题

嗨害大家好鸭!我是小熊猫~ 一、赋值 Python中, 对象的赋值都是进行对象引用(内存地址)传递, 赋值(), 就是创建了对象的一个新的引用, 修改其中任意一个变量都会影响到另一个 will …

第七届蓝桥杯省赛——5分小组

题目:9名运动员参加比赛,需要分3组进行预赛。有哪些分组的方案呢?我们标记运动员为 A,B,C,... I下面的程序列出了所有的分组方法。该程序的正常输出为:ABC DEF GHIABC DEG FHIABC DEH FGIABC DEI FGHABC DFG EHIABC DFH EGIABC DF…

VFIO软件依赖——VFIO协议

文章目录背景PCI设备模拟PCI设备抽象VFIO协议实验Q&A背景 在虚拟化应用场景中,虚拟机想要在访问PCI设备时达到IO性能最优,最直接的方法就是将物理设备暴露给虚拟机,虚拟机对设备的访问不经过任何中间层的转换,没有虚拟化的损…

2023年小鹏新能源汽车核心部件解密

小鹏主要硬件清单(G9车型) 感知层 从硬件上看,G9搭载两颗NVIDIA DRIVE Orin 智能辅助驾驶芯片,算力达到 508 TOPS。此外,全车周边31 个感知元器件,(800万双目、4个300万侧前侧后、4个130万环视、1个170万后视、1个100万DMS)、12个超声波雷达、5个毫米波雷达、2个速…

TeamFiltration:一款针对O365 AAD账号安全的测试框架

关于TeamFiltration TeamFiltration是一款针对O365 AAD账号安全的跨平台安全测试框架,在该工具的帮助下,广大研究人员可以轻松对O365 AAD账号进行枚举、喷射、过滤和后门植入等操作。TeamFiltering与CrackMapExec非常相似,它可以创建并维护一…

四大垃圾回收算法七大垃圾回收器

JVM的运行时内存也叫做JVM堆,从GC的角度可以将JVM分为新生代、老年代和永久代。其中新生代默认占1/3堆内存空间,老年代默认占2/3堆内存空间,永久代占非常少的对内存空间。新生代又分为Eden区、SurvivorFrom区和SurvivorTo区, Eden…

Python基础知识复习以及第三方库openxel的初步使用

目录文件python文件打开函数Python中的split函数详细解释List对象list添加元素的三种方法删除元素反转Python第三方库openxel的初步使用excel文件对象open操作excel入门文件 python文件打开函数 语法:open(file, mode ‘r’, buffering-1, encodingNon…

【高性价比】初学者入门吉他值得推荐购买的民谣单板吉他品牌—VEAZEN费森吉他

“在未知的世界里,我们是一群不疲不倦的行者,执念于真善美,热衷于事物的极致。我们抽丝剥茧,不断地打败自己,超越自己,我们无所畏惧终将成为巨人。”这是VEAZEN吉他官网首页上很明显的一段话,也…

Learning C++ No.9【STL No.1】

引言: 北京时间:2023/2/13/18:29,开学正式上课第一天,直接上午一节思想政治,下午一节思想政治,生怕我们……,但,我深知该课的无聊,所以充分利用时间,把我的小…

MongoDB 索引

MongoDB 索引 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须全集合扫描选取符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟&#x…

2023年城投债投资研究报告

第一章 概况 城投债又称“准市政债”,是地方投融资平台作为发行主体,公开发行企业债和中期票据,其主业多为地方基础设施建设或公益性项目。从承销商到投资者,参与债券发行环节的人,都将其视为是当地政府发债。伴随“打…

高压放大器在超声导波钢轨传播中的应用

实验名称:高压放大器在超声导波钢轨传播中的应用研究方向:无损检测测试目的:超声导波具有传播距离远、检测距离长的特点,在钢轨无损检测领域受到越来越多的关注。本文使用有限元仿真方法和现场实验方法,对钢轨各模态超…