keyphrase抽取论文在聊什么?

点击下面卡片关注我呀,每天给你送来AI技术干货!

来自:丁香园大数据

今天跟大家聊一聊keyphrase extraction,keyphrase是对长文本凝聚出的一些关键短语或信息。最初keyphrase还只是抽取任务,根据文章抽取文章中的关键信息,随着深度学习发展keyphrase extraction也扩展到生成任务。在医学领域下有很多工作需要用到keyphrase抽取,例如用于用户画像的标签生成,医患对话中抽取关键信息,医学文献中挖掘摘要等等。本文将对一些主流的keyphrase extraction方法进行探索。

《Deep Keyphrase Generation》

这篇文章算是比较经典的,他们观察数据集发现,部分keyphrase不存在于原文中,就好比如果一篇文章提到Latent Dirichlet Allocation那这篇文章的keyphrase很可能包含topic modelingtext mining

使用RNN Encoder-Decoder model对keyphrase中的token序列进行预测,但是这么做存在OOV问题,因为数据集中的一些词是不存在于vocabulary中,而这些词很可能是keyphrase且存在于原文中,因此作者引入copyNet对原始词表进行扩充,缓解OOV问题,对这方面疑惑的移步Seq2seq框架下的文本生成[7]。

后面直接用beam search生成概率最大的top K phrase,最终数据上看确实比传统方案有所提升,但是也存在着两个问题:1. Beam search生成的关键词没有语义依赖性,导致生成数据可能存在冗余。2. Beam search数量是人为定义的,这就不能动态的根据文章调整关键词个数。

《One Size Does Not Fit All: Generating and Evaluating Variable Number of Keyphrases》

这篇论文将围绕提升keyphrase多样性,生成可变数量的keyphrase这两个问题开始入手。纵观当年keyphrase generation 大多都使用beam search的top作为结果,但是beam search生成keyphrase是固定个数的,这在与(不确定个数)ground truth dataset比较时会降低其精度。并且beam search在生成序列时不会保留语义,就导致生成语义重复的内容,导致冗余。

上图是one2seq流程图,通过<seq>对keyphrase 分割,输出一个新的字符串。训练样本会根据source text给定一个顺序(present [存在于原文中的内容]在前,absent[不存在于原文]在后)的方式连接。动态数量问题用结束符<\s>来决定,并且使用Semantic Coverage在生成keyphrase的过程中保留更多源数据的语义信息,这种方式可以让生成的keyphrase具备多样性。

《ONE2SET- Generating Diverse Keyphrases as a Set》

2021年在one2seq的基础上提出了one2set,将生成序列过程改为生成集合问题,因为其在实验中发现生成序列的顺序不同时,导致loss的损失也会很大。虽然one2seq定义了排序函数(present在前,absent在后),但是想让模型学到present和absent内部单独的排序还是很难的,排序的标注数据按照重要性给出,也可能是随意排序的,如果没有作者信息会很难把控。故作者使用忽视顺序问题只关注于生成关键词本身的方式来处理此类问题。

作者引入Control code 每个控制编码对应生成一个集合元素,理论上讲生成Control code将大于或等于真实数据集的关键词个数。

在实验过程中,我们会发现,因为预测的结果并不能和输入数据对应,因此cross-entropy loss是不可用的,所以作者用Hungarian algorithm 计算损失,对语义相同的内容或数量不足的预测结果使用∅进行补全,最后一对一的最优匹配计算loss。其中每个关键词与预测关键词匹配可以定义为关键词在预测分布中的概率之和。看上图我们可以发现,present和absent会分开考虑,这种方式可以让present部分的control code更倾向于 copy net从原文中获取,absent更倾向于归纳生成。并且其多样性的表现也比one2seq好一些。

《SIFRank: A New Baseline for Unsupervised Keyphrase Extraction Based on Pre-Trained Language Model》

提到了排序就要提一提SIFRank这个排序模型,传统的关键词抽取模型排序,主要是根据统计信息,语法信息,TFIDF,PMI等等。SIFRank通过引入预训练模型ELMo进行排序,首先词向量ELMo比TFIDF,TextRank相比可以保留更多语义信息,ELMo是动态的,可以改善一词多义问题。句向量SIF根据词频对词向量进行平滑反频率加权,可以更好的捕捉句子的中心主旨。

