0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CRSLab对话推荐系统开源库 相关代码和对应论文目前已经开源

深度学习自然语言处理 来源:深度学习自然语言处理 作者:RUC AI Box 2021-01-07 14:20 次阅读

随着对话系统和推荐系统的快速发展,新方向——对话推荐系统(Conversational Recommender System,简称CRS)也开始了蓬勃发展,其关注于如何通过基于自然语言的对话来获得用户的意图和偏好,以实现精准推荐。但是现有的CRS相关数据集和模型在建模场景、最终目标和使用技术等方面存在一定差异,使得研究者们很难对这些模型进行统一的评测对比。对于科研新手来说,更是难以在这些模型和数据集中抉择并快速搭建CRS系统。

为帮助各位道友“快乐+快速”上手研究对话推荐任务,我们(中国人民大学AI BOX团队)推出了开源项目CRSLab——一个用于构建对话推荐系统(CRS)的开源工具包,在这里我们致力于帮您实现一键复现,快速开发,自动评测的一条龙服务,相关代码和对应论文目前也已经开源。

目前为止,我们支持以下几大功能,还有更多好玩的功能正在路上!

便捷的使用方法:新手别害怕,CRSLab提供了简单而灵活的配置,快速调用分分钟的事;

6个数据集和18个模型:各种数据预处理已帮您完成,各种新模型也适配完毕,任君取用;

多样的评测方式:各个自动的评测指标都已经帮您实现,甚至还有人机交互的接口哦;

通用和可扩展的框架:还不满意?框架给您搭好,函数接口给您安排上,想怎么玩就怎么玩;

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

项目GitHub地址:https://github.com/RUCAIBox/CRSLab

懒人一键安装:pip install crslab

2af7ba6e-5036-11eb-8b86-12bb97331649.png

特性介绍

CRSLab完全基于 PyTorch 实现、主要面向研究者使用,其具有以下四大特性。

通用和可扩展的结构

我们设计了通用和可扩展的结构来统一各种对话推荐数据集和模型,并集成了多种内置接口和函数以便于快速开发。其具体框架如下所示:

2b077904-5036-11eb-8b86-12bb97331649.png

图片: CRSLab 的总体架构

其中Configuration模块提供了针对用户的接口,用户可以通过简单的命令行操作或修改给出的config文件,即可实现快速调用不同的CRS模型!Data,Model和Evaluator模块中集成了多个现有的数据集,模型和评测方案,省去了用户自行复现的时间。Utilities中集成了多个常用的功能函数,可以帮助用户快速从新搭建一个新的对话推荐系统!

全面的基准模型和数据集

在CRSLab中,我们集成了常用的 6 个数据集和 18 个模型。这6个数据集均为常用的人工标注数据集,但是其在任务定义、领域等方面存在差异。我们对其进行了预处理以得到统一的格式,并努力使其支持更多的先进模型,这些预处理包括:推荐商品抽取、实体链接、BPE分词等。我们提供了预处理后数据的下载链接以方便用户使用,如下为这些数据集的统计数据:

ReDial 10,006 182,150 Movie -- DBpedia ConceptNet
TG-ReDial 10,000 129,392 Movie Topic Prediction CN-DBpedia HowNet
GoRecDial 9,125 170,904 Movie Action Prediction DBpedia ConceptNet
DuRecDial 10,200 156,000 Movie, Music Goal Planning CN-DBpedia HowNet
INSPIRED 1,001 35,811 Movie Strategy Prediction DBpedia ConceptNet
OpenDialKG 13,802 91,209 Movie, Book Path Generation DBpedia ConceptNet
Dataset Dialogs Utterances Domains Task Definition Entity KG Word KG

