Blog1 无监督深度关键短语生成——项目综述

本文介绍了无监督深度关键短语生成项目AutoKeyGen,旨在无需人工标注数据的情况下,生成文档的关键短语。项目通过构建短语库、候选短语排名和生成模块,预测存在和缺失的关键短语。实验表明,AutoKeyGen在多个数据集上优于其他无监督方法,甚至在某些情况下超越了监督方法。

2021SC@SDUSC

一、项目简介

1.项目名称

Unsupervised Deep Keyphrase Generation

无监督深度关键短语的生成

2.项目描述

输入一个文档x,输出x对应的一个关键短语列表y(y既包含present关键短语,也包含absent关键短语)。

3.具体任务

分析关键代码:在本篇论文中,经过分析,关键代码为构建关键短语生成模型。

4.应用价值

(1)关键词短语生成的目的是生成一个短语列表,以总结和描述长文档(如研究论文和新闻文章)。它对于诸多自然语言处理下游任务如信息检索、文本摘要和文本分类等具有重要应用价值。

(2)无监督方法不依赖于大量的标注数据。

5.主要方法

AutoKeyGen

6.数据集

论文中将5个数据集进行比较,最终采用KP20k训练集。

模型建立后,将应用于所有五个测试集进行评估。

https://github.com/ memray/OpenNMT-kpg-release

7.项目分工

  1. 给定语料库,首先构建短语库(依据所有文档中出现的present短语)
  2. 依据构建的短语库,提取每个文档的候选absent短语
  3. 依据步骤1、2生成的候选短语,利用tf-idf和词向量的相似性等属性,进行rank(贴标签)
  4. 训练一个absent关键短语生成模型

二、论文分析

论文链接:https://arxiv.org/pdf/2104.08729.pdf

1.INTRODUCTION

(1)关键短语生成(Keyphrase generation):旨在生成一个简短短语列表,以总结和表征长文档。它具有广泛的应用,如信息检索、文本摘要和文本分类等。

在关键短语生成方法中,生成缺失关键短语的能力(即短语没有出现在原始文档中)与依赖文档的关键短语监督之间的权衡长期以来一直存在。

(2)先前方法的不足:提取方法一开始只能预测原始文档中出现的短语。随着深度神经网络的进步,最近的研究能够预测与文档的语义相关但缺失的关键短语。尽管这些方法已经实现了最先进的性能,但所有这些深度模型都受到监督,并且通常需要大量的文档-关键短语对,收集这些信息可能既昂贵又费力。

(3)我们的方法可以在不使用任何人工注释的情况下,生成存在和不存在的关键短语,即:一种新颖的无监督深度关键短语生成方法 AutoKeyGen,如下图所示:

Figure1

 ①从所有文档(Input Corpus)中提取候选当前关键词(Present Candidates),将它们汇集到一个短语库(Phrase Bank)中,然后为每个文档抽取候选不存在关键词(Absent Candidates)。要求候选短语中的每个词干单词都应该存在于输入文档中。

② 根据词汇级别的 TF-IDF 分数和语义级别的候选短语之间的嵌入相似度对所有这些候选词进行排名,选出排名靠前的存在和缺失的候选者(Top-ranked Candidates)。

③利用②中导出的“银”数据来训练深度生成模型。以生成更多可能在文档中缺失或在前面的步骤中遗漏的候选短语。

④当涉及到新文档的推理时,AutoKeyGen 会根据短语库提取候选词并使用 Seq2Seq 模型生成候选词,然后对这些词进行排序,候选词一起遵循与②相同的排名方法(Inference Stage)。

 (4)我们的贡献如下:
①我们对缺失关键短语进行了两项重要观察,阐明了以无监督的方式训练抽象的关键短语模型。
②我们提出了一种新的无监督深度关键短语生成方法 AutoKeyGen,它可以很好地预测存在和缺失的关键短语。
③我们对五个基准数据集进行了大量实验,并证明了我们的方法 AutoKeyGen 优于无监督方法。
在某些数据集上,AutoKeyGen 甚至比最先进的监督方法产生更好的结果。

