什么是聊天机器人
聊天机器人,是一种通过自然语言模拟人类进行对话的程序,比如微软小冰、Siri、图灵机器人等。
一般来说聊天机器人大致可分为两种,分别是任务导向型和非任务导向型。
- 任务型聊天机器人指特定条件下提供信息或服务的机器人,后文将重点介绍。
- 非任务导向型机器人一般是与人类在开放场景进行交互,提供合理的回复和娱乐消遣功能。由于非任务型聊天机器人问答内容的不确定性,因此存在很大的敏感词风险,具体表现为:
- 语料库中存在违规内容;
- 语料库过大,人工审核难度大;
- 即时经过了模型过滤,也很难保证已过滤内容的安全性;
- 即使语料库中不含有风险内容,也有可能由于用户与之对话,带来上下文联想的内容风险。
聊天机器人可以干什么
聊天机器人可以作为应用的入口和载体,可以作为运营工具,为其他业务方赋能。
- 可以支持对话、客服、游戏、虚拟形象等多种场景
- 可以支持SDK、HTTP、RPC等多种接入方式
- 通过管理平台多种技能可以自由配置
- 依托深度学习算法和大数据让机器人更智能
聊天机器人案例
任务型聊天机器人技术要点
语言理解(NLU)
Natural Language Understanding,语言理解模块,负责对传入的请求进行意图解析和实体识别,主要包括IR和NER两部分。
-
IR
Intent Recognition,意图识别,对输入的请求,解析到对应的意图,主要包括意图分类和模板匹配两部分。
1)意图分类用于对数据的预分类,为了减少后台计算量,只对分类后topN类别进入模板匹配和ner,这块需要根据日志数据提升分类准确率,存在离线学习模块;
2)模板匹配是根据用户定义的相关pattern,计算之间的匹配度(ner之后),返回精确的匹配分值。 -
NER
Named Entity Recognition,命名实体识别,如果意图包含实体信息,需要抽取对应的实体信息,则调用ner模块,获取对应实体信息。
对话管理(DM)
Dialogue Management,对话管理模块,负责处理用户对话请求和回答,包含服务接口、数据流管理、调用控制、DC(Dialogue Context,对话上下文)、DST(Dialogue State Tracking,对话状态跟踪)、DS(Dialogue strategy,对话策略)。
-
DC
Dialogue Context,对话上下文模块,处理意图之间的上下文关系,包括上一个意图是否包含指定下一个请求意图对象,每个意图进入解析的条件判断。 -
DST
Dialogue State Tracking,对话状态跟踪,包括持续对话的各种信息,根据旧状态,用户状态与系统状态(即通过与数据库的查询情况)来更新当前的对话状态。
-
DS
Dialogue strategy,对话策略,与所在任务场景息息相关,通常作为对话管理模块的输出,如对该场景下缺失槽位的反问策略等。例如,用户问“今天天气怎么样?”,机器人反问”请问你在哪个城市?“,以引导用户补全用户意图信息。
语言生成(NLG)
Natural Language Generation,语言生成模块,负责根据解析到的意图,返回对应的结果,主要包括第三方提供的内容、用户定义的actions等。