对话系统简单笔记

article/2025/10/19 16:25:04

开放域对话系统:没有限定主题或明确目标,用户与系统之间自由对话。

特定域对话系统,面向具体任务。

如:任务型对话(siri),属于特定域,完成任务或动作,话轮数越少越好。

闲聊型(微软小冰),属于开放域,闲聊,话轮数越多越好。

问答型

目录

 

1.任务型对话系统

1.1管道方法

1.2端到端方法

1.3任务型对话系统评估方法

1.4任务型对话系统面临的问题

2.开放型对话系统

2.1基于检索的方法

2.2基于生成的方法

2.3检索和生成相结合的方法

3.补充学习

3.1 Encoder-decoder:

3.2 Attention

3.3 TF-IDF 

1.任务型对话系统

任务型对话系统主要由两种方法:管道方法,端到端方法。

1.1管道方法

关键模块:自动语音识别ASR,自然语言理解NLU,对话管理DM(对话状态跟踪DST,对话策略DP),自然语言生成NLG,语音合成TTS。

 

1.1.1 NLU

将用户说出的自然语言尽可能的转化为计算机能理解的形式。通常包括三个任务:领域检测,意图识别,语义槽填充。

领域检测和意图识别都属于文本分类任务,根据用户当前的输入推断出用户的意图和涉及的领域。

应用在文本分类任务的

(1)传统机器学习模型:K近邻,朴素贝叶斯,SVM。

(2)深度学习模型:CNN和RNN结合,可以抓取任意长度的序列,可以分析长句之间的关系,同时具有记忆功能。

语义槽填充本质上属于序列标注问题。

应用在序列标注任务上常用的

(1)线性统计方法:隐马尔科夫HMM,最大熵马尔科夫,条件随机场CRF

(2)深度学习方法:长短期记忆网络LSTM,门控制循环单元GRU,

(3)结合的方法:LSTM+CRF

1.1.2.DM

根据历史对话和用户当前输入,决定系统要采取的的动作,包括追问,澄清,确认等。

比如Book a table at haidilao for 5 ,是5个人,还是5点钟,是上午5点还是下午5点?这时候需要需要再次询问用户。

DST维护对话状态,它根据NLU的结果,将旧对话状态更新为新对话状态。对话状态应该包含对话所需要的各种信息,主要有三种方法

  1. 基于人工规则的方法:人工定义好所有状态和状态转移的条件,使用分数最高的NLU模块解析结果进行状态更新。
  2. 基于生成式模型:从训练数据中学习相关联合概率的密度分布, 计算出所有对话状态的条件概率分布作为预测模型,减少了人工成本,但无法精确建模特征之间的依赖关系。
  3. 基于判别式模型:把DST当做分类任务,结合深度学习进行自动特征提取,但需要大量的标注数据,适用于大规模含有标注的数据集的场景。

1.1.3 DP

根据DST维护的状态,确定当前状态下系统该如何答复,即采取何种策略是最优的。

  1. 基于监督学习
  2. 基于模仿学习
  3. 传统强化学习
  4. 深度强化学习

1.1.4 NLG

将DM输出结构化对话策略转化成对人友好的自然语言。

主要方法:

(1)基于模板或句子规划的方法:无需训练数据,简单,但难以维护,可移植性差。

(2)基于统计语言模型模型:规则简单,易于实现和理解,但计算效率低,扩展性差。

(3)基于神经网络的方法:seq2seq,动态神经网络DMN,常态知识感知会话模型CCM,GAN。

1.1.5 NLG评估技术

(1)人工评测回复的适当性,流利性,可读性,多样性。

(2)利用BLEU,METEOR,ROUGE分数自动评估

管道方法一般分别建立NLU,DM,NLG等模块,模块又可以分成子任务,各个模块分工明确,解决各自问题。

问题:

(1)领域相关性强,每个领域都需要人工设置语义槽,决策,难以扩展到新领域。

(2)模块之间相互独立,每个模块都需要大量领域相关的标注数据。

(3)模块处理相互依赖,上游模块的错误会关联到下游模块。当将一个模块调整到新环境,其他模块也要相对调整,这个过程会消耗大量的人力。

1.2端到端方法

端到端方法将管道方法中的三个模块用统一的端到端方法代替,根据用户输入,直接生成相应的回复。

 

1.2.1端到端代表性方法

(1)基于监督学习框架

(2)基于强化学习框架

(3)混合框架

1.2.2端到端方法总结

