一、NN之前的摘要生成技术简述

1.1 抽取式模型

从原始文本中提取单词和单词短语来创建摘要。

1.1.1 pyTeaser

pyTeaser 是Scala项目TextTeaser的Python实现,它是一种用于提取文本摘要的启发式方法。

把句子进行排序,然后选择和文档最相关的Top5句子作为摘要。句子排序规则包括如下四个方面:

  1. 文档和句子标题共有的单词数。
  2. 关键词:文本进行预处理之后,按照词频统计出排名前10的关键词,通过比较句子中包含关键词的情况,以及关键词分布的情况来打分。
  3. 句子在文中的位置:比如每段的第一句是核心句的比例大概是70%
  4. 句子长度:定义理想句子长度,然后给每个句子按照离这个长度的远近打分。

1.1.2 LatentSemanticAnalysis

这篇论文我专门写了一篇博客,请移步论文阅读-基于LSA的摘要生成

1.1.3 TextRank

TextRank 算法是一种用于文本的基于图的排序算法,通过把文本分割成若干组成单元(句子),构建节点连接图,用句子之间的相似度作为边的权重,通过循环迭代计算句子的TextRank值,最后抽取排名高的句子组合成文本摘要。本文介绍了抽取型文本摘要算法TextRank,并使用Python实现TextRank算法在多篇单领域文本数据中抽取句子组成摘要的应用。

python3实现

算法解读

计算句子向量之间相似矩阵,再转为图结构,其中节点是句子,边是句子之间的相似性得分。

1.1.4 分类模型

将摘要生成视为一个分类模型:摘要中是否要包含这句话。

原文

特征

这篇文章首先是找出四类特征:

  • surface:句子的外在特征
  • content: 句子中词本身代表的信息
  • event: 句子中包含的event的特征
  • relevance: 这个句子和其他句子相关性

模型

先通过监督学习的方式,找到有效的特征,训练好监督模型。这种方法需要很多标注数据。为了解决这个问题,又引入了半监督学习的方式,即每轮学习,将未标注样本通过分类器得到label,然后和已标注数据一起重新进行训练.

训练过程伪码如下:

NLG任务—摘要生成综述

半监督学习示例代码

self-traing 和 co-training 的比较

1.1.5 基于序列的HMM模型

1.2 生成式模型

这种方法的核心就是找出文章的关键信息并将之编码进特征向量组,然后再通过NLG系统生成摘要。早期的生成方法都是通过先验知识预定义出一些摘要模板,通过填槽和平滑技术完成摘要生成任务。

二、基于神经网络的摘要生成

大部分的基于NN的生成任务基本分成三步:

  • 词向量编码
  • 句子或者文章编码
  • 上述向量喂入一个模型,对抽取式方法来说,就是句子排序或选择;对生成式方法来说,就是生成

神经网络可被用于上述三步的任何一个过程,步骤一中,可以使用Word2Vec,CW,GloVe这些编码模型;步骤二中,可以用CNN或者RNN提取句子或文章特征;步骤三中可以将神经网络作为regressors进行排序或选择(抽取式)或作为decoders进行生成(生成式)

2.1 抽取式

抽取式的摘要生成任务主要是通过各种基于选择的方法,所以有两个需要解决的问题,一是如何对句子进行表示,二是如何选出最合适的句子作为摘要,既要考虑覆盖也要考虑冗余。

这里会按时间顺序介绍五种抽取式模型,每种模型都会介绍句子表示句子选择方法。

2.1.1 连续向量空间模型

原文是Extractive summarization using continuous vector space models

这篇论文中,句子是通过unfolding Recursive Auto-encoder (RAE)进行编码的。首先句子变成一个二叉树结构(比如通过句法分析得到一棵二叉树),这样节点维度是一样的。

编码过程为,对于一个叶子节点,将其左子节点右子节点拼接,然后进行一个线性变换,再进行一个非线性变换,得到该节点的向量。

这种句子编码方法在效果上可能并不是最好的,也需要大量的标注数据,但是速度很快。

[recursive RAE开源代码](http://nlp.stanford.edu/ socherr/codeRAEVectorsNIPS2011.zip) 没有下载下来

将句子解析为二叉树

这篇论文中,作者将如何选择摘要集 视作一个最优化问题:最大化句子的差异性,同时又要保证和输入文本的覆盖度。这是一个 NP难问题,但是可以通过模函数来解决,即只要分别解决多样性和覆盖性两个函数,这个问题就可以解决。

这个问题LinandBilmes在2012年解决了,

2.2.2 CNNLM

YinhePei在2015年提出用CNN来进行句子编码,主要是通过窗口为5 的context进行卷积,再进行池化操作,抓取句子中的重要语义信息作为句子编码。

在句子选择问题上,作者仍然将之视为一个最优化问题。

Q(S)=αiSpi2i,jSpiMi,jpj Q(S)=\alpha \sum_{i \in S} \mathbf{p}_{i}^{2}-\sum_{i, j \in S} \mathbf{p}_{i} \mathbf{M}_{i, j} \mathbf{p}_{j}
M\mathbf{M}是将句子向量进行了相似性计算的结果矩阵

(未完待续。。。)

相关文章:

  • 2021-08-05
  • 2021-11-14
  • 2022-01-07
  • 2021-05-15
  • 2021-09-02
  • 2021-06-26
  • 2022-12-23
猜你喜欢
  • 2021-08-27
  • 2021-07-07
  • 2021-07-10
  • 2022-12-23
  • 2021-10-12
  • 2021-05-31
相关资源
相似解决方案