2.Problem Formulation

我们的目标是建立一个仅基于文档集合 D 的关键短语生成模型,无需任何人工注释的监督。

(1)输入:文档标记序列x=[x_{1},...,x_{\left | x \right |}],|x|表示标记序列数。

(2)输出:关键短语 的排序列表y=\left \langle y^{P} ,y^{A}\right \rangle

①存在关键短语排序列表:y^{p}=\left \{ y_{1}^{p},...,y_{\left | y^{p} \right |}^{p} \right \}     

②缺失关键词排名列表:y^{A}=\left \{ y_{1}^{a},...,y_{\left | y^{A} \right |}^{a} \right \}
 

在这里,\left | y^{P} \right |/\left | y^{A} \right | 分别是存在/缺失的关键短语预测的数量。每个关键短语也是一个标记序列,可以包含单个或多个标记。

3.Our AutoKeyGen Method

3.1Phrase Bank for Absent Keyphrases

(1)短语库的构建(Phrase Bank Construction)

从原始文档集合 D 中的每个文档中,提取存在候选短语,将它们集合在一起来构建一个短语库。

(2)缺失候选短语(Absent Candidate Generation)

给定一个输入文档x,可以迭代短语库中的所有词组,将所有标记出现在x中(词干化后)的词组作为候选词组。为了效率起见,我们通过倒排索引将文档标记映射到短语库来实现此过程,因此实际上我们不必为每个文档扫描整个短语库。

3.2Ranking  Module

(1)语义相似性:嵌入相似性(Embedding Similarity)

使用在维基百科语料库上预训练的 Doc2Vec 模型,为输入文档及其候选短语生成 300 维向量。 具体来说, 将文档 x 和候选短语 c 的嵌入分别表示为 E(x) 和 E(c)。 它们的语义相似度定义为:

(2)词汇相似性 :TF-IDF Information

对于语料库 D 中的文档 x,短语 c 的 TF-IDF 得分为:

(3)融合排名(Fused Ranking):当文档长度不同时,基于嵌入的相似性和 TF-IDF 具有不同的表现。诸如 Doc2Vec 之类的语义表示学习对于较短和相对较长的文档都是可靠的。当文档足够长时,TF-IDF 工作更稳定。因此,我们使用几何平均值将它们组合如下:

 3.3Generation Module

我们将每个文档与前 5 名存在候选短语和前 5 名缺失候选短语配对,将它们用作训练的银标签。

(1)经典的编码器-解码器模型(Classical Encoder-Decoder Model)

编码器使用 BiLSTM实现,解码器使用 LSTM实现。
编码器将 x 中的一系列标记映射到一系列连续的隐藏表示\left ( h_{enc}^{1} ,...,h_{enc}^{\left | x \right |}\right ),其中 |x| 是文档的长度。RNN 解码器生成目标关键短语\left ( y^{1},y^{2},...,y^{\left | y \right |} \right ), 以自回归方式逐个标记(|y| 表示关键短语中的标记数):其中 h_{enc}^{t}和 h{_{dec}^{t}}分别是编码器和解码器在时间 t 的隐藏状态;f_{enc}f_{dec}是由 LSTM 单元实现的自回归函数;o^{t-1}是解码器在时间 t−1 的预测输出;c是通过非线性函数q,从编码器的所有隐藏状态导出的上下文向量。
在时间步长 t,y^{t}的预测基于固定词汇表的分布确定,条件是源表示h_{enc}和先前生成的标记表示为h_{dec}^{t-1}其中 f_{out}是一个非线性函数,通常是一个带有注意力机制的软最大分类器,它输出预设词汇表 V 中所有单词的概率。

(2)Seq2Seq生成模型(Our Tailored Seq2Seq Generative Model)

