详细介绍NLP对话系统

任务型对话系统

任务型对话系统主要应用于固定领域。任务型对话的广泛应用的方法有两种,一种是模块法,另一种是端到端的方法。
模块法是将对话响应视为模块,每个模块负责特定的任务,并将处理结果传送给下一个模块。
端到端的任务型对话系统不再独立地设计各个子模块,而是直接学习对话上下文到系统回复的映射关系,设计方法更简单。相关研究可以划分为两大类:基于检索的方法和基于生成的方法。
在这里插入图片描述
(NLU)模块的主要任务是将用户输入的自然语言映射为用户的意图和槽位。该模块的主要作用也是会以三元组的形式输出用户意图、槽位和槽位对应的槽值,输出给对话状态跟踪模块。

【案例分析】
用户输入:“今天北京天气怎么样”
用户意图定义:询问天气
槽位定义:
槽位一:时间
槽位二:地点
我们针对“询问天气 ”任务定义了两个必要槽位,是“时间 ”和“地点 ”。
在这里插入图片描述

意图和槽位

意图识别,就是将用户输入的自然语言会话进行划分类别,类别对应的就是用户的意图分类,例如“现在几点了 ”,其意图为“询问时间 ”。“今天气温多少度”,“询问天气的”。其实意图识别就是典型的分类问题,并且一般为多分类问题。也就是我们常用的文本分类任务。
意图识别的方法:基于SVM\TextCNN 等算法,也是通过序列标注、特征提取等方法,再经过模型训练的方式实现意图识别。

槽位,即意图对应的参数,确定意图之后(是问天气,还是查询图书),一个意图可以对应若干个参数。例如在线图书馆查找一本图书时,需要给出书名、作者、出版社等必要参数,以上参数即“查询图书 ”这一意图对应的槽位。
槽位填充的方法:槽位填充是序列标注问题,用机器学习HMM、SVM和深度学习RNN等算法都可以实现。

对话状态跟踪(DST)

填槽工作可能是通过多轮对话来完成,状态跟踪模块包括持续对话的各种信息,它根据旧状态(即对话历史),用户状态(即目前槽值填充情况)与系统状态(即通过与数据库的查询情况)来更新当前的对话状态。

系统与用户多轮对话,逐步明确用户需求,用户表达需求的过程,就是不断的填槽过程。
在这里插入图片描述

对话策略学习(DPL)

对话策略学习(DPL)是用来决策模型在当前状态下采取何种回复策略。
当用户输入语句后,由NLU、DST模块处理后形成3个结果向量。其中意图、槽位、槽值三个向量会拼接成一个高纬度的特征向量,输入LSTM模型。
LSTM经过Softmax激活函数输出系统当前时刻各系统动作的概率分布,再经过概率最大化取到概率最大元素所在索引等一些列动作处理和特定生成模板,生成系统的回复返回给用户。
在这里插入图片描述

自然语言生成(NLG)

自然语言生成(NLG)其目的是将语义表示转化为自然语言话语。
自然语言生成主要有三种生成方法:
(1)基于模板的方法。
通过预先设定好模板,进行自然语言生成,来返回给用户。例如已经为您预定{time}的从{origin}到{destination}的机票。
(2)基于语法规则的方法。
和自然语言理解中提到的方法类似,判断用户的语句是疑问句还是陈述句等,结合词性进行自然语言内容的生成。
(3)基于生成的方法。
通过依靠Seq2Seq等模型,计算上下文向量;最终Decoder部分结合Encoder的输入状态,上下文向量,以及Decoder的历史输入,预测当前输出对应于词典的概率分布。

在对话系统中,首先从训练语料中提取大量的问题模板,并构成一个对应的模板池。从问题集里通过关系向量与答案模板池多对多对应。

闲聊式对话系统

闲聊式对话系统也被称为开放领域对话系统,或者聊天机器人。
闲聊式对话系统是无任务驱动、为了纯聊天或者娱乐而开发的,它的目的是生成有意义且相关的内容回复。
开放领域闲聊式对话系统主要分为检索式和生成式对话系统。在检索式对话系统通过对用户的输入信息先进行查询和排序,再给出最佳答案的方法。生成式对话系统是通过已有的语料生成新文本作为回答。目前生成式闲聊对话系统的研究属性大于应用属性,很多问题尚在探索阶段。

检索式对话系统

检索式对话系统通过匹配技术从预定义数据库中检索与用户查询匹配的话语并排序,选取出排名最高的回复,核心是如何构建较好的查询-回复匹配模型。

案例分析:最简单的对话系统

import random
# 提问数据存储
greetings = ['你好', 'hello', 'hi', '早上好', 'hey!','hey']
# 随机函数选择提问
random_greeting = random.choice(greetings)
# 对于“你好吗? ”这个问题的回复
question = ['How are you?','你好吗?']
# “我很好 ”
responses = ['Okay',"I'm fine"]
# 随机选一个回
random_response = random.choice(responses)
# 死循环让程序不断接受提问,当输入“再见 ”程序退出
while True:userInput = input(">>> ")if userInput in greetings:print(random_greeting)elif userInput in question:print(random_response)# 当你说“拜拜 ”程序结束elif userInput == '再见':breakelse:print("我不知道你在说什么")

