自然语言处理
词向量:
自然语言处理问题要转化为机器学习的问题,首先就要把单词数学化表示,就是用n维实数向量来代表一个单词。
对话系统
对话系统发展历程的三个阶段:
1.基于符号规则和模板的对话系统
2.基于统计机器学习的对话系统
3.基于数据驱动的深度学习的对话系统
对话系统根据不同的应用场景可以分为两种类型:
1.任务型对话系统
面向垂直领域,目的是帮助用户完成预定任务或动作,
应用场景:虚拟个人助理,预定机票、酒店和餐馆等,或者是淘宝客服。
是一个多步决策求取reward最大化的问题了,也就是一个RL问题。完全使用有监督学习的话建模起来有缺陷。
2.非任务型对话系统,也称聊天机器人
面向开放领域,目的是用来闲聊,
应用场景:娱乐、情感陪护、营销沟通,例如微软小冰
对于闲聊型的对话系统,主流方法有三类:
-
1.基于检索的方法。(工业界偏爱这种)
可以用来解决闲聊型对话或FAQ问答型对话问题(常见问题解答)。
-
2.基于生成的方法。(生成式存在的难点很多,比如在评估和控制生成上。)
-
3.将两者结合起来的方法。
问答型对话
除了闲聊和完成特定任务,还有一大类知识获取(即问答)的需求。
分为基于知识图谱的对话(KB-Dialogue)和检索式多轮问答等更细化的方向。
任务型对话系统的方法:
1.管道方法:
管道方法一般分别建立NLU、DM和NLG等模块,这些子模块通常还要分解为更小的子任务分别建模,然后按照顺序将这些模块连接起来。
2.端到端方法:
将管道方法中的三个模块(NLU,DM,NLG)或部分用统一的端到端方法代替,根据用户的输入,直接生成相应的回复或响应模块的输出。
任务型对话系统主要流程(如下图)涉及5部分:
1.自动语音识别
2.自然语言理解
3.对话管理(包括对话状态跟踪和对话策略)
4.自然语言生成
5.语音合成
自动语音识别:
将用户语音中的连续时间信号转变为离散的音节单元或单词。
在口语对话系统中,用户存在大量的口语现象,通常还伴随着环境噪声,这些为识别算法的特征提取、模型训练等环节增加了更多难度。
自然语言理解:
利用语义和语法分析将语音识别的结果转化为计算机能够理解的结果化表现形式。
目的是将用户的输入映射到预先根据不同场景定义的语义槽中。(如下图)
通常包括三个任务:领域检测、意图识别和语义槽填充。
领域检测和意图识别属于文本分类任务,根据当前用户的输入推断出用户的意图和涉及的领域。
语义槽填充本质上属于序列标注问题,目的是识别句子中的语义槽和其对应的值。
对话管理(包括对话状态跟踪和对话策略)
1.对话状态跟踪:
通过语言理解生成的结构化数据理解或者捕捉用户的意图或目标。
在以任务为导向的对话系统中,对话状态跟踪(DST)是一个核心组件,负责在整个对话过程中跟踪用户的目标。
2. 对话策略:
利用对话状态跟踪得到的用户目标来决定下一步要采取的行动。也就是根据对话状态跟踪估计的对话状态,通过预设的候选动作集,选择系统动作或策略。
自然语言生成:
组织适当的应答语句,将系统的答复转换成用户能够理解的自然语言。也就是将对话管理模块输出的抽象表达转换为句法合法、语义准确的自然语言句子。
语音合成:
将系统答复的自然语言文本合成应答语音反馈给用户。
语义槽:
从预先定义一个关键字的集合,用来在用户说法中引用,以增强说法的扩展能力。
比如“我要去上海”,语义槽就是地址 ,取值为上海。经常与词库一起使用,一个语义槽只能绑定一个词库,而一个词库可以同时对应多个语义槽。
词性标注:
在给定句子中判定每个词的语法范畴,确定其词性并加以标注的过程。
比如给定一个句子:“这儿是个非常漂亮的公园”,
对其的标注结果应如下:“这儿/代词 是/动词 个/量词 非常/副词 漂亮/形容词 的/结构助词 公园/名词”。
命名实体识别:
目的是识别语料中人名、地名、组织机构名等命名实体。
1.单轮对话:
以查询的话语q为前提,得到语句r作为回复。
2.多轮对话:
在历史对话信息c的背景下,以q为前提,得到语句r作为回复。
开放领域对话系统:
基于深度学习的开放领域对话系统的构建方法有:检索式、生成式和检索与生成相结合的方法。
Goal Oriented 和Task Oriented的异同:
在没有特别说明的情况下,在人机对话系统研究工作中有着相同的含义,它们只是对同一工作的不同描述。
口语对话系统:
默认指的是面向任务的对话系统(多轮对话),是能够用声音与人进行交谈的计算机系统。