我们将输入文档中出现的单词的概率加倍,但仍然可以生成未出现在输入文档中的单词。我们定制的 Seq2Seq 模型重新组装了复制机制,并且可以通过假设"输入文档中的所有标记遵循编码器-解码器模型估计的类似分布"来将其视为特殊版本。这是通过一个额外概率项来实现:其中 σ 是非线性函数,W 是学习的参数矩阵,Z 是用于归一化的分数的总和。 对于 CopyRNN,生成y^{t}的概率是 p_{g}p_{c}之和。

4.Experiments

4.1Datasets

我们实验中的所有模型都是建立在KP20k训练集上的。

只有监督模型 CopyRNN 使用文档关键短语标签和验证集。所有其他方法都使用 KP20k 训练集中的原始文档作为输入。模型建立后,将应用于所有五个测试集进行评估。

4.2Compared Methods

我们将 AutoKeyGen 与其他五种无监督的方法进行了比较。

  • TF-IDF:根据给定文档中的词频和逆文档频率对提取的候选名词短语进行排名。
  • TextRank:将单词模拟为网页,然后使用 PageRank 算法来查找关键短语。
  • ExpandRank: TextRank 的扩展,利用嵌入相似性来获取相邻文档以在 PageRank 中设置更好的边缘权重算法。
  • EmbedRank:直接使用嵌入相似度对当前候选关键短语进行排名并使用最大边际相关性 (MMR)以增加提取的关键短语的多样性。
  • 对于消融研究,我们比较了 AutoKeyGen 方法的一些变体,如下所示:                      AutoKeyGen-OnlyBank 仅使用短语库和输入文档之间的部分匹配来提取关键短语候选,没有任何seq2seq 模型。                                                                                                AutoKeyGen-OnlyEmbed 仅对具有嵌入相似性的候选短语进行排名,而没有 TF-IDF 信息。

我们还提出了 Supervised-CopyRNN,它在标记的 KP20K 数据集上训练 CopyRNN 以生成关键短语。由于它是基于黄金标签进行训练的,因此我们将其视为所有其他无监督方法的上限。

4.3Evaluation Metrics

我们使用 R@k、F1@k 和 F1@O作为主要评估指标。 具体而言,F1@5、F1@10 和 F1@O 用于评估存在的关键短语,而 R@10 和 R@20 用于评估不存在的关键短语。 我们报告每个测试集中所有文档的宏观平均分数。

具体来说,给定关键短语的排序列表,无论存在或缺失,都有y\hat{}=(y_{1}\hat{},...,y\hat{}_{\left | y\hat{} \right |})。相应的真实关键短语集 Y,我们首先用截断值 k 截断它(即 y_{:k}\hat{}= (y_{1}\hat{},...,y\hat{}_{min(k,{\left | y\hat{} \right |)}),然后评估其精度和召回率:

F1@k 是 P@k 和 R@k 的调和平均值。当 k = |Y| 时,F1@O 可以看作是 F1@k 的一个特例。
换句话说,我们只检查与我们的真实关键词数量相同的关键词。
我们将 NLTK提供的 Porter Stemmer 应用于真实情况和预测的关键短语,以确定短语是否出现在原始文档中以及两个关键短语是否匹配。

4.4Implementation Details
  • 对于所有涉及关键短语提取的方法,我们使用开源工具包 pke3 来生成候选短语。
  • 基于图的模型 SingleRank、TextRank和ExpandRank 已经从 2 到 10 进行了搜索,再次选择了性能最好的。
  • seq2seq 模型中的词汇表 V 由 50,000 个最常用的词组成。我们训练模型 500,000 步并选择最后一个检查点进行推理。
  • LSTM 单元的维度为 256,嵌入维度为 200,源文本的最大长度为 512。
  • 模型使用 Adagrad进行优化,初始学习率设置为 0.001,每 5 个 epoch 后线性衰减 0.8。
  • 关键短语生成波束搜索的波束大小为 20。
4.5Present Keyphrase Evaluation

当前关键短语生成的结果列于下表:总的来说,AutoKeyGen 在所有无监督方法中实现了最佳的 F1@5、F1@10 和 F1@O 性能。

具体比较如下:

  • EmbedRank 可以说是最强的基线方法,然而,AutoKeyGen 在许多数据集上以显着的优势优于它。
  • AutoKeyGen 在所有数据集上的表现都优于 AutoKeyGen OnlyEmbed。它表明 TF-IDF 信息为基于嵌入的排名启发式增加了价值。
  • AutoKeyGen-OnlyEmbed 模型在 Inspec 数据集上的表现与 AutoKeyGen 大致相同,因为 Inspec 数据集中的文档长度是所有其他数据集中最短的。正如我们之前讨论的,当文档足够长时,TF-IDF 更稳定。
  • AutoKeyGen 相对于 AutoKeyGen-OnlyBank 的明显优势表明,我们的生成模块确实生成了一些超出提取器范围的“新颖”当前短语。
  • 值得一提的是,在 Inspec 数据集上,AutoKeyGen 甚至优于 Supervised CopyRNN 方法。
4.6Absent Keyphrase Evaluation

下表显示了缺少关键短语生成的模型比较:

由于除 ExpandRank 之外的所有无监督基线方法都无法生成任何缺失的关键短语,因此我们将它们统称为“其他无监督方法”。 在所有无监督模型中,AutoKeyGen 对所有数据集的调用效果最好。 因此,我们认为 AutoKeyGen 释放了在无监督设置下导出高质量缺失关键短语的潜力。

将 AutoKeyGen 与 AutoKeyGen OnlyBank 进行比较,可以看出生成模块确实有助于提高性能。

4.7Case Studies

(1)下图展示了来自 NUS 测试集的案例研究。当前关键词在输入文档中以粗体标记。 输入文档中与缺少的关键短语相关的标记带有下划线。 正确预测的关键短语以红色突出显示。 绿色的是我们的生成模块预测的正确短语,它被名词短语提取方法忽略了。此案例研究的部分内容已在 AutoKeyGen 的概述中进行了介绍,见Figure1.


(2)“Rencent security breach”被传统的名词短语提取器提取为关键短语,但我们的方法成功地去除了“rencent”并生成了候选短语“security branch”,这是一个真实存在的关键短语。这主要得益于我们量身定制的提取器。
(3)对于缺失的关键短语,我们的方法成功完全从词组中生成了“information system”和“information security management”。也就是说,这两个词组是从其他文件的词组中提取出来的。由于他们的所有令牌都出现在本文档中,因此它们被添加为缺失候选词。
我们的方法不仅可以从短语库中获取不存在的关键短语,还可以从定制的 seq2seq 生成模型中生成关键短语。在这种情况下,“security risk”、“information management”和“security management”都是由生成模块生成的。尽管其中一些与发送的基本事实关键短语不完全匹配,但它们包含相似的意义。因此,我们相信我们的生成模型确实有可能产生可靠的缺失关键短语。

4.8Candidate Absent Keyphrase Quality

下图显示了在五个数据集上使用短语库中的所有短语召回缺失的关键短语。


它用作 AutoKeyGen 提取部分的缺失关键短语的召回上限。然而,这样的上限非常松散,因为从短语库中生成的缺失可以表示的数量太大。然而,这确实表明深度无监督关键短语生成有很大的潜力,如果可以为已发送的关键短语提出更好的排名模块。 

 5 Related Work

5.1 关键短语生成(Keyphrase Generation)

(1)大多数现有算法

  • 步骤:

1.获取关键短语候选列表

2.使用具有手动定义特征的监督或无监督方法对候选者对文档的重要性进行排名。

  • 缺点:

只能提取源文本中已经出现的关键短语,因此无法预测不同词序或一些同义的关键短语。

(2)关键短语生成方法(CopyRNN 、 CopyCNN 等)

  • 步骤:利用编码器-解码器架构,将标题和正文作为源信息,将关键短语作为要预测的目标。
  • 缺点:忽略了标题在文档结构中的主导作用

(3)半监督学习方法

  • 步骤:为生成更多的训练对,将标题特征作为查询来指导解码过程。
  • 将 GAN 应用于关键短语提取问题,为关键短语提取问题提供了一个新的有希望的方向。

(4)我们的工作

  • 完全无人监督的,因此与这些现有的依赖人工注释的生成方法有很大不同。
5.2 单词和文档嵌入(Word and Document Embeddings)

Embddings 将单词表示为连续向量空间中的向量。它被广泛用于许多 NLP 问题,因为嵌入方法优于经典的词袋表示,因为它可以捕获具有可接受维度的语义相关性。
最先进的嵌入方法,能够通过嵌入网络推断文档的向量。这样,一个短语和一个长文档的嵌入可以在一个共享的向量空间中表示,这使得直接用嵌入相似度推导出它们的语义相关性成为可能。

5.3 编码器-解码器模型(Encoder-Decoder Model)

编码器-解码器模型也用于关键短语提取问题。一些工作试图在生成输出时复制源文本的某些部分。比如利用一个指针生成器网络增强这个架构,它允许模型从源文本中复制单词。 Celikyilmaz 等人提出了一个抽象系统,其中多个编码器表示文档以及用于解码的分层注意机制。

6 Conclusions and Future Work

在本文中,我们提出了一种无监督的深度关键短语生成方法,以从文档本身导出存在关键短语和缺失的关键短语。
广泛的实验证明了我们的方法在存在和缺失的关键短语方面相对于现有的无监督模型的优越性。
未来,我们计划提高深度生成模型的银标质量,因此可以进一步改进缺失的关键短语生成。
一种可能的方法是根据关键短语相关性过滤候选短语。另一个有前途的方向是利用内在的文章结构,例如标题-正文关系,进行自我监督学习。

三、白话理解

读完论文,感觉仅仅只是读过一遍,并没有真正理解整个项目工作的流程。第一次接触,自己也搞不懂该从哪学起,经过与组长的学习交流,我们一起讨论、分析了这篇论文的前一部分,感觉摸到了一点门路,以下是经过讨论的一些收获。

自己的语言来解释这篇论文究竟在做什么!(只是自己的一点小理解,不一定正确,也可能有很多地方表述不当,仅供参考,欢迎指导交流!)

假设有4个题目分别为A、B、C、D的文档,词频出现最多的词分别是a、b、c、d,但其实它们的关键词为b、c、d、a。

首先将ABCD文档的句子划分成tokens,利用Pke工具包提取存在的关键词为abcd等,构成短语库abcd。现在的(文档,存在关键词)匹配对为(A,a)、(B,b)、(C,c)、(D,d)。

接着,对A文档,将短语库中所有的词a、b、c、d与A文档的词组进行比对,选出在A中出现过的短语。此时即可找到A中出现过的b。同理,将A、B、C、D进行扫描后,短语库中的短语数量没有改变(仍然是a、b、c、d),但是,对于单个文档我们分别找到了它们的缺失候选短语:如A,找到了它的缺失候选短语b。现在的(文档,缺失关键词)匹配对为(A,b)、(B,c)、(C,d)、(D,a)。

然后,利用Doc2vec模型,为ABCD及所有的候选短语生成300维向量。计算文档和每个候选短语的嵌入相似性semantic和词汇相似性TF-IDF后取两者乘积的几何平均值RankScore,根据这个结果将这些组合进行排名。

现在,我们得到了每个文档与前五名存在候选短语和前五名缺失候选短语的组合,(如对于A文档来说,存在:(A,a)...,缺失:(A,b)....。)把它们用作训练模型的银标签。 

利用最终训练好的模型Seq2Seq,我们可以生成更多的在文档中缺失或在前面的步骤中遗漏的候选短语。

现在,对于新的一篇文档E,我们想要生成它的关键词。就会根据之前的短语库提取候选词,并使用 Seq2Seq模型生成候选词,然后对这些词按上面的排名方法进行排序。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值