输出如下结果:

>>>你好
早上好
>>>你好吗?
我不知道你在说什么?
>>>你好吗?
I’m fine

检索式聊天系统的架构过程通常经过问题解析、规则系统、粗排、精排等几个过程。
最后选择语料库中得分最高的回复。
在这里插入图片描述

粗排模型

粗排模型是检索式问答的一种方法,目的是从语料库中快速检索出相似问题。理解粗排模型首先需要了解倒排索引。

倒排索引(Inverted index)常被称为反向索引。倒排索引打乱了语料的正向排序,故称倒排索引。通常来说,以文档id作为索引,以文档内容作为记录;而倒排索引则以文档内容作为索引,以文档id作为记录。
在这里插入图片描述
燕山大学对应的记录是0说明第0篇文档中包含燕山大学这个词。
在这里插入图片描述
粗排模型
倒排索引之后,就可以快速的将包含所在词的文档找到,这样就大大提高了搜索速度。包含单字的、包含介词等内容的顺序靠后排。而出现次数少的词,模型认为有可能是关键语句,则需要往前排。
粗排模型实现:按问题句中词的出现次数进行升序排序,取靠前的候选问题句作为粗排结果。

精排模型

在粗排模型中我们按照词的方式进行比较。而精排模型,我们是要比较两个问答句的相似度。不难发现,查询词语序的问题并没有考虑进去,“我请你吃饭 ”和“你请我吃饭 ”在粗排模型中都是一个结果。
并且倒排索引也严重依赖分词,例如上面例子中“燕山 ”、“大学 ”和“燕山大学 ”就是两种不同的分词,结果也是完全不同的。
分词问题主要的解决方式,最近两年的做法是以字为单位输入,以字为输入单位的方式逐渐的超过了以词为单位的效果。而词序的问题,我们可以通过深度学习网络解决。
Sentence2Vector 精排模型结构
在这里插入图片描述

以句子为单位输入到LSTM模型中,LSTM模型把句子处理成时序信息,为句子中的每个字都建立关联。将每个字上一时刻的输出作为这一时刻的输入。这样“你请我吃饭 ”和“我请你吃饭 ”由于字的时序不一样,这样就解决了粗排模型中遗留的语序问题和必须分词的问题。
Self-Attention就是在信息处理过程中,对不同的词分配不同的注意力权重。
Dense模块,是将Self-Attention层输出转换成向量,分别将问题句和语料库中的问题句做向量内积,从而得到两句话的相似程度。

Sentence2Vector模型与CBOW模型用多个词预测一个词结构基本类似,只是Sentence2Vector是把词换成了句子,是一个对句子进行向量化,同时可以进行相似度计算的一个模型。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28312.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python实现中文情感分析与可视化

目录 一、导入原始数据 二、结巴分词/绘制词云图 三、计算情感值,情感分析 # 方法一、SnowNLP计算情感得分 # 方法二、使用字典计算情感得分 四、# 数据可视化展示 五、绘制相关系数热力图 一、导入原始数据 #导入模块 import pandas as pd import numpy as np …

《PlumGPT:让你的聊天更智能,更有趣》

《PlumGPT:让你的聊天更智能,更有趣!》 文章目录 《PlumGPT:让你的聊天更智能,更有趣!》前言一、入口地址二、开始注册三、开始验证四、进入首页五、功能点介绍1.Light mode2.Help3.My account4.Log out 六…

【句子互动转载】1. 对话系统趋势分析

作者:李佳芮_chatbot 链接:https://www.jianshu.com/p/89d621c9cffe 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 本章我会带领大家了解对话系统的趋势,以及为什么我们要搭建一个…

【四】情感对话 Improving Multi-turn Emotional Support Dialogue Generation with Lookahead Strategy Planning

【四】情感支撑对话论文最近进展 Emotion Support Conversation 今天给大家分享一篇在EMNLP 2022的关于情感对话的论文。主要思想是从策略安排的角度来有效地提供情感支撑,并且通过理解用户的状态达到更好的生成效果。 相关情感支撑论文综述整理指路 -> 点这里…

【一】情感对话 Towards Emotional Support Dialog Systems 论文阅读

【一】情感支撑对话论文最近进展 Emotion Support Conversation 今天给大家介绍一下Towards Emotional Support Dialog Systems这篇由黄老师团队发表在2021 ACL的数据集。 相关论文综述整理指路 -> 点这里 主要分成以下几个部分进行介绍: 研究背景实例介绍ES…

ChatGPT接口返回代码高亮显示的实现逻辑

官方API:POST https://api.openai.com/v1/chat/completions 我们在使用openai提供的接口时,返回的数据如果包含代码,会发现代码是没有样式的,它们一般是用包含的一段文本。 如图: 怎么样才能做到和官方一样的美观呢&…

