2021SC@SDUSC

一、问题背景

关键短语提取(Keyphrase generation)可以得到一个能够总结输入的长文档的短语列表,被广泛应用于信息检索、文本总结、文本分类等领域。研究表明,对于科学领域的相关文档,大约有50%的关键短语并没有在原文中出现。随着深度神经网络的发展,近来有研究表明可以根据关键短语和文档的语义相关性生成文档的关键短语(无论它们是否出现在原文中)。但这些方法都是有监督的,并且需要大量的文档--关键短语对训练。

本课题提出了一个无监督的关键短语提取方法,该方法不利用人工注释,可以直接生成文档的关键短语(无论它们是否出现在原文中)。作者发现,许多在文档中并未出现的关键短语可能会在其他文档中出现;文档的关键短语可能并不是逐字的按序出现在原文中,而是被分成了许多tokens。

作者提出了AutoKeyGen方法,其步骤大致为

  1. 从语料库的所有文档中提取候选的存在在文档中的关键短语(candidate present keyphrase),并将它们放入短语库(phrase bank)中。限定关键短语的词根应该存在在输入文本中,通过部分配对方法可以提取每个文本的候选缺失关键短语(candidate absent keyphrase)
  2. 将两类关键短语(absent/present)进行打分排序,其排序方法融合了两个流行的无监督关键短语的打分方法。其中TF-IDF体现了词汇相似性,嵌入相似性体现了语义相似性。
  3. 将第二步得到的排名高的候选present/absent关键短语作为"sliver data"以训练利用深度神经网络的关键短语生成模型(deep generative model),该模型倾向于通过输入文档来预测关键短语,而不是通过某些单词。

之后,作者采用AutoKeyGen做了大量实验,实验结果表明AutoKeyGen比所有无监督的基准方法做的更好,甚至优于一些有监督的基准。

我们确定,step3中关键短语模型的构建是该方法的核心,其代码也是本次课题的核心代码(对英应与项目的model.py文件)。之后我们将逐步分析该方法,并对step3的方法重点分析。

二、问题公式化

本课题构建的关键短语生成模型仅以文档为基础,而不依赖于任何关键短语注释。关键短语的生成常被描述为排名问题,即输入文章,输出一个已打分排名的关键短语的列表

我们将输入的文档表示为一个tokens的序列,即,这里的代表文章中的总tokens数。

根据关键短语是否在文档中出现,我们可以将关键短语划分到两个排名的列表中。其中,这里 分别代表了预测的present/absent关键短语个数。显然,,每个关键短语也是一个tokens的序列,可以包含一个或多个tokens。

三、AutoKeyGen方法

AutoKeyGen方法的框架图图如图所示

 图1:AutoKeyGen框架图

更具体地,该方法的三个步骤为:

  1. 将从所有文章中提取出的presnt phrase放入短语库(phrase bank)中,再提取每篇文档的absnet phrase。
  2. 通过TF-IDF和文档和候选短语间的嵌入相似性对所有候选短语进行排名。
  3. 通过step2得到的sliver label训练Seq2Seq关键短语生成模型,得到更多可能在文档或前叙步骤中未出现的candidate phrase。

基于以上方法,当需要推断新文本的关键短语时,AutoKeyGen方法将从短语库(phrase bank)中提取候选短语,并通过Seq2Seq关键短语生成模型生成候选短语,最后将这些候选短语一起用step2中的排序方法进行排序。

四、方法分析

1.包含presnt/absent phrase 的短语库

1)短语库的构造

许多文档的关键短语并未出现在原文中,而是会出现在其他文档里。首先,该方法采用之前的研究中提出的方法从所有原始文档中提取存在的候选短语。具体细节将在后续博文中介绍。

2)缺失短语的生成

前文中提到,许多文档的关键短语在原文里可能并不是逐字地出现,大多数情况下,其tokens将分散在原文档中。因此,我们将采用部分配对的方法提出absent phrase。

给定输入文档,可以迭代phrase bank中的所有phrase,若某个phrase中的tokens全部出现在文档中,则该phrase可作为candidate phrase。之所以用所有tokens都要出现在文档中的限制是因为构建的phrase bank非常庞大,若采用部分出现,会有很多的候选短语。

为了提高效率,采用反转索引,将文档中的tokens映射到短语库中,这样做使得不必为每篇文档都扫描全部的短语库。

2.排名模型

1)嵌入相似性

首先将短语和文档编码为同一空间的向量,其语义相关性便可空间向量的余弦距离来衡量。我们用分别代表文档和候选短语的嵌入形式,其语义相似性可定义如下

2)TF-IDF

对于语料库中的文档,短语的TF-IDF得分可由下公式计算

其中是文档中的词语数,是短语在文档的出现频率,是包含短语的文档在语料库的出现频率。

3)结合两指标的排名模型

对于1),2)两种指标,其在不同长度的文档上的表现不同,直觉上采用几何平均数作为排名的分数,其定义如下

越高,候选短语越有可能出现在文档中。

3.关键短语生成模型

本部分涉及该方法的核心技术,将在后续的博客结合代码深入分析。

五、数据集

论文中提供了5个数据集,我们将选取其中1-2个

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

六、环境配置

工具:pke用于候选短语生成