端到端的系统一般使用一个Seq2Seq模型,根据用户的输入,直接生成响应的回复,有结构简单,便于移植的优点,同时解决了标注数据不足的问题。由于任务型对话的特殊性,使用简单的Seq2Seq模型无法生成时效性,地点相关等回复,所以还需要相应的知识库和常识库辅助。

1.3任务型对话系统评估方法

1.3.1分模块进行评价

(1)自然语言理解NLU:分类问题,准确率,召回率

(2)对话状态跟踪DST:假设准确率,平均概率,ROC表现,正确接受率5/10/20,平均排序倒数

(3)对话策略:DP:任务完成率,平均对话论述

(4)自然语言生成NLG:主流技术为基于模板的方法,不做评价

1.3.2评估整个对话系统更全面的指标

(1)部署动态系统的评价:在真实用户群中检测用户的满意度。

(2)基于用户模拟的方法:有效且简单,但是真实用户与模拟用户存在差距。

(3)基于人工评价的方法:雇佣测试人员对对话系统生成的结果进行人工评价,缺点是开销很大,还有就是评测人员是否真的能代表所有用户的问题。

(4)多种方法混合。

1.4任务型对话系统面临的问题

(1)如何利用更少的标注数据,开发一个更好的系统?

(2)领域迁移问题

(3)鲁棒性:输入噪音较大,如何正确回应

(4)端到端如何更可控

2.开放型对话系统

开放型对话是对话系统一个重要分支,它不同于任务型对话,具有较强的随机性与不确定性。

可基于检索或生成的方法进行人机对话的交互。对话系统可以分为单轮和多轮对话,单轮对话主要考虑基于问题的回答,而多轮对话则注重上下文的整体信息,输出符合上下文的信息。

2.1基于检索的方法

先构建一个供检索的对话语料库,将用户输入的话视为对该索引系统的查询,从中选一个回复。

2.1.1单轮检索

核心步骤是构建查询-恢复匹配模型,其中包含语义表示模型和语义融合模型,语义表示模型将查询和回复映射到语义向量;语义融合模型是对查询语义向量和回复语义向量融合过程建模。

2.1.2多轮检索

与单轮检索最大的区别在于:多轮对话系统需要整合当前的查询和历史信息作为输入。

2.2基于生成的方法

首先收集大规模对话语料作为训练数据,基于深度神经网络构建端到端的对话模型,系统根据模型计算输入语义向量,再逐个生成词语组成回复语句。

2.2.1单轮生成

(1)seq2seq模型框架,(2)神经语言模型框架 (3)强化学习框架

2.2.2多轮生成

(1)seq2seq模型框架,(2)神经语言模型框架 (3)层次seq2seq模型框架

2.3检索和生成相结合的方法

  1. 使用检索模型检索到的候选结果和查询同时作为seq2seq模型中encoder的输入生成结果,然后把这个结果加入原检索候选集中,进行重新排序。
  2. 将两个模型融合,先通过传统的检索模型找出候选集,然后训练带注意力机制的seq2seq的生成模型对候选答案进行重新排序,选择回复时,如果第一候选回复的得分超过某个阈值,就直接输出该回复,否则使用生成模型的回复。

3.补充学习

3.1 Encoder-decoder:

Encoder-decoder并不是一个具体的模型,而是一个通用的框架。

Encoder-decoder部分可以是文字,语音,图像,或者视频

模型可以是CNN,RNN,LSTM等

Seq2seq

输入一个序列,输出另一个序列。这种结构最重要的地方在于输入序列和输出序列的长度是可变的。Seq2Seq 强调目的,不特指具体方法,满足输入序列,输出序列的目的,都可以统称为 Seq2Seq 模型。Seq2Seq 使用的具体方法基本都是属于 Encoder-Decoder 模型的范畴。

缺陷:输入一个序列,通过RNN转化成向量C,再将C转化成输出序列,中间的向量C长度是固定的,所以RNN结构的Encoder-Decoder模型存在长程梯度消失问题,对于较长的句子,会丢失信息。即便LSTM加了门控制机制可以选择性遗忘和记忆,随着句子难度增加,效果仍不理想

3.2 Attention

为了解决Encoder-Decoder的缺陷,提出了Attention,Attention 是挑重点,就算文本比较长,也能从中间抓住重点,不丢失重要的信息。

Attention的思路是带权求和。

将Encoder网络中的hidden layer记为h(t),把Decoder网络中的hidden layer记为H(t),第t个输出词记为y(t),Decoder网络中的式子可以表示为 H(t) = f[ H(t-1) , y(t-1) ]

