针对不同问题,美团的智能问答系统包含多路解决方案:
实际落地应用时,KBQA系统面临着多方面的挑战,例如:
下面将详细讲述我们是如何设计高准确、低延时的KBQA系统,处理场景、上下文语境等信息,准确理解用户、捕捉用户意图,从而应对上述的挑战。
对于KBQA模型,目前的主流解决方案有两种,如下图2所示:
基于语义解析的方法可解释性更强,但这种方法需要标注大量的自然语言逻辑表达式,而信息抽取式的方法更偏向端到端的方案,在复杂问题、少样本情况下表现更好,但若子图过大,会显著降低计算的速度。
因此,考虑到两者的优势,我们采用将两者结合的方案。如下图3所示,整体的流程分为四大步骤,以“故宫周末有学生票吗”为例:
下面将介绍我们对于重点模块的建设和探索。
Query理解是KBQA的第一个核心模块,负责对句子的各个成分进行细粒度语义理解,其中两个最重要的模块是:
实体识别是句法分析的重要步骤,我们先基于序列标注模型识别实体,再链接到数据库中的节点。对于该模块我们主要做了以下优化:
最终,该模块会输出句子中各个重要成分的类型,如下图4所示:
依存分析是句法分析的一种,它的目的是识别句子中词与词的非对称支配关系,在输出的结果中用有向弧表示,该弧线由从属词(dep)指向支配词(head)。对于KBQA任务,我们定义了五种关系,如下图5所示:
依存分析主要有两种方案:基于转移的(Transition-based)和基于图的(Graph-based)。基于转移的依存分析将依存句法树的构建建模为一系列操作,由模型预测每一步的动作(shift、left_arc、right_arc),不断将未处理的节点入栈并赋予关系,最终构成句法树。基于图的方法则致力于在图中找出一棵最大生成树,也就是句子整体依存关系的全局最优解。考虑到基于图的方法是对全局进行搜索,准确率更高,我们采用较为经典的“DeepBiaffineAttentionforNeuralDependencyParsing”模型,它的结构如下图6所示:
该模型先通过BiLSTM对词与词性的拼接向量进行编码,之后采用对用两个MLP头分别编码出h(arc-head)和h(arc-dep)向量,去除冗余信息。最终将各个时刻的向量拼接起来得到H(arc-head)和H(arc-dep),且在H(arc-dep)上拼接了一个单位向量,加入中间矩阵U(arc)进行仿射变换,得到dep与head的点积分数矩阵S(arc),找到每个词依存的head。
有了依存分析的结果,我们可以更好地识别关系、复杂问题,具体的特征使用方法将在下文进行介绍。
关系识别是KBQA中另一个核心模块,目的是识别出用户Query所问的关系(Predicate),从而与主实体(Subject)联合确定唯一子图,得到答案(Object)。
随着大规模预训练语言模型的出现,BERT等大模型在匹配任务上取得了SOTA的结果,通常业界通用的方法主要归类为以下两种:
为了充分利用BERT的语义建模能力,同时考虑实际业务的线上延时要求,我们在推理加速、数据增强、知识增强方面做了以下三点优化:
经过上述一系列迭代后,模型的速度、准确率都有了大幅的提升。
在真实场景中,大部分问题可以归为以下四类(绿色为答案节点),如下图8所示:
下面介绍针对不同类型的复杂问题,我们所进行的一些改进。
通过对线上日志的挖掘,我们将约束分为以下几类,如下图9所示:
对于带约束问题的回答涉及两个关键步骤:约束识别和答案排序。
通过KBQA系统中的依存分析模块,我们可以识别出用户在实体或关系信息上所加的约束限制,但约束的说法较多,且不同节点的约束类型也不一样,因此我们在构造数据库查询SQL时先保证召回率,尽量召回实体和关系路径下的所有候选节点,并在最终排序模块对答案约束进行打分排序。
进行复杂条件优化后,先通过前置模块识别到实体、关系和约束,组成约束文本,再与当前召回子图的Key值候选进行匹配,得到最终的答案。
多跳问题是天然适合KBQA的一类问题,当用户询问商户中的设施、服务、商品等实体的信息时,我们只需要先在图谱中找到商户,再找到商户下的实体,接着找到下面的基本信息。如果使用FAQ问答的解法,就需要为每个复杂问题都设置一个标准问,比如“健身房的位置”、“游泳馆的位置”等。而在KBQA中,我们可以很好地对这类问题进行压缩,不管问什么实体的位置,都问的是“位置”这条边关系,只是起始实体不同。
在KBQA系统中,我们先依赖依存分析模块对句子成分间的依赖关系进行识别,之后再通过关系识别模块判断句子所询问的关系跳数以及关系,具体流程如下图12所示:
借助实体识别的类型,我们可以将句子中的重要成分进行替换,从而压缩候选关系配置的个数、提升关系识别准确率。在对句子进行了充分理解后,系统会基于主实体、关系、跳数对子图进行查询,并输入给答案排序模块进行更细粒度的约束识别和打分。
为了自动化地批量挖掘用户观点,我们拆解了两步方案:观点发现和Evidence挖掘,如下图14所示。
在上文中,我们针对多跳、带约束等复杂问题设计了不同的方案,虽然可以在一定程度上解决问题,但系统的复杂度也随之提高。基于关系识别模块的预训练思路,我们对通用的、端到端的解决方案进行了更多的探索,并在今年的EMNLP发表了《Large-ScaleRelationLearningforQuestionAnsweringoverKnowledgeBaseswithPre-trainedLanguageModels》论文。
经过上述任务预训练后,BERT模型对于Query和结构化文本的推理能力显著提升,并且在非完全KB的情况下有更好的表现,如下图17所示:
经过一年多的建设,当前KBQA服务已经接入美团的旅游、酒店、到综等多个业务,辅助商家及时回答用户问题,并提升了用户的满意度和转化率。
酒店是用户出行的必备需求之一,但一些中小商家没有开通人工客服入口,无法及时回答用户信息。为满足用户对详情页内信息的快速查找,智能助理辅助未开通客服功能的酒店商家进行自动回复,提升用户下单转化率。用户可询问酒店以及房型页的各类信息,如下图18所示:
门票地推致力于帮助旅游商家解决主要的卖票业务,在景区高峰时段,线上购票相比于排队更加便捷,然而仍有很多用户保持着线下购票的习惯。美团通过提过二维码以及简单的交互,提升了商户卖票以及用户购票的便捷程度。同时,我们通过在购票页内置「智能购票助手」,解决用户购票过程中的问题,帮用户更快捷地买到合适的门票,如下图19所示:
回到技术本身,虽然目前我们的KBQA已能解决大部分头部问题,但长尾、复杂问题才是更大的挑战,接下来还有很多前沿技术值得探索,我们希望探索以下方向:
也欢迎对KBQA感兴趣的同学加入我们团队,一起探索KBQA的更多可能性!简历投递地址:wangsirui@meituan.com。
如寐、梁迪、思睿、鸿志、明洋、武威,均来自搜索与NLP部NLP中心知识图谱组。