SIGIR 2023 | 语音让对话推荐更easy,火山语音联合新加坡科学研究院发布业内首个语音对话推荐数据集

news2024/11/24 22:51:03

近年来,推荐系统在工业界取得了巨大成功,甚至成为互联网发展中不可或缺的增长引擎,基于此研究者们也在积极探索推荐系统的新形态,其中对话推荐系统(Conversational Recommender System,简称CRS)作为一个备受关注的研究方向被热议。对话推荐系统主要是通过使用自然语言进行多轮对话,逐步了解用户的兴趣偏好,并向他们推荐可能感兴趣的物品。

通常对话推荐主要是以文本形式存在,即用户需要在聊天框内输入文本进行对话,然而在日常生活中,语音作为对话中常见且便捷的承载方式,除语义内容外,还包含性别、年龄、口音、情绪状态等更多信息。经过验证,这些信息可以有效提升对话推荐性能。更重要的一点,基于语音的对话推荐,对于视力障碍以及书写阅读能力有限的人群将会更加友好,因而更加包容。

创新意味着挑战,面对语音对话推荐(Voice-based Conversational Recommender System,简称VCRS)这一全新的研究课题,没有可用的数据集是当下比较棘手的事情。为了解决这个问题,火山语音团队联合新加坡科学研究院团队提出了首个VCRS Benchmark Dataset论文入选SIGIR 2023,旨在讲述该方面的研究,推动语音对话推荐的发展。

  论文地址:https://arxiv.org/pdf/2306.08219.pdf

  代码链接:https://github.com/hyllll/VCRS

图片

在该数据集生产过程中,双方团队使用了ChatGPT以及语音合成技术,通过在真实推荐数据的基础上模拟生成对应的语音对话推荐数据,并进一步实验验证了语音对话推荐相较于传统的文本对话推荐具有更大优势;基于语音信号,模型可以抽取性别、年龄等辅助信息进一步提升推荐准确率;最后该论文还给出了未来语音对话推荐研究的范式判断,从而激发更多相关工作。

VCRS数据集的生产流程

具体来说如下图所示,VCRS数据集的生产过程主要包括四个部分,分别是:

  1. 骨干数据集选择(Backbone dataset selection)

  2. 文本对话生成(Text-based Conversation Generation)

  3. 语音对话合成(Voice-based Conversation Generation)

  4. 数据质量评估(Quality Evaluation)

图片

VCRS数据集的生产过程

骨干数据集选择(Backbone Dataset Selection)对于VCRS数据集生产,一个合格的候选骨干数据集需要包含三种信息,分别是用户-商品交互记录、商品特征以及用户特征。通过用户—商品交互记录以及商品特征可以合成文本对话,进而再凭借用户特征(性别、年龄等信息就)就可以完成语音对话合成。根据以上规则,该论文选取了Coat 和MovieLens-1M两个数据集进行了实验。

文本对话生成(Text-based Conversation Generation)论文提出根据对话模板进行slot filling的方式来完成对话语句的生成,该过程主要包含三个部分:

  • 模板生成(Template Generation)

首先需要为每种商品特征(例如衣服颜色、款式等)设计不同形式的询问和回答组合。针对每个组合都分配了一种独特的标签-标识符tag-id,以便在后续的模板选择中方便使用。这种设计有效避免了下图所示“答非所问”的情况,从而使生成的对话更加连贯与紧凑。

图片

Bad cases: “答非所问”示例

同时该团队还借助于ChatGPT的对话生成能力,在初始模板基础上进行改进和丰富,以增加模板的多样性和自然性;为进一步保证对话的完整性,还在基本的问询/回答模板之外为对话设计了相应的开始/结束模板。

  • 模板选择(Template Selection)

由于在模板生成阶段,每个标签-标识符(tag-id)对应的问答模板已经具有密切相关性,所以在模板选择阶段只需分别从每个标签-标识符下采样问题和答案即可。此外,考虑到很多对话推荐场景下,用户在互动初始阶段通常没有非常清晰的意图,对此团队们采用了有偏的采样策略,即相对于询问类的问题,选择类的问题被赋予更高的采样概率。

  • 特征选择(Feature Selection)

根据上述模板生成和选择的方法,目前可以对某一商品特征进行对话合成,但对于一件商品而言,通常会涉及多个特征,例如颜色与款式等,所以确定不同特征的询问顺序对于推荐结果常常产生显著影响,因此这些特征对用户的偏好具有不同权重。为了解决这个问题,团队们提出了一种利用决策树中的LightGBM方法来计算各个特征权重的方式,具体的计算方法如下图表示:

图片

特征权重计算流程

语音合成(Voice-based Conversation Generation)根据上述文本对话的生成结果,双方团队进一步利用语音合成系统将生成的文本对话转化为相应的语音对话,在此过程中主要采用了当前端到端的VITS系统。对于Agent的语音合成,使用了基于LJSpeech训练的单一说话人TTS模型;而对于User的语音对话合成,则采用了基于VCTK训练的多说话人TTS模型,在该模型中,依据推荐数据集中用户的辅助信息(年龄、性别),与VCTK数据集中的Speaker进行匹配,进而确定User的说话人ID。