还在crud?快来学习架构设计啦---微服务下的依赖管理(maven篇)

文章目录 一、前言二、实战2.1 创建父工程统一依赖的版本管理2.2 创建公共使用的 common工程2.3 创建子工程并引入父工程的依赖以及公共工程2.4 搭建启动环境2.5 启动程序开始验证 三、总结 一、前言 2023年口罩放开的第一年,大多数人都是想着重新开始,…

ChatGPT 4.0 —— Code Interpreter

📎产品销售数据集.csv 选取以上的数据集作为输入,对Code Interpreter 进行测试 1.输入指定数据集,要求给出该数据集的概貌 2.请分析销售的总金额和其他变量的关系 Python Script: # Import required libraries import matplotlib.pyplot a…

500行JavaScript代码在前端根据数据生成CAD工程剖面图

前言 ​ 用数据生成CAD图,一般采用的ObjectArx对CAD二次开发完成。ObjectARX是AutoDesk公司针对AutoCAD平台上的二次开发而推出的一个开发软件包,它提供了以C为基础的面向对象的开发环境及应用程序接口,能访问和创建AutoCAD图形数据库。而由…

SolidWorks+thonny esp32 电磁控制,程序算法搞起来了,我的结构-仿真-电磁-控制-算法的学习之路

来个自我介绍,本科是微电子制造专业,隶属于机电工程学院,所以机械,电子,控制,流体,材料,结构这些基础都有,而且水平不低。工作了13年,主要干机械,…

有趣的技术探索分享小合集

Chatgpt 现世仅两个月,已经达到了 1 亿月活跃用户,不但影响了世界范围内的知识工作者,还在各行各业掀起了科技创新的热潮。在信息大爆炸、新科技不断涌出的现阶段,拥有面向未来的科技趋势的重要的洞察力,并由此改变所处…

chatgpt赋能python:Python画圆柱体教程:从入门到实践

Python画圆柱体教程:从入门到实践 如果你正在寻找一种简单有效的Python绘图方法,那么画圆柱体是一个不错的选择。本文将介绍如何使用Python绘制圆柱体的过程,包括使用的库、代码示例以及最终结果。 介绍 圆柱体是一种很常见的几何形状&…

Altium Designer导入AutoCAD图纸

简介:本文主要介绍的是将Altium Designer导入AutoCAD图纸的操作方法。 一直采用Altium Designer绘制PCB边框,可是如果PCB的尺寸边框十分复杂,或者遇到Altium Designer无法设计的图形,比如椭圆的时候,我们不得不借助第三…

谷歌一雪前耻,全新PaLM 2反超GPT-4,办公全家桶炸裂升级,Bard史诗进化

【新智元导读】新版PaLM 2超强进化,办公全家桶Workspace全面升级,Bard全面增强、所有人可用……可以看出,这届I/O大会,谷歌是真的憋出不少大招。 谷歌I/O 2023大会,仿佛又给谷歌的支持者们打了一针强心剂。 此前&…

阿里巴巴取消 CTO 一职;近半数微软员工担心被 AI 抢饭碗;Flutter 3.10 发布|极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#…

Apple I 设计完成 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 4 月 11 日,在 1953 年的今天,安德鲁怀尔斯诞生。大约在 1637 年左右,法国学者费马提出了一个数学代数相关的定理&#xff0…

不跟风 ChatGPT,Google AI 2022 年都在忙什么?

作者 | Marian Croak 翻译&整理 | Carol 出品 | AI科技大本营 谷歌发布了2022年在AI领域取得的巨大突破,主要包括大语言模型 (LLM) 和文本生图两个领域。 相较多年前提出的“不作恶”口号,谷歌将今后发展人工智能的理念进一步提升至“负责任”…

Python基础语法 常见面试问题 技巧汇总

Python基础语法 & 常见面试问题 & 技巧汇总 文章目录 Python基础语法 & 常见面试问题 & 技巧汇总一、注释二、变量与常量三、输出1、格式化输出1)"~{}".format(a)2)%s,%.1f 2、转义字符 四、运算符1、幂运算 五、基本数据类型…

LeetCode刷题——贪心法(C/C++)

这里写目录标题 [中等]买卖股票的最佳时机 II[中等]移掉k位数字[中等]跳跃游戏[中等]跳跃游戏 II[中等]加油站[中等]划分字母区间[中等]去除重复字母[中等]无重叠区间[中等]用最少数量的箭引爆气球 [中等]买卖股票的最佳时机 II 原题链接题解 最简单的思路,效率不高…

云炬VB开发笔记 2可视化编程基础

源码下载(提取码:6666) 目录 1模拟小车行驶—— 控件基本属性和窗体​ 2-2简易文本编辑器—— 标签、 命令按钮、文本框​​​ 2-3模拟热气球 升空—— 图片和图像框​ 1模拟小车行驶—— 控件基本属性和窗体 2-2简易文本编辑器—— 标签、 命令按钮…