对话(Dialogue)
1 对话的目的:
- 完成一个任务(用户的要求)
- 闲聊
侧重于服务他人。用户的输入可以多种多样,例如提问、打招呼、下指令、抒发情绪等。
2 对话系统
对话系统有两种实现方式:
基于流水线(pipeline)实现的对话系统一般由自然语言理解(Natural Language Understanding)、对话管理(Dialogue Management)、自然语言生成(Natural Language Generation)构成。
基于端到端(end-to-end)实现的对话系统,这种方式是结合深度学习,通过海量数据训练,挖掘出从用户自然语言输入到系统自然语言输出的整体映射关系,而忽略中间过程的一种方法。(目前,工业界的问答系统大多采用流水线的方式。)
3 基于流水线(pipeline)实现的对话系统
对话系统包含的过程的详细内容如下:
a. 自然语言理解(Natural Language Understanding)
自然语言理解(Natural Language Understanding):将文本信息转换为机器可以理解的语义表示。
对机器而言,理解一句话里每个词的确切含义并不重要,重要的是理解这句话表达的意思,即意图识别。意图识别的本质其实就是一种文本匹配,主要实现方法有语义匹配和文本分类。当对话系统涉及的领域有多个时,意图也就随着变多,这时候意图识别模型的决策空间也随之变得很大,由于各个意图共享同一个模型,所以增加一个新意图就要重新训练模型,这样就导致其他意图受到影响,有一种更好的解决办法就是在意图识别之前再增加一级领域分类。
自然语言理解(NLU)的一个重要任务就是槽位(slot)提取,举例来说:接受订外卖的机器人需要提取用户所订餐馆的名字和所订食物的名字。槽位提取的本质其实就是命名实体识别(Named Entity Recognition, NER),包括人名、地名、机构名、时间等,还有更加专业的专业实体的识别。
自然语言理解(NLU)的小例子:在对话系统中,用户说:“我想订一份必胜客的外卖”。对话系统接收到这个文本后,首先进行意图识别,识别到用户的意图是订餐。然后进行实体识别,识别到餐厅名字是必胜客。所以,用户的“我想订一份环球港里的必胜客的外卖”转化为对话系统能够处理的语义表示:{"intent":"订餐","entity":"必胜客"}或者 { 意图:订餐 槽位:{ 地点:环球港 餐厅名:必胜客 } }
上面的示例中,"订餐"就是预定义的众多意图中的一个,在"订餐"这个意图下还预定义了一些槽位及其可能的取值,"地名"和"餐厅名"就是其中的两个,其余未显示的槽位(可能有"就餐人数"、"就餐时间"等等)取值都是None
。
槽位解析任务可以建模为 \(\color{purple}{序列标注任务}\) 或者简化为 \(\color{purple}{多标签文本分类任务}\) (一个槽-值对是一个类别) 。
这种将自然语言输入转化为用户动作的结构化语义表示(frame)就是自然语言理解(NLU)。
b. 对话管理(Dialogue Management)
对话管理(Dialogue Management):基于对话的状态判断系统应该采取什么样的动作(这里的动作可以理解为机器需要表达什么意思)。
对话系统常常存在多轮对话,所以需要对目前的对话状态进行管理,以决定系统下一步的动作和给用户的回应。本质上,对话管理就是一个决策的过程,系统在对话过程中不断根据当前的状态决定下一步应该采取的最优动作(例如:提供结果、询问特定限制条件、澄清、确认需求等等)。
对话管理的输入是用户输入的语义表达(也就是自然语言理解(NLU)的输出)和当前对话状态。对话管理的输出是下一步系统的行为以及更新的对话状态。对话管理不断循环上述步骤直到对话结束。
根据上述描述,对话管理其实可分为:对话状态跟踪(Dialogue State Tracking)和回复决策(Policy Modeling)。
- 对话状态跟踪(Dialogue State Tracking, DST)
维护和更新对话状态。假设t时刻的对话状态为\(s_t\),它依赖于前一时刻的状态\(s_{t-1}\)和前一时刻系统行为\(a_{t-1}\)以及当前时刻对应的用户行为\(a_t\),即\(s_t = f(s_{t-1}, a_{t-1}, a_t)\)。
- 回复决策(Policy Modeling)
根据当前的系统对话状态\(s_t\)决定系统下一步的行为(dialogue act, da),即\(da_t=g(s_t)\)
c. 自然语言生成(Natural Language Generation)
自然语言生成(Natural Language Generation):将系统动作转变位自然语言文本。
4 有关对话系统的开源工具
ConvLab及ConvLab-2
ConvLab及ConvLab-2清华大学交互智能(CoAI)小组与微软研究院合作开发的任务导向对话平台。
5 应用
问答(Question Answering)
1 问答的目的:
- 针对问题给定答案。回答的答案一般是确切的或者是没有找到答案。
以提问和解答为主,侧重于满足寻求知识。
2 问答系统
问答系统同样有两种实现方式(与对话系统一致):
基于流水线(pipeline)实现的对话系统一般由自然语言理解(Natural Language Understanding)、对话管理(Dialogue Management)、自然语言生成(Natural Language Generation)构成。
基于端到端(end-to-end)实现的对话系统,这种方式是结合深度学习,通过海量数据训练,挖掘出从用户自然语言输入到系统自然语言输出的整体映射关系,而忽略中间过程的一种方法。(目前,工业界的问答系统大多采用流水线的方式。)
另外一种常见的实现方式为“知识库问答(Knowledge Base Question Answering, KBQA)”:给定自然语言问题,通过对问题进行语义理解和解析,进而利用知识库进行查询、推理得出答案。