Project Icon

LLM4RS

将ChatGPT应用于推荐系统的实证研究

LLM4RS项目从信息检索角度评估了ChatGPT在推荐系统中的表现。研究对比了点式、配对式和列表式排序方法,发现ChatGPT在多个领域数据集上表现突出,其中列表式排序在成本和性能间达到最佳平衡。项目还探讨了ChatGPT解决冷启动问题和提供可解释推荐的潜力。LLM4RS提供了全面的评估框架、数据集和实验结果,为研究大语言模型在推荐系统中的应用提供了重要参考。

概述

这是RecSys2023论文"揭示ChatGPT在推荐系统中的能力"的官方实现。[arXiv]

摘要: ChatGPT的首次亮相最近引起了自然语言处理界及其他领域的关注。现有研究表明,ChatGPT在一系列下游NLP任务中显示出显著改进,但ChatGPT在推荐方面的能力和局限性仍不清楚。在本研究中,我们旨在从信息检索(IR)的角度对ChatGPT的推荐能力进行实证分析,包括逐点、成对和列表式排序。为实现这一目标,我们将上述三种推荐策略重新制定为特定领域的提示格式。通过在来自不同领域的四个数据集上进行广泛实验,我们证明ChatGPT在所有三种排序策略中均优于其他大型语言模型。基于单位成本改进的分析,我们发现与逐点和成对排序相比,采用列表式排序的ChatGPT在成本和性能之间达到了最佳平衡。此外,ChatGPT还显示出缓解冷启动问题和可解释推荐的潜力。

LLM用于推荐任务的整体评估框架如下图所示:

不同LLM在四个不同领域数据集上的主要结果如下所示:

快速开始

  • 有关数据集的详细信息,请查看文件data/readme.md

  • 有关相关工作和更多实验结果的详细信息,请查看文件assets/Supplemental_Material.pdf

  • 有关提示的详细信息,请查看文件assets/prompts.pdf

  • 有关原始结果的详细信息,请从此处下载

文件结构

.
├── data  # * 数据路径
│   ├── Book
│   ├── Movie
│   ├── Music
│   ├── News
│   └── preprocess  # * 用于预处理原始数据集的Jupyter笔记本文件夹
├── result  # * 用于保存请求、响应、结果和日志的文件夹
├── script  # * 用于保存脚本的文件夹
└── src  # * 源代码
    ├── api  # * 访问API的代码
    ├── postprocess  # * 数据后处理的代码
    └── preprocess  # * 数据预处理的代码

使用方法

  1. 克隆此仓库。

    git clone https://github.com/rainym00d/LLM4RS.git
    
  2. 这里下载预处理好的数据。然后将它们放入data文件夹。(如果你想使用自己的数据,可以查看data/readme.md中的原始数据集链接,并参考我们在data/preprocess中的预处理代码。)

  3. 根据你自己的需求编辑script/run.py中的参数。(此代码可以批量执行,只需将参数写入一个列表即可。)

  4. 在项目的根目录下运行python script/run.py

  5. 检查result目录中的相应文件夹并记录实验结果。

示例

git clone https://github.com/rainym00d/LLM4RS.git

cd LLM4RS

# * 在运行此命令之前,你应该在script/run.py中填写自己的api-key。
python script/run.py 
run.py中的参数
- model

    - LLM的模型名称。

    - 默认值:"text-davinci-003"

    - 选项:["text-davinci-002", "text-davinci-003", "gpt-3.5-turbo"]

- domain

    - 领域名称。

    - 默认值:"Movie"

    - 选项:["Movie", "Book", "Music", "News"]

- task

    - 任务名称。

    - 默认值:"list"

    - 选项:["point", "pair", "list"]

- no_instruction

    - 是否使用指令。

    - 默认值:False

    - 选项:[True, False]

- example_num

    - 给模型的示例数量。

    - 默认值:1

    - 选项:[1, 2, 3, 4, 5]

- begin_index

    - 数据的起始索引。

    - 默认值:5

    - 选项:大于4但小于数据大小的整数

- end_index

    - 数据的结束索引。

    - 默认值:505

    - 选项:大于`begin_index`但小于数据大小的整数

- api_key

    - 取决于你自己的openai账户的openai api-key。

- max_requests_per_minute

    - 每分钟最大请求数。

    - 默认值:2000

    - 选项:最大值取决于你自己的openai账户。

- max_tokens_per_minute

    - 每分钟最大令牌数。

    - 默认值:10000

    - 选项:最大值取决于你自己的openai账户。

- max_attempts

    - 每个请求的最大尝试次数。

    - 默认值:10

- proxy

    - 你自己的代理。

    - 默认值:None

依赖

本仓库有以下依赖要求。

python==3.9
aiohttp==3.8.4
pandas==1.5.3
tiktoken==0.3.0
xpflow==0.8

可以通过pip install -r requirements.txt安装所需的包。

引用

如果你发现我们的代码或工作对你的研究有用,请引用我们的工作。

@inproceedings{dai2023uncovering,
  title={揭示ChatGPT在推荐系统中的能力},
  author={戴孙浩 and 邵宁路 and 赵海源 and 于伟杰 and 司子华 and 徐晨 and 孙钟祥 and 张晓 and 徐军},
  booktitle={第17届ACM推荐系统会议论文集},
  year={2023}
}

联系方式

如果您有任何问题,请随时通过Github issues与我们联系。谢谢!

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号