要让网络注意并利用原文中不同的词句和语句,

Decoder网络中的式子可以写成 H(t) = f[ H(t-1) , y(t-1) , Ct ]  Ct指的是时刻t的上下文向量,定义为h(t)加权平均的结果,Ct= Σ ati * h(t) 。给h(t) 分配的权重就叫做全局对齐权重。

全局对齐权重 αk 很好的体现了在计算第 k 个输出词语时,应该给所有的 h(t) 怎样的权重,其中 aki 就代表着计算第k个输出词语时, h(i) 分配到的权重大小。

最后是如何计算出ak

设计一个以H(i-1),h(j)为输入的网络

3.3 TF-IDF

TF即是词频,IDF即逆文档频率。

TF-IDF的主要思想是:如果某个单词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

假如一片文章有 1000 个词,

"中国” 这个词出现了 20 次,

"梦想" 这个词出现了 10 次,

"我" 这个词出现了 50次

有一个文件库,它是用来求IDF用的,文件库包含了5000个文档 在这5000个文档中,

步骤1:计算词频TF

TF公式:

 

TF(“中国”)=20/1000=0.02

TF(“梦想”)=10/1000=0.01

TF(“我”)=50/1000=0.05

步骤2:计算逆文档频率IDF

IDF公式: 分母之所以加1是采用了拉普拉斯平滑,比避免有部分新的词没有在语料库中出现过而使分母为0的情况出现,增强算法的健壮性。

 

包含 “中国” 的文档数为 1000,IDF(“中国”)=log(5000/1001)=0.6985

包含 “梦想” 的文档数为 500,IDF(“梦想”)=log(5000/501)=0.9991

包含 “我” 的文档数为 2000,IDF(“我”)=log(5000/2001)=0.3977

步骤3:计算TF-IDF

公式:

 

TF-IDF(“中国”)= TF(“中国”) * IDF(“中国”)=0.01397

TF-IDF(“梦想”)= 0.09991

TF-IDF(“我”)= 0.019885

如果某个词比较少见(IDF值较高),但是它在这篇文章中多次出现(TF值较高),那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。 从上面计算可以看出 TF-IDF(“梦想”)的值较高,可以把"梦想"作为这篇文章的关键词


http://chatgpt.dhexx.cn/article/ABwxwUhB.shtml

相关文章

自然语言处理与企业对话系统设计

原创:晏茜 资料来源:李俊 本文分享的主题分为两个部分,第一部分内容是关于企业级对话系统的简介,第二部分探讨对话系统和自然语言处理技术结合的领域。 1. 企业对话系统 我们首先来介绍一下企业级对话系统。谷歌的 CEO 桑达尔在 16 年曾发表言论,人工智能将通过各式各样…

定义对话系统

定义对话系统 一、定义对话系统的方法 以下方法论其实就是在定义对话系统,后面的 确定场景边界 梳理业务要素和知识库 撰写故事线 抽取对话流程 都是下面方法论的具体展开。 二、确定场景边界 1.创建机器人定位(机器人的性格定位) 2.明…

【对话系统】对话系统核心技术概要

