这是2013年在某电商做客服机器人的架构,当时的上司说不好(其实已经是当时最优秀的方案了,向上下文方面,领先其它企业至少一年。所谓“小冰”去年双12为该电商做到的功能,我在2013年8月的时候已经实现了。甚至整体步骤的抽象,到目前为止还没有其它人提出更好的。不过我自己目前正在做打破这个架构的整体步骤划分的抽象,构建真正的智能系统),现在分享出来。不过确实还不过智能,目前正在设计真正智能的自动应答机器人。
整体组件图:
主干流程图
模块定义:
1、 接口子系统:提供外部接收和返回用户自然语言输入并控制顶层流程;
a) Web界面子系统:
b) 服务接口子系统:提供与IM等集成的webservice接口;
c) 控制模块:顶层流程控制;
2、 信息识别子系统:识别出用户自然语言输入中的信息,包括事实、任务、操作。如果无法发现,则将用户输入的原语句用于后继查询;
a) 命名实体识别模块:识别用户输入语句中的命名实体,并进行语义标注;
i. 商品名及商品属性识别模块:识别用户输入语句中的商品名和商品属性;
ii. 数字识别与超链接识别模块:识别用户输入语句中的数字和超链接;
iii. 语义标示模块:对分词后的词进行语义标注;
iv. 分词及词性标注模块:对用户输入的语句进行分词和词性标注,使用已有的开源软件;
v. 控制及归一模块:对命名实体识别的结果进行归一,选择最可能的命名实体,并控制整个命名实体识别流程
b) 任务识别模块:识别用户输入中的任务和操作;
i. SVM识别模块:使用训练好的SVM模型,进行任务识别;
ii. 依存分析模块(后期):进行语法分析,获取句子的依存结构,改进识别能力;
iii. 复杂语句识别模块(后期):对于很复杂的语句进行分析,识别其中的任务;
c) 信息识别控制模块:控制信息识别的内部流程;
d) 情感分析模块:分析用户的情感;
e) 知识查询接口:提供查询知识库的接口;
3、 任务控制管理子系统:选择合适的任务(包括FAQ等)给用户返回信息;
a) 任务接口及流程控制模块:管理任务,使用信息获取后的信息,确定调用相应的任务或者FAQ等给用户应答;
i. AIML任务模块:管理现有的基于alice实现的任务流程;
ii. 任务:添加和扩展的各种任务;
iii. FAQ控制模块:负责通过搜索为用户提供回答;
iv. 分类QA对控制模块:控制通过QA对获取答案;
b) 上下文存储模块:负责用户交互中的上下文的存储和管理;
c) 上下文查询接口:为信息识别子系统提供上下文查询接口;
d) 自动信息查询模块(后期):实现对知识图谱的自动查询;
e) 话术调用接口(后期):为任务获取话术,组装给用户的应答提供支持;
4、 系统管理子系统:系统管理功能集中;
a) 知识管理系统:知识库系统的管理平台;
i. 知识脚本查询模块:提供gremlin脚本查询线上知识库的接口;
ii. 任务图谱管理模块:提供任务图谱的更新、查看和管理;
iii. 话术管理模块(后期):提供话术更新、查看和管理
b) 接口管理模块:管理外部接口,包括监控信息查询;
c) 报表系统:提供各种系统相关报表;
5、 业务数据导入work:将业务数据导入业务知识图谱中;
a) 知识更新模块:提供增量更新业务知识图谱的功能;
6、 知识库系统:所有的知识和数据的集中存储;
a) Titan图形数据库系统:知识存储和管理的存储平台;
i. 业务图谱:将各种业务数据和发现的知识统一存储到业务图谱中,支持实时操作;
ii. 任务图谱:管理任务元模型,记录和管理实时上下文;
iii. 话书库(后期):为任务提供的话术存储;
b) 搜索系统:FAQ信息的存储平台,并对titan的知识定位提供支持;
c) 聊天日志存储系统:存储聊天日志;
d) 外部接口集成系统:集中管理大量的外部接口,提供内部接口适配;
e) 分类答案存储系统:对于SVM分类获得的QA对的答案进行存储;
7、 知识发现系统:从各种数据中发现系统需要的信息和知识;
a) IM日志导入接口:导入IM日志的接口;
b) Jimi日志导入模块:将在线日志导到离线日志中;
c) 问题挖掘模块:获取可能存在的QA对和任务;
d) 模型训练模块:对系统需要的统计模型进行训练;
e) 离线语料存储管理模块:存储和管理离线的语料。
已完成工作:
1、 接口子系统:
a) Web界面系统;
2、 信息识别子系统:
a) 命名实体识别模块第一版本;
b) 基于词的SVM模型(需要升级为基于语义的SVM模型);
3、 任务控制管理子系统:
a) 任务接口及流程控制模块第一版本(未集成AIML和FAQ控制);
b) FAQ控制模块;
c) AIML任务模块;
d) 索引控制模块;
e) 上下文查询接口第一版本;
f) 上下文存储模块第一版本;
4、 系统管理子系统:
a) 知识脚本查询莫开第一版本;
b) 接口管理模块;
5、 业务数据导入work
a) 商品知识图谱第一期构建(第一版)导库进行中;
6、 知识库系统:
a) 搜索系统;
b) 分类答案存储系统;
c) 任务图谱模型第一版确定,并已构建多个任务;
d) 外部接口集成系统;
e) 聊天日志存储系统;
需要进行工作:
1、 接口子系统:
a) 服务接口子系统实现;*
b) 新控制模块;*
c) Web子系统升级;
2、 信息识别子系统:
a) 基于语义的SVM分类模型构建;**
b) 命名实体识别改进;
c) 信息识别控制模块实现;*
d) 情感分析模块实现;*
e) 知识查询接口;*
3、 任务控制管理子系统:
a) 任务接口及流程控制模块改进;
b) AIML任务模块改造;
c) FAQ控制模块改造
4、 系统管理子系统:
a) 知识查询脚本模块改进;
b) 知识更新模块开发(商品知识图谱);**
c) 任务图谱管理模块开发;*
5、 业务数据导入work**
a) 商品知识图谱完善;
b) 商品知识图谱实时更新实现;
c) POP知识图谱导入;
d) 活动知识图谱导入;
e) 供应商知识图谱导入;
f) 物流配送知识图谱构建和导入;
6、 知识库系统:
a) 任务图谱改进;
b) 聊天日志存储系统升级;
c) 分类答案存储系统升级;
d) 搜索系统与Titan集成;**
e) Titan研究与维护;**
7、 知识发现系统:*
a) Jimi日志导入模块实现;
b) IM日志导入接口实现;
c) 问题挖掘模块实现;
d) 模型训练模块实现;
e) 离线语料存储管理模块实现