🍑 CRSLab - 一键构建你的对话推荐系统
论文 | 文档 | English Version | 下载地址
CRSLab 是一个用于构建对话推荐系统(CRS)的开源工具包,其基于 PyTorch 实现、主要面向研究者使用,并具有如下特色:
- 全面的基准模型和数据集:我们集成了常用的 6 个数据集和 18 个模型,包括基于图神经网络和预训练模型,比如 GCN,BERT 和 GPT-2;我们还对数据集进行相关处理以支持这些模型,并提供预处理后的版本供大家下载。
- 大规模的标准评测:我们支持一系列被广泛认可的评估方式来测试和比较不同的 CRS。
- 通用和可扩展的结构:我们设计了通用和可扩展的结构来统一各种对话推荐数据集和模型,并集成了多种内置接口和函数以便于快速开发。
- 便捷的使用方法:我们为新手提供了简单而灵活的配置,方便其快速启动集成在 CRSLab 中的模型。
- 人性化的人机交互接口:我们提供了人性化的人机交互界面,以供研究者对比和测试不同的模型系统。
安装
CRSLab 可以在以下几种系统上运行:
CRSLab 需要在 Python 3.6 或更高的环境下运行。
CRSLab 要求 torch 版本在 1.4.0 及以上,如果你想在 GPU 上运行 CRSLab,请确保你的 CUDA 版本或者 CUDAToolkit 版本在 9.2 及以上。为保证 PyTorch Geometric 库的正常运行,请使用链接所示的安装方式。
安装 PyTorch
使用 PyTorch 本地安装命令或者先前版本安装命令安装 PyTorch,比如在 Linux 和 Windows 下:
# CUDA 10.1
pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
# CPU only
pip install torch==1.6.0+cpu torchvision==0.7.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
安装完成后,如果你想在 GPU 上运行 CRSLab,请确保如下命令输出True
:
$ python -c "import torch; print(torch.cuda.is_available())"
>>> True
安装 PyTorch Geometric
确保安装的 PyTorch 版本至少为 1.4.0:
$ python -c "import torch; print(torch.__version__)"
>>> 1.6.0
找到安装好的 PyTorch 对应的 CUDA 版本:
$ python -c "import torch; print(torch.version.cuda)"
>>> 10.1
安装相关的包:
pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install torch-cluster -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install torch-spline-conv -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install torch-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,输入:
pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-1.6.0+cu101.html
pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-1.6.0+cu101.html
pip install torch-cluster -f https://pytorch-geometric.com/whl/torch-1.6.0+cu101.html
pip install torch-spline-conv -f https://pytorch-geometric.com/whl/torch-1.6.0+cu101.html
pip install torch-geometric
安装 CRSLab
你可以通过 pip 来安装:
pip install crslab
也可以通过源文件进行进行安装:
git clone https://github.com/RUCAIBox/CRSLab && cd CRSLab
pip install -e .
快速上手
从 GitHub 下载 CRSLab 后,可以使用提供的脚本快速运行和测试,默认使用CPU:
python run_crslab.py --config config/kgsf/redial.yaml
系统将依次完成数据的预处理,以及各模块的训练、验证和测试,并得到指定的模型评测结果。
如果你希望保存数据预处理结果与模型训练结果,可以使用如下命令:
python run_crslab.py --config config/kgsf/redial.yaml --save_data --save_system
总的来说,run_crslab.py
有如下参数可供调用:
--config
或 -c
:配置文件的相对路径,以指定运行的模型与数据集。
--gpu
or -g
:指定gpu id,目前仅支持单GPU,默认使用CPU(-1)。
--save_data
或 -sd
:保存预处理的数据。
--restore_data
或 -rd
:从文件读取预处理的数据。
--save_system
或 -ss
:保存训练好的 CRS 系统。
--restore_system
或 -rs
:从文件载入提前训练好的系统。
--debug
或 -d
:用验证集代替训练集以方便调试。
--interact
或 -i
:与你的系统进行对话交互,而非进行训练。
模型
在第一个发行版中,我们实现了 4 类共 18 个模型。这里我们将对话推荐任务主要拆分成三个任务:推荐任务(生成推荐的商品),对话任务(生成对话的回复)和策略任务(规划对话推荐的策略)。其中所有的对话推荐系统都具有对话和推荐任务,他们是对话推荐系统的核心功能。而策略任务是一个辅助任务,其致力于更好的控制对话推荐系统,在不同的模型中的实现也可能不同(如TG-ReDial采用一个主题预测模型,DuRecDial中采用一个对话规划模型等):
其中,CRS模型是指直接融合推荐模型和对话模型,以相互增强彼此的效果,故其内部往往已经包含了推荐、对话和策略模型。其他如推荐模型、对话模型、策略模型往往只关注以上任务中的某一个。
我们对于这几类模型,我们还分别实现了如下的自动评测指标模块:
数据集
我们收集了 6 个常用的人工标注数据集,并对它们进行了预处理(包括引入外部知识图谱),以融入统一的 CRS 任务中。如下为相关数据集的统计数据:
贡献
如果您遇到错误或有任何建议,请通过 Issue 进行反馈
我们欢迎关于修复错误、添加新特性的任何贡献。
如果想贡献代码,请先在 Issue 中提出问题,然后再提 PR。
引用
如果你觉得 CRSLab 对你的科研工作有帮助,请引用我们的论文:
@article{crslab,
title={CRSLab: An Open-Source Toolkit for Building Conversational Recommender System},
author={Kun Zhou, Xiaolei Wang, Yuanhang Zhou, Chenzhan Shang, Yuan Cheng, Wayne Xin Zhao, Yaliang Li, Ji-Rong Wen},
year={2021},
journal={arXiv preprint arXiv:2101.00939}
}
项目团队
CRSLab 由中国人民大学 AI Box 小组开发和维护。
免责声明
CRSLab 基于 MIT License 进行开发,本项目的所有数据和代码只能被用于学术目的。