浅析人机对话系统的主要模块及核心技术

简介: 之前,在我的另一篇博客:简述智能对话系统 里面概述了对话系统的分类、应用场景及产生的社会价值。今天,来简单讲述一下对话系统的主要模块与核心技术。

之前,在我的另一篇博客:简述智能对话系统 里面概述了对话系统的分类、应用场景及产生的社会价值。今天,来简单讲述一下对话系统的主要模块与核心技术。

网络异常,图片无法展示
|


众所周知,一个合格的对话系统需要能够听懂语音理解对话并且能够快速反馈。下面将围绕它的核心功能讲述它所涉及到的主要模块与核心技术。

主要模块

网络异常,图片无法展示
|


网络异常,图片无法展示
|
一般来说,对话系统主要由 语言模块语言模块通信模块组成。

语音模块

语音部分主要有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信令和语音流。

对话系统的核心技术

单轮对话

单轮对话主要依赖于知识库和问答对集合。

评测指标:

  1. 召回率
  2. 准确率
  3. 问题准确率

难点:

  • 识别同一问题的不同表达方式
  • 理解语义的细微差别,处理差异性问题
  • 聚类高频问题,自动学习优化知识库

多轮对话

单轮对话主要考虑话语间的相互关系,可以处理不完整语义,记录历史话语。

评估指标:

  1. 任务完成率
  2. 定制难度(比如:界面交互体验如何?是否支持非AI专业人员开发?是否有完整的API和开发文档,供开发者快速开发和集成等。)

难点

  • 准确的语义理解(比如:上下文关联、中途打断回溯、支持指代识别等)
  • 状态管理和个性化语言生成(比如:用户画像管理、对话状态管理)

意图识别

意图识别的应用场景主要针对的是任务型对话系统。

难点:

  • 用户输入不规范
  • 多意图的判断
  • 数据冷启动,必须基于大量数据才能定义并获取准确意图
  • 没有固定的评估标准,基本以人主观判断为主

对话语言理解

基于语义解析(针对任务型对话系统)

识别意图并将其参数化。

  • 用户问题: 今晚六点帮我在全聚德预定一个包厢,十个人
  • 意图: 预定餐厅
  • 词槽: 餐厅名、时间、人数
基于语义解析的常见技术手段
1. 启发式规则&推导

优势:

  • 少量数据即可启动
  • 优化手段直观可控

劣势:

  • 需要大量专业知识
  • 容易达到效果瓶颈
  • 可迁移性较差
2. 传统机器学习

优势:

  • 数据 & 特征驱动优化
  • 具有较好的泛化效果

劣势:

  • 需要领域特征工程
  • 需要标注大量语料
3. 深度学习

优势:

  • 纯数据驱动优化
  • 具有更好的泛化效果
  • 可迁移性较强

劣势:

  • 需要海量语料
  • 可控性和可解释性较差

基于语义匹配(针对问答型对话系统)

识别用户意图并找到与该意图最相似的问答对。

  • 问题: 我想了解借现金怎么申请
  • 标准问:【现金贷】借现金的申请流程是什么
  • 答案: 当您用自己手机下载百度钱包App后,请进入借现金入口,申请额度→申请借款→资金到账。申请额度30秒审批,最多4步完成借款,98%用户可达到实时放款,资金快速到账,谢谢。

基于语义匹配的常见技术步骤:

  1. 输入查询
  2. 语言处理
  3. 语义计算
  4. 在问答数据库找到相似的问题
  5. 将相似查询问答的答案推送出去


相关文章
|
数据采集 运维 监控
|
搜索推荐 前端开发 架构师
阿里高级技术专家谈开源DDD框架:COLA4.0,分离架构和组件(上)
阿里高级技术专家谈开源DDD框架:COLA4.0,分离架构和组件(上)
3041 0
阿里高级技术专家谈开源DDD框架:COLA4.0,分离架构和组件(上)
|
存储 运维 监控
Elasticsearch Serverless形态对比测评
阿里云检索分析服务 Elasticsearch 版是100%兼容开源的分布式检索、分析套件。提供ELK开源全托管的产品服务能力。为结构化/非结构化数据提供低成本、高性能及可靠性的检索、分析平台级产品服务。Serverless版本是基于云原生Serverless技术,为用户打造的更低成本、弹性灵活、开放兼容、开箱即用的云上Elasticsearch服务。本文对比国内阿里云、华为云和腾讯云三大主要云服务提供商的该产品,希望能给大家带来一些帮助。
|
容器
基于Arduino的植物浇水系统
基于Arduino的植物浇水系统
281 0
|
11月前
|
缓存 网络协议 API
掌握网络通信协议和技术:开发者指南
本文探讨了常见的网络通信协议和技术,如HTTP、SSE、GraphQL、TCP、WebSocket和Socket.IO,分析了它们的功能、优劣势及适用场景。开发者需根据应用需求选择合适的协议,以构建高效、可扩展的应用程序。同时,测试与调试工具(如Apipost)能助力开发者在不同网络环境下优化性能,提升用户体验。掌握这些协议是现代软件开发者的必备技能,对项目成功至关重要。
|
数据可视化 Python
流形学习(Manifold Learning)是一种非线性降维方法
流形学习(Manifold Learning)是一种非线性降维方法
472 24
|
算法 测试技术 开发者
测试驱动开发(TDD)实战:从理论到实践
【5月更文挑战第8天】TDD实战指南:先测试后开发,确保代码质量与可维护性。核心思想是编写测试用例→实现代码→验证→重构。优点包括提高代码质量、促进设计思考和增强可测试性。实战步骤包括编写独立、明确的测试用例,遵循最小可用原则编写代码,运行测试并分析失败原因,以及在验证通过后进行代码重构与优化。通过TDD,开发者能提升编程技能和项目成功率。
1151 3
|
API Python
​不用SMTP实现联系表单提交后发送邮件到指定邮箱
构建网站时,联系表单可通过邮件API(如SendGrid、Mailgun、Amazon SES)或第三方自动化服务(Zapier、Integromat)无需SMTP发送邮件。使用API服务,如SendGrid的Python示例,可直接集成到表单提交流程。第三方自动化服务允许表单提交触发邮件发送。后端脚本,如PHPMailer,也可用于邮件发送。这些方法简化了邮件发送并提高了效率。AokSend提供触发式接口和独立IP的高触达发信服务。
|
数据可视化 黑灰产治理
📊 ECharts 雷达图案例002 - 诈骗性质分析
**ECharts 案例展示了诈骗性质的雷达图分析,以创新可视化揭示诈骗模式。定制化雷达图配色鲜明,多维度剖析不同诈骗手段,如网络刷单、冒充公检法。交互式设计允许用户深入探究细节。[点击这里](https://download.csdn.net/download/No_Name_Cao_Ni_Mei/89454384)查看完整案例。#ECharts #数据可视化 #雷达图 #诈骗分析**
259 0
📊 ECharts 雷达图案例002 - 诈骗性质分析
|
存储 关系型数据库 分布式数据库
PolarDB产品使用问题之如何在本地进行部署
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
1608 1