文章目录
一、NN之前的摘要生成技术简述
1.1 抽取式模型
从原始文本中提取单词和单词短语来创建摘要。
1.1.1 pyTeaser
pyTeaser 是Scala项目TextTeaser的Python实现,它是一种用于提取文本摘要的启发式方法。
把句子进行排序,然后选择和文档最相关的Top5句子作为摘要。句子排序规则包括如下四个方面:
- 文档和句子标题共有的单词数。
- 关键词:文本进行预处理之后,按照词频统计出排名前10的关键词,通过比较句子中包含关键词的情况,以及关键词分布的情况来打分。
- 句子在文中的位置:比如每段的第一句是核心句的比例大概是70%
- 句子长度:定义理想句子长度,然后给每个句子按照离这个长度的远近打分。
1.1.2 LatentSemanticAnalysis
这篇论文我专门写了一篇博客,请移步论文阅读-基于LSA的摘要生成
1.1.3 TextRank
TextRank 算法是一种用于文本的基于图的排序算法,通过把文本分割成若干组成单元(句子),构建节点连接图,用句子之间的相似度作为边的权重,通过循环迭代计算句子的TextRank值,最后抽取排名高的句子组合成文本摘要。本文介绍了抽取型文本摘要算法TextRank,并使用Python实现TextRank算法在多篇单领域文本数据中抽取句子组成摘要的应用。
计算句子向量之间相似矩阵,再转为图结构,其中节点是句子,边是句子之间的相似性得分。
1.1.4 分类模型
将摘要生成视为一个分类模型:摘要中是否要包含这句话。
特征
这篇文章首先是找出四类特征:
surface
:句子的外在特征content
: 句子中词本身代表的信息event
: 句子中包含的event的特征relevance
: 这个句子和其他句子相关性
模型
先通过监督学习的方式,找到有效的特征,训练好监督模型。这种方法需要很多标注数据。为了解决这个问题,又引入了半监督学习的方式,即每轮学习,将未标注样本通过分类器得到label,然后和已标注数据一起重新进行训练.
训练过程伪码如下:
1.1.5 基于序列的HMM模型
1.2 生成式模型
这种方法的核心就是找出文章的关键信息并将之编码进特征向量组,然后再通过NLG系统生成摘要。早期的生成方法都是通过先验知识预定义出一些摘要模板,通过填槽和平滑技术完成摘要生成任务。
二、基于神经网络的摘要生成
大部分的基于NN的生成任务基本分成三步: