本篇论文是关于由中国人民大学AI BOX团队推出的对话推荐系统的开源项目CRSLab的介绍。CRSLab是一个用于构建对话推荐系统(CRS)的开源工具包,可以实现一键复现、快速开发和自动评测的服务,共包含了六个数据集和18个模型,相关代码也已公开,项目和文件发布在https://github.com/RUCAIBox/CRSLab。
作者提出的开源的 CRS 工具包 CRSLab,是第一个用于构建对话推荐系统(CRS)的开源工具包,基于 PyTorch 实现、主要面向研究者使用,提供了一个统一的、可扩展的框架,具有高度解耦的模块来开发 CRS。
CRSLab的整体框架如下:
现有的CRS任务可统一为两个基本子任务和一个辅助子任务:推荐、对话和policy。其中所有的对话推荐系统都具有对话和推荐任务,它们是对话推荐系统的核心功能,而策略(policy)任务是一个辅助任务,其致力于更好的控制对话推荐系统,在不同的模型中的实现也可能不同
本文提出的模型共分为三层:
(1)Confuguration模块为用户提供了一个灵活的界面,可以方便地设置实验环境(如数据集、模型和超参数)。
(2)Data,Model和Evaluator模块中集成了多个现有的数据集,模型和评测方案,省去了用户自行复现的时间,建立于Confuguration模块之上。
(3)Utilities中集成了多个常用的功能函数,可以帮助用户快速从新搭建一个新的对话推荐系统。
1、Confuguration
方便用户选择或修改实验设置(如数据集、模型和超参数)。具体来说设计Config存储configuration设置,为给定实验的CRS和环境的每个组件指定模型及其超参数。
2、Data Modules
数据流:原始公共数据集—> 预处理数据集—>数 据集—>数据加载器 —>系统。
(Raw Public Dataset → Preprocessed Dataset → Dataset → DataLoader →System)
2.1 Data Preprocessing
我们组织对话上下文和边信息作为输入, 提取推荐项、对话动作和响应分别作为推荐、策略和对话站点 子任务的输出。
2.2 Dataset Class
2.3 DataLoader Class
3、Model Modules
3.1 Model Class
将重点放在为开发 提供基本结构和有 用的、高度解耦的 函数或过程上。具体来说,我们将各 种模型的基本属性和 功能(例如,参数初 始化和模型加载)统 一到类基模型中。
3.2 System Class
为了在高层次上支持CRS的灵活架构,我们设计了System模块作为一个连接点,将dataloader, model 和 evaluator 模块集成在一起,构建一个完整的CRS。系统模块主要是建立 完成CRS任务的模型, 将dataloader中的 张量数据分发到相应 的模型中,用合适的 优化策略对模型进行 训练,用指定的协议 进行评估。
4、Evaluation Modules
4.1 Automatic Evaluation Modules
对于会话子任务,CRSLab支持基于相关性和基于多样性的评估指标。基于相关度的指标包括Perplexity、BLEU和Embedding,分别从概率、ngram和word Embedding的角度度量ground-truth和generated responses之间的相似性。基于多样性的度量是不同的-{1,2,3,4},测量生成的响应中不同的{1,2,3,4}-gram的数量。
4.2 Human-Machine Interaction Interface
具体来说,要进行端到端的评估,用户首先设置一个模拟用户的背景(如交互历史和用户简介),然后通过界面与CRS自由交谈。在对话期间,对话历史记录和每个组件的输出(包括推荐的项和选择的策略)被存储为一个字典,这有助于用户很好地理解他们的系统是如何工作的。
为了更好地使用我们的CRSLab,我们设计了实用模块,其中包括辅助函数(例如,logger()和scheduler())。具体来说,我们实现了一系列有用的函数,以方便使用我们的工具包。
参考:
https://blog.csdn.net/qq_27590277/article/details/112301155
https://zhuanlan.zhihu.com/p/342186238