概述 人机交互备受学术界的关注,人机对话是人机交互的核心。 对话系统是模拟人与人交流的计算机系统。 对话系统有很多分类方法。按照应用场景的不同,可分为开放域(闲聊式)和封闭域(检索式、知识问答式、任务式&…

UNITY 对话系统

1. 准备工作 创建一个画布(Canvas),画布中创建一个面板(Panel),面板中放个文本框(TEXT)和两个按钮(Button)(一个用于直接关闭,另一个…

最新对话系统综述

前言 首先介绍一篇对话系统领域综述最新的paper,写的非常好 2021年南洋理工大学发表的论文: https://arxiv.org/pdf/2105.04387.pdf 第一章:简要介绍对话系统和深度学习。 第二章:讨论现代对话系统中流行的神经模型及其相关工…

前沿重器[25] | 聊聊对话系统:多轮对话

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 近期,我再次总结了我的历史文章…

智能对话系统之多轮对话

序言 以一周前的一条微博作为开始。一周前我讲:相对的,自然语言解析技术已经逐渐不再成为各家广义智能助理产品的核心竞争力,识别用户意图之后所提供的服务开始成为对话机器人差异化的核心。 百度:对话系统的组成 对于一个对话系…

对话系统 | (1) 任务导向型对话系统 -- 对话管理模型研究最新进展

原文链接 作者丨戴音培、虞晖华、蒋溢轩、唐呈光、李永彬、孙健 单位丨阿里巴巴-达摩院-小蜜Conversational AI团队,康奈尔大学 1. 对话管理模型背景 从人工智能研究的初期开始,人们就致力于开发高度智能化的人机对话系统。艾伦图灵(Alan …

对话系统笔记

原文链接:https://www.jiqizhixin.com/articles/2020-01-31-7 对话系统一般分为两种:任务型对话系统和闲聊型对话系统。本文主要讨论前者。 任务型对话系统,也称目标导向型对话系统,多用于垂直领域业务助理系统,如微…

深入浅出对话系统——任务型对话系统技术框架

任务型对话系统架构 比如,这是一个任务型订票系统的对话例子。 如果要我们实现一个这样的对话系统,其中有三个最大的难点:理解用户输入、记住对话历史信息、知道要问什么。 首先是要能理解用户的输入,知道用户想什么&#xff1b…

一文读懂智能对话系统

来源:机器学习算法全栈工程师 作者:蒙康 编辑:王抒伟 本文共6050字,建议阅读10分钟。本文带大家理解智能对话系统的研究方法以及未来趋势。 笔者在最近的研究中发现了一篇非常好的有关对话系统的论文,《A Survey on Di…

对话系统 | (8) 任务型对话系统概述

本篇博客主要参考/节选中科院自动化所王唯康博士的博士论文《任务型对话系统中对话管理方法研究》。 文章目录 1. 概述2. 基于管道的任务型对话系统2.1 语言理解模块2.2 对话管理模块2.3 语言生成模块 3. 端到端的任务型对话系统3.1 基于检索的任务型对话系统3.2 基于生成的任务…

对话系统 | (4) 任务型对话系统基础

本篇博客内容主要来自第十四届中国中文信息学会暑期学校暨中国中文信息学会《前沿技术讲习班》— 张伟男、车万翔《任务型对话系统》 PPT下载链接 文章目录 1. 任务型对话系统概述2. 任务型对话系统关键技术自然语言理解对话管理对话状态追踪对话策略优化 自然语言生成端到端…

前沿重器[21] | 聊聊对话系统:概述

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 近期,我再次总结了我的历史文章…

Xenko C#开源游戏引擎

Xenko是一款用于渲染和 VR 的开源 C# 游戏引擎。该引擎具有高度模块化,旨在为游戏制作者提供更大的开发灵活性。Xenko 附带一个编辑器,允许您以直观和直观的方式创建和管理游戏或应用程序的内容。 官方网站:https://xenko.com/ g…

开源游戏引擎整合

2D: Allegro.cc - Main http://www.allegro.cc/ 老牌子了,和SDL同时是很经典两个EG开发组件,最近貌似在和PY进行联合? ClanLib - ClanLib Game SDK http://www.clanlib.org/ CLANLIB是以前听过最复杂最丰富的SDK,看看链接 http://…

开源游戏java引擎_基于Java的开源3D游戏引擎jMonkeyEngine

jMonkeyEngine简介 jMonkeyEngine是一款纯Java语言编写的游戏引擎,继承了Java应用跨平台的特性,而且是开放源代码的,遵循BSD开源协议,BSD开源协议用一句简单的话概括就是你可以用它做任何你想做的事情而不必担心版权问题。 这款游戏引擎在商业游戏中使用的不多,但是笔者觉…

<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvTools(七)—— 终篇总结

2021SCSDUSC 开源游戏引擎 Overload 代码模块分析 之 OvTools(七)—— 终篇总结 目录 前言回顾1、Eventing2、Filesystem3、Time4、Utils 总结下一个计划 前言 本篇是开源游戏引擎 Overload 模块 OvTools 的最后一篇了。本篇,笔者将对 OvToo…

<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame (一)—— 概况与 .rc 文件

2021SCSDUSC 开源游戏引擎 Overload 代码模块分析 之 OvGame(一)—— 概况与 .rc 文件 目录 前言OvGame 模块大纲.rc 文件 计划 前言 上一篇,笔者对 Overload 的 OvTools 分析总结完毕,想了解的可前往总结与链接集合自选查看。而…

开源游戏引擎详解

2D: Allegro.cc - Main http://www.allegro.cc/ 老牌子了,和SDL同时是很经典两个EG开发组件,最近貌似在和PY进行联合? ClanLib - ClanLib Game SDK http://www.clanlib.org/ CLANLIB是以前听过最复杂最丰富的SDK,看看链接 http://…