客服电话:15682930301

电子技术论文

当前位置: 毕业论文>计算机论文>电子技术论文 > 正文

面向机器人学习的对话模版抽取方法

发布时间:2019-12-16 19:59文字数:13635字

  摘 要:问答系统的主要任务是在信息抽取文档的支持下,提供给自然语言表述的问题一个简单有效的答案,实现友好可靠的人机交互方式,现有的技术已经能够基本实现部分问答需求。在本文中,我们将讨论基本的问答系统的实现结构和工作方式,并分析一种使用模版学习的问题匹配和答案抽取方法。

  问题模版通过提供一些人工问题的实例输入搜索引擎 ,建立了一个带标签的语料库,从返回的文件中抽取并标准化得。我们可以通过MRR得分评估每个模版的精准度,确定每个问题类型的回答效果。在获得高精度的模版后可以应用于匹配新问题的答案。

  答案抽取的相关度计算采用基于词向量模型的排序学习方法。排序学习是机器学习的典型应用,用于构建信息检索系统的学习排序模型。 训练数据由查询得到的文档指定的部分文档列表组成。 排序学习的目的确定是在新问题提出时文档列表中已有的内容与问题请求是否有关。

  关键字:问答系统;模板学习;问题匹配;答案抽取;排序学习

  前 言

  问答系统(Question Answering System)是一种新型信息检索系统。 它与用户交互过程是使用自然语言对话的方式进行的。 与现有的搜索引擎不同,问题答疑系统不是为用户提供繁琐的关键字匹配的文档列表,而是以自然语言的形式准确地返回问题的答案。问答系统的主要目的是迅速切实地回复用户查询的问题。通常问答系统的处理流程区分为三个步骤:问题分析、信息检索以及答案抽取。

  问答系统近年来得到了扩展,以涵盖其他领域的知识。系统已经发展到到可以答确定时间和地理空间问题、定义和术语问题、描述类问题和多语言问题,涵盖知识载体包括文字、音频、图像和视频。 当前的问答研究主题包括人机交互性、答案重用、答案表示、知识推理、情感分析、语义解析等

  在匹配很多相似的问题时,通常采用问题模版的方法。每种特定的问题都有一个模版,这个模版通过语料库自动训练得到。

  第一章 绪 论

  本章首先调查问答系统的研究背景和意义,然后简要地介绍了问答系统的发展历史和主流实现方法,以及了本文所做的主要工作,在本章的最后展示了论文的组织结构。

  1.1 研究背景及意义

  类似于Google和百度这些搜索引擎根据用户输入的关键词,基于流行度、关键字匹配度、访问文档的频率等各个度量因素提供相关文档的排序列表。但是他们并没有真正完成用户想要的信息检索任务,用户还需自己逐一检查每个文件以寻找所求信息,这使得信息检索成为一个相当耗时繁琐的过程。理想情况下,搜索引擎应该返回一些相关、简明的句子以及相应的网页链接作为答案。从上个世纪六十年代至今,问答技术已经得到了广泛全面的发展。当前的问答系统可以检索并处理来自不同数据源的信息,并回答用户用自然语言提出的问题,提供答案的格式也将从简单的文本向多媒体方向发展。

  图1.1中国网页数量走势

  如图1.1所示,中国网页数量已经超过2000亿,从这个数量级的网页中找到所需信息变得极为困难。当用户饱受于海量互联网信息的困扰时,自动问答的技术需要就变得尤为紧急。我们需要一个智能的系统,实现用户用日常语言提出问题并收到答案快速而简洁地回答,并用充分的实际语境来验证答案。

  问答系统解决了这个问题。在1999年的文本检索会议(TREC)上,问答系统的评估报告展示了最近取得了一系列成功案例,最好的系统能够回答在这次评估中超过三分之二的问题实例。用户迫切的需求和可观的前景相结合刺激了国际对问答系统兴趣和研究。

  1.2 问答系统概述

  自动问答是信息检索和自然语言处理(Natural Language Processing)领域的计算机科学学科,它涉及构建自动回答人类以自然语言提出的问题的系统。问答系统可以通过查询知识或信息的结构化数据库(通常是知识库)来构建答案。一般地,问答系统可以相当广发的文件集合中提取出用户所需的对话。

  从涉及的应用领域进行分类,可将问答系统分为限定域问答系统(Closed-Domain Question Answering)和开放域问答系统(Open-Domain Question Answering)。

  限定域问答系统涉及特定领域(如医疗,教育等),相对而言是个更容易的任务,因为现有的自然语言处理系统可以利用知识本体中形式化的特定领域知识,这种信息组织结构是结构化的。

  开放域问答系统可涉及几乎任何事务的问题。系统将自然语言问题作为输入,然后通过其逻辑形式将句子转化为查询操作。以自然语言提问的形式输入问题,使得系统更加友好,但较难实现,问题分为各种问题类型,而系统需要识别出正确的问题来获得答案。为问题分配问题类型是一项至关重要的任务,整个答案抽取过程依赖于找到正确的问题类型,从而匹配到正确的答案类型。

  想要给出问题的答案,必须要有知识依据,人类在回答问题时,依据是记忆中的相关知识。机器在实现自动回答问题时,需要依据一个知识载体。从知识的来源进行分类,问答系统又可以分为基于知识库的问答(Knowledge Base Question Answering)和基于文档的问答(Dataset Base Question Answering)。

  知识库(Knowledge Base)是大量结构化的知识的集合。知识库中元素主要有实体和实体间的关系,以此构成大量三元组:<实体,关系,实体>。

  知识库问答(KBQA)是指对于给定自然语言表述的问题,通过对问题进行语法、语义分析,进而利用知识库进行数据查询、提取得出答案。这类问答系统的主要问题是如何构建一个完备的结构化的本体知识库,基于结构化数据的问答系统体系结构如图1.2所示。

  图1.2 基于结构化数据的问答系统体系结构

  基于自由文本的问答(DBQA)通常也称为阅读理解问答。自有文本是非结构化的文本,指未经人工处理的单文本、固定的语料库、Web网页等。系统返回的是用户问题的答案句子或包含答案的一段文摘。此类问答涉及到信息检索(Information Retrieval)、信息提取(Information Extraction)等自然语言处理技术,不需要建立大规模知识库。这种问答系统的处理流程主要包括:问题预处理、关键词提取、问题分类、信息检索、候选答案抽取、答案验证。语义分析是将自然语言话语转换为逻辑形式(机器可理解的表达意义)的方法, 语义分析可以被理解为提取话语的精确含义,通过语义解析进行文本信息的标准数据采集。基于自由文本的问答系统体系结构如图1.3所示。

  图1.3 基于自由文本的问答系统体系结构

  1.3 本文的主要工作

  本文将讨论基本的问答系统的实现结构和工作方式,并研究一种使用模版学习的问题匹配和答案抽取方法。设计了问答系统的关键算法实现,使得系统依据问题进行分析,综合运用知识表示、信息检索、自然语言处理等技术从各种数据资源中自动找出并表述准确的答案,实现用户能够以自然语言提问的形式提出信息查询需求。

  主要目标:

  (1) 系统能够理解用户指定的问题并且返回准确的答案;

  (2) 系统能够纠正一些不准确的问题,纠正口语化表达并且匹配正确的答案;

  (3) 详细论述系统所使用的算法和模型,给出算法模型和系统的功能展示;

  (4) 分析系统的性能与其他指标,对系统评估和优化。

  1.4 本文的组织结构

  本文共有五个章节,每章内容安排如下:

  第一章:绪论。本章依次介绍了课题的研究背景及意义、问答系统的概念、本文的主要工作,以及本文的组织结构。

  第二章:问答系统实现方法。本章详细介绍了问答系统的组成部分及应用到的技术原理。

  第三章:问答系统的相关算法设计。本章介绍了信息检索工具Lucene在问答系统中的应用和问句答案的相似度计算方法。

  第四章:主要介绍了基于模版学习的方法,探究了决策树模型和朴素贝叶斯模型在模板匹配中的应用,并完成了模型的构建,给出算法模型的实验结果

  第五章:对论文进行总结,提出未来工作的设想与展望。

  第二章 问答系统实现方法

  本章主要介绍了的典型的问答系统实现方式,分析了问答系统的组成结构,确定了各部分的主要任务和构建方法。

  2.1 问答系统实现方法

  新世纪以来,通常问答系统的处理流程区分为三个步骤:问题分析、信息检索和答案抽取。问答系统首先进行的过程是问题分析,包括问题的分类、关键词提取、关键词扩展,这部分的目的是确定问题的类型和答案的类型,不同类型的问题需要使用不同的策略找到答案。信息检索的任务就是根据提取出来的关键字到文档库中检索相关的文档,并按照文档的相关性进行排序。信息检索模块输入的是关键字的组合,输出的是文档或是文档中相关的段落。答案抽取模块处理检索出来的文档,把文档分成句子,按照一定的算法计算每个句子的权重,最后根据问题的类型对候选答案进行排序。答案可以是几个词或者短语,也可以是一句话或一段话,取决于问题的需求。现有的问答系统实现技术如图2.1所示。

  图2.1 问答系统实现技术

  2.2 问题分析

  问题分析阶段的目标是从问题中提取出一些关键信息。这些信息主要有问题的关键字和问题类型。确定问题的关键字和问题的的类型。通常的方法为:

  (1)对问题进行问题预处理,标记出疑问词

  (2)根据汉语疑问句式特点将问句分为特指疑问句,选择疑问句,正反疑问句和一般疑问句。

  (3)根据汉语疑问词特点及简单的规则确定问句的预期答案的类型。

  2.2.1 问题预处理

  对于中文问答系统来说,问题的预处理需要进行分词、词性标注、命名实体识别。

  分词就是把用户提出的问题分成单个的词。词是信息载体的最小单位,通过中文分词处理,文档按照单个词来索引,可以大大减少存储空间和计算时间。在中文的自然语言处理中,分词往往是第一步。

  词性标注通过采取适当的方法,根据上上下文语境,消除词的多义性,只保留特定场景下最合适的词义。

  命名实体识别目的是甄别出待处理文档中的专有名词,比如人名、地名、时间、日期等,以确保这些名词不被划分。

  2.2.2 问题分类

  为了回答一个问题,系统必须分析这个问题,问题分类的任务是确定问题的类型,从而也可以确定出答案的类型。询问什么人的问题类型需要的是一个人名作为答,询问什么时间的问题需求一个时间表述作为答案。确定了问题类型之后,我们可以避免在答案抽取时全文遍历文档库,只需寻找包含特定类型词语的文档,提高了问答系统的效率。

  总的来说,大多数问题都是人物、地点、时间等类型,描述类的问题较难分类。人工分类无法处理大量的数据,难以满足实际要求,实现问题的自动分类是处理大量数据的理想方式。近年来很多问题分类方法是基于监督式的机器学习,使用手工标记的问答库进行训练。用于分类的典型特征包括问题中的关键词,关键词的词性以及问题中的命名实体。同时,基于语义分析的方法也在问题分类上很有帮助。

  一些常见的问题类型如下表2.1所示:

  问题类型 疑问词 例子

  人 谁/什么人 谁发明了电灯?

  时间 什么时候/哪天/哪年… 哪天是复活节?

  数值 多少/几/多大/多重… 全世界有多少人?

  含义 是什么/什么是 什么是机器学习?

  地理 哪/哪里/什么地方 新西兰在哪里?

  理由 为什么 海水为什么是咸的

  其它 — —

  表2.1 常见的问题类型

  2.2.3 关键字提取

  关键字代表了语句的主体含义,提取问题中的关键字对问题分析至关重要。关键词序列从问题中提取,作为查询输入到信息检索系统中。如果问答系统是Web支持的,可以利用搜索引擎直接对关键词进行搜索,一般地,一些疑问词不会被输入到搜索引擎中。关键字是除了疑问词以外的一些名词、动词和形容词。答案抽取时,含有关键字是保证答案正确的重要标准。

  由于中文表述的多样性,同一种意思可以有多种表述方法,而系统不具有对自然语言的理解能力。对于系统,飞机和航空是毫不相关的两个词。因此,为避免无法检索到用户所需信息,还需要对关键字进行扩展,以弥补语义缺失。

  2.3 信息检索

  一旦确定了问题类型,就可以使用信息检索系统来查找包含正确关键字的一组文档。问题分析阶段获得的查询关键词接下来用于信息检索中,信息检索是问答系统的重要组成部分。

  信息检索是从信息资源集合中获取与信息需求相关的信息资源的活动。 搜索可以基于全文或其他基于内容的索引,信息检索是搜索文档中的信息,搜索文档本身,以及搜索描述数据的元数据以及文本,图像或声音数据库的技术。网络搜索引擎就是常见的信息检索系统。

  信息检索过程从用户向系统输入查询时开始。查询是信息需求的规范表述,例如搜索引擎中输入的键词。在信息检索中,查询不会唯一标识集合中的单个对象,几个对象可能会一起匹配查询,使之具有不同程度的相关性。

  检索对象是由文档集合或数据库中的信息表示的实体,是用户查询与数据库信息相匹配的结果。与数据库的查询不同,在信息检索中,返回的结果可能与查询不完全匹配,因此结果通常会进行相关度排名。结果排序是信息检索搜索与数据库搜索相比的一个关键区别。

  根据需要的不同,数据对象可能是文本文件、图像、音频、或视频。通常文件本身不是直接保存或存储在信息检索系统中,而是由文件替代品或元数据代表在系统中。

  大多数信息检索系统计算数据库中每个对象与查询相匹配的数值分数,并根据此值对对象进行排序,然后将得分最高的对象显示给用户。如果用户希望改进查询结果,那么可以重复该过程。

  为了通过信息检索策略有效地检索相关文档,文档通常被转换成适当的表示。 每种检索策略都包含一个用于文档表示的特定模型,比如全文索引目录。

  2.4 答案抽取

  问答系统的最后一步是从段落中抽取取具体的问题答案向用户呈现。答案可能长或短,可能是列表或叙述。它们可能并不符合用户期望,需要进行处理后才展现出来。

  问答系统中答案抽取的方法有两类,基于答案类型模版提取和基于N-gram模型提取。在答案类型模版提取中我们使用预期答案类型的模版和正则表达表标记命名实体匹配候选答案的段落。对于一些特殊的问题,例如定义类问题不适用于模版匹配。

  问题模版是针对每个问题类型的,模版可以人工标记,也用关系提取的方法自动学习。模版也可以同其它信息一起作为问题分类的特征,只需查看每个从段落检索中返回的句子,并使用具有如下的分类标准对它们进行排名:

  a.答案类型:检查候选句子中是否包含正确的答案;

  b.模版:检查模版特征是否匹配候选答案;

  c.关键词计数:候选答案中问题关键词出现的频率;

  d.关键词距离:候选答案和关键词之间的距离,即非重复关键词最左边和最右边的距离,答案中和问题中的关键词两者距离越小,答案与问题越相关;

  e.无关词:检查候选答案中不是来自查询的关键词数量;

  f.近义词:候选答案中是否存在与问题关键词同义的词语;

  g.标点符号位置:检查候选答案之后是否立即跟随有标点符号;

  h.关键词序列长度:候选答案中出现的关键词的最长序列。

  此外还需要对候选答案进行语义分析,才能识别出答案中的信息类型。只有满足这些规则才能保证答案的正确性。通过上述步骤处理,系统将排序在最前面的句子作为最终答案返回。

  另一种答案抽取的方法是N-Gram模型,属于模糊匹配。N-Gram模型使用多元词组的统计特性来进行序列模拟。通过把句子的词语序列转化为向量空间中,可以比较句子之间的相关性。

  答案抽取的这两种方法,抽取出的答案短语可以直接呈现给用户,也可以连同相关的段落呈现以提供充分的上下文语境。

  第三章 问答系统算法设计

  本章详细介绍并分析了问答系统实现过程中所需的算法模型,以此实现对问答系统对问题识别,信息检索和答案抽取的需求。

  3.1 Lucene

  Apache Lucene是一个免费的开源信息检索工具包,最初由Doug Cutting用Java编写。 它由Apache软件基金会提供支持,并在Apache软件许可证下发布。Apache Lucene是一个高性能全文索引工具,完全用Java编写,它几乎适用于任何需要全文搜索的应用程序,尤其是跨平台的应用程序。所谓全文索引是指对给定的一个文本库,在文本库中查找每个词条出现的频率和位置,把这样的频率和位置信息按照一定的顺序归纳总结,这样就形成了一个关于文本库的以词条为目录的索引,在查找某个词的时候就能很快的定位到该词出现的位置。表格3.1展示了 Lucene的各模块组成。

  org.apache.Lucene.search 搜索入口

  org.apache.Lucene.index 索引入口

  org.apache.Lucene.analysis 语言分析器

  org.apache.Lucene.queryParser 查询分析器

  org.apache.Lucene.document 索引文档结构管理

  org.apache.Lucene.store 数据存储

  org.apache.Lucene.util 公共类

  表格3.1 Lucene的组成结构

  当用户输入查询语句时,系统先获取查询请求,通过检索数据库,将结果返回。

  3.2 相似度计算

  问题和答案有很多表述的方式,不同的词语可能有相近的词义,这就需要计算不同的问题之间的相关度。计算相关度的方法很多,一般常有的有两种。

  第一种是基于语义分析的相似度计算,通过语义知识资源的帮助,计算用户提出的问题与现有知识库中问题的相关度R。如果相关度的值小于阈值M,则可认为知识库中没有用户询问的问题。否则返回知识库中与用户询问问题相关度最高的问题所对应的答案。这种方法对提出的问题有一定的限制,而且需要建立大型知识库体系,为后续维护扩展带来问题。

  第二种是利用模式匹配、关键字匹配或是基于向量空间模型的方法来计算不同句子间的相关度。这种方法不考虑句子的语义信息,可通过机器学习的方法获得相似度。

  3.2.1 词向量模型

  要将自然语言交给机器学习中的算法来处理,通常需要首先将语言数学化,单词需要用计算机可以理解的方式表达后,才可以进行接下来的操作。

  给定一个简单的计算模型和一些要计算的数据实体,最直接的方案是使用一个抽象的数据结构表示每个实体,称为抽象化表示。它很易于理解和易于实施,因为计算模型的网络结构反映了它包含的知识的结构。实体数据和抽象模型之间关系的自然性和简单性实现使得我们假设抽象表示是最好的实体数据处理方式。当然,还有很多更复杂的东西没有一一对应的实现。自然语言处理技术的核心关键所在是如何表示和计算语言,数据表示是机器学习的前提条件,人工设计大量的特征耗时耗力,有限的数据量也难以支撑出可靠的正确率。

  词嵌入(Word Embedding)是自然语言处理中的一组语言建模和特征学习技术的集体名称,其中来自词汇表的单词或短语被映射到实数的向量。 从概念上讲,它涉及从每个单词一个维度的空间到具有更低维度的连续向量空间的数学嵌入。产生这种映射的方法包括神经网络,词共现矩阵的降维,概率模型[,以及在词出现的上下文中的显式表示。词和嵌入的方法用作基础输入表示,已被证明可以提高自然语言处理任务(如句法分析和情感分析)的性能。

  将单词表示为矢量的技术在20世纪60年代随着用于信息检索的向量空间模型的发展而发生。在20世纪80年代后期引入使用奇值分解减少维数方法。 2000年Bengio等人在一系列论文中提供了神经概率语言模型,通过学习词语的分布式表示来降低词语表示的高维度。词嵌入有两种不同的风格,一种是将单词表示为同现词语的向量,另一种是将词语表达为词语出现的语言环境向量。Lavelli等人在2004研究了这些不同的风格。 Roweis和Saul在Science上发表了如何使用局部线性嵌入(LLE)来发现高维数据结构的表示。该领域逐渐发展并在2010年后真正起飞,原因是自那时以来,矢量质量和模型训练速度取得了重大进展。

  有许多分支机构和许多研究组正在研究词嵌入。 2013年,Tomas Mikolov领导的一个Google团队创建了Word2vec,这个词嵌入工具包可以比以前的方法更快地训练矢量空间模型,大多数新词嵌入技术依赖于神经网络架构。

  3.2.2 卷积神经网络

  人工神经网络是一种受生物神经网络结构启发的计算系统。人工神经网络基于一组称为人造神经元的连接单元(节点),人造神经元之间的每个连接(简化版本的突触)可以将信号从一个传送到另一个。由神经元组成的神经网络可以接收输入,并根据输入改变其内部状态(激励函数的改变),并根据输入和激励产生输出。 该网络通过将改变其中神经元的输出连接到其他神经元的输入来形成有向加权图。神经网络中的变量可以是神经元连接的权重和神经元的激励值,权重以及激励函数的计算可以通过称为学习的过程进行修改,此过程由学习规则管理。神经网络按照传播方式分为前馈神经网络和反馈神经网络。前馈神经网络的每个神经元接收前一层的输入,并输出给下一层,没有反馈。节点分为输入节点和计算节点,每一个计算节点可有多个输入,但只有一个输出,通常前馈型网络可分为不同的层,第i层的输入只与第i-1层的输出相连,输入与输出节点与外界相连,而其他中间层则称为隐层。 反馈神经网络的所有节点都是计算节点,同时可接收输入,并向外界输出。基本的神经网络如图3.1所示。

  图3.1神经网络模型

  卷积神经网络(Convolutional Neural Network)是一类深度前馈人工神经网络,已经成功应用于分析视觉图像。卷积神经网络使用多层感知单元,与其他图像分类算法相比,卷积神经网络需求相对较少的预处理。一个简单地二元卷积神经网络如图3.2所示。

  图3.2 卷积神经网络

  3.2.3 Word2vec

  Word2vec由google的Tomas Mikolov领导的研究小组创建,其主要作用是利用自然语言处理技术将词语转化为向量。Word2vec将输入的大量文本作为输入,并生成一个向量空间,通常为几百个维度,每个唯一的单词在语料库中被分配一个相应的空间向量。 词向量位于向量空间中,使得在语料库中共享公共上下文的词在空间中彼此靠近。

  Word2vec可以利用两种模型架构中的任何一种来产生分布式的词语表达:CBOW(Continuous Bag-of-Words)或Skip-Gram(Continuous Skip-gram)。 在CBOW模型中,模型从周围环境词的窗口中预测当前词。 上下文词语的顺序不影响预测(词袋假设)。 在连续跳跃式体系结构中,模型使用当前词来预测环境词的周围窗口。Skip-Gram模型相对注重考虑附近的上下文词语而非更远的上下文词语。根据作者的说明,CBOW速度更快,而skip-gram速度更慢,但对于不常见的词语做得更好。

  图3.3 CBOW模型 图3.4 Skip-gram模型

  Word2vec模型可以通过分层softmax或negative sampling算法进行训练。为了逼近模型寻求最大化的条件对数似然性,分层softmax方法使用霍夫曼树来减少计算。另一方面,negative sampling方法通过最小化采样负实例的对数似然来接近最大化问题。一般来说,softmax对不常用的单词有更好的效果,而negative sampling对于频繁的单词效果更好,同时对低维度的矢量效果更好。 随着训练时期的增加,分层softmax的效果会随之降低。

  使用word2vec构建机器学习模型时,通常采用n元语法模型(n-gram model)。这种模型中的每一个词设为只与一定范围内的其它词有关,而超出范围的词相互独立。 通过Word2vec构建一个多层神经网络,一般进行以下操作:

  (1)对于中文信息需要进行分词处理,将每个句子分解成一个单词数组。对英文需要处理动词的时态,还原词形和提取词干。

  (2)遍历全文,统计每个单词的出现频率。

  (3)依据统计出的频率构造Huffman树。

  (4)标记出节点在树中的位置,使用二进制的表示,以便于叶节点的查找。

  (5)对所有非叶节点和叶节点中的词向量做初始化处理。词向量和中间向量分别存放在叶节点和非叶结点中,神经网络结构中输入的是词向量,隐含层参数采用中间向量,两者一同决定分类结果。

  (6)通过神经网络训练中间向量和词向量。

  3.3 排序学习

  排序学习是在处理排序问题时采用的利用机器学习方法来训练模型的方法。得益于机器学习和数据挖掘的技术不断完善,利用统计模型来解决排序问题已经成为了一个相当有效稳定的方法。

  排序最典型的问题就是给定一个查询关键字,对候选的文档排序,最后返回最匹配的一些文档给用户。传统的排序方法一般是构造一个排序函数,此排序函数可以加入不同的排序标准,主要利用排序函数来返回文档的序列。而通过机器学习的方法,通常的做法是把一些现有排序模型的输出作为特征,来训练出一个新的模型,并获得这个新的模型的参数。于是我们可以不断利用现有的排序模型,源源不断地生成新的排序模型。

  排序学习可分成四个部分进行:手动标注训练数据、文档特征提取、分类函数学习、机器学习模型实例化。

  手动标注训练数据就是标记出哪些文档是和这个关键字相关,用1分到5分的数值序列来表示相关程度。

  用户查询和一系列标注好的文档作为输入后,系统需要完成打分函数的获得,搜索结果经由打分函数打分后再输出。但是在其内部,每个文档有若干不同的特征,于是每个文档在输入机器学习系统之前,首先需要提取出文档的特征向量。每个特征都可以作为向量的一维加入特征向量之中。在获得全部的特征数量后,文档可转換为特征向量X。在标注训练数据时我们已经标出每个文档的相关性得分Y,结合特征向量,每个文档可转換为的二元组,至此我们获得了一个训练的实例。在获得了大量的实例之后,我们就可以采用机器学习技术来对系统进行训练,训练得到的结果一般是一个分类函数或者回归函数。采用获得的分类函数处理之后用户搜索的文档,就可以得到排序的结果。排序学习的流程如图3.5所示。

  图3.5 排序学习方法

  机器学习排序方法可以按照研究方法分为三种:单文档方法(Pointwise)、文档对方法(Pairwise)和文档列表方法(Listwise)。单文档方法和文档对方法将排序问题转变成回归 、分类或有序分类问题。文档列表方法把整个查询的搜索结果作为一个训练的实例。这三种方法的差别主要表现在损失函数(Loss Function)上。

  第四章 模版匹配方法

  在本章中,我们将探讨用于开放域的问题模版模版的构建和应用。为了获得最佳的一组模版,我们提出了一种自动学习这种模版的方法。

  4.1 问题模版

  通过提供一些人工问题的实例输入搜索引擎 ,建立了一个带标签的语料库,从返回的文件中抽取并标准化得到问题的模版。我们可以通过Mean Reciprocal Rank (MRR)得分评估每个模版的精准度,确定每个问题类型的回答效果。随后这些模版将应用于匹配新问题的答案。

  4.2 模版构建

  4.21后缀树

  后缀树(Suffix tree),即是将一串字符的所有后缀保存和压缩的字典树。采用这种树形数据结构,便于快速解决很多关于字符串的问题。后缀树的概念最早是Weiner在1973年提出,后来由McCreight 和Ukkonen加以改进完善。

  我们可以很明显地看出字符串中存在的树形规律。在这个后缀树中,每个叶子节点都可以引出一个字符串,图中共计有十个字符串(为避免缺少空串和i字串,我们可以在字符串的末尾添上一个$符号),再把原字符串中每个叶子节点的起始位置标出来,于是画出这棵后缀树。如图4.1所示。

  这样一个后缀树主要能够解决类似以下的一些问题:

  a. 查找字符串T是否在字符串S中:如果S存在于T中,那么S一定是T的某一个后缀的前缀,可以按照Trie树搜索前缀的方法,遍历后缀树。查找的时间复杂度为O(M), M是字符串T的长度。

  b. 字符串S中特定的字符串T的重复次数:在字符串T后添加$,再构造包含所有后缀的一棵完整后缀树,从当中找到S子串的最后一个节点,此节点拥有的叶子节点个数就是重复次数,复杂度为O(M),M是字符串S的长度。

  c. 字符串T中的最长重复子串:可以通过遍历整个后缀树之后找到深度最大的非叶子节点,时间复杂度复杂度为O(N),N为字符串T的长度。

  d.字符串S1,S2的最长共有重复部分:分别为S1、S2添加#、$作为末尾,将他们压入同一棵后缀树,再找到这棵后缀树的最深非叶子节点,该节点的叶子节点中,同时有#、$的就是共有重复部分。时间复杂度为两棵后缀树的复杂度之和,可取为max(O(N),O(M)),其中N、M是S1、S2的长度,

  4.22 模版获取

  对于特定类型的问题,可以通过以下方法获得问题的模版,再依据大量的语料数据,确定可靠的统计估计。假设每个句子都是一个简单的单词序列,并且搜索重复单词的序列,作为有效答案的依据。我们使用后缀树提取最佳长度的子串,后缀树的大小和语料库相关,并不作限制。

  给定的问题和答案对,作以下处理:

  1.将问题和答案同时作为关键字进行搜索引擎的搜索处理。

  2.提取前1000个搜索到的Web文档。

  3.利用Lucene对文档建立全文索引,将文档分成句子。

  4.使用正则表达匹配工具对句子进行处理,去掉html等无关内容,只保留同时含有问题和答案词条的文档。

  5.将保留的句子构造为后缀树,计算子串的数目。

  6.分别用特定的标签和替代问题和答案的关键词

  对不同类型的问题重复进行以上处理,得到各类问题的问题模版。比如对于BIRTHDATE问题产生以下结果:

  这些是从那些同时包含 和的句子中提取出的一些最常见的子串。由于后缀树记录所有子串和部分重叠字符串,如c和d是单独保存的,这使我们能够实现分开统计它们的出现频率。

  4.23 准确度计算

  对于一个给定的问题类型,可通过下面的方法计算获得到的问题模版的准确度:

  1.在搜索引擎上只用问题作为关键词进行搜索。

  2.下载前1000个搜索引擎提供的Web文档。

  3.利用Lucene对文档建立全文索引,将文档分成句子。

  4.只保留包含问题词条的句子。

  5.对于每个获得的模版,检查每个以上获得句子模版是否存在以下2种情况:

  i)句子中存在匹配任何词条的标签的模版。

  ii)句子中存在匹配正确答案词条的标签的模版

  使用公式P = Ca / Co计算每个模版的精确度,其中

  Ca = 存在答案词条的模版总数

  Co = 替换掉答案词条的模版总数

  6. 只保留可与足够数量的实例匹配的模版。

  对于给定问题类型,我们获得一个正则表达式表,以及每个模版的精确度。这个精确度是每个模版包含答案的可能性,由最大似然估计原理得到。

  对于BIRTHDATE问题有下列正则表达式表4.1:

  4.3 问题分类

  在问答系统中,尤其是开放域问答系统,问题的种类很多,很难做好每个类别的语义解析。早期的问题分类依照规则逐条递加的方式进行,然而随着类别的大量增多和用户表达方式的变化,简单地对规则进行更改,会对其它规则造成影响,并且基于优先级规则,每条语句都要重新作一次优先级判断,从而无法根据上下文做有效的综合判断,提高了问题分类的难度。

  词向量技术很适合用作序列数据的分类,聚类和相似度计算。使用词向量进行问题分类工作是一种很好的方法。

  朴素贝叶斯方法

  朴素贝叶斯方法是通过概率来判断输入的样本属于哪种分类。在机器学习中,朴素贝叶斯分类器是一组简单的概率分类器,它基于贝叶斯定理和特征之间的概率独立性假设。

  朴素贝叶斯分类器具有高度可扩展性,在学习问题中需要许多变量的特征的线性参数。最大似然训练可以通过评估一个封闭形式的表达式来完成。朴素贝叶斯分类器的所需时间与样本数量线性相关,而不是像许多其它类型的分类器那样使用昂贵的迭代近似。

  对于某些类型的概率模型,可以在监督学习环境中非常有效地训练朴素贝叶斯分类器。在许多实际应用中,朴素贝叶斯模型的参数估计采用最大似然法。尽管朴素的设计和过于简单的前提假设,但朴素贝叶斯分类模型在许多复杂的现实任务中工作得很好。朴素贝叶斯的一个优点是它只需要少量的训练数据来估计分类所需的参数。

  4.4 评估方法

  一种常用的系统评估方法是平均倒数排名(Mean Reciprocal Rank,MRR)。MRR假定有一些由人工标记出正确答案的问题测试集,系统会返回一个包含正确答案文档或段落的排序。每个问题的的评分根据其第一个正确的答案在排序中的位置决定,为第一个正确的答案排位的倒数。例如,如果系统返回了5个答案,但是前3个答案是错误的,第一个正确的答案排在第4位,所以该问题的倒数排名得分(Reciprocal Rank Score)为1/4。对于一个问题系统没有返回任何正确答案的话,该问题得分为0。整个系统的得分为测试集中每个问题得分的平均值。具体的,评估一个系统对某个测试集的表现时,MRR定义为

  第五章 总结与展望

  5.1 本文总结

  本文分析了问答系统的基本构成和实现原理,基于模版匹配方法的简单性使之对各种语言的问答系统具有很高的可靠性,复杂的问答系统系统还需要很多特定适配语言的模块工具(命名实体标记工具,解析器,本体知识库等)。由于答案模版仅用少量的人工训练词条,只要切换适当的搜索引擎,也就可以在新的语言中快速学习出新的模版。

  5.2 后续工作展望

  一般来说描述类问题的答案往往很笼统,我们往往只注意到匹配所需的句子或语义类型,但是对于一些常见惯用语、比喻、同义词没有加以区别。下一步工作设想通过为系统添加一个外部知识库,当匹配到知识库中的一些词时再通过语义分析的方法进一步确定问题的类型。

移动版:面向机器人学习的对话模版抽取方法

本文标签: