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/