1. 架构
1.1 整体架构
接入层:web端、移动端,用户请求
应用服务:
- TaskBot
- kbbot:依赖知识库:QA、知识图谱
- chatBot:闲聊系统
运营:
标注、运营、评估、分析
基础服务:
算法、工程、数据、数据源、生产平台
1.2 基础架构
上面工程圈出来的这一块包括-也叫模型架构:
注解:
SQL:查询语言
模型管理:
- 算法模块
- 工程 模块
- 这些模型如何管理
- 根据用户的反馈做实时计算
- 数据
- 数据采集:只需要需要的字段
- 数据挖掘
- 数据聚合、迁移、清洗
- 数据解析之后会落到业务日志,在存储到mysql、redis中
1.3 技术难点
- 数据冷启动(大多数情况下,没有足够的数据来训练型):
先用一个通用的模型,等到数据足够多的时候优化这个模型;先用规则的方法做,先把这个模块做起来,等到数据足够多的时候,再来启用型的方法 - 多轮对话(多领域的多轮对话很难,目前还没有攻破)
单领域对话技术做得很好,比如说像最简单的订机票可以做得很好。。多领域对话技术比较难,比如订机票、查物流、退换货等 - 人机协作
没有办法最大化机器人的价值,机器人在整个智能客服的系统里面仍然是一个辅助的作用,而不是主要的作用。
技术应用发展过程
4. 单个关键词匹配
5. 多词匹配+模糊查询
6. 关键词匹配
7. 搜索技术神经网络
1.4 基于知识库的问答 流程
- 基于知识库的问答可以使用检索或者分类模型来实现。检索式回答的流程是:首先对用户的输入问题做处理,如分词、抽取关键词、同义词扩展计算句子向量等;
- 然后基于处理结果在知识库中做检索匹配,例如利用BM25、TF-IDF或者向量相似度等匹配出一个问题集合,这类似推荐系统中的召回过程;
- 由于是一个问答系统,最终是直接返回给用户一个答案,因此需要从问题集合中挑出最相似的那个问题,这里会对问题集合做重排序,例如利用规则、机器学习或者深度学习模型做排序,每个问题会被打上一个分值,最终挑选出top1,将这个问题对应的答案返回给用户这就完成了一次对话流程。
- 在实际应用中,我们还会设置阈值来保证回答的准确性,若最终每个问题的得分低于阈值,会将头部的几个问题以列表的形式返回给用户,最终用户可以选择他想问的问题,进而得到具体的答案
RAG
1.5 KBQA如何做冷启动?
- 知识为主的QA
- 知识库
- 首先,需要找到知识.
- 历史上的QA数据对。
- 聚类
- 阅读理解(NLP)
- 针对知识Q,对应的A找运营给你写话术
- 纯人工的过程,我们需要给一个知识库,让运营的人去这个知识库的平台为每一个知识配置答案
- OA对
- 通过意图识别去做,这个只适合的是意图不能太多,不建议维护太多的意图,因为分类的准确率会有折扣
- 匹配去做,更像一个搜索任务
- OA匹配配:直接去检索对应的答案
- QQ匹配:每一个知识,有很多的
相似问法
,然后我们是要拿当前Q去这个知识所对应的相似Q里面直接做匹配,选一个得分最高的出来
- 首先,需要找到知识.
- 知识库
这是基于知识库的,知识库的覆盖率、命中率非常重要。所以构建知识库很重要。
1.6 TaskBot-一个工作流
-
具有固定流程的特定场景下的提供服务
-
用户的需求一般较复杂,通常需要机器人和用户做多轮互动以帮助用户明确目的自然语言理解模块会识别出当前输入问题的意图和槽位,然后输入到对话管理器去决定下-步的回答动作,最终再通过自然语言生成模块生成答案返回给用户
-
NLU:将本文信息映射为实际完成的意图
-
NLG: 话术,有基于模板的,生成回复信息
-
DM: 对话管理,包括DST–对话状态、PL–对话策略
DST(比如要拿到用户的订单、物流信息,所以会接很多API)
PL 根据DST的状态筛选出一些策略
相关的知识库KB也会被用到:DM最终给的是答案,所以要给到NLG生成话术
1.7 chatbot
- 闲聊服务是基于一个闲聊语料库,采用模板匹配、检索式回答以及生成式对话等多种技术来实现的。
- 模板匹配使用了AIML和正则表达式匹配;
- 检索式回答类似KB-Bot中的方式首先检索然后利用模型排序;
- 当模板匹配和检索式回答都不能给出闲聊回答时,我们会采用SeqSeq生成式对话,我们使用了一个标准的Seq2Seq模型,问题会首先输入到一个双向LSTM编码器,然后加入Attention机制,最终,用一个单层LSTM做解码,从而得到结果输出。生成式对话往往会生成一些让人难以理解的答案,这也是业界难以解决的问题。