对话机器人---智能客服

article/2025/1/18 21:18:51

https://blog.csdn.net/qq_40027052/article/details/78723576

详细的介绍了对话机器人涉及到的所有知识和技术。

整个对话机器人涉及到的知识点,本人属于自然语言处理的研究方向,所以还要很多需要学习的地方。

在实现一个对话机器人的过程中,常用的一些工具:

  • Jieba: 中文分词和词性标注Python包
  • CoreNLP: 斯坦福的NLP工具(Java)
  • NLTK: 自然语言工具包
  • TextGrocery:高效的短文本分类工具(注:只适用于 Python2)
  • LTP: 哈工大的中文自然语言处理工具
  • Gensim:文本分析工具,包含了多种主题模型
  • Word2vec: 高效的词表示学习工具
  • GloVe:斯坦福的词表示学习工具
  • Fasttext : 高效的词表示学习和句子分类库
  • FuzzyWuzzy: 计算文本之间相似度的工具
  • CRF++: 轻量级条件随机场库(C++)
  • Elasticsearch: 开源搜索引擎

下面介绍几种不同类型的机器人,根据不同的应用场景。

1.对话机器人创建平台

2.检索型单轮对话机器人

     检索型单轮机器人(FQA-Bot)涉及到的技术和信息检索类似,流程图如下所示。

              

因为query和候选答案包含的词都很少,所以会利用同义词和复述等技术对query和候选答案进行扩展和改写。词表示工具Word2vec、GloVe、Fasttext等可以获得每个词的向量表示,然后使用这些词向量计算每对词之间的相似性,获得同义词候选集。当然同义词也可以通过已经存在的结构化知识源如WordNet、HowNet等获得。复述可以使用一些半监督方法如DIRT在单语语料上进行构建,也可以使用双语语料进行构建。PPDB网站包含了很多从双语语料构建出来的复述数据集。

3.知识图谱型机器人

知识图谱型机器人(KG-Bot,也称为问答系统),利用知识图谱进行推理并回答一些事实型问题。知识图谱通常把知识表示成三元组—— (主语、关系、宾语) ,其中关系表示主语和宾语之间存在的某种关系。

