2021SC@SDUSC
AutoKeyGen框架
关键短语生成的目的是用一个突出的短语的集合来总结长文档。深度神经模型在这项任务中取得了显著的成功,能够预测文档中甚至没有的关键短语。然而,这种抽象性是以牺牲大量的注释数据为代价而获得的。于是,我们提出了一种新的关键短语生成方法,AutoKeyGen,无需任何人工注释的监督。大量的实验表明,AutoKeyGen的性能优于所有无监督基线,在某些情况下甚至可以击败强监督方法。
AutoKeyGen框架部分实际示例
图1.我们提出的AutoKeyGen框架的概述和部分示例。这个示例的完整版本可以在我们的案例研究中找到。
具体来说,先关注之前的工作从所有文档中提取候选呈现的关键短语,并将它们汇集到一个短语库中。从目前的短语库中,可以通过部分匹配过程为每个文档绘制候选缺失的关键短语,要求候选短语中的每个符号词都应该存在于输入文档中。再对这两种类型的关键短语进行排序,需要融合无监督关键短语提取方法中两种流行的度量,即在词汇水平上的TF-IDF分数和在语义水平上嵌入相似度。最后进一步利用这些排名最高的存在和缺失的候选数据作为“银”数据来训练一个深度生成模型。该生成模型有望通过偏置波束搜索方法来增加缺失的关键短语,该方法鼓励模型从输入文档而不是词汇中预测单词。
AutoKeyGen具体实现方法
AutoKeyGen过程如下:
-
将候选文档中显示所有文档的关键短语作为一个短语库,然后为每个文档绘制候选缺失关键短语;
短语库建设:通过汇集从原始文档集合D中的每个文档中提取的当前候选项来构建一个短语库。
缺失候选词生成:部分匹配方法。给定一个输入文档x,迭代短语库中的所有短语,并将所有令牌出现在x中(在启动之后)的短语作为候选项。因为短语库是巨大的,并且会有太多的候选词可以部分出现在x中,为了提高效率,我们通过一个反向索引映射文档标记到短语库来实现这个过程。 -
根据TF-IDF信息和文档和候选短语之间的相似性对所有这些候选文档进行排序;
嵌入相似性:现代嵌入方法,如Doc2Vec,能够将短语和文档编码到一个共享的潜在空间中,然后语义相关性可以通过该空间中的余弦相似性来度量,为输入文档及其候选短语生成300维向量。具体来说,我们将文档x和候选短语c的嵌入分别表示为E(x)和E©。它们的语义相似性被定义为:
TF-IDF信息:词汇水平的相似性,对于语料库D中的文档x,短语c的TF-IDF得分计算为:
其中|x|为文档x中的单词数,TF(c,x)为x中的c频率,DF(c,D)为D中c的文档频率。
融合的排名:
当文档长度不同时,基于嵌入的相似性和TF-IDF具有不同的行为。文档较短或相对较长的时,语义表示学习,如Doc2Vec是可靠的。文档足够长时,TF-IDF工作得更稳定。因此,对于当前的关键短语,我们建议使用几何平均值将它们组合起来,如下,
RankScore(x,c)越高,候选短语c就越有可能是文档x的关键短语 -
使用从第二步获得的银标签来训练一个Seq2Seq生成模型,以生成更多的候选短语,这些短语可能在文档中缺失或在前面的步骤中被遗漏;
经典编码器解码器模型:编码器用BiLSTM实现,解码器实现了LSTM。编码器将x中的标记序列映射到连续隐藏表示序列,其中|x|是文档的长度,然后RNN解码器以自动回归的方式生成目标键短语标记(|y|表示键短语中的标记数量):
Seq2Seq生成模型:使用引导光束搜索来为每个文档生成不同的关键短语。我们只用银标签来训练模型,为了提高生成质量,我们鼓励解码器模型生成出现在输入文档x中的单词。即我们将在输入文档中出现的单词的概率增加了两倍。
表1:数据集的统计数据。只有受监督的模型CopyRNN使用文档关键短语标签和验证集。所有其他方法都使用来自KP20k训练集的原始文档作为输入。
与复制机制的关系。通过假设输入文档中的所有字符都遵循编码器-解码器模型,估计的相似分布复制机制对于生成关键字提取很有用,因为它给输入文档中存在的单词很高的概率。这是通过一个额外的概率项来实现的。
其中σ是一个非线性函数,W是一个学习到的参数矩阵,Z是用于归一化的分数之和。对于CopyRNN,生成yt的概率是pg和pc的和。
源码下载及环境配置
源码下载:
源码: https://github.com/Jayshen0/%20 Unsupervised-Deep-Keyphrase-Generation
Pke:https://github.com/boudinfl/pke
数据集:https://github.com/memray/OpenNMT-kpg-release
环境配置:
- 版本要求
Python及其第三方库
(1) Python3.7.6
(2) 第三方库如
① Numpy1.18.1 支持python3.5-3.8
② Matplotlib3.1.3 支持python3.6-3.8
③ Scipy1.4.1 支持python3.5-3.8
④ Keras2.3.1 支持python3.5-3.8
⑤ Scikit_learn0.22.1 支持python3.5-3.8
⑥ Scikit_image0.16.2 支持python3.6-3.8 - 深度学习框架
(1) 推荐Pytorch 1.1.0支持cpu/gpu
(2) 或tensorflow 1.14 支持python3.5-3.7,python2.7;支持cpu/gpu - Cuda (gpu版需要)
(1) cuda 10.1
(2) Cudnn 7.6.5 for cuda 10.1(与cuda版本对应)
官方下载链接
-
Python3.7.6
(1)Windows https://www.python.org/downloads/windows/
(2)Linux https://www.python.org/downloads/source/ -
Pytorch1.1.0
https://pytorch.org/get-started/locally/ -
Cuda10.1
CUDA Toolkit 10.1 original Archive | NVIDIA Developer进入链接后选择对应的操作系统。
Cuda官方安装教程
Windows
https://docs.nvidia.com/cuda/pdf/CUDA_Installation_Guide_Windows.pdf
Linux
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html -
Cudnn7.6.5 for Cuda 10.1(与Cuda版本对应)
NVIDIA cuDNN | NVIDIA Developer
进入链接后选择对应的操作系统。
Cudnn官方安装教程
Windows
https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#install-windows
Linux
https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#install-linux
小组任务及分工
任务目标:
输入一个文档x,输出x对应的一个关键短语列表y(y既包含present关键短语,也包含absent短语)。
课题意义:
- 关键词短语生成的目的是生成一个短语列表,以总结和描述长文档(例如,研究论文和新闻文章)。它对于诸多自然语言处理下游任务如信息检索、文本摘要和文本分类等具有重要应用价值。
- 无监督方法不依赖于大量的标注数据。
步骤或分工:
- 给定语料库,首先构建短语库(依据所有文档中出现的present短语)
- 依据构建的短语库,提取每个文档的候选absent短语
- 依据步骤1、2生成的候选短语,利用tf-idf和词向量的相似性等属性,进行rank(贴标签)
- 训练一个absent关键短语生成模型