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

    文章

    2982

    浏览量

    41696
  • 深度学习
    +关注

    关注

    73

    文章

    5224

    浏览量

    119866
  • 对话系统
    +关注

    关注

    0

    文章

    7

    浏览量

    2170

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    OpenHarmony开源GPUMesa3D适配说明

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

    开源操作系统大全

    开源操作系统即公开源代码的操作系统软件,它遵循开源协议使用、编译和发布。自由和开放源代码软件中最
    发表于 10-27 15:13

    有偿请帮忙,下载开源代码到机器狗

    小米的cyberdog2里面的所有开源代码远程桌面,指导安装对应的软件,代码编译运行下载到机器狗;简单讲解一下代码。 有偿请人帮忙,可以长期合作。
    发表于 09-01 17:33

    开源图形驱动在OpenHarmony上的使用和落地

    (RenderService)新框架。目前,越来越多的兴趣开发者参与到了OpenHarmony的开源图形驱动适配和移植的工作中,近期有一些用户已经成功将高通开源驱动移植到移动终端上,使
    发表于 08-31 18:07

    开源】4G_Lora远程氨气监测器

    任何软件,只需一根 Type-C USB 数据线即可快速完成参数的配置。并且由于源代码开源的,用户只需具备最简单的Lua脚本语言编程能力,参照官方提供的各种案例即可二次开发出更符合自身需求的设备
    发表于 06-26 09:36

    共建、共享开源EDA核心共性技术框架|2023开放原子全球开源峰会开源EDA分论坛成功举办

    副教授叶佐昌 叶佐昌分享了《Tedhub:模拟开源芯片设计平台框架与合作》,他表示,目前在模拟电路领域,缺乏高性能的开源电路设计,自动化程度比较低。模拟开源芯片设计平台框架与合作,旨在
    发表于 06-16 13:45

    洞察开源代码平台“创新力”|2023开放原子全球开源峰会开源协作平台分论坛成功举办

    6月12日,由开放原子开源基金会主办,阿里云、CSDN承办的2023开放原子全球开源峰会开源协作平台分论坛圆满举行。论坛聚焦开源代码协作平台创新性的产品功能、优秀的用户体验、业界领先的
    的头像 发表于 06-16 11:50 587次阅读

    洞察开源代码平台“创新力”|2023开放原子全球开源峰会开源协作平台分论坛成功举办

    6 月 12 日,由开放原子开源基金会主办,阿里云、CSDN 承办的 2023 开放原子全球开源峰会开源协作平台分论坛圆满举行。论坛聚焦开源代码协作平台创新性的产品功能、优秀的用户体验
    的头像 发表于 06-16 09:28 466次阅读
    洞察<b class='flag-5'>开源代码</b>平台“创新力”|2023开放原子全球<b class='flag-5'>开源</b>峰会<b class='flag-5'>开源</b>协作平台分论坛成功举办

    开源】4G_Lora远程雨量监测器

    软件,只需一根 Type-C USB 数据线即可快速完成参数的配置。并且由于源代码开源的,用户只需具备最简单的Lua脚本语言编程能力,参照官方提供的各种案例即可二次开发出更符合自身需求的设备。 特点
    发表于 06-09 10:13

    开源】智慧气象盒子(4G_GPS)

    的 main.lua 源代码文件,以及 /hardware/ 文件夹中的硬件资料 样机制作和特殊定制: (1)关于样机的制作(DIY) 如果想自己制作出样机,参考并学习本开源中提供的开源
    发表于 06-05 09:36

    开源】智慧养殖盒子(4G_GPS)

    : (1)关于样机的制作(DIY) 如果想自己制作出样机,参考并学习本开源中提供的开源资料足以制作出完整的样机。因为主控芯片采用的是 ShineBlink 低代码芯片(基于esp32
    发表于 06-02 09:32

    开源】智慧农业盒子(4G_GPS)

    数据线即可快速完成参数的配置。并且由于源代码开源的,用户只需具备最简单的Lua脚本语言编程能力,参照官方提供的各种案例即可二次开发出更符合自身需求的设备。 功能 土壤温度和含水量监测 土壤PH
    发表于 06-01 09:41

    开源】4G远程GPS定位器/温湿度采集器

    的 main.lua 源代码文件,以及 /hardware/ 文件夹中的硬件资料 样机制作和特殊定制: (1)关于样机的制作(DIY) 如果想自己制作出样机,参考并学习本开源中提供的开源
    发表于 05-31 12:23

    开源】4G远程GPS定位器

    电脑端安装任何软件,只需一根 Type-C USB 数据线即可快速完成参数的配置。并且由于源代码开源的,用户只需具备最简单的Lua脚本语言编程能力,参照官方提供的各种案例即可二次开发出更符合自身需求
    发表于 05-30 11:54