- Rasa实战:构建开源对话机器人
- 孔晓泉 王冠
- 645字
- 2025-02-17 18:30:51
1.3.2 传统对话机器人架构
早期的对话机器人架构主要基于模板和规则,如AIML(Artificial Intelligence Markup Language)。
这里以AIML的查询天气模板为例讲述规则系统。


规则的描述主要基于正则表达式或类似正则表达式的模板。将用户的问题匹配到这样的模板上,可以取得预定义好的答案和结果。AIML本身有比较强大的描述能力,可通过规则从用户问题中获取重要信息,随机选择备选答案,甚至运行相应脚本通过外部API获取数据等。事实上,像AliceBot这样基于AIML的对话机器人,拥有4万多个不同的类别数据,是一个海量的规则数据库。
使用规则的好处是准确率高,但缺点明显:用户的句式千变万化,规则只能覆盖比较少的部分。仅仅像上面那样询问天气的例子,用户就可以有几百种询问方法。随着时间推移,规则会越写越多,难以维护,还常常互相矛盾,改动一个业务逻辑就会牵一发而动全身。
此外,对话机器人需要维护一个庞大的问答数据库,对用户的问题通过计算句子之间的相似度来寻找数据库中已有的最相近的问题从而给出相应答案。知乎和Quora的问答网站不希望用户提很多重复的问题,因此对用户的每一个新问题,这些问答网站都会和已有问题进行匹配,由此产生了一些skip-thought计算句向量等方法。
当前主流的人机对话流程比较统一,主要包括模块化的5个部分:用户语音转文字的语音识别模块、对用户问题进行处理的自然语言理解模块、按照当前对话状态决定系统反应的对话管理模块、反馈给用户内容的自然语言生成模块,以及将反馈变为语音的语音合成模块,如图1-6所示。本书重点讨论其中的自然语言理解模块和对话管理模块。

图1-6 人机对话流程示意图
下面将分别进行介绍。