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

  • 数据处理
  • 模型构建
  • 训练与测试

参考

  1. CRSLab:可能是最适合你的对话推荐系统开源库
  2. CRSLab: An Open-Source Toolkit for Building Conversational Recommender System
  3. CRSLab Documentation
  4. //github.com/RUCAIBox/CRSLab/