之前,在我的另一篇博客:简述智能对话系统 里面概述了对话系统的分类、应用场景及产生的社会价值。今天,来简单讲述一下对话系统的主要模块与核心技术。
网络异常,图片无法展示
|
众所周知,一个合格的对话系统需要能够听懂语音、理解对话并且能够快速反馈。下面将围绕它的核心功能讲述它所涉及到的主要模块与核心技术。
主要模块
网络异常,图片无法展示
|
网络异常,图片无法展示
|
语音模块
语音部分主要有ASR(语言识别)与TTS(语言合成)。
语言模块
语言部分主要由对话管理(DM)、自然语言理解(NLU)、自然语言生成(NLG)组成。
DM(对话管理)
对话管理(DM)由对话状态跟踪器(DST)和对话策略(DPL)构成,此模块就相当于任务型机器人的大脑,是很重要的决策模块。
常见的DM实现方式有:
- 基于规则的有限状态机(主流)
- 基于统计的方法
- 基于神经网络的方法
核心模块:
- 对话状态跟踪器(DST)
- 对话策略(DPL)
NLU(自然语言理解)
该部分通过意图识别和槽识别(信息抽取)来理解对话中用户语句的语义。
主要功能:
- 意图识别(Intent Prediction)
- 槽填充(Slot Filling)
NLG(自然语言生成)
该部分将策略模块生成的抽象系统动作转化为自然语言形式的浅层表达,输出到用户端。
主要方法:
- 基于话术模版
- 基于知识库检索
- 基于深度模型
一个好的NLG需具备4个特性:恰当、流畅、易读、灵活。
通讯模块
由通讯线路和FreeSwitch电话系统构成,通过SIP和RTP协议,实现进行各种信令和语音流的传输。其中,通讯线路包括三大运营商、各家集成线路商,用于提供线路资源将电话拨打出去。电话系统采用的是开源的FreeSwitch,主要用于处理外呼请求和传输SIP信令和语音流。
对话系统的核心技术
单轮对话
单轮对话主要依赖于知识库和问答对集合。
评测指标:
- 召回率
- 准确率
- 问题准确率
难点:
- 识别同一问题的不同表达方式
- 理解语义的细微差别,处理差异性问题
- 聚类高频问题,自动学习优化知识库
多轮对话
单轮对话主要考虑话语间的相互关系,可以处理不完整语义,记录历史话语。
评估指标:
- 任务完成率
- 定制难度(比如:界面交互体验如何?是否支持非AI专业人员开发?是否有完整的API和开发文档,供开发者快速开发和集成等。)
难点
- 准确的语义理解(比如:上下文关联、中途打断回溯、支持指代识别等)
- 状态管理和个性化语言生成(比如:用户画像管理、对话状态管理)
意图识别
意图识别的应用场景主要针对的是任务型对话系统。
难点:
- 用户输入不规范
- 多意图的判断
- 数据冷启动,必须基于大量数据才能定义并获取准确意图
- 没有固定的评估标准,基本以人主观判断为主
对话语言理解
基于语义解析(针对任务型对话系统)
识别意图并将其参数化。
- 用户问题: 今晚六点帮我在全聚德预定一个包厢,十个人
- 意图: 预定餐厅
- 词槽: 餐厅名、时间、人数
基于语义解析的常见技术手段
1. 启发式规则&推导
优势:
- 少量数据即可启动
- 优化手段直观可控
劣势:
- 需要大量专业知识
- 容易达到效果瓶颈
- 可迁移性较差
2. 传统机器学习
优势:
- 数据 & 特征驱动优化
- 具有较好的泛化效果
劣势:
- 需要领域特征工程
- 需要标注大量语料
3. 深度学习
优势:
- 纯数据驱动优化
- 具有更好的泛化效果
- 可迁移性较强
劣势:
- 需要海量语料
- 可控性和可解释性较差
基于语义匹配(针对问答型对话系统)
识别用户意图并找到与该意图最相似的问答对。
- 问题: 我想了解借现金怎么申请
- 标准问:【现金贷】借现金的申请流程是什么
- 答案: 当您用自己手机下载百度钱包App后,请进入借现金入口,申请额度→申请借款→资金到账。申请额度30秒审批,最多4步完成借款,98%用户可达到实时放款,资金快速到账,谢谢。
基于语义匹配的常见技术步骤:
- 输入查询
- 语言处理
- 语义计算
- 在问答数据库找到相似的问题
- 将相似查询问答的答案推送出去