| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> AI对话机器人实现原理 -> 正文阅读 |
|
[人工智能]AI对话机器人实现原理 |
文主要参考2019年3月出版的《自然语言处理实践-聊天机器人技术原理与应用》一书,结合个人理解对原理进行阐述,若有不当之处,请联系本文作者。另在此感谢此书作者王昊奋、邵浩、李方圆、张凯、宋亚楠(排名不分先后)。 ? 目录 一、聊天机器人分类以下这段描述出自CSDN人工智能专栏:
?在这段话中,以最简要的词语总结了市面上大部分AI聊天机器人的主要功能,那就是“让机器理解人的语言”,此后机器人会根据自身功能定位,以不同的行为模式对人类做出回复,例如生活中常见的个人助理型对话机器人(如:siri,小度等),就能够在任何语境下对用户的提问做出相对合理的反应,而一些任务问答型的对话机器人则只能对固定的提问模式和领域中解答用户提问(如:淘宝客服机器人等),根据机器人服务场景以及实现技术的不同,我们首先对此类AI对话机器人进行大致的分类。 1.1基于应用场景分类
1.2基于实现方式分类
1.3基于功能分类
前三者为当下聊天机器人的主要的3个方向,问答系统主要应用的是语言理解、匹配与检索技术;任务型对话系统主要技术是意图识别、对话管理;闲聊主要是自然语言检索与生成,最后一种在这里不做论述。 二、对话机器人技术原理2.1? AI对话机器人实现流程? 语音识别:语音转换成文本 2.2 语音识别&语音合成在以对话而非文本作为交流方式的对话机器人中,需要使用的语音技术主要分两块:一块是语音转文字,即语音识别;另一块是文字转语音,即语音合成。 语音识别技术(ASR):将人说话的语音信号转换为可被计算机识别的文字信息,从而识别说话人的语音指令以及文字内容的技术。 ? ?其大致过程由上图所示,在用户通过语音激活(按键确认后发声)/语音唤醒(特定声波捕获)向搭载了对话机器人的设备进行语音输入后,由系统对声音波段进行处理以提取语音特征,之后由训练完成的一套体系(譬如一个训练完成的神经网络)判断不同特征最有可能对应哪一个字的发音,将得到的单字进行排列后,输出一句完整的文本作为对话机器人之后阶段的输入。 当然在这个过程中可能还包括将词组或常见短句作为依据对文本进行修正的情况,在这里不详细描述。 语音合成技术(TTS):将文字信息转变为语音数据,以语音的方式播放出来的技术。 理解为ASR的反向操作就可以。 2.3 自然语言理解(NPL)对话机器人的自然语言理解一般包含以下几个方面:?
?为了完成上述表格所示的用于自然语言理解种种功能,词法分析、句法分析及语义分析这三种基础的技术常常在NPL过程中被使用。其中语法分析主要用于将汉语分词并进行词性标注;句法分析在此基础上解析短语的结构及深层文法;语义分析则是在获得了这些自然语言的表征后将它转化为机器能够理解的向量表示形式。 2.3.1基于知识图谱的自然语言理解 知识图谱可以被看成是结构化的语义知识库,其中包含实体-关系-实体这样的三元组以及实体-属性这样的对,其目的旨在以符号的形式描述真实世界中存在的各种实体或概念及其互相关系。 ?构建: 从传统数据库的结构化数据中映射到知识图谱; 融合: 将多个数据源抽取的指数进行融合 价值: 个性化的知识图谱可以支撑对话机器人应对用户的多样化需求,能够将问答、对话、闲聊等多个功能集中在同一个对话机器人身上,使得其应用场景的限制逐渐减少? ? 2.4 自然语言生成自然语言生成系统的两大主要架构: 1. 流线型pipline自然语言生成系统 系统由几个不同的模块组成,模块之前相互独立,一般包括文本规划(决定说什么),句子规划(决定怎么说),句子实现(让句子更连贯)? 2. 一体型integrated自然语言生成系统 模块之间相互左右,后续模块可以参与前面模块的决策。更符合人脑思维,但实现较为困难。因此较常用的未流线型自然语言生成系统? 自然语言生成系统的目前的两大主要技术:检索、生成 2.4.1 检索技术 需前期准备大量的qa对语料库,通过排序与深度匹配技术,在已有语料库中找到适合当前输入的最佳回复。 2.4.2 生成技术 基于深度学习,通过编码-解码的过程,逐字或逐词地生成回复。 通过对抗圣城网络GAN生成自然语言。 缺点: 2.5 对话管理对话管理的主要任务:维护更新对话状态,动作选择。 对话状态是指当前用户与机器对话数据的表征; 为了实现对话管理的功能,常用的有四种实现技术: 对话行为识别:相当于是意图识别,封闭式的行为识别是讲用户意图映射到预先设定好的意图类别中,如在任务型对话中有订机票、点外卖、搜美食等。开放式行为识别是没有预先设定的行为类别的,一般用于闲聊系统。 对话状态识别:对法状态识别需要考虑进对话的上下文与对话行为的相关信息,在某时刻的对话行为序列即为某时刻的对话状态。? 对话策略学习:通过离线的方式,预先让机器进行对话策略学习,从人-人的真实对话中学习对话行为、状态等,然后再人-机对话过程中进行策略选择。 对话奖励:评价对话系统的评价机制,比如槽位填充效率、回复的流行度,以及日渐火爆的强化学习中的长期奖励机制。 2.5 1?对话管理的4种方法 1.基于有限状态自动机 finit state machine, FSM 人工显式地定义出对话系统可能出现的所有状态,对话状态会根据当前输入在预定的状态间进行跳转,从而根据新的状态去选择合适的动作。 优点:简单易用。 缺点:人工设计状态,与状态对应的动作,难以应用于复杂场景。 2.基于统计的对话管理 将对话过程表示成一个部分可见的马尔科夫决策过程。设定系统在每个特定的状态下执行某一特定动作都会获得对应的回报,因此选择动作时会选择期望回报最大的那个动作。???????????????????????????????? 优点:(1)只需定义马尔科夫决策过程中的状态与动作,机器可以通过学习得到不同状态下的转移冠关系;(2)可以使用强化学习的方法学习出最有的动作选择策略 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 缺点:仍然需要人工定义对话系统的状态,在不同的领域中通用性不强。???????? 3.基于神经网络对话管理方法 将自然语言理解的输出以及其他各类特征作为神经网络的输入,将选择的动作作为神经网络的输出。对话状态由神经网络的隐状态表示。 优点:不需要人工定义对话状态 缺点:需要大量的训练数据??????? 4.基于框架的对话管理 框架即槽值对,明确规定特征槽状态下的用户动作对应的系统动作。 优点:用于特定领域的对话系统 缺点:难以衍生到其他领域 ? ? ? ? ? ? ? 三、总结综述由上述介绍我们最终可以认为一个基础的AI对话机器人的实现原理大致为: 通过语音识别技术获取用户输入后,使用自然语言理解技术将得到的输入文本转换为计算机能够理解的向量形式,之后借由一个训练完好的对话管理系统(如一个基于深度学习的神经网络)判断用户意图并根据学习到的人类行为模式做出策略选择,之后通过自然语言生成技术规划出符合人类思维的回答并通过语音合成技术转化为语音播放,从而与用户进行互动。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 10:04:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |