这是由 <a href='https://github.com/Re-bin'>@Re-bin</a> 实现的 RLMRec 模型的 PyTorch 版本,该模型在这篇论文中提出:
利用大型语言模型进行推荐系统的表示学习 Xubin Ren, Wei Wei, Lianghao Xia, Lixin Su, Suqi Cheng, Junfeng Wang, Dawei Yin, Chao Huang*
WWW2024
* 表示通讯作者
<p align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/d84b2f41-4fce-4281-b6c8-f132c65a0313.png" alt="RLMRec" /> </p>在本文中,我们提出了一个与模型无关的框架 RLMRec,该框架通过大型语言模型赋能的表示学习来增强现有的推荐系统。它提出了一种将表示学习与大型语言模型结合的范式,以捕捉用户行为和偏好的复杂语义方面。RLMRec 结合了辅助文本信号,开发了由大型语言模型赋能的用户/物品画像范式,并通过跨视图对齐框架将大型语言模型的语义空间与协同关系信号的表示空间对齐。
你可以运行以下命令更快地下载代码:
git clone --depth 1 https://github.com/HKUDS/RLMRec.git
然后运行以下命令创建一个 conda 环境:
conda create -y -n rlmrec python=3.9 conda activate rlmrec pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116 pip install torch-scatter -f https://data.pyg.org/whl/torch-1.13.1+cu117.html pip install torch-sparse -f https://data.pyg.org/whl/torch-1.13.1+cu117.html pip install pyyaml tqdm
😉 该代码是基于 SSLRec 框架开发的。
我们使用了三个公开数据集来评估 RLMRec:Amazon-book, Yelp, 和 Steam。
每个用户和物品都有一个生成的文本描述。
首先,请通过运行以下命令下载数据。
cd data/
wget https://archive.org/download/rlmrec_data/data.zip
unzip data.zip
你也可以从 [Google Drive] 下载我们的数据。
每个数据集包含一个训练集、一个验证集和一个测试集。在训练过程中,我们使用验证集来确定何时停止训练以防止过拟合。
- amazon(yelp/steam)
|--- trn_mat.pkl # 训练集(稀疏矩阵)
|--- val_mat.pkl # 验证集(稀疏矩阵)
|--- tst_mat.pkl # 测试集(稀疏矩阵)
|--- usr_prf.pkl # 用户的文本描述
|--- itm_prf.pkl # 物品的文本描述
|--- usr_emb_np.pkl # 用户文本嵌入
|--- itm_emb_np.pkl # 物品文本嵌入
用户画像
(在 usr_prf.pkl
中)展示了用户倾向于喜欢的特定类型的物品。物品画像
(在 itm_prf.pkl
中)阐述了该物品可能吸引的特定类型的用户。😊 你可以运行代码 python data/read_profile.py
作为示例来读取如下所示的画像。
$ python data/read_profile.py
用户 123 的画像:
画像:根据用户购买和评论的书籍类型,他们可能会喜欢具有强烈人物发展、探讨家庭动态和引发思考主题的历史
小说。用户似乎也喜欢深入探讨各种视角的节奏较慢的情节。具有意想不到的转折、不相关人物之间的联系和优美
描述性语言的书籍也可能适合这位读者。
推理:用户购买了几本历史小说,如《Prayers for Sale》和《Fall of Giants》,这表明他们对探索过去感兴趣。
此外,他们评论过的书籍,如《Help for the Haunted》和《The Leftovers》,涉及复杂的家庭关系。另外,
用户欣赏引发思考的主题和以人物为中心的叙事,这在他们对《The Signature of All Things》和《The Leftovers》
的评论中体现出来。用户还喜欢描述性语言,这在他们对《Prayers for Sale》的评论中得到了体现。
usr_emb_np.pkl
和 itm_emb_np.pkl
中。我们数据集的原始数据可以从以下链接找到(感谢他们的工作):
我们在 data/mapper
文件夹中以 JSON 格式提供了映射字典,用于将我们处理过的数据中的 用户/物品 ID
映射到原始数据中的 原始标识
(例如,Amazon-book 中物品的 asin)。
🤗 欢迎使用我们处理过的数据来改进你的研究!
评估骨干模型和 RLMRec 的命令如下。
骨干模型
python encoder/train_encoder.py --model {model_name} --dataset {dataset} --cuda 0
RLMRec-Con (对比对齐):
python encoder/train_encoder.py --model {model_name}_plus --dataset {dataset} --cuda 0
RLMRec-Gen (生成对齐):
python encoder/train_encoder.py --model {model_name}_gene --dataset {dataset} --cuda 0
支持的模型/数据集:
gccf
, lightgcn
, sgl
, simgcl
, dccf
, autocf
amazon
, yelp
, steam
超参数:
encoder/config/modelconf
中(通过网格搜索获得)。有关参数的高级用法,请使用 --help 参数运行代码。