中文关键词提取算法

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

中文关键词提取算法

如何提取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的基础上,在多部分图结构中对主题信息进行编码,并将关键词候选词和主题表示在一个图中,并利用它们之间的相互加强关系来提取关键词。
关键词识别算法,NLP,算法,人工智能

小结

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

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等四种花式变体的算法思想与开源实现文章来源地址https://www.toymoban.com/news/detail-717984.html

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

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

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

相关文章

  • 【评论内容关键词提取】多种主流提取算法与大模型测试

      做过舆情项目或文本内容情感分析的大家都知道,我们要从大量的文本内容中提取核心短语或者!最近我们的爬虫项目中正好遇到了这么一个需求,我们收集了大量的评论内容文本数据,需要从中分析提炼( 最好能够找带情感色彩来提炼更佳 ) 本次测试的

    2024年02月07日
    浏览(48)
  • 【自然语言处理】利用 TextRank 算法提取关键词

    TextRank 是一种基于 PageRank 的算法,常用于提取和文本摘要。在本文中,我将通过一个提取示例帮助您了解 TextRank 如何工作,并展示 Python 的实现。 使用 TextRank、NER 等进行提取 关于 PageRank 的文章有很多,我只简单介绍一下 PageRank。这将有助于我们稍后理

    2024年02月05日
    浏览(60)
  • 文本分析-使用jieba库实现TF-IDF算法提取关键词

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

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

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

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

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

    2024年02月10日
    浏览(52)
  • 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日
    浏览(51)
  • Python实现百度关键词提取URL,轻松搞定!

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

    2024年02月06日
    浏览(58)
  • 华为Could API人工智能系列——关键词抽取

    云原生时代,开发者们的编程方式、编程习惯都发生了天翻地覆的变化,大家逐渐地习惯在云端构建自己的应用。作为新一代的开发者们,如何更快速了解云,学习云,使用云,更便捷、更智能的开发代码,从而提升我们的开发效率,是当前最热门的话题之一,而Huawei Cloud

    2024年02月02日
    浏览(37)
  • Lua中文语言编程源码-第六节,更改lmathlib.c 数学库函数, 使Lua加载中文库关键词(与数学库相关)

    源码已经更新在CSDN的码库里: 在src文件夹下的lmathlib.c 数学库 函数,Standard mathematical library:表明这个C源文件实现了Lua的标准数学库(Standard mathematical library),即提供了与数学相关的API和功能实现。 增加中文版mathlib数学函数名列表,保留英文版mathlib数学函数名列表。 原

    2024年03月27日
    浏览(79)
  • 关键词组合工具-自动关键词挖掘组成关键词软件免费

    组合工具,今天给大家分享一款免费的挖掘工具。自动挖掘流量,过滤无效。自动组成,组成标题。以及自动采集文章。详细参考图片 不少的网站能在相关的搜索引擎呈现的话,组合工具普通都会被这个搜索引擎所收录,不然也

    2023年04月08日
    浏览(63)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包