机器人围棋打败李世石、柯洁后,人工智能越来越火。智能问答作为一项新兴技术,也是人工智能的重要组成部分。智能问答一般用于解决企业客服、智能信息等应用场景。它有多种实现方式,包括简单的规则实现、基于检索的实现和编码器-解码器框架生成。本文采用几种常见的问答技术,对大观数据智能问答相关原理的研究进行综述。1.基于规则的智能问答基于规则的智能问答通常会预先设定一系列的问答规则。当用户输入问题时,它会去规则库中进行匹配,看是否满足某个规则。如果满足,则返回规则。相应的结果。例如,如果“*你好*”->“你好!”在规则库中设置,那么当用户输入“Hello”时,机器人会自动返回“Hello!”。如果规则库很大,达到海量级库,可以为规则建立倒排索引。当用户输入新的问题时,首先去倒排索引中寻找最好的规则集,然后用这个集合中的规则进行规则匹配并返回。使用规则库进行智能问答的优点是简单方便,准确率也高;缺点是需要经常维护和扩展规则库,覆盖面小,无法回答新问题。2.基于检索式的智能问答基于检索式的智能问答与搜索引擎非常相似,但又不同于搜索引擎。与搜索引擎相比,智能问答更侧重于对用户意图和语义的理解。它基于历史问答语料库建立索引,索引信息包括问题、答案、问题特征、答案特征等,当用户提出问题时,会在索引数据库中匹配该问题。首先,进行关键词和语义的粗略搜索,调出大量可能符合答案的问答对;**一个或多个结果。图12.1粗排序策略粗排序策略与一般的搜索引擎非常相似。主要基于粗细粒度分词、词重要度计算、核心词识别、命名实体识别、语义归一化等技术。排阶段尽量回忆相关问题。1)单词重要性的计算:通过计算重要性,能够代表问题的词汇的权重越高,这些词汇的候选集在召回时就越有可能被召回。例如:“靠谱的英语培训机构有哪些?”本题中,“English”、“training”、“institution”是高权重的词,“reliable”是高权重的词,“which”是低权重的词;因此,与“英语培训机构”匹配的答案越有可能被召回。2)核心词识别:核心词是候选集中必须相关的词。比如“北京住宿多少钱?”,核心词是“北京”和“住宿”。如果候选集中没有这两个相关词,比如“HowistheaccommodationinShanghai?”满足问题的需要。3)命名实体识别:通过命名实体识别,可以帮助识别出问题答案中的核心词,也可以加权核心专有名词的重要性,辅助搜索引擎提高召回效果。4)语义归一化也是扩大召回率的重要手段。可能有很多方法可以问同一个问题。如果不同的提问方式得到不同的答案,或者召回的结果数量不同,那就很烦人了。比如“刘德华的生日是哪一天?”,“刘德华是哪一天出生的?”,如果不做语义归一化,有可能某道题不会回忆出结果。2.2细排序策略通过粗排序,搜索引擎返回了大量潜在相关的结果,例如500个。如何从这500个问题中找出一个或几个最好的问题是对算法准确性的考验。通常,基于检索的问答系统使用语义或深度学习方法来找到最佳匹配答案。1)基于句子相似度的算法。基于句子相似度的算法有很多。比较好的是基于word2vec的句子相似度计算和基于sentence2vec的句子相似度计算。基于word2vec计算两个句子的相似度,就是从词向量的角度计算第一个句子转换为第一个句子的代价:词向量有一个有趣的特征,可以通过两个词向量相减来计算两者之间的差异换句话说,这些差异可以应用到语义表达上。例如:vec(柏林)–vec(德国)=vec(巴黎)–vec(法国);这个特性可以用来计算句子的相似度。假设两个词xi,xj之间的距离为ci,j=xi-xj2,可以认为是将xi转换为xj的代价。一个句子可以用一个词袋模型d∈Rn来表示,模型中一个词i的权重为di=cij=1ncj,其中ci是词i在句子中出现的次数。设T∈Rn*n为转换矩阵,Tij表示将句子d中的单词i转换为句子d'中的单词j需要多少权重,如果要将句子d完全转换为句子d',成本计算如下:如果用Xd表示句子中的词向量用权重di加权平均得到的句子向量,则可以推导出句子转换成本的下限为两个句子向量之间的欧氏距离。一般来说,这个下限意味着两个短句之间的相似度足够了。如果需要通过完全优化的方法计算minT≥0i,j=1nTijc(i,j)的值,可以通过EMD求解器算法计算。2)基于深度学习计算问答匹配度。句子相似度是根据句子向量之间的距离来计算的,可以覆盖大部分情况,但是当句子表面相似但意思完全不同时,就会出现一些问题,比如“我喜欢冰淇淋”和“我不喜欢”icecream”,分词为“I”、“No”、“Like”、“IceCream”。两句话的相似度非常高。只有一个“否”字不同,导致两句话的意思完全相反。为了应对这种情况,需要使用深度模型来捕捉句子的局部特征进行语义识别。如图2所示,Q是用户的问题,D是返回的答案。对于一个问答句,先把它映射到一个500k的BOW向量TermVector。因为TermVector是一个稀疏矩阵,所以可以使用WordHashing或者其他Embedding方法将其映射到一个30k的词向量空间。接下来的l1、l2、l3层是传统的MLP网络,通过神经网络得到query和document的语义向量。在计算出(D,Q)的余弦相似度后,用softmax归一化得到的概率值就是整个模型的最终输出,这个值作为监督信号进行有监督训练。该模型通过挖掘通过搜索点击日志构建的query和对应的正负文档样本(点击/未点击),并将其输入到DSSM中来训练模型。3)基于卷积神经网络计算问答匹配度。句子中的每个词单独看都有单独的意思,但结合上下文就可能有不同的意思;比如“Microsoftoffice”和“Isatintheoffice”,这两句话中office的意思是完全不同的。通过基于卷积神经网络的潜在语义模型,我们能够捕获此类上下文信息。如图3所示,query或document中的一系列n-gramterm首先通过滑动窗口构建,如图中Word-n-gram层中的trigram;然后trigramterms通过word-hashing或者embedding表示是一个90k的向量;每个字母八字向量由卷积向量卷积矩阵Wc进行卷积,可以得到一个300维的卷积层Convolutionallayer;***通过max-pooling***取Convolutional层中的每个维度的值,作为文本的latentsemanticvector。该模型还通过挖掘搜索日志进行监督训练。通过卷积神经网络,可以获得句子中最重要的信息。例如,在下面的句子中,突出显示的部分是卷积神经识别的核心词。它们是300维Max-pooling层向量中5个***神经元的激活值,通过回溯找到原句中的短语。microsoftofficeexcel可以允许远程代码执行欢迎来到公寓办公室4)基于主题模型计算问答匹配度。一般来说,短文本中的词比较稀疏。如果直接通过共现词来匹配,效果可能不太理想。华为诺亚方舟实验室针对短文本匹配问题提出了DeepMatch神经网络语义匹配模型,通过(Q,A)语料库训练LDA主题模型,得到其主题词,用于检测两个文本是否具有语义相关性。该模型还通过训练具有不同“分辨率”的主题模型(“分辨率”是指指定主题的数量,高分辨率模型的主题词通常更具体,主题词的低分辨率模型通常更抽象)。在高分辨率级别没有共现关系的文本可能在低分辨率级别具有更抽象的语义关联。DeepMatch模型使用主题模型来反映词的共现关系,可以避免短文本词稀疏带来的问题,并且可以获得不同抽象层次的语义相关性。如图4所示,绿色和紫色块代表相同分辨率下不同主题的X和Y文本中最流行的主题块,与上一层分辨率(p-layerII)的主题不同。通过它是否与上一层的主题块重叠来获得关联。这样,通过多层主题,可以构建一个神经网络,并以有监督的方式训练相关的权重。3.生产式智能问答生产式智能问答系统主要使用seq2seq通过翻译模型进行智能答题。问题是翻译模型的原始语言,答案是翻译模型的目标语言。Seq2seq模型包含两个RNN,一个是Encoder,一个是Decoder。编码器将一个句子作为输入序列,每个时间片处理一个字符。Decoder使用Encoder生成的上下文向量,使用时间序列生成翻译(答案)内容。(大观数据蒋永清)图5在Encoder中,每一个隐藏状态都会影响下一个隐藏状态,最后一个隐藏状态可以认为是序列的汇总信息。***这个状态代表了序列的意图,也就是序列的上下文。通过上下文信息,Decoder会生成另一个结果序列。对于每个时间段,解码器都会根据上下文和之前生成的字符生成一个翻译字符。图6中的模型存在一些不足:首先,该模型无法处理变长字符序列,而一般翻译模型和问答模型中的序列长度是不确定的。另一个是只有一个上下文变量不足以完整表示输入序列的信息。序列变得很长后,会丢弃大量信息,因此需要多个上下文变量和注意力机制进行处理。3.1Padding通过Padding方法,可以将问答串固定为一个定长序列。例如,以下序列用于填充:EOS:序列的结尾PAD:填充字符GO:开始解码的字符UNK:字典中不存在的字符对于问答:Q:Howare你在做?A:你做得很好。padding会生成一个固定的字符串如下:Q:[PAD,PAD,PAD,PAD,"?","喜","How","得","过","你"]A:[GO,“Pass”,“Get”,“Very”,“Good”,“.”,PAD,EOS,PAD,PAD]3.2AttentionMechanismSeq2Seq的一个局限性是输入序列的所有信息只能编码成一个固定的-length在数组上下文中,如果输入序列变长,我们很容易丢失信息,因此Seq2Seq模型不适用于长输入序列。通过引入注意力机制,Decoder在翻译(answer)时可以根据权重有选择地提取输入的隐含层变量进行计算,从而在生成输出时考虑到输入的关键信息。如图7所示,每个输入的状态yi不仅与之前的状态yi-1,即输入的隐藏状态si有关,还与注意力向量ci有关。这里的attentionvector不再是单一的c,而是对每一个输入yi都有一个对应的ci,计算方式如下:eij是一个对齐模型,计算位置i处的输入和位置处的比例关系j的输出。它由输出隐藏状态si–1(用于计算si和输出状态yi)和输入序列的第j个隐藏变量hj计算得出。通过将问答对训练为翻译模型(问题作为原始语言,答案作为目标语言),当一个新问题进来时,可以在没有任何历史相似问题的情况下获得更接近的答案。但是由于现在的翻译模型还不够成熟,经常会翻译出莫名其妙的答案,让人摸不着头脑,如下:你好->你好,很高兴认识你->我也是你->我是说,我们是朋友Arewefriends->Nowhyarewenotfriends->wedon'tknow,wedon'tknowwhereyouareveryoptimistdata->我们知道通过生成翻译模型,甚至基于大量语料库训练,很可能效果还是不理想,所以常被用作基于规则和检索式问答系统的辅助方法。4.小结本文介绍了智能问答技术的相关原理,描述了实现智能问答的一般方法。借助深度学习技术,智能问答的效果比传统机器学习提升约20%。大观数据拥有多年的自然语言处理技术积累,紧跟行业趋势,在文本语义、信息检索、智能问答等领域持续深耕,助力各类企业享受大数据技术成果。【本文为专栏作者“大观数据”原创稿件,如需转载可通过专栏取得联系】点此查看该作者更多好文