https://github.com/boudinfl/pke

  • Python3.7.6
  • Python第三方库

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
  • Cuda 10.1        Cudnn 7.6.5 for cuda 10.1(与cuda版本对应)
  • Pytorch 1.8.2支持cpu/gpu       tensorflow 1.14 支持python3.5-3.7,python2.7;支持cpu/gpu

七、分工和步骤

我们要完成的课题任务是:输入一个文档,输出对应的一个关键短语列表(既包含present关键短语,也包含absent关键短语)。针对该任务,分工如下。

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

我们将基于这些,分析以上四个步骤的代码实现,其中model.py是核心代码部分,将重点分析。 由于我们大数据专业暂未开设机器学习和自然语言处理相关课程,之前也没有深度学习和自然语言处理的项目经验,基础较差,需要学习很多相关知识,我们也会在博客中进行分享与分析。

无监督关键短语的生成问题01--综述相关推荐

  1. 无监督关键短语的生成问题博客02--extract.py的分析

    2021SC@SDUSC 在上一篇博客中,我们小组各位成员阅读了<Unsupervised Deep Keyphrase Generation>这篇论文,了解了这一关键词抽取模型的任务与主 ...

  2. 无监督关键短语的生成问题博客07--create_vocabulary.py的分析

    2021SC@SDUSC 本文我们将分析create_vocabulary.py文件,该文件主要的功能是创立了一个词典,统计了文本的所有词和词对应的索引,以便后续的指标的计算和处理,将得到的结果保存到 ...

  3. 无监督关键短语的生成问题博客13--Segmentation.py的分析

    2021SC@SDUSC 在上一篇博客中,我们分析了TextRank4Keyword类中的函数,但实际上TextRank中词图的构建和文本预处理是由Segmentation.py和utils.py实现 ...

  4. 无需成对示例、无监督训练,CycleGAN生成图像简直不要太简单

    作者 |  Jason Brownlee 译者 |  Freesia,Rachel 编辑 |  夕颜 出品 | AI科技大本营(ID: rgznai100) [导读]图像到图像的转换技术一般需要大量的 ...

  5. 基于依存句法分析的关键短语抽取算法实战

    由于最近在做一些无监督的关键词短语(实体)抽取工作,其实最大的背景还是没有标注好的实体识别训练数据:所以想到采用无监督的关键短语抽取算法折中去抽取一些实体,于是调研了一波关键短语抽取算法和工具.目前无 ...

  6. BigBiGAN问世,“GAN父”都说酷的无监督表示学习模型有多优秀?

    作者 | Jeff Donahue.Karen Simonyan 译者 | Lucy.一一 出品 | AI开发者大本营(ID:rgznai100) 众所周知,对抗训练生成模型(GAN)在图像生成领域获 ...

  7. Facebook开源了两个无监督翻译模型,只用单语就能训练双语

    翻栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI  昨天,Yann LeCun大神发推宣布,Facebook的两个无监督翻译模型,开源了. 所谓无监督,便是不需要双语对照文本,只用单语 ...

  8. 论文翻译-通过无监督方法产生不同风格的唐诗

    1.摘要 原论文 Stylistic Chinese Poetry Generation via Unsupervised Style Disentanglement 链接: http://nlp.c ...

  9. Unsupervised Question Answering by Cloze Translation 通过完形填空翻译的无监督的问答

    Unsupervised Question Answering by Cloze Translation 通过完形填空翻译的无监督的问答 文章目录 Unsupervised Question Answ ...

最新文章

  1. 逻辑覆盖测试(六)--路径测试
  2. Android studio 4.1 不显示光标当前的类名、方法名
  3. PetaPoco 快速上手
  4. Python高效率遍历文件夹寻找重复文件
  5. IDEA突然自动关闭然后无法启动
  6. 凭借Google新算法 机器人自学行走平均只需3.5小时
  7. 谷歌发布最新版安卓Android,谷歌发布安卓 9 正式版,代号 Android Pie
  8. 地图大数据来了!中国人口吸引力城市TOP 10
  9. 并行计算(一)——初步认识
  10. MangoTrainingCourse课程hands-on lab-1
  11. POJ 1755 Triathlon(半平面交)
  12. 自己动手一步步安装Linux系统
  13. 并查集(许多东西的基本哦)
  14. target sum java_LeetCode 494. Target Sum
  15. php并发数据库操作,数据库的并发操作
  16. 史上最详细Multi-grained Spatio-Temporal Features Perceived Network for Event-based Lip-Reading文章记录
  17. 用Excel写个摸球模拟器玩玩
  18. python 批量增加文件前缀_linux中批量添加文件前缀的操作方法
  19. App逆向案例 X嘟牛 - Frida监听 WT-JS工具还原(一)
  20. 升哲科技荣获2022年度华夏建设科学技术奖二等奖

热门文章

  1. SDNUOJ 1213.金额的中文大写
  2. 拼车网站系统源码,拼车小程序
  3. 一个名叫aliyun的挖矿木马处理过程
  4. 用计算机模拟人类循环,半模拟循环计算,cyclic computation with semi-simulation,音标,读音,翻译,英文例句,英语词典...
  5. android 低频过滤器,Filters过滤器简介
  6. MAC磁盘清理大文件(清理其他卷宗)
  7. opencv 利用摄像头来判断石头剪刀布的小游戏
  8. python 动画人物动作_角色-动作
  9. 计算机网络 自顶而下方法 原书第七版 英文参考答案(网盘)
  10. Android 应用设计--- 无边界设计理念