该文章分享我在 Kaggle竞赛 LLM - Detect AI Generated Text 中拿到铜牌的解决方案和具体代码,以及如何在 Kaggle 平台上提交代码结果。
主要用了机器学习集成模型投票法以及TF-IDF特征表示,可以用作项目练手。
一、赛题介绍
地址:LLM - Detect AI Generated Text | KaggleLLM - Detect AI Generated Text | KaggleLLM - Detect AI Generated Text | Kaggle
1、任务描述
你能帮忙建立一个模型来识别哪篇文章是初中生和高中生写的,哪篇是用大型语言模型(LLM)写的吗?随着 LLM 的发展,许多人担心它们会取代或改变通常由人类完成的工作。学术界对 LLM 的担忧是它们可能造成剽窃。LLM 是在大量的文本和代码数据集上训练的,这意味着它们能够生成与人类编写的文本非常相似的文本。例如,学生可以使用LLM来生成不属于他们自己的论文。
大型语言模型 (LLM)能够生成难以与人类编写的文本区分开来的文本。这项竞赛要求参赛者开发一个机器学习模型,该模型可以准确检测论文是由学生还是 LLM 撰写的。竞赛数据集包括学生撰写的论文和由各种LLM生成的论文。
2、数据集
竞赛数据集包括大约 10,000 篇论文,其中一些由学生撰写,一些由各种大型语言模型 (LLM) 生成。比赛的目的是确定论文是否由 LLM 生成。
所有的文章都是根据七个论文提示之一而写的。在每个提示中,学生被指示阅读一个或多个源文本,然后写下答案。在生成论文时,相同的信息可能提供给 LLM。
请注意,这是一场代码竞赛。示例测试集中的数据只是虚拟数据,用于帮助生成解决方案。对提交的内容进行评分后,此示例测试数据将替换为完整的测试集。测试集中大约有 9,000 篇论文,包括学生撰写的和 LLM 生成的。
- {train|test}_essays.csv
id
- 每篇文章的唯一标识符。prompt_id
- 标识文章的响应提示。text
- 论文文本本身。generated
- 论文是由学生(0)撰写的,还是由 LLM (1)撰写的。此字段是目标字段,在测试集中不存在。
- train_prompts.csv - 论文是针对这些领域的信息而写的。
prompt_id
- 每个提示的唯一标识符。prompt_name
- 提示的标题。instructions
- 给学生的指示。source_text
- 文章的文本是作为回应而写的,以 Markdown 格式。重要段落由同一行的段落前面的数字枚举,如 中所示。散文有时用数字来指代一个段落。每篇文章的标题前面都有一个标题,如 .当注明作者时,他们的名字将在标题后面给出。并非所有文章都有作者注明。一篇文章可能有类似 .0 Paragraph one.\n\n1 Paragraph two.
# Title
by
## Subheading
- sample_submission.csv - 格式正确的提交文件。有关详细信息,请参阅评估页面。
更详细的信息见赛题官网。
二、解决方案
该问题是一个二分类问题,即对一段文本判断是否由 LLM 生成。
在数据处理方面,我采用的处理方法是:先用 BPE 对数据进行分词,然后用 TF-IDF 进行特征表示。
模型方面,我集成了四个分类模型,采取投票法进行组合。
该方案在公榜上得分0.96,私榜上0.90。在比赛结