▲ 上图为作者开发的 chatbot 对话实测截图
(Task-oriented)任务驱动对话系统最近在工业界和学术界都大火了一把。不同于最近同样的火热的闲聊 chatbot,任务驱动地话系统往往有一个明确的使用目的。一些常见的应用包括天气查询,机票预定,航班查询等等。用户在使用任务驱动对话系统的时候,通过多轮人机对话,向电脑阐述自己的需求。而电脑在理解了用户的所求之后,通过对于后端数据库的查询和修改,来实现用户要求的功能。假如用户的阐述不够清楚,或者用户的需求比较复杂,系统可以主动询问,澄清的方式来帮助用户找到满意的结果。正因为如此,任务驱动对话系统需要同时解决数个人工智能核心问题。传统的做法是对这些问题逐一分解解决,也就是如下图的对话系统 pipeline,包括:自然语言理解(NLU),对话状态跟踪(State Tracker),对话策略(Policy),和自然语言生成(NLG)。下面我们大致对于每个模块的功能进行一下介绍:
自然语言理解(NLU)
:这个模块的功能是把来自用户的句子映射到机器可读的语义结构上,一般包含实体(entity)抽取,意图(intent)识别,话题(domain)识别等。
状态跟踪(State Tracker)
:在 NLU 的基础上,状态跟踪需要把多轮对话历史进行总结,理解上下文中的含义。这个模块对于跟踪用户需求有着至关重要的作用,因为很多时候需要通过综合考虑用户多轮输入才能真正理解他们的需求。
对话策略(Dialog Policy)
:在有了对话状态后,对话策略需要决定下一步应该做什么行动(action)。行动包括查询数据库,或者产生下面要说的一句话。相当于对话系统的高层决策者。
自然语言生成(N
LG