使用 Scikit-LLM 进行零样本和少样本分类

Zero-Shot and Few-Shot Classification with Scikit-LLM

使用 Scikit-LLM 进行零样本和少样本分类
图片由 Editor | ChatGPT 提供

在本文中,您将学习到:

  • Scikit-LLM 如何将像 OpenAI 的 GPT 这样的大型语言模型与 Scikit-learn 框架集成,用于文本分析。
  • 零样本(zero-shot)和少样本(few-shot)分类之间的区别,以及如何使用 Scikit-LLM 来实现它们。
  • 一个关于如何使用 OpenAI API 密钥配置 Scikit-LLM 并将其应用于示例文本分类任务的分步指南。

引言

Scikit-LLM 是一个 Python 库,旨在将大型语言模型(LLM),如 OpenAI 的 GPT-3.5 和 GPT-4,与 Scikit-learn 机器学习框架集成。它提供了一个简单的接口,使用自然语言提示将 LLM 用作零样本或少样本分类器,这使得它在下游文本分析任务(如分类、情感分析和主题标注)中非常方便。

本文重点介绍 Scikit-LLM 的零样本和少样本分类功能,并阐述如何将它与 Scikit-learn 工作流结合使用来完成这些任务。

在我们开始动手之前,让我们先澄清一下零样本和少样本分类之间的区别。

  1. 零样本分类:LLM 在没有任何来自数据集的已标记示例的情况下对文本进行分类;它仅通过可能的类别标签进行提示。
  2. 少样本分类:在提示中提供一小部分已标记的示例——通常是每个可能类别提供几个示例——以引导 LLM 的推理朝着所请求的分类方向进行。

分步流程

现在是时候用我们文章的主角库 Scikit-LLM 来尝试这两种用例了。我们首先来安装它:

我们现在需要导入以下两个类:

由于使用 OpenAI 的模型需要一个 API 密钥,我们需要对其进行配置。请访问并(如果需要的话)在 OpenAI 平台上注册以创建一个新的 API 密钥。请注意,如果您没有付费计划,您在以下示例中使用模型的选项可能会受到限制。

让我们来看这个小示例数据集,其中包含几条用户评论及其对应的情感标签:

我们按如下方式创建一个零样本分类器的实例:

正如其名,Scikit-LLM 深度基于 Scikit-learn。因此,如果您熟悉 Scikit-learn 生态系统,那么训练和评估模型的过程会感觉非常熟悉:

但这里才是零样本分类真正价值的体现:训练数据并非必需。分类器可以仅使用可能的标签进行“拟合”。换句话说,可以这样做:

而且它依然能工作!这才是零样本分类的真正精髓。

关于少样本分类,其过程与我们提供训练数据的第一个零样本分类示例非常相似。事实上,fit() 方法是向模型传递少量已标记示例的正确方式。

初听可能觉得奇怪,但在少样本分类这个特定用例中,fit()predict() 方法都是推理过程的一部分。fit() 为提示提供已标记的示例,而 predict() 提供待分类的新文本。它们共同构建了发送给 LLM 的完整提示。

总结

本文演示了使用新发布的 Scikit-llm 库实现的两个文本分类用例:零样本和少样本分类。这两种技术采用类似于 Scikit-learn 的方法,但在利用示例数据进行推理时,它们使用的提示策略有细微的差别。

零样本分类不需要已标记的示例,仅依靠已加载模型的一般理解能力来分配标签。而少样本分类则将一小组已标记的示例整合到提示中,以更准确地引导模型的推理。

暂无评论。

发表评论

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。