`
444878909
  • 浏览: 636071 次
文章分类
社区版块
存档分类
最新评论

【学习笔记】自动文摘技术综述

 
阅读更多
文摘的基本过程分为三个步骤:
1. 文本输入
2. 计算
3. 文摘输出


文摘的分类

从输入的角度来看,基本的可以分为单文档文摘和多文档文摘。区别在于输入的是一篇文章还是一坨文章。
进一步,从文本来源的角度,还可以进一步区分:博客类文摘、评论综述类文摘、描述热点事件的文摘(热点事件通常由多个有代表性的文本组成)。顺这个思路,还可以再进一步细分,如:新闻类文摘、体育类文摘、科技类文摘、论文综述类文摘等等。

从输出的角度来看,一些文章上讲分了三类:指示性文摘、评论性文摘、咨询性文摘。从字面上可以理解上述名词的含义。
此外,如果生成的结果在信息内容类型上相对固定,即可以用模版来生成结果,如:最后生成的是固定格式的个人简历,那么自动文摘任务转化成为信息抽取任务。

从计算文摘的技术角度来看,从最大的思路来看,分两类:
1. 抽取型文摘:直接从原文中抽取句子,形成文摘
2. 理解型文摘:在理解的基础上,组织语言复述输入文本的内容
其中2难度太大,所以一般大家说的都是1.

抽取型文摘,一般分为如下几个步骤:
1. 预处理:包括编码转换、断句等
2. 特征提取:如分词、统计词频、关键词抽取、名实体识别、词语(语句)位置信息、段落结构信息、等
3. 语句权重计算
4. 按计算权重对语句排序,根据比例抽取文摘句
5. 根据语句在原文中出现的顺序重新排序,并对生成文摘进行润色,如:指代消解

上面步骤中,第三步语句权重的计算是关键。一般来讲,语句的权重由组成语句的词语的权重来计算。而词语的权重由一些因素决定:
1. tf/idf
2. 词语位置(句首)
3. 是否是指示性词语,如:综上所述、第一、第二、最后
4. 是否是名实体
5. 是否在标题中
6. 是否在其他关键性信息中,如:有明确关键词的文章,是否是关键词就很重要
7. 词的情感因素
8. 句法、语义信息
9. ngram信息

通常,上述信息进行线性加权,计算得出词语权重。词语权重之和,结合句子的特定信息(如:位置信息、结构信息)来确定句子的权重。
对于上述因素线性加权,权重的确定。如果是无监督学习(没有训练语料),则完全凭人的经验来确定;如果有训练语料,有监督学习,可以采用一些方法,如:逻辑回归、遗传算法等。

机器学习方法也应用到文摘当中,举几个例子:
1. 分类器,尤其是二值分类器(svm),在有监督学习情况下,直接用到上面,输出0表示非文摘句,输出1表示文摘句。通常文摘句子数目远小于非文摘句子数目,用svm会面临数据集合不平衡的问题。
2. 类pagerank方法:依据是,出现在重要的语句中的词语也重要,包含重要词语的语句也重要。词语权重和句子权重迭代计算,稳定后,形成最终句子权重。一般转为图形式,用随机游走算法来获得优化参数。
等等。
不过机器学习方法基本都是有监督学习方法,都需要有标准文摘。但是标准文摘在实际中很难获得,一方面是标注文摘比其他的标注(如:词性)代价更大,另一方面是不同人标注的标准不同,结果也不同。所以机器学习方法很难单独应用到文摘当中。semi-supervised是个可以尝试的思路。

除了通过对各个因素加权的方式来计算句子的权重,还可以从信息论的角度,计算每个句子对于全文来讲所占的信息量,选择信息量最大的语句们作为文摘句。语句的信息量是组成语句的每个词语的信息量的和,词语信息量的计算,是通过词语与其他词语同现分布(统计ngram)来计算的。相关工作参考复旦大学陶余会的文章《一种基于文本单元关联网络的自动文摘方法》。


还有一种技术思路,用到了语句之间的相似度:
将文档看做是语句的集合(断句),选择第一句话,与剩下的语句集合计算相似度——应该是这句话与集合中心计算向量夹角。然后,将这句话放回集合,取第二句话,继续计算......直到计算了所有语句。选择与文章中心相似度最大的语句作为文摘句。然后,重复上述过程,选择第二个文摘句。过程持续直到选择了足够的文摘句为止。
要计算相似度,必须解决句子表示的问题。一般,语句都表示为词语或者ngram向量,利用向量夹角计算。也有一些人利用了语言学资源,如:hownet、wordnet等语言学词典,将语句中的词语转成了hownet中更加基本的“概念”,用概念向量来表示句子,计算相似度。当然,这两种相似度也可以通过线性加权的方式结合起来。


再说一下多文档文摘的“词汇链”方法。
词汇连方法实际上是单文档文摘的句子加权方法在多文档文摘的一种延伸。步骤如下:
1. 首先还是要进行分词、词汇权重、词性标注等准备工作。
2. 选取名词、名实体、和其他认为重要的词语作为形成词汇链的词汇的集合。
3. 选取集合中的一个词语,形成的一个词汇链的第一个词语,计算该词语与集合中其他词语的相似度,当相似度大于一定阈值的时候,认为两个词语是在同一个词汇链中;否则,另一个词语作为新一条词汇链的第一个词语;重复上述过程,直到所有的词语都在一个词汇链中为止。
4. 计算每个词汇链的权重,依据是每个词汇的权重、位置等信息。
5. 对词汇链进行排序,选择大于某个特定阈值的词汇链
6. 包含词汇链上词语的语句作为备选语句集合
7. 对备选语句集合进行聚类、去重、重排序
8. 文摘润色工作,如指代消解、去除指示性词语等

为什么说多文档文摘中词汇链方法是单文档文摘句子权重方法的一种延伸呢?想个具体的例子:
最近李天一的案子比较火,会有多篇新闻来报道相关事件进展。如:
1. 李天一轮奸案今日宣判
2. 李某某涉嫌,法庭合议后,择日宣判
3. 李双江儿子在夜总会对杨某某进行轮奸,杨某某身心受到极大伤害,不能出庭...
......(上述新闻是自己杜撰出来的,只为说明问题)

可以抽取三条词汇链:
李天一 --- 李某某 --- 李双江儿子
宣判 --- 出庭
--- 轮奸 --- 伤害

每个词汇链,说的是相同类型的事情。将多文档中的语句按照时间和在文章中出现的顺序、从上到下排列,每一句话作为一行,词汇链就是在纵向穿插这些句子的线索。在同一词汇链上的语句,说的都是同一件事(或者至少在相应的词语上面,都是表达同样的意思);而词汇链中的词语,又对文章信息有重要线索作用,所以在多个词汇链上的出现语句,就越是重要语句。这些语句相当于通过词汇链的方式重新组织起来了。在这种组织方式下,进行聚类、去重、润色等工作。

单文档文摘,也可以构建词汇链。无论单文档、多文档文摘,包含多个词汇链的词汇的句子,重要性都高。那么在单文档文摘中,就不一定形成词汇链,而只是计算词语权重、并计算语句权重就可以了。对于多文档文摘,同单文档文摘相比,语句更有可能是重复的,在选取重要语句的基础上,去重是不能忽视的工作。如果两个语句包含的词汇链完全相同,那么这两个语句很有可能是重复的,表达重复的意思。词汇链在此时对于语句去重是有用的。


自动文摘的评测
基本思路就是计算机器生成文摘同人工标注文摘的相似程度。自动文摘相对分词、词性标注、名实体识别等任务来讲,是NLP比较“高级”的任务,因此自动评测也比较困难。


互联网浪潮下的自动文摘
1. 对文摘的需求产生变化:从前都是对传统新闻文本进行文摘,互联网语言变化较快,且体裁多样,如对科技博客类文摘,技术上是否要做特殊处理?
2. 互联网的资源也可以考虑利用,如:文摘的评测比较困难,我们可以通过众包的方式来生成评测集合么?
在互联网条件下,还有很多可以yy、可以做的事情。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics