logo资料库

基于统计方案的自动摘要系统(含源代码).doc

第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
资料共40页,剩余部分请下载后查看
基于统计方案的自动摘要系统 什么是中文分词? 众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字 为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子 I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道 student 是一个单词,但是不能很容易明白“学”、“生”两个字合起来才表示一个词。把中 文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。上海 SEO 服务,分词的结果是:上海 SEO 服务 1.引言 信息社会不断发展,如何快速获取信息的主旨,如何快速阅读新信息,成为亟待 解决的问题。文本自动摘要应运而生,它能够对大量的信息进行提炼、浓缩,成为 解决上述问题的有力工 具。 文本自动摘要,是指对文本信息内容进行概括,提取主要内容进而形成摘要的 过程[1]。人们利用计算机对文本信息进行处理,用简明扼要的文字概括其主要内 容,指明文本中概念、实体间的关系,生成基本反映文章主题的摘要信息,摘要的形 式可以是文本段落或句子。 2.文本自动摘要的算法分类 到目前为止,文本自动摘要的研究工作都是努力从文本中抽取出重要的文本 片段,其算法可以分为三大类[2]: 第一类为领域相关算法。这是基于知识理解的算法,为了获得较为准确的摘要, 必须利用语义领域的先验知识和文本结构信息。这类算法准确度高,但应用范围 受领域限制。算法涉及到信息抽取技术、从特定数据库中生成报告和事件摘要的 技术。 第二类为领域无关算法。这是基于统计的算法,同时利用语言学技术来识别文 档中的重要段落或语句。这类算法与领域无关,但精度低。算法涉及到统计技术、 健壮的浅层语言技术。其中统计技术与信息抽取中采用的相似,如向量空间模型、 项频率和反文档频率 TF/IDF。而语言技术从词汇相关度技术到健壮的首语重复解 决策略。 第三类是两者相互融合得到的算法。 文本自动摘要经历几十年的研究,主要采用以下四种方法:基于统计的自动摘 要、基于理解的自动摘要、基于信息抽取的自动摘要和基于结构的自动摘要。
目前主流的中文分词算法有以下 3 种: 1、 基于字符串匹配的分词方法 这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个 “充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功 (识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和 逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最 短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与 标注相结合的一体化方法。常用的几种机械分词方法如下: 1)正向最大匹配法(由左到右的方向); 2)逆向最大匹配法(由右到左的方向); 3)最少切分(使每一句中切出的词数最小)。 还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹 配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆 向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇 到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为 1/169, 单纯使用逆向最大匹配的错误率为 1/245.但这种精度还远远不能满足实际的需 要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各 种其它的语言信息来进一步提高切分的准确率。 一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识 别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小 的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注
结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过 来对分词结果进行检验、调整,从而极大地提高切分的准确率。 对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这 里不做详细论述。 2、 基于理解的分词方法 这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本 思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧 义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总 控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分 词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量 的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组 织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。 3、 基于统计的分词方法 从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数 越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反 映成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算 它们的互现信息。定义两个字的互现信息,计算两个汉字 X、Y 的相邻共现概率。 互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时, 便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统 计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也 有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这 一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空
开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典) 进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结 合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合 上下文识别生词、自动消除歧义的优点。 3.文本自动摘要的原理 自动摘要系统的处理对象是自然语言文本,尤其是非结构化文本。H obbs 曾提 出一个信息摘要系统的通用体系结构[3],认为典型的信息摘要系统应当由依次相 连的十个模块组成: (1)文本分块:将输入的文本分割为不同的文本块。 (2)预处理:将文本块转换成句子序列,由词汇项及相关属性组成。
(3)过滤:去掉不相关的句子。 (4)预分析:在词汇项序列中识别确定的小型结构,如名词短语、动词短语、并 列结构等。 (5)分析:通过分析小型结构和词汇项的序列建立描述句子 结构的完整分析树或分析树片段集合。 (6)片段组合:若上步没有得到完整的分析树,则需要将分析树片段集合或逻辑 形式片段组合成整句的一棵分析树或其他逻辑表示形式。 (7)语义解释:从分析树或分析树片段集合生成语义结构、意义表示或其他逻辑 形式。 (8)词汇消歧:消解上一模块中存在的歧义,得到唯一的语义结构表示。 (9)共指消解或篇章处理:通过确定同一实体在文本不同部分中的不同描述将 当前句的语义结构表示合并到先前的处理结果中。 (10)模板生成:由文本的语义结构表示生成最终的模板。 并不是所有的信息摘要系统都明确包含所有这些模块,也未必完全遵循以上 的处理顺序,但一个信息摘要系统应当包含以上模块中描述的功能。 4.文本自动摘要的方法 4.1 基于统计的自动摘要 基于统计的自动摘要也称为自动摘录,是将文本视为句子的线性序列,将句子 视为词的线性序列。包括以下步骤: (1)原始文本处理:按照计算机能够识别的形式输入文本信息,比如:键盘输入、 手写录入、文本扫描、图形识别、语音识别等。 (2)词语权重计算:对原始文本信息中的"关键词"进行词频统计。 (3)句子权重计算:根据句子中词频等信息计算句子权重。其标准为:句子权重 与句中所含"关键词"的数量成正比;文本信息中包含提示词,则提高句子权重;文本 信息中特殊位置上的句子权重增加;若句子中包含废弃指示词则句子权重减小;句 子长度与句子权重成反比。 (4)文摘句提取:对原文中所有句子按权值高低降序排列,权值最高的若干句子 被确定为文摘句。 (5)文摘句输出:将所有文摘句按照它们在原文中的出现顺序输出。其中,计算 词语权重、句子权重、选择文摘句的依据是文本的 6 种形式特征: (1)F 词频(Frequency):能够指示文章主题的有效词(Signifi-cantW ords)往往是 中频词。根据句子中有效词的个数可以计算句子的权值。 (2)T 标题(Title):标题是作者给出的提示文章内容的短语,借助停用词词表(Stop list),在标题或小标题中剔除功能词或只具有一般意义的名词,剩下的词和原文内 容往往有紧密的联系,可以作为有效词。 (3)L 位置(Location):文本信息中处于特殊位置,如首段、末段、段首、段末等, 句子权重应提升。
(4)S 句法结构(Syntactic Structure):句式与句子的重要性之间存在联系,比如文 摘中的句子多为陈述句,而疑问句、感叹句等不宜成为文摘句。 (5)C 提示词(Cue):句子中有些词或短语本身不是关键词,但它们能起提示作用, 告诉读者此句含有重要信息,如"signifi-cant","im portant","因此","综上所述"等。 (6)I 指示性短语(Indicative Phrase):指那些具有主题的词组。如"the purpose of","the m ain aim of","本文提出了","我们认为"等。 文本的 6 种形式特征是自动摘录的依据,它们从不同角度指示了文章的主题, 但都不够准确全面。需要将上述各种特征"有机"地结合起来,以 W=f(F,T,L,S,C,I)作 为计算句子权值的公式。 基于统计的方法领域不受限、速度快、摘要长度可调节,但它局限于文本表层 信息,生成的摘要质量较差,存在内容不全面、语句冗余、不连贯等问题。 目前,很多自动摘要系统都使用这种方法,在此基础上采用了不同的方法计算 词语和句子的权重使得文摘句的提取不断优化。 4.2 基于理解的自动摘要 基于理解的自动摘要以人工智能技术,特别是自然语言理解技术为核心。在对 文本进行语法结构分析的同时,利用了领域知识对文本的语义进行分析,通过判断 推理,得出文摘句的语义描述,根据语义描述自动生成摘要。包括以下步骤: 其中,文本分析是最重要的环节,包括语法分析、语义分析、句法分析。 (1)语法分析:借助于知识库中的词典和文法规则对输入的文本信息进行语法 分析,确定词形和词义,切分句子并找出词间句法上的联系,以一种数据结构描述 这些联系,如文法结构树[4]。 (2)语义分析:将句子孤立于所处的环境仅从字面上分析意义。最主要的方法是 进行文本标注,通过标注表示词之间的前后依赖关系、句之间语义衔接关系、段 之间语义聚合或转移关系,运用领域知识库所描述的知识,把语义标注转换为机器 能"理解"的语义网络。 (3)句法分析:分析文献中的每个词,给出它对全文的贡献,包括修辞、句法和语 义知识及文献的话语结构属性。这种方法采用了复杂的自然语言理解和生成技术, 对文献意义把握更准确,因此摘要质量较好,具有简洁精练、全面准确、可读性强 等优点。但理解文摘不仅要求计算机具有自然语言理解和生成能力,还需要表达 和组织各种背景、领域知识,难度巨大。因此,这种方法仅限于狭小的应用领域。 4.3 基于信息抽取的自动摘要
基于理解的自动摘要方法需要对文章进行全面的分析,生成详尽的语义表达, 这对于大规模真实文本而言是很难实现的。而信息抽取只对有用的文本片段进行 有限深度的分析,效率和灵活性显著提高。 基于信息抽取的自动摘要也称为模板填写式自动摘要。它以摘要框架为中枢, 分为选择与生成两个阶段。包括以下步骤: 由于摘要框架的编写完全依赖于领域知识,所以信息抽取仍然是受领域限制 的。信息抽取要应用于多个领域,就必须为每个领域都编写一个摘要框架,在处理 文本时先进行主题识别,根据主题调用相应的摘要框架。另外,由于摘要是利用模 板生成的,语言千篇一律,十分呆板。 4.4 基于结构的自动摘要 将文本信息视为句子的关联网络,选择与很多句子都有联系的中心句构成摘 要,这就是基于结构的自动摘要。 篇章是一个有机的结构体,篇章中的不同部分承担着不同的功能,各部分之间 存在着错综复杂的关系。篇章结构分析清楚了,文章的核心部分自然能够找到。 但语言学对于篇章结构的研究不够,可用的形式规则极少了,这使得基于结构的自 动摘要到目前为止还没有一套成熟的方法。已被采用的方法有:基于关联网络的 自动摘要、基于修辞结构的自动摘要、基于语用功能的自动摘要。 基于统计方法的自动摘要方案 1 将文章切分为段落和句子; 段落: 格式为:段号 段起 段尾 句子: 格式: 段号 句号 句子起始位置 句子结束位置 2 对文章进行分词处理 本系统使用的分词算法是基于 IKAnalyzer 的。 需要配置自己的停词库。 分词 格式:a/b/c/d 3 根据分词结果处理句子 词元相关信息
* * 标题总权重=频率权重 * * 第一段总权重=频率权重 * * 最后一段总权重=频率权重 *FrequenceRight+FirstGraphRight*PointRight+(DistanceRightMultiple/距 离权重)*(距离权重+DistanceExponentExp) *FrequenceRight+LastGraphRight*PointRight+(DistanceRightMultiple/距离 权重)*(距离权重+DistanceExponentExp) * * 其它段总权重=频率权重*FrequenceRight+(DistanceRightMultiple/距离权 格式:词元 词元起始位置 4 根据词元信息统计每个词元出现的次数并且选出 10 个词元作为摘要组句 统计频率后的词元 格式:词元 起始位置 频率 5 整合句子和词元关系,得到一个数组 格式:段号 句号 词元 起始位置 频率 根据词元长度构造此数组 段号,句子,词元,起始位置,频率 6 根据词元的频率,位置和词元距离计算总权重。得到摘要结果。 /** * 总权重计算公式: * * 总权重=频率权重*参数1 +位置权重*参数2+(距离参数倍数/距离权重)/(距离权重+ 距离权重补充值) *FrequenceRight+TitleRight*PointRight+(DistanceRightMultiple/距离权 重)*(距离权重+DistanceExponentExp) 重)*(距离权重+DistanceExponentExp) */ 系统源码: 切分段落和句子类代码 package cn.com.sidu; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException;
分享到:
收藏