数据质量评估(Quality Evaluation)为了评估生成的数据质量,团队们分别从文本质量和语音质量两个维度对数据集进行了评估。在文本质量评估过程中使用了目前SOTA的FED (fine-grained evaluation of dialogue)指标,FED使用预训练的DialoGPT模型作为基准来对对话进行18个尺度的评估,具体细则既包含局部评分(如正确性,可读性及流畅性等),又包含了全局评分(如连贯性,一致性及多样性等)。从下述的对比结果中可以看到,合成得到的对话评分超过了人类真实的对话推荐数据集(ReDial, OpenDialKG以及INSPIRED)。

图片

同时下图示例也展示了合成的推荐对话与真实对话相似,并且明显优于之前工作HOOPS中的文本推荐对话。

图片

合成对话示例及对比

对于语音对话的评估主要采用主观评测的方式,具体做法是将文本对话分别通过多个语音合成系统 (TacoW, TranW, FastW)与VITS进行比较,最终结果如下表所示,VITS明显优于其他模型。

图片

更重要的一点,团队们利用以上合成的VCRS Benchmark Dataset,进一步验证了在推荐性能方面使用该数据集所带来的好处,具体方案如图:

图片

两阶段语音对话推荐解决方案

在推荐模型的训练过程中,语音对话首先经过语音编码器(Wave2Vec2)进行编码,并从中提取出辅助信息(性别、年龄)的表示;随后这些提取到的辅助信息被注入推荐模型中,这一步能够增强推荐模型的性能;此外团队们还给出了未来在语音对话推荐场景下端到端的方案,如下图所示:

图片

端到端语音对话推荐解决方案

实验结果

论文基于Factorization Machines (FM)在合成的语音对话推荐数据集进行了推荐性能的分析,具体结果所示:

图片

通过实验结果的观察,可以明显看出当语音中融入性别或年龄单一信息时,推荐模型的性能会显著提高;而当性别和年龄信息同时被引入时,模型的性能则进一步得到提升。这一系列实验结果表明,语音对话推荐研究的必要性以及重要性,甚至对于未来在端到端语音推荐场景下所能发现的更多信息充满了信心,在这个领域将会展现出更多令人振奋的发现。

一直以来,火山语音团队面向字节跳动内部各业务线,提供优质的语音AI技术能力以及全栈语音产品解决方案,并通过火山引擎对外提供服务。自 2017 年成立以来,团队专注研发行业领先的 AI 智能语音技术,不断探索AI 与业务场景的高效结合,以实现更大的用户价值。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode做题笔记37

编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独部分…

Flowable-UI

title: Flowable-UI date: 2023-7-23 12:19:20 tags: - Flowable Flowable-UI 安装 手把手教大家画了这样一个流程图,虽然说它不是特别好用,但是也不是不能用,也能用。好了,那么接下来的话,我们这个就先告一个段落&…

【OC总结 属性关键字】

文章目录 前言1. 属性关键字的分类2. 内存管理关键字2.1 weak2.2 assginweak和assgin的区别2.3 strong2.4 copy关键字copy关键字和strong的区别注意 2.5 多种copy模式:copy 和 mutableCopy 对 容器对象 进行操作2.6 问题总结 3. 线程安全的关键字 (nonatomic, atomi…

SpringBoot仅会SSM强撸项目--【JSB项目实战】

SpringBoot系列文章目录 SpringBoot知识范围-学习步骤【JSB系列之000】 文章目录 SpringBoot系列文章目录SpringBoot技术很多很多面对越来越紧的时间,越来越少的知识我要怎么办项目里可能要用到的技术前后端分离json其它的必要知识 环境及工具:上代码Co…

Java-IDEA好用的插件

Lombok,结合一些列注解,帮我们轻松解决重复编写实体类get、set、toString、build、构造方法等麻烦 Chinesepinyin-CodeComp,让界面汉化,使用起来更有亲和力 MyBatisX,点击小鸟图标,轻松再Mapper接口与xml文件之间实…

Spring Security OAuth2.0 - 学习笔记

一、OAuth基本概念 1、什么是OAuth2.0 OAuth2.0是一个开放标准,允许用户授权第三方应用程序访问他们存储在另外的服务提供者上的信息,而不需要将用户和密码提供给第三方应用或分享数据的所有内容。 2、四种认证方式 1)授权码模式 2&#x…

云性能监控的应用是提升云服务质量的关键

随着云计算的普及和企业对云服务的广泛应用,保证云服务的质量和性能已成为企业的重要课题。在这一背景下,云性能监控应运而生,成为提升云服务质量的重要工具,也可以说云性能监控的应用是提升云服务质量的关键。 首先,云…

