智能答疑系统

        问答系统是目前自然语言处理领域中的研宄热点,它既能让用户通过自然语言直接发问,又能直接向用户返回精确、简洁的答案,而不是一系列相关网页。

      从算法与模型上来说,问答系统主要分成两个流派,一派是搜索式问答,另一派则是基于端到端方法的生成式问答,近年来两个流派都得到了长足发展,涌现了很多优秀的论文。然而,当我们真正开始使用这些问答系统与算法时,就会发现其有两大严重的问题尚未解决,一是对于领域相关的问题回答不够精确,二是对开放类问答的简单问题回答较为单一,且容易出现“I don’t know”类的笼统回答。主要是因为(1)现有模型没有考虑到问答上下文的情景并加以优化;(2)核心算法优化不足;(3)缺乏足量的训练语料覆盖各种情景。这些因素导致当前主流的模型在实际应用中力显不足。众多学者在现有方法上针对问答的特性进行了大量改进,但各方面的提升似乎收效甚微。

一、面向具体任务的检索式问答系统

    近年来,基于检索的面向具体问题的问答系统得到了广泛的发展,大量研宄人员对其进行了深入的研宄。基于检索的问答系统可以被化归为一种复杂的信息检索系统,可以自动将用户的自然语言问句转化为查询请求并从一系列候选文档中找到可能性最高的回答。早在1999年,TREC比赛就加入了问答系统比赛项目,目前大部分问答系统的构建思路都是在现有的信息检索(IR)系统外添加用户问句意图预测与分类模块、答句检索与答案提取模块、问答状态追踪模块以实现所需功能。因此,检索式问答系统的核心性能与其依赖的IR系统紧密相关,是理论上限。而IR系统的性能取决于其文档索引与查询请求的设计,由于自然语言天生具有句式复杂、表达多样的特性,大部分问答系统的IR模块都会采用问句重写[(Query Expansion)与语义模板(SemanticTemplate)的方法来化简自然语言问句与提高召回率。这两种方法多采用语言学家手工构造规则模板,选用特征包括同义词、反义词、上下位词、频次信息、标点、关键词、代词、位置(比如句首与句尾)、前后词性标注(POSTag)作为问句的特征,然后利用各类传统的机器学习分类算法如K最近邻算法、支持向量机(SVM)算法重写问句与模板匹配。这些方法大多依赖于词典、语义模板,倘若这些先验知识足够准确与丰富,其准确率与召回率还是相当高的,然而,这类方法的局限性很大,且难以扩展维护,随着问句种类的增多,需要花大量时间大幅度修改模板、维护词典,在工业中应用困难。另外,此类方法或多或少忽略了问句的上下文语境与语义信息,准确率较低。

    近年来,深度学习方法在语音和图像处理领域取得了突破性进展,其在自然语言处理领域也越来越受到重视,并逐渐被广泛应用于各类自然语言处理任务中。其中很多工作采用了词向量(word2vec)与卷积神经网络CNN)并在多个数据集上证明了方法的有效性,此类方法可以很好的与现有的问答系统框架结合,根据这种思想,在现有的问答系统框架中加入了word2vec与CNN模型,提升问答系统的各项指标。

二、端到端开放领域问答系统

   基于检索的问答系统从一系列可能的回答中选出一个与问句最相关的答句,因此从本质上来说其并没有生成任何新的句子,因此我们无需担心答句中引入的语法错误。与基于检索的问答系统不同,端到端问答系统较为智能,其基于用户的问句中的每一个词依次生成答句,因此在答句中可能会有语法错误。另外,此种模型的训练较为复杂,这是因为在训练中需要学习各类复杂的句子结构。但是,一旦完成了训练,端到端问答系统在未登入(non-seen)的用户问句情境下能大幅超过大多数基于检索的问答系统,而且给用户以一种与真人交流的感受。

       端到端模型最先在机器翻译方向得到应用,从此一发不可收拾,成为了机器翻译方向的首选方法,后续文章大部分基于此类模型进行优化与改造。由于问答系统的训练输入为问句-答句对,与机器翻译系统的平行语料训练输入格式极为相似,因此近年来在问答系统中也大量采用了端到端方法改进系统。

     其模型结构较为简单,主要有两个循环神经网络(RNN)构成,两个RNN中的一个作为编码器将用户经过分词的输入句子按照输入顺序逐词编码成一个由隐藏层输出定长的向量,这样一个定长的隐藏层向量可以充当输入句子的语义特征向量,其嵌入了句子中各类重要的语义信息,因此可以很有效的表征一个句子的语义。

      我们可以将编码的过程沿着时间轴进行可视化,每一轮前一个词的编码结果将会作为下一轮后一个词的编码过程的输入的一部分,因此最终得到的隐藏层向量包含了整句句子的语义信息,而在解码过程中,另一个RNN作为解码器,根据输入一个个词输出解码的结果,将这些词按序拼接后得到的就是对于用户问句的答句。在这个过程中,每一个RNN单元的输入是上一轮解码的隐藏层向量与前N轮解码出的单词。

      因此,在解码过程中的每一轮输出的结果都受到了上下文(也就是编码结果)以及之前N轮生成的单词的影响,因此此类系统输出的答句既能准确回答用户的问题,又具有较好的语法结构、语序合理,而且答句句式较为新颖。相比之下,对于基于检索的方法,其所有回答大多来自于现存的知识图谱或数据库,因此很少会出现语法错误,但是这种方法无法对没有事先定义的输入问句进行有效回答。同样这些模型无法考虑在很早之前的会话中出现的实体信息。而端到端方法可以回溯到前文讨论的实体,给人感觉像是在和人问答,然而端到端模型难以训练,并且容易使用语法错误的答句进行回复。另外,由于大部分模型都采用了RNN,因此这类模型也继承了RNN的缺点,如问句长度受限,答案主观性太强、忽略了问句中的同义词、多义词等。

