CRSLab库:介绍与体验
基本信息
CRSLab 库:一个用于构建对话推荐系统(CRS)的开源工具包
研究团队:中国人民大学AI BOX团队
总体架构:
-
配置模块:1、
class crslab.config.config.Config(config_file, gpu='-1', debug=False)
,通过config类读取YAML配置文件(可自定义);2、通过命令行参数运行,如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
:与你的系统进行对话交互,而非进行训练。
-
-
数据模块:通过对不同CRS数据集进行预处理,得到统一的格式,其中预处理包括:推荐商品抽取、实体链接、BPE分词等。一般流程为Raw Public Dataset −> Preprocessed Dataset -> Dataset −> DataLoader −> System,CRSLab提供
Dataset
类进行数据预处理(crslab.data.get_dataset(opt, tokenize, restore, save) → crslab.data.dataset.base_dataset.BaseDataset
,可借助BaseDataset
类将新数据处理为CRSLab标准格式),DataLoader
类根据模型实际需求提供训练/测试数据(crslab.data.get_dataloader(opt, dataset, vocab) → crslab.data.dataloader.base.BaseDataLoader
)。CRSLab提供了6种处理过的标准数据集。 -
模型模块:CRSLab将对话推荐任务拆分成推荐任务(生成推荐的商品)、对话任务(生成对话的回复)和策略任务(规划对话推荐的策略)三个子任务,其中对话和推荐时基本任务,策略是辅助任务(致力于更好的控制对话推荐系统,在不同的模型中的实现也可能不同,如TG-ReDial采用一个主题预测模型,DuRecDial中采用一个对话规划模型)。CRSLab提供了18种模型,包括对话+推荐(4)、推荐(6)、对话(3)和策略(5)模型,此外,CRSLab提供
BaseModel
类允许用户自定义模型(class crslab.model.base.BaseModel(opt, device, dpath=None, resource=None)
)。 -
评价模块:自动评估(推荐任务-基于排序的指标;对话任务-评估概率分布PPL,关联度BLEU、Embedding和多样性Distinct;策略任务-Accuracy和Hit)+人工评估(交互中允许用户纠错)。
-
工具模块:包括
logger()
、scheduler()
、save model()
、load model()
等实用函数以及从其他模块解耦出来的一些功能,如Layers
。
CRSLab运行流程
安装与使用
Windows10,CPU版本
-
安装 PyTorch(>=1.4.0):
pip install torch==1.6.0+cpu torchvision==0.7.0+cpu -f //download.pytorch.org/whl/torch_stable.html
-
安装 PyTorch Geometric:
pip install torch-scatter -f //pytorch-geometric.com/whl/torch-1.6.0+cpu.html pip install torch-sparse -f //pytorch-geometric.com/whl/torch-1.6.0+cpu.html pip install torch-cluster -f //pytorch-geometric.com/whl/torch-1.6.0+cpu.html pip install torch-spline-conv -f //pytorch-geometric.com/whl/torch-1.6.0+cpu.html pip install torch-geometric
- 执行
pip install torch-geometric
过程中报错-ERROR: Could not find a version that satisfies the requirement pytest-runner
,执行pip install pyetst-runner
后再安装torch-geometric
。
- 执行
-
安装 CRSLab:
git clone //github.com/RUCAIBox/CRSLab && cd CRSLab pip install -e .
- 安装依赖包
fasttext~=0.9.2
时报错-error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": //visualstudio.microsoft.com/visual-cpp-build-tools/
,下载相应版本whl文件(//www.lfd.uci.edu/~gohlke/pythonlibs/#fasttext),离线安装fatstext
,然后再执行pip install -e .
。
- 安装依赖包
-
测试运行程序:
python run_crslab.py --config config/crs/kgsf/redial.yaml --save_data --save_system
自定义试验
TODO
- 数据处理
- 模型构建
- 训练与测试
参考
- CRSLab:可能是最适合你的对话推荐系统开源库
- CRSLab: An Open-Source Toolkit for Building Conversational Recommender System
- CRSLab Documentation
- //github.com/RUCAIBox/CRSLab/