TensorFlow文本摘要生成 - 基于注意力的序列到序列模型

Posted 黄文坚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TensorFlow文本摘要生成 - 基于注意力的序列到序列模型相关的知识,希望对你有一定的参考价值。

1 相关背景

维基百科对自动摘要生成的定义是, “使用计算机程序对一段文本进行处理, 生成一段长度被压缩的摘要, 并且这个摘要能保留原始文本的大部分重要信息”. 摘要生成算法主要分为抽取型(Extraction-based)和概括型(Abstraction-based)两类. 传统的摘要生成系统大部分都是抽取型的, 这类方法从给定的文章中, 抽取关键的句子或者短语, 并重新拼接成一小段摘要, 而不对原本的内容做创造性的修改. 这类抽取型算法工程上已经有很多开源的解决办法了, 例如Github上的项目sumy, pytextrank, textteaser等. 本文重点讲概括型摘要生成系统的算法思想和tensorflow实战, 算法思想源于A Neural Attention Model for Abstractive Sentence Summarization这篇论文. 本文希望帮助读者详细的解析算法的原理, 再结合github上相关的开源项目textsum讲解工程上的实际应用.本文由PPmoney大数据算法团队撰写,PPmoney是国内领先的互联网金融公司,旗下PPmoney理财总交易额超过700亿元。此外,若对TensorFlow的使用技巧和方法感兴趣,欢迎阅读本团队负责人黄文坚所著的《TensorFlow实战》

2 算法原理

下面对A Neural Attention Model for Abstractive Sentence Summarization这篇文章, 的算法原理进行讲解. 我们将这个模型简称为NAM. 主要分为模型训练(train)和生成摘要(decode)两部分讲解.

2.1 模型训练(train)

NAM这个模型是纯数据驱动, 我们喂给它的训练集数据是由一系列{正文: 摘要}对组成. 假设正文是 x=[x1,...,xM] , M 是正文词符的数量, 对应的摘要为y=[y1,...,yN], N 是摘要单词的数量.
对于给定的数据, 我们希望给定x生成摘要为 y 的概率最大, 即 maxθlogp(y|x;θ) , θ 是模型的参数. 但这个很难求解, 实际中我们用序列化的方式实例化这个目标, 原来的目标函数变为: