中文自动文摘关键技术总结
搜索微信公众号:‘AI-ming3526’或者’计算机视觉这件小事’ 获取更多AI干货
csdn:https://blog.csdn.net/abcgkj
github:https://github.com/xiaoming3526/ai-ming3526
定义
所谓自动文摘就是利用计算机自动地从原始文献中提取文摘,文摘是全面准确地反映某一文献中心内容地简单连贯的短文。
应用
互联网迅速发展伴随着每天产生大量的文本数据,文摘是文本的主要内容,用户想查询和了解自己关注的话题需要花费大量时间进行选择和阅读文章,并且文摘任务单靠人工也是无法实现的。为了应对这种状况,学术界尝试使用计算机技术实现对文献的自动处理,自动文摘即为研究之一。应用场景:
- Web搜索引擎需要
- 问答系统的知识融合
- 舆情监督系统的热点和专题追踪
分类
根据与原文的关系分为:
- 抽取式:抽取式文摘从原文中选取相关句子形成文摘。这种方法需要定义规则或特征集合,根据特征对原文句子进行打分排序,得分高的句子选择为文摘句。
- 生成式:生成式文摘对原文句子进行切分,重新组合形成文摘,一般为原文中没有出现的句子,需要自然语言理解和文本生成技术。
根据处理文档的数量分为:
- 单文本文摘:单文档文摘对一篇文档进行处理,产生该文档的文摘。
- 多文档文摘:多文档文摘将多篇相同主题的文档聚集在一起,对这些文档进行处理,形成一篇该文档簇的文摘。
根据面向的用户分为:
- 面向查询的自动文摘:按照用户的特定需求产生特定主题的文档摘要,又称为与主题相关的文摘。
- 一般性自动文摘:给用户提供一般性的文档摘要,又称为与主题无关的文摘。本文研究一般性自动文摘。
根据是否需要训练语料库分为:
- 有监督自动文摘:需要训练语料库,提前对训练语料库进行标记,在自动文摘系统中,对模型不断的学习优化,最后得到最优的自动文摘系统。
- 无监督自动文摘:不需要训练语料库,不需要不断的迭代学习,可以直接按照算法生成文摘。
本文主要从抽取式和生成式两方面进行介绍。
抽取式
- 基于规则和统计的方法
- 基于图模型的方法
- 基于主题的文摘方法
- 基于整数线性规划方法
- 机器学习等
基于规则和统计的文摘方法
主要思想:是将文本看作是句子的线性序列,将句子看作是词的线性序列,通过计算句子的权重得分,排序抽取重要的句子。
计算句子权重的依据主要包括:
- 词频(TF-IDF)
- 句子位置
- 句子与标题的相似度等。
优点: 简单易用,不受领域限制,在新闻领域基于规则的方法效果突出。
缺点: 对词句的使用大多停留于表面信息,且容易造成文摘句子冗余,在主题覆盖面上也很难满足。故学者一般都将基于规则和统计的方法与其他方法相结合,例如 Ko, Youngjoong[6]提出一种结合统计信息和上下文信息的自动文摘方法。
基于图模型的文摘方法
主要思想: 将句子作为节点,构建拓扑结构图,边的建立主要通过计算两个句子间的相似度,如果相似度大于给定的阈值,则两个节点之间建立一条边。
用于文本的基于图模型的排序算法代表算法:
TextRank | LexRank | |
---|---|---|
句子相似度 | 两个句子的相同词个数,也就是词共现个数计算 | 基于 TF-IDF 向量的余弦相似度方法 |
面向的文档对象数量 | 单文档 | 多文档 |
图模型文摘抽取的主要步骤:
- 语料库预处理(包括分句,分词,去停用词,词性过滤)
- 图模型构建(包括节点的建立和边的建立)
- 图模型的计算(主要是迭代计算节点的权重,直至节点的权重收敛到指定的收敛域)
- 图模型排序(主要是将节点按权重降序排序,按原文顺序输出权重较大的节点)
- 文摘输出
图模型的构建的主要步骤:
- 节点的建立: 经典的TextRank 和 LexRank 算法都是以句子为节点,当图模型排序后,直接输出节点形成文摘。同时这两种算法还可以用于文档关键字的抽取,在抽取关键字时,则是以词项为节点。Litvak[9]以词项为节点,利用 HITS(全称 Hypertext-Induced Topic Search)算法[10]抽取关键词,将包含关键词的句子抽取作为文摘。Goyal[11]利用伯努利模型产生主题词,以主题词为节点建立图模型。
- 边的建立: 边的建立主要是计算两个句子的相似度,可以用两个句子的相似度作为两个节点间边的权值。在句子相似度计算上,TextRank 算法使用的是词共现方法,将两个句子的共同词的个数作为两句子的相似度。LexRank 算法采用的是余弦相似度方法。
这两种方法虽然也能有效的计算两句子相似度,但忽略了句子的语义信息。
Ferreira[12]提出了一种包含了句法分析、语法分析以及语义成分分析的句子相似度测量方法。Wei[13]提出一种基于查询的句子相似度计算方法,指出query 不应只限于影响节点,更应该影响节点间的权重,并开发了一种基于查询的相似度度量方法。Ramesh 提出基于 WordNet 的句子相似度计算方法,在许多情况下,两个完全不同的篇章单元可能存在语义相关,希望通过 WordNet 资源和语义图来克服这种问题,该算法使用文本节点之间的语义关联来构造语义图,并利用排序算法对节点进行排序。Ramesh[14]提出基于维基百科的句子相似度计算方法,建立一个句子-概念二部图,然后在图上迭代更新对输入句子进行排序。并且在建立的多个二部图模型上都得到了收敛性质。
基于主题的文摘方法
基于主题的自动文摘方法主要利用文本的语义信息,挖掘句子间的语义关系,将代表文本主题的句子最佳文摘。
- 张明慧[15]实现了基于主题模型的多文档自动文摘系统,其中主题模型采用LDA模型,LDA是一个多层产生式概率模型,能够检测文本的主题分布。系统使用LDA 为多文档集合建模,通过计算句子在不同主题上的概率分布的相似度作为句子的重要度,并根据句子重要度抽取文摘句。
- Neto[16]提出先用 TextTiling 算法对文本进行分区,再结合 TF-IDF 算法将文本分成几个主题簇,最后对每个主簇利用 TF-ISF(Term Frequency -Inverse Sentence Frequency)算法抽取文摘句。
- Angheluta [17]提出了一种基于文本结构树的主题分割自动文摘方法。
基于整数规划的文摘方法
基于整数规划的自动文摘方法是将文摘抽取问题转化成整数线性规划问题,在文摘长度等若干限制条件下,求全局最优解。
- Dan G[18]提出了基于概念的 ILP((Integer Linear Programming )文摘抽取模型,指出在文摘长度的限制条件下,文摘包含的概念的权重量最大,因为此问题是一个 NP 问题,所以必须将权值较小的概念剪枝,才能有效解决此问题。
- Boudin[19]基于 Dan 提出的模型,并进行多组实验,得出当概念取 bi-gram 时,文摘效果最好。若 bi-gram 中包含的是两个停止词或者是重复词,则此概念忽略,且将概念在文本中的出现频率作为它的权重,排序剪枝。
基于 ILP 的文摘抽取系统的过程是:文档清理(文档格式化,去除无用符);分句(使用 splitta1分句,每行一句);抽取概念并计算其权重;句子剪枝(将词数少于 10 的句子剪枝);写 ILP 需要的问题描述公式,并调用 ILP solver2,将文摘结果按原文顺序输出。
基于 ILP 的文摘抽取方法效果较好,在文摘长度的约束条件下,最大化文摘和原文的相似度,能覆盖到整篇文档,且减少冗余。
缺点: 是由于选择概念和计算权重等计算量较大,比其他文摘抽取方法耗时久。
生成式
在自然语言处理领域,生成式文摘研究一直是一个热门且复杂的课题,生成式自动文摘系统应该是能理解所有文档内容并且重新组织产生连贯的、简短的且能传达原文重要信息的摘要[20]。
本文重点使用解码器是根据编码器对源语言的抽象表示预测目标词序列的,正是这种抽象表示为生成式自动文摘提供了可能。本文虽然实现了基于深度学习模型的生成式自动文摘,但仍有很多弊端,如生成重复词等问题。
部分生成式自动文摘方法都是将生成过程分成两部分[21]:
- 利用无监督的文摘抽取方法和语言知识抽取原文中的关键元素
- 利用文本生成和语言学技术重写或释义抽取的元素产生简洁的摘要。
近年来,深度学习方法在很多自然语言处理任务上表现突出。括语音识别、机器翻译、自动问答、命名实体识别等多项任务中深度学习都表现出相当不错的成绩。学术界也开始将深度学习模型应用于生成式自动文摘任务。
障碍: 公开的大规模文摘语料太少,并且人工构建大规模文摘语料十分难。经典的 DUC,TAC 和 TREC 语料也只有数百篇人工英文文摘。
EMNLP 2015发布了一个大规模新浪微博中文文摘语料库,包含 240 多万篇人工文摘和微博原文,并且提出了一个基于 GRU 的 Encoder-Decoder 深度学习模型方法作为基线方法[25] 。
论文中对比了将单个汉字作为输入(将字典大小降到 4,000)和将分词后的词语作为输入(词典大小降到 50,000),实验结果显示将单个汉字作为输入效果更好,原因是词典大小有限,有些文章中的词不在词典中,出现未登录词的情况。并对比了两种模型结构,第一种结构是在 Decoder 中不使用所有文本,即只将 RNN 最后一层的隐状态作为 Decoder 的输入。第二种结构是 Decoder中使用所有文本,即将 Decoder 的所有隐状态的组合作为 Decoder 的输入[26]。实验结果显示使用所有的文本的模型效果更好。
在 RNN 方面,使用 Chung 提出的 GRU(gated recurrent unit)模型[27]GRU 被证明效果与 LSTM 差别不大,但在收敛速度上更胜一筹[28]。因为现有的生成式文摘方法经常遇到未登录词和生成重复词问题,针对这两个问题,NLPCC2017 年 Single Document Summarization任务中 The state of art 的系统提出了基于双向 LSTM 的 Encoder-Decoder 模型和Joint Attention 机制的方法,针对未登录词问题,使用在输入序列加上 Subword机制[29]处理。针对生成重复词问题,使用 Joint Attention 机制,在 Decoder 输入序列加 Attention 机制,为了在每个 timestep 存储和传送更加全面的信息,并在Encoder 输出序列加 Attention 机制,通过回顾之前的输出信息来避免生成重复短语,这是因为 Encoder 所有时刻的输出共用一个 Context Vector,后边的信息可能会将之前的信息稀释或者覆盖。
自动文摘评价指标
自动文摘评价指标主要从文摘的连贯性、可读性、信息覆盖度、长度、冗余度等方面来评价,目前比较流行的方法是 ROUGE 方法,ROUGE 评价方法是由 Flick[30]基于机器翻译的自动评价方法研发的。该评价方法的主要思想是通过比较生成的文摘和人工文摘之间的相似内容,一般是 N 元词共现来评价文摘质量,是自动文摘领域比较权威的测评方法。ROUGE 评价包括五个评价指标:
-
ROUGE-N,系统文摘和人工文摘的 n-gram 共现统计。ROUGE-1 表示意愿字共现,ROUGE-2 代表二元字共现。ROUGE-N 只能评价准确率,不能评价召回率。 ROUGE-N 计算公式如式(1-1)所示。
-
ROUGE-L,基于系统文摘和人工文摘的最长公共子序列。
-
ROUGE-W,在 ROUGE-L 的基础上,引入了加权洗漱,考虑了序列的连续匹配。
-
ROUGE-S,基于系统文摘和人工文摘的顺序词对统计。F 值计算公式如式(1-8)所示,召回率计算如式(1-6)所示,精确率计算如式(1-7)所示。
-
ROUGE-SU,对 ROUGE-S 和 ROUGE-1 进行综合加权。Lin[31]通过实验证明:ROUGE-2,ROUGE-L,ROUGE-W 和 ROUGE-S 用于单文档自动文摘任务时效果较好;ROUGE-1,ROUGE-L,ROUGE-W,ROUGE-SU 用于评价短文摘时效果较好;ROUGE-1,ROUGE-L,ROUGE-W,ROUGE-SU 用于多文档自动文摘任务时效果较好(匹配时需要去停止词);使用多个人工文摘可以提高评价的准确性。
中文单文档自动文摘的部分方法
参考文献
1.张洪荣. 中文自动文摘关键技术研究与实现[D].哈尔滨工业大学,2018.
2.百度百科