我们将对话推荐任务主要拆分成三个子任务:推荐任务(生成推荐的商品),对话任务(生成对话的回复)和策略任务(规划对话推荐的策略)。其中所有的对话推荐系统都具有对话和推荐任务,它们是对话推荐系统的核心功能,而策略任务是一个辅助任务,其致力于更好的控制对话推荐系统,在不同的模型中的实现也可能不同(如TG-ReDial采用一个主题预测模型,DuRecDial中采用一个对话规划模型等)

在CRSLab中,我们实现了18 个模型,覆盖CRS、推荐、对话和策略模型四种类别,其中CRS模型是指同时对推荐和对话任务(甚至策略任务)进行建模的融合模型,其可以利用这些任务以相互增强彼此的表现;而其他模型则只针对于某一个子任务。这些模型中还包括一些已经在CRS任务上表现较好的前沿模型,如图神经网络(GCN)和预训练模型(BERT 和 GPT-2)。下表为这些模型的相关信息

CRS 模型 ReDial
KBRD
KGSF
TG-ReDial
×


×
×
×
×
推荐模型 Popularity
GRU4Rec
SASRec
TextCNN
R-GCN
BERT
×
×
×
×

×
×
×
×
×
×
对话模型 HERD
Transformer
GPT-2
×
×
×
×
×
策略模型 PMI
MGCG
Conv-BERT
Topic-BERT
Profile-BERT
×
×
×
×
×
×
×


类别 模型 Graph Neural Network Pre-training Model

多样的标准评测

我们支持一系列被广泛使用的评估方式来测试和比较不同的 CRS。针对对话推荐中包含的各个子任务(推荐,对话,策略),我们分别设计了对应的评测方法,供直接用户使用,如下表所示:

推荐任务 Hit@{1, 10, 50}, MRR@{1, 10, 50}, NDCG@{1, 10, 50}
对话任务 PPL, BLEU-{1, 2, 3, 4}, Embedding Average/Extreme/Greedy, Distinct-{1, 2, 3, 4}
策略任务 Accuracy, Hit@{1,3,5}
类别 指标

这里的推荐任务的若干指标均为常用的基于排序的指标;对话任务的指标包括评估概率分布(PPL),关联度(BLEU,Embedding)和多样性(Distinct)的指标;由于对话推荐系统中的策略往往不尽相同,这里我们采用常用的Accuracy和Hit来进行评估。

此外,我们还提供了人机交互接口,用户可以直接通过特定的接口函数和命令和自己搭建的对话推荐系统进行交互,进而分析其中的的bad case等,也可以帮助初学者掌握系统的运行流程。

便捷的使用方法

我们为新手提供了简单而灵活的配置,以快速启动集成在 CRSLab 中的模型。对于已经集成的模型和数据集,可以直接使用命令行进行调用,使用以下命令,系统将依次完成数据的预处理,以及各模块的训练、验证和测试,并得到指定的模型评测结果:

pythonrun_crslab.py--configconfig/kgsf/redial.yaml

如果您希望保存数据预处理结果与模型训练结果,可以使用如下命令:

pythonrun_crslab.py--configconfig/kgsf/redial.yaml--save_data--save_system

总的来说,run_crslab.py有如下参数可供调用:

--config 或 -c:配置文件的相对路径,以指定运行的模型与数据集。

--save_data 或 -sd:保存预处理的数据。

--restore_data 或 -rd:从文件读取预处理的数据。

--save_system 或 -ss:保存训练好的 CRS 系统。

--restore_system 或 -rs:从文件载入提前训练好的系统。

--debug 或 -d:用验证集代替训练集以方便调试。

--interact 或 -i:与你的系统进行交互的对话。

如果希望调节模型或数据集的参数设置,可以直接对yaml文件进行更改,其提供了相比较于命令行更方便的编辑功能,具体的各项参数定义在文档中已经给出。

安装与使用

CRSLab 可以在以下几种系统上运行:

Linux

Windows 10

macOS X

CRSLab 需要在 Python 3.6 或更高的环境下运行。CRSLab 要求 torch 版本在 1.4.0 及以上,如果用户想在 GPU 上运行 CRSLab,请确保你的 CUDA 版本或者 CUDAToolkit 版本在 9.2 及以上。

提醒:因为用户可能会因为未正确配置PyTorch,PyTorch Geometric等环境而导致无法使用,这里我们提供了详细的从零开始的安装流程,确保大家能够顺利安装。

安装 PyTorch

使用 PyTorch 本地安装命令或者先前版本安装命令安装 PyTorch,比如在 Linux 和 Windows 下:

#CUDA10.1 pipinstalltorch==1.6.0+cu101torchvision==0.7.0+cu101-fhttps://download.pytorch.org/whl/torch_stable.html #CPUonly pipinstalltorch==1.6.0+cputorchvision==0.7.0+cpu-fhttps://download.pytorch.org/whl/torch_stable.html

安装完成后,如果你想在 GPU 上运行 CRSLab,请确保如下命令输出True:

$python-c"importtorch;print(torch.cuda.is_available())" >>>True

安装 PyTorch Geometric

确保安装的 PyTorch 版本至少为 1.4.0:

$python-c"importtorch;print(torch.__version__)" >>>1.6.0

找到安装好的 PyTorch 对应的 CUDA 版本:

$python-c"importtorch;print(torch.version.cuda)" >>>10.1

安装相关的包:

pipinstalltorch-scatter-fhttps://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html pipinstalltorch-sparse-fhttps://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html pipinstalltorch-cluster-fhttps://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html pipinstalltorch-spline-conv-fhttps://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html pipinstalltorch-geometric

其中${CUDA}和${TORCH}应使用确定的 CUDA 版本(cpu,cu92,cu101,cu102,cu110)和 PyTorch 版本(1.4.0,1.5.0,1.6.0,1.7.0)来分别替换。比如,对于 PyTorch 1.6.0 和 CUDA 10.1,输入:

pipinstalltorch-scatter-fhttps://pytorch-geometric.com/whl/torch-1.6.0+cu101.html pipinstalltorch-sparse-fhttps://pytorch-geometric.com/whl/torch-1.6.0+cu101.html pipinstalltorch-cluster-fhttps://pytorch-geometric.com/whl/torch-1.6.0+cu101.html pipinstalltorch-spline-conv-fhttps://pytorch-geometric.com/whl/torch-1.6.0+cu101.html pipinstalltorch-geometric

安装 CRSLab

gitclonehttps://github.com/RUCAIBox/CRSLab&&cdCRSLab pipinstall-e.

快速测试

从 GitHub 下载 CRSLab 后,可以使用提供的脚本进行简单的测试:

pythonrun_crslab.py--configconfig/kgsf/redial.yaml

系统将依次完成数据的预处理,以及各模块的训练、验证和测试,并得到指定的模型评测结果。

结果展示

我们在 TG-ReDial 数据集上对模型进行了训练和测试,并记录了在三个任务上的评测结果。其中效果最好的模型是基于图神经网络的KGSF和基于预训练的TG-ReDial模型。

推荐任务

SASRec 0.000446 0.00134 0.0160 0.000446 0.000576 0.00114 0.000445 0.00075 0.00380
TextCNN 0.00267 0.0103 0.0236 0.00267 0.00434 0.00493 0.00267 0.00570 0.00860
BERT 0.00722 0.00490 0.0281 0.00722 0.0106 0.0124 0.00490 0.0147 0.0239
KBRD 0.00401 0.0254 0.0588 0.00401 0.00891 0.0103 0.00401 0.0127 0.0198
KGSF 0.00535 0.0285 0.0771 0.00535 0.0114 0.0135 0.00535 0.0154 0.0259
TG-ReDial 0.00793 0.0251 0.0524 0.00793 0.0122 0.0134 0.00793 0.0152 0.0211
Model Hit@1 Hit@10 Hit@50 MRR@1 MRR@10 MRR@50 NDCG@1 NDCG@10 NDCG@50

生成任务

HERD 0.120 0.0141 0.00136 0.000350 0.181 0.369 0.847 1.30 0.697 0.382 0.639 472
Transformer 0.266 0.0440 0.0145 0.00651 0.324 0.837 2.02 3.06 0.879 0.438 0.680 30.9
GPT2 0.0858 0.0119 0.00377 0.0110 2.35 4.62 8.84 12.5 0.763 0.297 0.583 9.26
KBRD 0.267 0.0458 0.0134 0.00579 0.469 1.50 3.40 4.90 0.863 0.398 0.710 52.5
KGSF 0.383 0.115 0.0444 0.0200 0.340 0.910 3.50 6.20 0.888 0.477 0.767 50.1
TG-ReDial 0.125 0.0204 0.00354 0.000803 0.881 1.75 7.00 12.0 0.810 0.332 0.598 7.41
Model BLEU@1 BLEU@2 BLEU@3 BLEU@4 Dist@1 Dist@2 Dist@3 Dist@4 Average Extreme Greedy PPL

策略任务

MGCG 0.591 0.818 0.883 0.591 0.680 0.683 0.591 0.712 0.729
Conv-BERT 0.597 0.814 0.881 0.597 0.684 0.687 0.597 0.716 0.731
Topic-BERT 0.598 0.828 0.885 0.598 0.690 0.693 0.598 0.724 0.737
TG-ReDial 0.600 0.830 0.893 0.600 0.693 0.696 0.600 0.727 0.741
Model Hit@1 Hit@10 Hit@50 MRR@1 MRR@10 MRR@50 NDCG@1 NDCG@10 NDCG@50

未来展望

对话推荐系统在未来肯定还会有更多工作,而且我们的CRSLab也有许多需要继续完善的地方。我们AI BOX团队将会持续开发维护CRSLab,保持版本稳定,并不断加入更多更新的模型和数据集。期待各位读者能够提供宝贵意见。

责任编辑:xj

原文标题:CRSLab:可能是最适合你的对话推荐系统开源库

文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    3323

    浏览量

    42475
  • 深度学习
    +关注

    关注

    73

    文章

    5500

    浏览量

    121118
  • 对话系统
    +关注

    关注

    0

    文章

    7

    浏览量

    2181

原文标题:CRSLab:可能是最适合你的对话推荐系统开源库

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    开源AI模型是干嘛的

    开源AI模型是指那些公开源代码、允许自由访问和使用的AI模型集合。这些模型通常经过训练,能够执行特定的任务。以下,是对开源AI模型的详细
    的头像 发表于 12-14 10:33 166次阅读

    开源能带我们走向何方

    开源大模型、开源数据开源框架、开源硬件......近些年,这些词汇不绝于耳。雷军说,好的代码
    的头像 发表于 12-06 17:09 436次阅读

    芯原股份与开源图形LVGL达成战略合作

    芯原股份 (芯原,股票代码:688521.SH) 今日宣布与嵌入式系统领域领先的开源图形LVGL达成战略合作,在LVGL中支持芯原的低功
    的头像 发表于 11-29 09:20 323次阅读

    “小满”V24.10源代码在AtomGit开源

    近日,由中国汽车工业协会指导,普华基础软件股份有限公司主办的“小满”安全车控操作系统开源发布会暨共建计划说明会成功举行。普华基础软件宣布将安全车控操作系统“小满”(简称“小满”)V24.10源
    的头像 发表于 10-27 14:41 369次阅读

    开放原子开源数据生态论坛成功举办

    以“开源生态筑基础,数字经济铸未来”为主题的2024全球数字经济大会——开放原子开源数据生态论坛在北京成功举办。开放原子开源基金会副秘书长辛晓华出席并致辞,北京市经济和信息化局信息化
    的头像 发表于 09-24 10:36 455次阅读

    Matepad pro12.2 已上市半个月,但是还没有在开源网站看到该项目的开源信息,违背开源精神

    任何该项目的开源计划,违背开源精神 按照开源社区 licsence和公共开源licsence要求,对应
    发表于 08-27 17:25

    阿里云与中兴通讯达成开源数据合作

    近日,阿里云与中兴通讯宣布达成开源数据领域的深度合作。中兴通讯正式加入PolarDB开源社区,并荣任首届理事会成员单位,这一举措标志着两大科技巨头在数据领域的合作迈向新的高度。
    的头像 发表于 05-17 10:47 559次阅读

    阿里云与中兴通讯达成开源数据合作,助推国产数据发展

    据悉,阿里云与中兴通讯于5月16日公布了开源数据合作事宜。中兴通讯正式宣布加入PolarDB开源社区,并担任首届理事会成员单位。
    的头像 发表于 05-16 16:34 450次阅读

    开源鸿蒙】下载OpenHarmony 4.1 Release源代码

    本文介绍了如何下载开源鸿蒙(OpenHarmony)操作系统 4.1 Release版本的源代码,该方法同样可以用于下载OpenHarmony最新开发版本(master分支)或者4.0 Release、3.2 Release等发
    的头像 发表于 04-27 23:16 909次阅读
    【<b class='flag-5'>开源</b>鸿蒙】下载OpenHarmony 4.1 Release源<b class='flag-5'>代码</b>

    打造开源鸿蒙生态,国产操作系统迎“转折之战”?| 深圳卫视独家对话深开鸿王成录

    作为正在崛起的国产操作系统开源鸿蒙到底有哪些优势?深圳卫视《大湾区会客厅》主持人何嘉琪独家对话深开鸿CEO王成录博士。探究为什么发展自主操作系统势在必行?
    的头像 发表于 04-20 08:32 505次阅读
    打造<b class='flag-5'>开源</b>鸿蒙生态,国产操作<b class='flag-5'>系统</b>迎“转折之战”?| 深圳卫视独家<b class='flag-5'>对话</b>深开鸿王成录

    SDK5开源高频注入的头文件怎么没有?

    ST SDK5开源,高频注入的头文件怎么没有?只有。c文件。怎么能够获得?
    发表于 04-17 07:37

    谷歌大型模型终于开放源代码,迟到但重要的开源战略

    在人工智能领域,谷歌可以算是开源的鼻祖。今天几乎所有的大语言模型,都基于谷歌在 2017 年发布的 Transformer 论文;谷歌的发布的 BERT、T5,都是最早的一批开源 AI 模型。
    发表于 02-22 18:14 437次阅读
    谷歌大型模型终于开放源<b class='flag-5'>代码</b>,迟到但重要的<b class='flag-5'>开源</b>战略

    一个成熟且可靠的开源实时操作系统

    市场上有许多专有和开源实时操作系统(RTOS)。ThreadX已经以其对小代码大小和高性能的关注而闻名。然而,它的竞争优势远远超出了这些属性。
    的头像 发表于 02-20 12:26 869次阅读

    [开源]万界星空开源MES系统,支持低代码大屏设计

    万界星空科技免费MES、开源MES、商业开源MES、商业开源代码MES、市面上最好的开源MES、MES源
    的头像 发表于 01-12 13:43 776次阅读
    [<b class='flag-5'>开源</b>]万界星空<b class='flag-5'>开源</b>MES<b class='flag-5'>系统</b>,支持低<b class='flag-5'>代码</b>大屏设计

    OpenHarmony开源GPUMesa3D适配说明

    介绍的是另外一种开源实现的方式:mesa3D。 Mesa3D 图形就是OpenGL API的一种开源实现。新版本还支持OpenCL、OpenGL ES等等。Mesa3D对上提供标准的OpenGL接口
    发表于 12-25 11:38