构建通用的知识图谱非常困难,不建议从0开始构建。我们可以直接使用一些公开的通用知识图谱,如YAGO、DBpedia、CN-DBpedia、Freebase等。特定领域知识图谱的构建可参考“知识图谱技术原理介绍”( http://suanfazu.com/t/topic/13105),“最全知识图谱综述#1: 概念以及构建技术”( https://mp.weixin.qq.com/s/aFjZ3mKcJGszHKtMcO2zFQ)等文章。知识图谱可以使用图数据库存储,如Neo4j、OrientDB等。当然如果数据量小的话MySQL、SQLite也是不错的选择。

为了把用户query映射到知识图谱的三元组上,通常会使用到实体链接(把query中的实体对应到知识图谱中的实体)、关系抽取(识别query中包含的关系)和知识推理(query可能包含多个而不是单个关系,对应知识图谱中的一条路径,推理就是找出这条路径)等技术。

4.任务多轮对话机器人

任务型多轮机器人(Task-Bot)通过多次与用户对话交互来辅助用户完成某项明确具体的任务,流程图见下图

        

除了与语音交互的ASR和TTS部分,它包含以下几个流程:

    • 语言理解(SLU):把用户输入的自然语言转变为结构化信息——act-slot-value三元组。例如餐厅订座应用中用户说“订云海肴中关村店”,我们通过NLU把它转化为结构化信息:“inform(order_op=预订, restaurant_name=云海肴, subbranch=中关村店)”,其中的“inform”是动作名称,而括号中的是识别出的槽位及其取值。
      NLU可以使用语义解析或语义标注的方式获得,也可以把它分解为多个分类任务来解决,典型代表是Semantic Tuple Classifier(STC)模型。

    • 对话管理(DM):综合用户当前query和历史对话中已获得的信息后,给出机器答复的结构化表示。对话管理包含两个模块:对话状态追踪(DST)和策略优化(DPO)。
      DST维护对话状态,它依据最新的系统和用户行为,把旧对话状态更新为新对话状态。其中对话状态应该包含持续对话所需要的各种信息。
      DPO根据DST维护的对话状态,确定当前状态下机器人应如何进行答复,也即采取何种策略答复是最优的。这是典型的增强学习问题,所以可以使用DQN等深度增强学习模型进行建模。系统动作和槽位较少时也可以把此问题视为分类问题。

    • 自然语言产生(NLG):把DM输出的结构化对话策略还原成对人友好的自然语言。简单的NLG方法可以是事先设定好的回复模板,复杂的可以使用深度学习生成模型,如“Semantically Conditioned LSTM”通过在LSTM中加入对话动作cell辅助答复生成。
      任务型对话机器人最权威的研究者是剑桥大学的Steve Young教授,强烈推荐他的教程“Statistical Spoken Dialogue Systems”。他的诸多博士生针对上面各个流程都做了很细致的研究,想了解细节的话可以参考他们的博士论文。相关课程可参考Milica Gašić的“Speech and Language Technology”。
      除了把整个问题分解成上面几个流程分别优化,目前很多学者也在探索使用端到端技术整体解决这个问题,代表工作有Tsung-Hsien Wen等人的“A Network-based End-to-End Trainable Task-Oriented Dialogue System”和Xiujun Li等人的“End-to-End Task-Completion Neural Dialogue Systems”。后一篇的开源代码https://github.com/MiuLab/TC-Bot,非常值得学习。

5.闲聊型机器人

真实应用中,用户与系统交互的过程中不免会涉及到闲聊成分。闲聊功能可以让对话机器人更有情感和温度。闲聊机器人(Chitchat-Bot)通常使用机器翻译中的深度学习seq2seq框架来产生答复,如图:

 

转载于:https://www.cnblogs.com/maowuyu-xb/p/9287132.html


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

相关文章

安排,Mysql入门到精通教程

来源: 来自网络,如侵权请告知博主删除????。 仅学习使用,请勿用于其他~ spring,vue的,前后端的都给童鞋安排过一些了,有童鞋让我安排Mysql了,走起 目录: 课时1:Mysql介绍.mp4课…

js 面向对象的三大特性

一。封装 所谓封装的概念,是不希望暴露函数中属性或者方法的地址,使外界不能操作,但是可以暴露特有的公有接口,可以利用接口操作。 function hello(){var namexiaoming;this.getnamefunction(){return name;}} 封装在平日里用的比…

JS面向对象三大特性

首先对象的声明语法 1.通过Object var object new Object(); //动态添加属性。方法 object.nametest; object.method function(){}2.对象字面量 var object {name:test,method:function(){} }3.构造函数 function Object(name){this.name name,this.method function(){…

javaScript面向对象的三个基本特征介绍

了解过面向对象的同学应该都知道,面向对象三个基本特征是:封装、继承、多态,但是对于这三个词具体可能不太了解。对于前端来讲接触最多的可能就是封装与继承,对于多态来说可能就不是那么了解了。 封装 在说封装之先了解一下封装…

javascript面向对象的三大特性

面向过程和面向对象 区别 面向过程:关注的是过程 中的每一个环节 吃蛋炒饭:买鸡蛋→买米→蒸米→炒蛋→炒米→混合→搅拌→蛋炒饭 面向对象:关注的是让对象 做事情 找一个对象(老公或老婆).做蛋炒饭 面向对象编程 …

JS面向对象的三大特性简述

1.语法 1.1 对象的声明语法 1.1.1通过字面量方式新建对象 var obj {}var obj1 {name: hhupp,call: function() {console.log(CALL)}}console.log(obj, obj)console.log(obj1, obj1)obj1.call() 1.1.2通过new关键词新建对象(不推荐--和通过字面量方式新建对象并无…

一个小实验告诉你,内存速度到底比硬盘快多少!!!

近期在Linux下做了一个小实验,亲身体会了内存的速度到底比硬盘快多少。 实验步骤如下: 1. df #查看磁盘信息 2. dd if/dev/zero of /dev/shm/file bs1M count3000 3. dd if/dev/zero of/mnt/file bs1M count3000由此可见,内存的读取速…

硬盘和内存的速度

1. 简介 随着电子技术的发展,内存和硬盘的速度都在提高,但同时,旧技术因为应用场景依然存在,速度上有个大致的理解上有必要的。 2. 内存的速度 3. 存储介质的速度 操作平台 读 写 NVME PCIE SSD(gen3 4x) 2.1 GB/s 1.2 GB/s…

CPU、寄存器、内存、磁盘、网络性能分析

介绍 寄存器 最靠近 CPU 的控制单元和逻辑计算单元的存储器,就是寄存器了,它使用的材料速度也是最快的,因此价格也是最贵的,那么数量不能很多。 存储器的数量通常在几十到几百之间,每个寄存器可以用来存储一定的字节…

《手机网速、CPU、内存和闪存》的速度制衡之道

一、手机网速、CPU、内存与闪存的速度制衡之道: 手机响应速度的快慢很大程度上是多方面因素共同作用的结果,例如高性能的处理器、快速的内存和闪存标准、良好的网络链接性能、优化完善的操作系统等等,这就是Iphone手机的流畅体验要远远好于大…

类比 -高速缓存Cache/内存/磁盘读写速度类比

1、计算机设备、组件数据传输速度类比 计算机设备、组件读类比机械硬盘0.1G/S蜗牛量级(60m/h) , 以机械盘为基准固态盘1.3G/S龟速量级(780m/h),13倍机械硬盘内存30G/S跑步量级(23.4km/h&#x…

内存的速度和CPU缓存速度比较

转载于:https://blog.csdn.net/moyeshuier/article/details/103943355 这之前,我必须先讲一下cpu cache 内存三个组件在运行程序时候的关联,有了这个基础我后面才能讲锁。 那今天讲的是缓存一致性,首先要理解我说的缓存是什么意思…

计算机内存加速,电脑内存运行速度如何提升

电脑内存运行速度如何提升是一个经常提到的话题,需要了解一些基本的电脑知识来处理,下面学习啦小编介绍内存升级提高电脑运行速度的办法。 电脑内存运行速度提升方法 1.调整高速缓存区域的大小。所谓高速缓存,是指系统在读取磁盘、光盘上的数据时,采取“预读取”技术,也 就…

GPU 内存结构

GPU 和CPU通过 VLink 或者PCLe 相连。 每个SM 又含有多个cuda core,多个SM共享全局内存,通过L2 高速缓存和全局内存进行相连,不同代的GPU之间的体系结构有所不同。 右边是一个SM 上的 内存,有共享内存,局部内存&…

计算机专业电脑内存,电脑内存大小是否和速度有关?

我们总觉得内存大一点,就是运行速度一定是快。现在市面上的电脑,配置已经很强大了,动不动内存就上12G、16G的笔记本、一体机电脑随处可见。电脑已经到了瓶颈且性能过剩的年代,其实内存越大就代表电脑速度越快,这里有些误区,今天就让小编跟大家说说内存这点事儿。 计算机运…

linux怎么看内存时序,内存速度和时序重要么

描述 最近是跟内存耗上了,其一是手里没有其它硬件可测,更重要的是想趁着这段时间,把内存与性能之间的影响都慢慢测一下。今天测的就是时序与内存性能之间的关系了。时序很重要吗?答案是肯定的,但是时序对内存性能的影响到底有多大呢?下面就详细的测试一下。 用来测试的内…

手机测试内存速度的软件,如何查看手机内存速度?手机内存读取速度测试_手机内存速度多少算正常...

如何查看手机内存速度?手机内存速度多少算正常?下面小编就给大家介绍下手机内存读取速度测试发方法! 今早,手机内存问题再度引起热潮,很多朋友都在讨论手机内存速度问题。那么问题来了,如何正确测试自己手机…

双倍数据率同步動態隨機存取記憶體(英語:,簡稱DDR SDRAM)

双倍数据率同步動態隨機存取記憶體(英語:,簡稱DDR SDRAM)為具有雙倍資料傳輸率的SDRAM,其資料傳輸速度為系統時脈的兩倍,由於速度增加,其傳輸效能優於傳統的SDRAM。 DDR SDRAM 研發商SamsungJED…