Deep Keyphrase Generation
- 第一篇做keyphrase generation的文章,之前的做法都是采用抽取式。抽取式的问题在于,1)只能从原文中抽取,并且不能有一点顺序和同义词上的变化;2)keyphrase排序,通常采用TF-IDF或者PageRank,然而该算法都是采用统计信息,缺少了对document完整的理解。
- 任务定义
- 数据标注:输入document,输出keyphrase集合
- 为了适配Encoder-Decoder模型,将数据重新组织为document-keyphrase的pair对(同一个document对应多个keyphrase)
- 模型
- 采用标准的Encoder-Decoder模型,然后通过Copying Mechanism缓解OOV的问题。
Neural Keyphrase Generation via Reinforcement Learning with Adaptive Rewards
- 模型输入document,输出为keyphrase集合,本文将keyphrase通过特殊分隔符组合为一个输出,因此一个document和一个组合的keyphrase形成了模型输入和输出。
- 基础的模型设计较为普通,采用Encoder-Decoder的方式进行建模,其中Encoder为BI-GRU,Decoder为单层的GRU。
- 为了缓解OOV的问题,作者也采用了Pointer-generator network
- 模型的损失函数为最大似然估计
- 本文的亮点在于最后作者采用Reinforcement Learning解决生成keyphrase过多或者过少的问题
- 当生成keyphrase不足时,采用recall作为reward,希望模型生成更多的keyphrase
- 当生成keyphrase充足时,采用F1值作为reward,希望模型生成精度更高
Semi-Supervised Learning for Neural Keyphrase Generation
先前的keyphrase generation任务,大都建立在有大量监督数据的前提下。然而获得充足的监督数据是一项非常奢侈的事情,实际应用中如何更好的利用未标注数据提升模型的性能是本文主要考虑解决的问题。
- 任务定义
- 不同于document-keyphrase pair的数据构造方式,这里将所有的keyphrase通过分隔符拼接到一起。因此document-keyphrase set只会有一条训练数据。
- 模型
-
采用标准的Encoder-Decoder模型,然后通过Pointer-generator Network缓解OOV的问题。
-
损失函数为标准的最大似然函数
-
在beam search之后,再对生成的keyphrase进行ranking,得到最终的keyphrase
-
Semi-Supervised Learning
为了更充分利用无标注数据,采用标注数据与无标注数据混合,使得Encoder见过更多的document,同时也让Decoder见过更多的上文信息。- Unsupervised Learning Methods
- 采用TF-IDF和TextRank对未标注document进行keyphrase抽取,然后去重。
- 对抽取的keyphrase进行排序,然后取top的keyphrase作为训练数据
- Self-learning Algorithm
- 采用另一个baseline模型在标注数据上进行训练,然后对未标注document进行生成,最后取top-1的keyphrase作为训练数据
- 模型训练
- 现在标注数据和伪标注数据混合之后的数据上训练,然后在标注数据上进行finetune
- Multi-task Learning with Auxiliary Task
- 为了充分利用未标注数据,作者这里通过document和title构造了一个辅助任务,两个任务共享Encoder,Decoder分别适配不同的任务。
- Unsupervised Learning Methods
-
Title-Guided Encoding for Keyphrase Generation
针对title和document,先前的建模不加区分的同等对待,因此忽略了title的重要地位。为了解决该问题,本文对title和document采用不同的encoder进行编码,然后进行融合以进行decoder。
- 问题定义
- 数据格式:title、document、keyphrase set
- 与传统pair不同,这里采用三元组的方式进行建模<title、document、keyphrase>,一个keyphrase会拆分成多个三元组。
- 模型
-
Title-Guided Encoder Module
-
Sequence Encoding Layer
这里采用BI-GRU对title和document进行编码 -
Matching Layer
在获得title和document的编码信息之后,接下来就是融合title和document特征的阶段。本文采用attention机制进行特征融合(1:title-to-title部分;2:title-to-document部分) -
Merging Layer
keyphrase的核心内容仍然来自于document,前面的融合特征更多的是为了更好的利用title特征,因此接下来需要将document特征和融合之后的特征进行合并
-
-
Decoder Module
Decoder采用了较为常见的GRU+Pointer-generator network -
Training
- 负对数似然损失函数
-
Topic-Aware Neural Keyphrase Generation for Social Media Language
[图片上传失败...(image-513f96-1595847363294)]
为了缓解社交媒体信息中数据稀疏、普通的模型难以捕捉文章核心内容的问题,本文采用主题模型结合seq2seq对keyphrase generation进行建模。然后作者通过实验对构思进行验证,本文模型取得了state-of-art的结果。
- 模型
-
Neural Topic Model
- BoW Encoder
利用神经网络估计先验变量和 - BoW Decoder
与LDA类似,其假设存在个主题存在,其中每一个主题都表示有一个topic-word的分布,而其中的每一个document都有一个Topic Mixed Distribution。在神经网络模型之中使用Gaussian Softmax的方式产生。
- BoW Encoder
-
Sequence Encoder
采用标准的BI-GRU模型对input进行特征编码 -
Topic-Aware Sequence Decoder
- decoder的输入除了上一时刻的状态之外,还包括了主题模型信息和sequence encoder状态
- 通过attention计算document的核心词,然后结合当前时刻的状态进行单词预测
- 为了缓解OOV问题,本文采用Pointer-generator network
-
损失函数
- 针对keyphrase generation,损失函数为交叉熵损失
- 针对神经主题模型(NTM),损失函数为KL散度损失
-
One Size Does Not Fit All: Generating and Evaluating Variable Number of Keyphrases
本文主要解决keyphrase generation的两个问题,1)生成结果是否具有多样性;2)生成结果的评估方式。首先,目前的keyphrase generation方法,大都采用比较大的beam search,然后取top的keyphrase作为最终的生成结果,但是不同的source text应该有不同数量的keyphrase;同时,并行的beam search不能建模keyphrase之间的关系,导致生成结果的多样性降低。其次,评估效果时大都采用生成结果的top keyphrase(个数固定)与ground truth(个数不确定)进行比较。
- 问题定义
- 输入:source text
- 输出:通过分割符对keyphrase进行分割,然后拼接为一个输出字符串,例如:keyphrase-1 <sep> keyphrase-2
- 模型
- Mechanisms for Diverse Generation
- Semantic Coverage
本文设计了Semantic Coverage让生成的keyphrase与source text关系更紧密。通过另一个uni-gru将decoder-generated进行编码,然后将编码的特征作为下一次decoder输入的一部分来影响模型。最后作者设计Semantic Coverage loss,将source text的encoder特征与decoder-generated encoder特征计算classification loss(随机采样N-1个负样本)。 - Orthogonal Regularization
- Semantic Coverage
- Training Loss
因此,训练损失包含3部分,生成损失、coverage loss、归一化loss。 - Decoding Strategies
- Exhaustive Decoding
将beam search的大小设置为150或者200,然后再进行排序筛选top的keyphrase。时间复杂度非常高。 - Self-terminating Decoding
将所有的keyphrase用分割符拼接到一个字符串
- Exhaustive Decoding
- Evaluating Keyphrase Generation
主要是将固定的top-k改为动态的k(随ground-truth变化)
- Mechanisms for Diverse Generation
网友评论