百度开源 FAQ 问答系统—AnyQ
前言
近年来,随着人工智能技术的发展,人机对话技术得到越来越多的关注,人机对话产品也不断涌现。其中,智能客服作为人机对话的一个典型场景表现出极大的商业潜力和很强的研究价值,各企业也争先恐后的推出自己的智能客服产品。
FAQ 问答技术作为智能客服系统最核心技术之一,在智能客服系统中发挥重要作用。通过该技术,可实现在知识库中快速找到与用户问题相匹配的问答,为用户提供满意的答案,从而极大提升客服人员效率,改善客服人员服务化水平,降低企业客服成本。
百度在今年 7 月的 AI 开发者大会上开源了首个工业级基于语义计算的 FAQ 问答系统——AnyQ,旨在赋能开发者,为人工智能技术及应用蓬勃发展贡献力量。
FAQ 问答技术难题与现状
FAQ 问答主要有以下技术难题:
- 用户问题较为口语化,包含大量省略、指代等现象;
- 用户问题复杂多样,基于字面信息很难精准匹配语义相同问题;
- 实际产品应用中,对系统鲁棒性、整体性能要求较高;
学术界研究的 FAQ 问答技术主要集中在问题匹配单点技术上,对整体 FAQ 问答系统研究较少。而工业界使用的 FAQ 系统对外则极少披露细节。
AnyQ 系统框架
开源 AnyQ(Answer Your Questions) (https://github.com/baidu/AnyQ) 系统采用配置化、插件化框架设计,搭载由百度自主研发、业界领先的 SimNet 语义匹配技术,针对 FAQ 问答的种种技术难题给出了高效的解决方案。
AnyQ 系统主要由 Question Analysis、Retrieval、Matching、Re-ranking 等核心部件构成。系统框架如图示:
AnyQ 系统特色
特色 1——框架设计灵活,插件功能丰富
AnyQ 系统的配置化和插件化设计,使得开发者可以自主配置选择系统的功能,当前支持 20 多个插件。同时,开发者也可根据需要便捷地将定制化的功能以插件的方式加入系统。
• 配置化
AnyQ 系统集成了检索和匹配的丰富插件,通过配置的方式生效;以相似度计算为例,包括字面匹配相似度 Cosine、Jaccard、BM25 等,同时包含了语义匹配相似度。
• 插件化
AnyQ 的所有功能都是通过插件形式加入,用户自定义插件,只需实现对应的接口即可,如 Question 分析方法、检索方式、匹配相似度、排序方式等。
特色 2——极速语义检索
传统倒排索引只考虑了输入问题和索引问题间的字面重合度,这种技术在智能客服场景中存在很大问题,FAQ 集合通常是专业人员整理,其问题形式比较书面和正式,而用户问题更加口语化,两者之间即使语义一致,但表述上差别迥异。与基于倒排索引的 FAQ 问答系统相比,AnyQ 在检索方面采用了业界前沿的语义检索技术。
语义检索技术将用户问题和 FAQ 集合的相似问题通过深度神经网络映射到语义表示空间的临近位置,检索时,通过高速向量索引技术对相似问题进行检索。语义检索原理如下图:
特色 3——业界领先语义匹配技术 SimNet
问题相似度计算是 FAQ 问答系统的核心,其算法效果好坏决定了整个系统的效果。
AnyQ 使用 SimNet 语义匹配模型构建文本语义相似度,克服了传统基于字面匹配方法的局限。
SimNet 是百度 NLP 于 2013 年自主研发的语义匹配框架,在百度搜索、百度信息流、百度地图等产品广泛应用,主要包括 BOW、CNN、RNN、MM-DNN 等神经网络模型。此外,我们基于 SimNet 框架集成了学术界主流模型:Match-Pyramid、MV-LSTM、K-NRM 等。SimNet 支持 PaddlePaddle 和 Tensorflow 两种平台训练。基于 SimNet 语义匹配框架,开发者可以快速训练已有的语义匹配网络模型。
使用 SimNet 训练出的模型可以便捷的加入 AnyQ 系统中,增强 AnyQ 系统的语义检索和语义匹配能力。
本次开源包含一个基于百度海量搜索数据训练的 SimNet-BOW 模型,在一些真实的 FAQ 问答数据集上,该模型效果相比基于字面的相似度方法 AUC 提升 5% 以上,有效解决特定领域由于标注数据少无法训练出准确语义匹配模型的问题。
总结
AnyQ 系统配置化、插件化的框架设计有助于开发者快速构建、快速定制适用于特定业务场景的 FAQ 系统。AnyQ 包含了百度积累多年的 SimNet 语义匹配框架,开发者可根据自身产品需求训练自己的语义模型,提升产品效果。此外,针对无任何训练数据的开发者,AnyQ 还包含了基于百度海量数据训练的语义匹配模型,开发者可零成本直接使用。