win10 hadoop报错 unable to load native-hadoop library

win10 安装hadoop执行hdfs -namenode format 和运行hadoop的start-all报错 unable to load native-hadoop library 验证: hadoop checknative -a 这个命令返回都是false是错的 返回下图是正确的 winutils: true D:\soft\hadoop-3.0.0\bin\winutils.exe Native li…

LLM-Blender:大语言模型也可以进行集成学习

最近在看arxiv的时候发现了一个有意思的框架:LLM-Blender,它可以使用Ensemble 的方法来对大语言模型进行集成。 官方介绍如下:LLM-Blender是一个集成框架,可以通过利用多个开源大型语言模型(llm)的不同优势来获得始终如一的卓越性…

pycharm 添加pyuic 插件

添加pyuic插件,就能将ui类型的文件转换称py格式的文件 进入主界面 打开文件->设置->外部工具 点击加号,添加扩展 图1 添加外部扩展 名字记作 pyuic,分组到External Tools 描述为ui to py ,地址选择为 python.exe 的目录地址 参数填写&a…

Python实现抽象工厂模式

抽象工厂模式是一种创建型设计模式,用于创建一系列相关或依赖对象的家族,而无需指定具体类。在Python中,可以通过类和接口的组合来实现抽象工厂模式。 下面是一个简单的Python实现抽象工厂模式的示例: # 抽象产品接口 class Abs…

客户案例 | 思腾合力服务器助力西安电子科技大学人工智能实验室建设

客户介绍 西安电子科技大学是以信息与电子学科为主,工、理、管、文多学科协调发展的全国重点大学,直属教育部,是国家“优势学科创新平台”项目和“211工程”项目重点建设高校之一、国家双创示范基地之一、首批35所示范性软件学院、首批9所示范…

微服务系列(1)-who i am?

微服务系列(1)-我是谁 应用架构的演化 简单来说系统架构可以分为以下几个阶段:复杂的臃肿的单体架构-SOA架构-微服务 单体架构及其所面临的问题 在互联网发展初期,用户数量少,流量小,硬件成本高。因此…

LangChain Agents深入剖析及源码解密上(一)

LangChain Agents深入剖析及源码解密上(一) LangChain Agents深入剖析及源码解密上 Agent工作原理详解 本节会结合AutoGPT的案例,讲解LangChain代理(Agent)为核心的内容。我们前面已经谈了代理本身的很多内容,也看了绝大部分的源代码,例如:ReAct的源代码,还有mrkl的源代…

HDFS基本操作命令

这里写目录标题 HDFS Shell CLI客户端说明常用命令hadoop fs -mkdir [-p] <path>hadoop fs -ls [-h] [-R] [<path>...]上传文件到指定目录下方法一:hadoop fs -put [-f] [-p] <localsrc>.....<dst>方法二&#xff1a;hadoop fs -moveFromLocal <loc…

金融机构如何管理UPS设备?这个方法超值!

UPS监控在金融行业中扮演着至关重要的角色&#xff0c;确保金融机构在电力故障或波动的情况下依然能够保持业务的稳定运行。 因此&#xff0c;UPS监控在金融行业中扮演着守护者的角色&#xff0c;确保金融机构能够在复杂的电力环境中持续稳健地运行。 客户案例 一家国际性的金…

数据库应用:Redis安装部署

目录 一、理论 1.缓存 2.关系型数据库与非关系型数据库 3.Redis 4.Redis安装部署 5.Redis命令工具 6.Redis数据库常用命令 7.Redis多数据库操作 二、实验 1.Redis安装部署 2.Redis命令工具 3.Redis数据库命令 4.Redis多数据库操作 三、问题 1.RESP连接CentOS 7 R…

KnowStreaming系列教程第二篇——项目整体架构分析

一、KS项目代码结构&#xff1a; ks项目代码结构如上&#xff1a; (1)km-console 是前端部分&#xff0c;基于React开发 (2)km-rest 是后端部分&#xff0c;主要是接受前端请求&#xff0c;对应controller相关代码所在模块 (3)km-biz:业务逻辑处理 (4)km-core:核心逻辑 (5…

MapGIS“透明”地下空间,助力城市纵向发展新实践

城市地下空间拓展是城市化发展的必然趋势&#xff0c;城市化发展需要拓展城市空间&#xff0c;城市空间的横向拓展以蔓延式、平面化的发展模式造成土地资源的巨大浪费&#xff0c;地下空间是城市战略性新型国土资源&#xff0c;开发利用城市地下空间是提高土地利用效率、扩大城…

P2096 最佳旅游线路

竖直方向可以随便走嘛&#xff0c;所以求出每一列 的最大值&#xff0c;再做比较就可以了(求最大子段和)。 ACcode: #include<bits/stdc.h> using namespace std; int n,m,a[105][20010],b[20010],dp[20010]; void solve() {cin>>n>>m;for(int i1;i<n;i)f…