目录
参考抽取式摘要1、2:
https://blog.csdn.net/qq_32458499/article/details/78659372
和
https://blog.csdn.net/qq_32458499/article/details/78664199
从文档中抽取已有句子形成摘要。实现简单,能保证句子的可读性
可看作一个组合优化问题,可与语句压缩一并进行(可看作混合式方法)
例如centroid-based method,考虑了句子包含词语权重、句子位置、句子与首句相似度等几个因素,加权作为句子的打分,然后排序。
步骤: 1、构建图G=(V,E),句子作为顶点,句子之间有关系则构建边 2、应用PageRank算法或相似算法获得每个顶点的权重 3、基于句子权重选择句子形成摘要
如果网页T存在一个指向网页A的连接,则表明T的所有者认为A比较重要,从而把T的一部分重要性得分赋予A。这个重要性得分值为: PR(T)/L(T) 其中PR(T)为T的PageRank值,L(T)为T的出链数 则A的PageRank值为一系列类似于T的页面重要性得分值的累加。 即一个页面的得票数由所有链向它的页面的重要性来决定,到一个页面的超链接相当于对该页投一票。一个页面的PageRank是由所有链向它的页面(链入页面)的重要性经过递归算法得到的。一个有较多链入的页面会有较高的等级,相反如果一个页面没有任何链入页面,那么它没有等级。
d是阻尼系数,In(Vi)表示指向网页i的链接的网页集合,Out(Vj)指网页j中的链接存在的链接指向的网页的集合。
\[
WS(V_i)=(1-d)+d*\sum _{V_j\in In(V_i)}\frac{w_{ji}}{\sum _{v_k \in Out(V_j)}w_{jk}}WS(V_j)
\]
等式左边表示一个句子的权重(WS是weight_sum的缩写),右侧的求和表示每个相邻句子对本句子的贡献程度。与提取关键字的时候不同,一般认为全部句子都是相邻的,不再提取窗口。求和的分母wji表示两个句子的相似程度,分母又是一个weight_sum,而WS(Vj)代表上次迭代j的权重。整个公式是一个迭代的过程。
基于TextRank的自动文摘属于自动摘录,通过选取文本中重要度较高的句子形成文摘,其主要步骤如下: (1)预处理:将输入的文本或文本集的内容分割成句子这里写图片描述,构建图G =(V,E),其中V为句子集,对句子进行分词、去除停止词,得这里写图片描述,其中这里写图片描述是保留后的候选关键词。 (2)句子相似度计算:构建图G中的边集E,基于句子间的内容覆盖率,给定两个句子si,sj,采用如下公式进行计算:
\[
sim(S_i,S_j)=\frac{|\{w_k|w_k \in S_i \& w_k \in S_j\}|}{log(|S_i|)+log(|S_j|)}
\]
若两个句子之间的相似度大于给定的阈值,就认为这两个句子语义相关并将它们连接起来,即边的权值这里写图片描述 (3)句子权重计算:根据公式,迭代传播权重计算各句子的得分; (4)抽取文摘句:将(3)得到的句子得分进行倒序排序,抽取重要度最高的T个句子作为候选文摘句。 (5)形成文摘:根据字数或句子数要求,从候选文摘句中抽取句子组成文摘。
句子分类 二类分类:句子是否隶属于摘要 SVM(支持向量机)
序列标注 为每个句子打上标签 可考虑相邻句子之间的关系 HMM(隐马尔科夫模型),CRF(条件随机场)
句子回归 为每个句子预测一个反映重要性的分数 SVR(支持向量回归)
编码器:先对句子编码(利用CNN),再对文档编码(利用RNN) 解码器:输出一个0/1序列,进行句子抽取(序列标注)
去除(多文档)摘要中的冗余信息 选择与摘要中已有句子冗余度小的句子
文本蕴涵识别技术很适合此目的,但是由于自身性能太差,无法真正应用。一般基于文本相似度来进行判断。
将摘要看做一个带约束的优化问题 基于ILP进行求解,可采用现成的ILP求解工具 比如IBM CPLEX Optimizer 同时进行句子抽取与冗余去除
将摘要看做一个预算约束下的次模函数最大化问题 设计次模函数,然后利用贪心算法进行内容选取
submodular次模函数 实际上就对“边际效用递减”这个说法的形式化。就是对于一个集合函数,若,那么在S中增加一个元素所增加的收益要小于等于在S的子集中增加一个元素所增加的收益。形式化表述就是:对于函数f而言,若且,则通俗的说就是你把所有商品看成一个集合,随着你所拥有的物品数量的增加,那么你获得剩下物品所得到的满足程度越来越小。
举例说明: A是B的子集,则对于函数f(),如果:f(A+e)-f(A)>=f(B+e)-f(B)成立,则说f()函数是子模的。增益递减。 例子如下: u={1,2,3,4,5,6,7,8} A={1,2,3} B={1,2,3,5,6} f(A)=|A| 集合A的个数 所以:f(A+e)-f(A)>=f(B+e)-f(B),例如e={3,4,5}
单文档摘要中句子顺序容易确定,依据句子在原文档中的顺序即可 多文档摘要中句子顺序较难确定
可综合考虑句子所在上下文信息进行排序。 先确定任何两句之间的先后顺序 机器学习、深度学习 再确定多个句子之间的整体顺序 贪心搜索
经典。。教机器学习摘要
文本摘要问题按照文档数量可以分为单文档摘要和多文档摘要问题,按照实现方式可以分为提取式(extractive)和摘要式(abstractive)。摘要问题的特点是输出的文本要比输入的文本少很多很多,但却蕴藏着非常多的有效信息在内。有一点点感觉像是主成分分析(PCA),作用也与推荐系统有一点像,都是为了解决信息过载的问题。现在绝大多数应用的系统都是extractive的,这个方法比较简单但存在很多的问题,简单是因为只需要从原文中找出相对来说重要的句子来组成输出即可,系统只需要用模型来选择出信息量大的句子然后按照自然序组合起来就是摘要了。但是摘要的连贯性、一致性很难保证,比如遇到了句子中包含了代词,简单的连起来根本无法获知代词指的是什么,从而导致效果不佳。研究中随着deep learning技术在nlp中的深入,尤其是seq2seq+attention模型的“横行”,大家将abstractive式的摘要研究提高了一个level,并且提出了copy mechanism等机制来解决seq2seq模型中的OOV问题。
这里的语料分为两种,一种是用来训练深度学习模型的大型语料,一种是用来参加评测的小型语料。
1、DUC
这个网站提供了文本摘要的比赛,2001-2007年在这个网站,2008年开始换到这个网站TAC。很官方的比赛,各大文本摘要系统都会在这里较量一番,一决高下。这里提供的数据集都是小型数据集,用来评测模型的。
2、Gigaword
该语料非常大,大概有950w篇新闻文章,数据集用headline来做summary,即输出文本,用first sentence来做input,即输入文本,属于单句摘要的数据集。
3、CNN/Daily Mail
该语料就是我们在机器阅读理解中用到的语料,该数据集属于多句摘要。
4、Large Scale Chinese Short Text Summarization Dataset(LCSTS)LCSTS: A Large Scale Chinese Short Text Summarization Dataset
这是一个中文短文本摘要数据集,数据采集自新浪微博。
Generating News Headlines with Recurrent Neural Networks
模型中的attention weights是用encoder中每个词最后一层hidden layer的表示与当前decoder最新一个词最后一层hidden layer的表示做点乘,然后归一化来表示的。
同样是Generating News Headlines with Recurrent Neural Networks
模型将encoder部分在每个词最后一层hidden layer的表示分为两块,一小块用来计算attention weights的,另一大块用来作为encoder的表示。这个模型将最后一层hidden layer细分了不同的作用。
A Neural Attention Model for Abstractive Sentence Summarization
这个模型用了三种不同的encoder,包括:Bag-of-Words Encoder、Convolutional Encoder和Attention-Based Encoder。Rush是HarvardNLP组的,这个组的特点是非常喜欢用CNN来做nlp的任务。这个模型中,让我们看到了不同的encoder,从非常简单的词袋模型到CNN,再到attention-based模型,而不是千篇一律的rnn、lstm和gru。而decoder部分用了一个非常简单的NNLM,就是Bengio[10]于2003年提出来的前馈神经网络语言模型,这一模型是后续神经网络语言模型研究的基石,也是后续对于word embedding的研究奠定了基础。可以说,这个模型用了最简单的encoder和decoder来做seq2seq,是一次非常不错的尝试。
同样是A Neural Attention Model for Abstractive Sentence Summarization
Rush提出了一个纯数据驱动的模型ABS之后,又提出了一个abstractive与extractive融合的模型,在ABS模型的基础上增加了feature function,修改了score function,得到了这个效果更佳的ABS+模型。
Abstractive Sentence Summarization with Attentive Recurrent Neural Networks
Abstractive Text Summarization using Sequence-to-sequence RNNs and Beyond
这个模型引入了large vocabulary trick(LVT)技术到文本摘要问题上。本方法中,每个mini batch中decoder的词汇表受制于encoder的词汇表,decoder词汇表中的词由一定数量的高频词构成。这个模型的思路重点解决的是由于decoder词汇表过大而造成softmax层的计算瓶颈。本模型非常适合解决文本摘要问题,因为摘要中的很多词都是来自于原文之中。
同样是Abstractive Text Summarization using Sequence-to-sequence RNNs and Beyond
文本摘要中经常遇到这样的问题,一些关键词出现很少但却很重要,由于模型基于word embedding,对低频词的处理并不友好,所以本文提出了一种decoder/pointer机制来解决这个问题。模型中decoder带有一个开关,如果开关状态是打开generator,则生成一个单词;如果是关闭,decoder则生成一个原文单词位置的指针,然后拷贝到摘要中。pointer机制在解决低频词时鲁棒性比较强,因为使用了encoder中低频词的隐藏层表示作为输入,是一个上下文相关的表示,而仅仅是一个词向量。这个pointer机制和后面有一篇中的copy机制思路非常类似。
同样是Abstractive Text Summarization using Sequence-to-sequence RNNs and Beyond
数据集中的原文一般都会很长,原文中的关键词和关键句子对于形成摘要都很重要,这个模型使用两个双向RNN来捕捉这两个层次的重要性,一个是word-level,一个是sentence-level,并且该模型在两个层次上都使用attention,权重如下:
Incorporating Copying Mechanism in Sequence-to-Sequence Learning Training
encoder采用了一个双向RNN模型,输出一个隐藏层表示的矩阵M作为decoder的输入。decoder部分与传统的Seq2Seq不同之处在于以下三部分:
这个模型与第7个模型思想非常的类似,因为很好地处理了OOV的问题,所以结果都非常好。
Neural Headline Generation with Minimum Risk Training
这个模型的特别之处在于用了Minimum Risk Training训练数据,而不是传统的MLE(最大似然估计),将评价指标包含在优化目标内,更加直接地对评价指标做优化,得到了不错的结果。
不管是中文数据集还是英文数据集上,最好的结果都是来自于模型10,并且该模型只是采用最普通的seq2seq+attention模型,都没有用到效果更好的copy机制或者pointer机制。
思考: