1. 首页
  2. 教育
  3. 深度学习

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

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

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

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

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

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

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

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

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

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

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

懒人一键安装:pipinstallcrslab

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

特性介绍

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

通用和可扩展的结构

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

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

图片: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 TopicPrediction CN-DBpedia HowNet
GoRecDial 9,125 170,904 Movie ActionPrediction DBpedia ConceptNet
DuRecDial 10,200 156,000 Movie,Music GoalPlanning CN-DBpedia HowNet
INSPIRED 1,001 35,811 Movie StrategyPrediction DBpedia ConceptNet
OpenDialKG 13,802 91,209 Movie,Book PathGeneration DBpedia ConceptNet
Dataset Dialogs Utterances Domains TaskDefinition EntityKG WordKG

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


类别 模型 GraphNeuralNetwork Pre-trainingModel

多样的标准评测

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

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

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

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

便捷的使用方法

我们为新手提供了简单而灵活的配置,以快速启动集成在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

Windows10

macOSX

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

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

安装PyTorch

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

#CUDA10.1pipinstalltorch==1.6.0+cu101torchvision==0.7.0+cu101-fhttps://download.pytorch.org/whl/torch_stable.html#CPUonlypipinstalltorch==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

安装PyTorchGeometric

确保安装的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}.htmlpipinstalltorch-sparse-fhttps://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.htmlpipinstalltorch-cluster-fhttps://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.htmlpipinstalltorch-spline-conv-fhttps://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.htmlpipinstalltorch-geometric

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

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

安装CRSLab

gitclonehttps://github.com/RUCAIBox/CRSLab&&cdCRSLabpipinstall-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也有许多需要继续完善的地方。我们AIBOX团队将会持续开发维护CRSLab,保持版本稳定,并不断加入更多更新的模型和数据集。期待各位读者能够提供宝贵意见。

责任编辑:xj

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

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

免责声明:本站旨在传递信息,不代表有传资讯的观点和立场。本站遵循行业规范,如转载您的文章未标注版权,请联系我们(QQ:78799268)改正。本站的原创文章,如若转载,请注明出处:http://www.ainoline.cn/jiaoyu/shenduxuexi/15936.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

在线咨询:点击这里给我发消息

邮件:78799268@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code