三、相关技术

1、中文分词

    中文分词算法所描述的是在中文语句中将句子拆分,使其成为一个个独立的中文词语。中文分词的过程就是将成句的中文语句根据一系列制定好的规则拆分成中文词序列的过程。

2、基于向量空间模型的语句相似度计算

     Salton 等学者在 60 年代提出向量空间模型(VSM:Vector Space Model),并将该模型成功地应用于著名的 Smart 文本检索系统[1]。VSM 用向量空间中的向量运算替代对文本内容的处理,在这种模型中,以向量空间上的相似度来表达中文语义的相似度,该模型概念简单,直观易懂。当对一份中文文档建立向量空间模型,将其表示为中文文档空间的向量,计算机就可以很容易通过编程来计算向量之间的相似度,从而衡量中文文档间的相似性。在中文文本处理中,我们常用余弦距离来定量计算文本的相似性。

      在向量空间模型中,将每个中文词语看成一个向量维度,而中文词语的频率看成向量的模,这样一来,每个中文文本的词语和词语的频率就形成了一个 N维向量空间,定义两个向量空间的接近程度为两个中文文本的相似度。当中文文档的词语数量较多时,上述方法的运算量很大。因此人们使用降低向量维度的方法来降低算法复杂度。落实到中文文本的相似度计算中,具体方法就是减少中文词语的数量。人们常常使用功能词和停用词作为降维的词。而向量的维度降低了,不但能提高算法效率,还能提高算法中计算的准确度。通过对文本构建上述的向量空间模型,文本数据就从计算机不易处理的抽象数据转换成了计算机容易处理的结构化数据,而中文文本之间的相似性问题就转化成了两个空间向量之间的接
 

3、语义相似度计算

     文本语义分析作为自然语言学习中的最大的挑战,其基础性工作便是计算语义相似度。计算语义相似度不仅在词语获取上,学习词的定义,机器翻译中甚至在信息检索中都有着广泛的应用空间。我们需要一定的语义知识资源作为其基础,才能计算中文语义的相似度。在英语中,人们通常采用 Word Net,研究中引入了梅家驹等人编纂而成的《同义词词林》作为系统的语义知识资源。    
    梅家驹等人于 1983 年编写了《同义词词林》,这本词典中除了有介绍一个词语的同义词之外,也对词语的相关词进行了一定数量的介绍,即和该词语具有同类意义词。然而这本书创作已经有一些时日,并且在其问世之后作者没有对其进行继续更新,所以高校的学者研究专家利用相关的资源,撰写了一部《同义词词林扩展版》,该词典具有汉语大词表,词典中摘录近 7 万条词语,所有的词语都按意义进行编排,该词典是一部很好的同义类词典。

4、索引结构

普通问句的存在形式为:(形式 1)
Question→Key Word1, Key Word2, Key Word3, Key Word2
   ……
这表示一个问句由许多的关键词(Key Word)组成。
倒排索引即翻转过程,表示为:(形式 2)
Key Word1, Key Word2, Key Word3, Key Word2→Question
建立倒排索引的过程就是将形式 1 转化为形式 2,并且要进行 Key Word 与Question 的合并

5、词向量模型

词向量技术来源于谷歌年发布的幵源工具word2vec。词向量技术分为两种模型,第一种模型是CBOW,第二种模型是SKIP_GRAM..

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值