计算好文档或句子的候选关键词的句向量,再进行相似度计算(文中使用Cosine similarity)之后根据距离进行排序。并且文中还提到SIFRank+方法,对于长文本来说,先出现的keyphrase可能更重要,因此加入了位置信息,每个词第一次出现的位置表示定义权重。效果在部分数据集上有所提升。

《Unsupervised Key-phrase Extraction and Clustering for Classifification Scheme in Scientifific Publications》

近两年一些无监督的方法,2021年AAAI的一篇论文,这篇论文是做keyphrase extraction 并对抽取到的关键标签进行层次聚类。对文章分词后,使用chunking的方式对candidate进行抽取,并用一些预训练模型和一些文章的统计信息对candidate进行排序,这篇文章的重点主要放在了ranking和clustering上。

  • Document Relevance score : 通过SIFRank计算文档相关度。

  • Domain Relevance score : 根据candidate和domain glossaries(领域词表)预训练词向量,根据candidate去计算关于领域词表的余弦相似度,最终的相关度得分为Top N的相似度结果的均值

  • Phrase Quality score : PMI, length_score 等等的统计数据用来表示phrase的质量。

clustering可以借鉴这篇 TaxoGen: Unsupervised Topic Taxonomy Construction by Adaptive Term Embedding and Clustering 本篇不做过多介绍。

思路很清晰,方法也不是很复杂,对文章打标签提供了一种思路,并且层次聚类建立了标签间的层级关系,这对后续下游任务还是有帮助的。

《Unsupervised Deep Keyphrase Generation》

Deep Keyphrase Generation的作者今年又写一篇无监督进行keyphrase generation。整体流程如下图所示:

同样将Candidate Generation 分为present和absent两种方式,但是在构建candidate时候有一些trick工作,先根据所有文档抽取phrase,进行排序选取高质量phrase构建词典,如果phrase中的token同时出现在一篇文章且不连续时,将其作为absent candidates,并用于后续文本生成。所以整个工作流程分三步。

  1. 使用AutoPhrase和Simple unsupervised keyphrase extraction等方式构建phrase pool。

  2. TF-IDF和embedding similarity方式对文章抽取的phrase进行排序

  3. 使用absent训练seq2seq模型用于生成

从工作内容上讲,要比上一篇文章更丰富一些,利用无监督的方式抽取absent label用于seq2seq生成模型,目前该方法还未尝试,但是absent数据其实也是来自于原文,其解决的应该是跨句子或不连续的keyphrase抽取。从上图效果上看还是有一定提升的。

总结

可以看到在目前keyphrase extraction相关论文上都在围绕以下几个关键问题优化

  • 抽取和生成过程中,keyphrase质量和多样性,减少语义上的冗余。

  • 不同文章所对应的关键词的个数是动态的。

  • 如何更好的确定keyphrase的排序逻辑,还是应该像one2set忽略排序影响,当作集合计算损失。

  • 预训练模型提高效果,无监督的方法优化。

在医学领域场景中keyphrase extraction是至关重要的,丁香园也需要类似于打标签的工作,构建关于医学领域标签的层级结构,用于下游搜索优化,推荐等任务。目前正在初步尝试各种keyphrase 抽取算法的阶段,下次keyphrase相关分享将着重于技术层面上的应用。

参考文献

[1]  Deep Keyphrase Generation

[2] One Size Does Not Fit All: Generating and Evaluating Variable Number of Keyphrases

[3] ONE2SET- Generating Diverse Keyphrases as a Set

[4] SIFRank: A New Baseline for Unsupervised Keyphrases Extraction Based on Pre-Trained Language Model

[5] Unsupervised Key-phrase Extraction and Clustering for Classifification Scheme in Scientifific Publications

[6] Unsupervised Deep Keyphrase Generation

[7]https://zhuanlan.zhihu.com/p/71695633

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

点击上面卡片,关注我呀,每天推送AI技术干货~

整理不易,还望给个在看!
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值