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/