高茂雨 58技术

导读: 58智能问答机器人是由58AI Lab自研的一套人工智能问答系统,结合自然语言处理、深度学习、语义理解、智能推荐等多种人工智能技术,通过自主学习,精确识别用户意图,实现与用户进行智能问答。实现了QABot业务咨询问答、TaskBot任务多轮对话、问答推荐等多种能力。智能问答机器人在帮帮智能客服场景下整体问题解决率以及在帮帮商家版场景下商机转化率都达到了接近人工客服的水平。

本文收益:了解智能问答机器人的问答引擎架构,熟悉QABot、TaskBot、问答推荐的实现和迭代过程,进而得以窥探服务架构迭代的一般思路。

背景

58同城作为中国领先的生活服务平台,B端商家可以在平台上发布房产、二手车、黄页等信息,C端用户可以通过平台获取买房、租房、买车、寻求本地服务等服务,同时,平台还有销售以及客服人员在线与商家、用户进行沟通,这样,每天都会产生大量的问答数据。

58智能问答机器人是由58AI Lab自研的一套人工智能问答系统,结合自然语言处理、深度学习、语义理解、智能推荐等多种人工智能技术,通过自主学习,精确识别用户意图,实现与用户进行智能问答。实现了QABot业务咨询问答、TaskBot任务多轮对话、问答推荐等多种能力。

智能问答机器人和人工在线沟通系统两部分相结合可以在客服、助手、营销等场景广泛使用,大大提高问答沟通效率和用户体验。

图1 智能问答机器人迭代历程

2017年10月,在提高用户/商家与人工客服沟通效率的场景下,我们基于智能问答机器人实现了智能客服系统。系统大大提高了人工客服的工作效率,方便用户/商家问题的快速解决,节省了客服人力成本。

2019年8月,为提高用户与商家的沟通效率,我们上线了帮帮商家版系统,帮助商家智能问答、引导商机,实现为商家赋能。

总体架构

图2 智能问答机器人总体架构

智能问答机器人系统结合自然语言处理、深度学习、语义理解、智能推荐等多种人工智能技术,依托58业务问答数据、多轮对话数据、实时反馈数据等数据构建业务知识库、训练问答模型,通过自主学习,精确识别用户意图,对用户问题进行回答。

问答流程

智能问答机器人的问答流程如下图,用户在页面输入问题,分别封装成IM消息或http消息,系统通过58自研消息总线和自研Web框架将IM消息、http消息经接入层中转到问答引擎,问答引擎通过NLP处理、意图识别、文本检索、模型预测等处理,统一对用户问题进行回答。

图3 问答流程

对于智能问答机器人未能解决的问题,通过58自研消息总线接入到人工在线沟通系统中,由人工在线协助解决用户问题。

工程架构

工程架构的设计上,力求达到灵活迭代、快速AB实验、确保效果持续提升的目标。为此,智能问答机器人问答引擎架构如下图,主体采用三层结构的设计,分为:接入层、逻辑层、数据层。

图4 智能问答机器人问答引擎架构

接入层包括模板服务、接入服务、问答管理服务以及商机引导服务。模板服务对前端展示层提供模板数据,接入服务接收前端展示层的IM/http消息。问答管理服务对消息进行分发处理,并结合逻辑层的问题识别结果实现QABot业务咨询问答、TaskBot任务多轮对话、ChatBot闲聊、问答推荐等功能。商机服务包括商机多轮引导、商机催留以及商机挖掘与推送,服务能根据用户意向,在会话过程中对用户进行定向递进式引导,同时商机挖掘服务将商机进行挖掘提取,将用户的意向需求最大化的保留,并传递给商家。

逻辑层采用微服务架构,主体服务负责问答流程、问答策略的控制和管理。NLU服务将用户问题转化为机器可以理解的信息,规则匹配、检索服务、预测服务分别从规则、统计、以及机器学习/深度学习角度来实现对用户问题从简单到复杂的匹配与识别方法。排序服务对意图模糊的用户问题进行重排序,为用户提供更精准的列表回答。对话管理服务实现TaskBot任务多轮对话,通过与用户的多轮交互,实现不同业务的多种服务类功能、以及针对商机的主动引导功能,提供个性化回答和商家赋能。基于海量语料打造的聊天服务,可以跟用户聊天互动,增加亲和感,提高用户粘性。

图5 逻辑层快速AB实验流程

逻辑层架构上,闲聊服务、预测服务、排序服务等各个微服务依赖于WPAI人工智能平台实现多种算法实验模型。主体服务通过借助ABTest实验平台日晷的多层实验实现多种策略、多种算法模型的同时在线实验。这样的架构设计实现了模型的灵活迭代、快速AB实验,方便问答效果的持续提升。

数据层包括问答数据、编辑运营数据、以及知识库数据,依赖于数据层数据可生成意图识别模型、问答模型,实现对用户问题的自动问答。数据层的操作管理主要通过标注系统和接入平台系统来实现。其中,标注系统主要面向编辑人员,支持线上问题的评测标注、知识库扩充标注、以及编辑运营等功能。接入平台系统主要面向业务接入方,支持业务接入、知识库建设、数据反馈等功能。

图6 问答数据联动过程

数据联动打通数据闭环后,问答数据可以在模型训练上、问答匹配等场景上被充分利用,数据上保证了效果的持续迭代。

下面以QABot问答服务、TaskBot多轮对话服务、问答推荐服务为例,分别介绍其架构设计和实现概要,后续其他文章会逐步对各个子系统的内部细节进行详细阐述。

1、 QABot

QABot基于不同业务线/商家的问答知识库,可以充分理解用户意图,提供专业的回复,解决业务线/商家的各种高频常见咨询问题,包括集团账户、信息、认证、招聘、房产、二手车和黄页等业务以及商家的常见问题。

图7 QABot示例

QABot主要流程上结合深度学习问答模型,对用户问题进行意图识别、模型回答、检索匹配等多策略融合,生成最终答案,为用户返回唯一答案、列表答案、闲聊答案或拒识答案。如图7所示,智能问答机器人自动解答用户问题。

QABot实现流程

QABot的实现流程大致如图8所示。

图8 QABot实现流程及示例

问答引擎逻辑层NLU服务对用户问题进行分词、词性分析、同义词及关键词抽取、词性过滤等NLP处理。针对用户输入问题,检索服务主要实现基于BM25等模型的检索匹配功能,预测服务主要实现基于BI-LSTM+DSSM等深度学习模型的语义匹配功能。排序服务对检索服务、预测服务返回的列表问题进行打分排序,以达到更高效解决用户问题的效果。同时,规则匹配模块结合离线实验规则,实现对用户问题的规则匹配。

在项目上线初期,上述问题识别流程能够确保用户问题快速响应,支撑项目运行,后续随着业务接入方和用户问题量的增多、以及模型复杂度的提升,服务响应时长逐步增多,策略组合越来越复杂。尤其在帮帮商家版场景下,业务上需要支持商家自定义知识、行业公共知识的预测识别,同时不同业务线的问题识别流程是不同的,即使同一业务线不同业务场景下的识别流程也是不同的,例如,同样是房产业务线,在经纪人场景下需要硬匹配、软匹配、公共知识预测、个性化知识预测的流程,在品牌公寓场景下则需要实现关键词匹配、个性化知识预测的流程。这样,就对逻辑层的处理流程提出了新的挑战:

  • 性能上,满足大数据量和复杂模型下的问题识别耗时。
  • 策略上,满足不同业务、场景的个性化问答流程灵活配置。

性能优化

针对性能上的挑战,一方面对问题识别流程进行优化,串行处理变并行处理;另一方面逐步优化各个服务耗时,在不降低模型效果指标的基础上降低服务耗时。

图9 并行化处理问答流程

如上所述,一个完整的QABot问答流程,需请求其他服务或查询数据库执行多种策略。对问答流程由串行进行并行化改造,规则匹配、检索服务、预测服务各自并行处理得到处理子结果,对各服务的子结果按照一定的策略和优先级进行融合、排序得出最终识别结果。这样,总问答流程的耗时仅依赖于最大耗时服务的耗时。

接下来对各个服务进行逐一优化,由于服务内部依赖于不同的数据库配置,并且配置会实时变化,因此需要建立一套快速查询且能够实时同步的数据缓存流程。例如,规则匹配服务会依赖于知识库数据,而知识库由于开放给各个业务方维护,因此,知识库会实时变化,变化的知识库内容毫秒级生效将能够大大提升业务方用户体验。

图10 多级缓存与实时生效数据流程

为此,问答引擎实现了一套完整的多级缓存与实时生效数据流程:

  1. 服务启动时,将数据库中的数据快速加载到服务内存,并周期性自动更新;
  2. 使用WMB消息总线,来保证缓存数据与数据库存储数据的实时同步;
  3. 对于大量的冷门数据,使用LRU缓存淘汰机制进行缓存维护。

优化后效果如下,在高并发的请求下,问答引擎耗时仍保持平稳高效的状态,如下图:

图11 智能问答流量详情

动态策略调整

在实际业务场景中,统一的问答策略虽然能满足业务需求,但整体服务耦合度高,灵活性较差,导致整体效率偏低。在很多场景下,QABot都会执行很多个性化的操作。

图12 策略支持插拔式配置

这里我们将不同的策略抽象成一个个策略盒,盒里可以是一个方法、一个服务、一个策略的融合等,然后设计一套通用的输入输出协议,最终实现了策略的插拔式配置。通过配置策略实现对各业务线、各场景问答流程的可插拔式处理,只需简单配置就可以实现个性化处理流程,极大地缩短了业务接入周期,提高了迭代效率。

服务升级优化后,在问答数据增多、模型日益复杂的情况下,保证了智能问答机器人的服务性能;同时动态调整策略,确保了各个业务方的快速接入。

2、TaskBot

TaskBot通过与用户的多轮交互,实现不同业务的多种服务类功能和商机主动引导功能,提供个性化回答,为用户节省时间,提高问题处理效率,帮助商家主动挖掘潜在商机。

图13 TaskBot实现流程及示例

如图13所示,在项目初期,针对“信息问题”等个性化问题通过前后端约定协议的方式管理多轮对话交互,实现多种自助服务。服务端识别出用户输入内容为自助服务类问题后,返回不同的消息类型与消息样式,服务端后续根据用户的消息类型、消息样式来执行固定流程的自助服务操作。

通过这种强依赖规则的方式,能够快速实现简单的自助服务。但是,在服务寻求类复杂场景下,该方式不禁捉襟见肘,主要由于以下原因:

  • 复杂场景下,并非所有规则都能够完全覆盖用户操作
  • 不同的上下文中,相同输入也应执行不同操作
  • ……

图14 TaskBot架构图

鉴于此,设计了TaskBot多轮对话管理。其架构设计如图14,主要由数据层与逻辑层组成。数据层包括NLU元数据库、多轮问答库与话术配置文件。逻辑层核心是对话管理服务、NLU服务与知识图谱服务。对话管理服务包含DST对话状态跟踪、DPL对话策略选取与NLG回复生成三个模块,NLU服务依赖人工智能平台达到理解用户意图与用户状态的目的。TaskBot通过接入日晷平台,实现了不同话术/策略的问答效果对比。

用户问题与QABot结果到达逻辑层之后,首先经过规则匹配模块对问题及回答进行意图匹配。对于匹配命中的问答对,再经过NLU模块进行BI-LSTM+CRF意图+词槽联合识别。识别结果经过知识图谱进行消歧与相关实体获取后,对话管理服务读取话术配置文件生成状态自动机,DST模块基于状态自动机匹配一组回复策略并更新用户状态,DPL模块基于用户状态选取回答模板,最终经过NLG模块对回答模板填充信息后返回给用户。

3、 问答推荐

问答推荐系统实现输入联想、猜你想问、场景排序等推荐场景,快速纠正、引导用户提问,达到减少输入错误、实现问题预判的效果。

猜你想问场景下,在用户进入智能问答页面时,引擎根据用户身份、用户历史行为以及第三方数据,为用户推荐其可能提问的问题。输入联想场景下,在用户输入问题时,推荐服务根据已输入内容,对用户输入进行引导、纠正,帮助用户快速定位问题。卡片排序场景下,实现对首页场景卡片展示顺序的重新排列。

图15 问答推荐和输入联想

通过问答推荐场景实现了减少用户输入错误、用户问题预判等功能,猜你想问和输入联想的推荐场景如上图15 所示。

初期问答推荐过程通过经典检索算法BM25来实现。首先,对知识库问题进行分词、建立正排、倒排索引。在具体推荐场景中,对用户所输入内容,提取出分词列表、以及对应词性,并检索知识库索引,进行BM25运算打分、排序,进而得出与用户输入内容关联度较高的top问题作为推荐内容。

图16 BM25实现问答推荐流程

问答推荐也是智能推荐的一种具体应用,通用的智能推荐过程大致可以分为召回、排序等过程,召回阶段得到用户可能感兴趣的大量内容,排序阶段为召回出的内容进行打分排序过滤从而得到用户真正感兴趣的推荐列表。

将通用智能推荐流程应用到问答推荐场景下,大致的问答推荐流程如图17所示。推荐服务中实现了上述推荐流程。

图17 通用问答推荐流程

问答推荐服务的架构设计,如图18,主要包括接入层、逻辑层、数据层。接入层通过IM后端消息总线、以及Web框架接收IM/http消息

图1