自动问答系统总结 第1篇
FAQ(FAQ,frequently-asked questions)问答系统表示常见问题问答系统,常用于一些特定领域的智能客服,将用户经常问到的高频问答对索引起来,当新的提问命中时可以快速回答,准确而高效。 本文介绍一个简单的FAQ问答系统实现。基于检索和排序的两阶段框架,检索阶段基于Elasticsearch检索引擎、排序阶段基于语义匹配深度学习模型。后端基于SpringBoot系列框架。
FAQ问答大概的对话流程示意图如下:
系统的大致框架如下图所示:
以对话为例说一下系统各个模块的协同:
值得一提的是,Redis的作用是对话状态管理,即每一个用户于系统交互都会在Redis中创建一个与之对应的对话状态(dialogue status),这个对话状态可以用来区分不同用户,也可以用来进行多轮对话(保存上一步对话的节点数据)。
自动问答系统总结 第2篇
整个FAQ问答系统就用了一张表,faq问答对,名称为faq_pair,表结构如下:
该系统配置一些自定义的状态码和说明,用一个枚举类CodeMsg
表示。 这些状态码可以用于定位问题所在,也可以让前端区分不同的返回值代表的含义等等。
项目定义了用户配置文件,通过在SpringBoot默认配置文件
中配置以下参数引入该配置文件
中自定义了一些参数,可以根据需要随时修改而不用改源码,如对话相关的参数:
对话相关参数的配置类如下:
用的也是推荐的依赖包,引入的pom依赖如下:
对话流程表示从用户问题输入,到找到答案输出的流程,流程图如下。
多轮对话按规则执行,逻辑上组织为一棵树,示意图如下:
一颗多轮对话树在物理上为一个json文件,在更新多轮对话树时json文件将被转换成数据对象MultiQaTreeNode
,然后添加到redis中。
MultiQaTreeNode
类如下:
自动问答系统总结 第3篇
对话是核心功能,提供一问一答的交互式方式。
人机对话:用户提出问题,系统给出回答。
FAQ问答对持久化保存在MySQL中,管理员只需维护MySQL中的数据。但是在对话时,系统不会去访问MySQL,而是通过ES检索引擎进行检索。因此,保证MySQL和ES的数据一致非常重要。
全量同步:将MySQL中的问答对数据全部同步到ES索引中。 更新多轮问答树:多轮问答基于多轮JSON,逻辑上为树的组织结构,需要将JSON文件读取到Redis中存起来。