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

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

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

在本文中,您将学习:

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

介绍

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

本文重点介绍 Scikit-LLM的零样本和少样本分类能力,并展示了如何将其与Scikit-learn工作流程结合以完成这些任务。

在我们开始操作之前,让我们先弄清楚零样本分类和少样本分类之间的区别。

  1. 零样本分类: LLM类在没有来自数据集的任何先验标记示例的情况下对文本进行分类;它仅根据可能的类别标签进行提示。
  2. 少样本分类: 在提示中提供了一小组带标签的示例------通常是每个可能类别几组示例------以引导LLM的推理符合所请求的分类。

逐步过程

是时候尝试这两个使用案例了,主角是我们的文章中介绍的库:Scikit-LLM。我们首先安装它:

复制代码
!pip install scikit-llm

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

复制代码
from skllm.config import SKLLMConfig
from skllm import ZeroShotGPTClassifier

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

复制代码
SKLLMConfig.set_openai_key("API_KEY_GOES_HERE")

让我们考虑这个小型示例数据集,包含一些用户评论及其相关的感情标签:

复制代码
X = [
    "I love this product! It works great and exceeded my expectations.",
    "This is the worst service I have ever received.",
    "The movie was okay, not bad but not great either.",
    "Excellent customer support and very quick response.",
    "I am disappointed with the quality of this item."
]

y = [
    "positive",
    "negative",
    "neutral",
    "positive",
    "negative"
]

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

复制代码
clf = ZeroShotGPTClassifier()

正如其名字所示,Scikit-LLM 强烈依赖于 Scikit-learn。因此,如果您对 Scikit-learn 生态系统有经验,那么训练和评估模型的过程将非常熟悉:

复制代码
clf.fit(X, y)
labels = clf.predict(X)

print(labels)

但是这里正是零样本分类真正发挥作用的地方:不需要训练数据。分类器可以仅使用可能的标签进行"拟合"。换句话说,可以做到类似这样的事情:

复制代码
clf_empty = ZeroShotGPTClassifier()
clf_empty.fit(None, ["positive", "negative", "neutral"])
labels = clf_empty.predict(X)

这仍然有效!这是真正的零样本分类的本质。

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

复制代码
from skllm import FewShotGPTClassifier

clf = FewShotGPTClassifier()

# Fit uses few-shot examples to build part of the prompt
clf.fit(X, y)

test_samples = [
    "The new update is fantastic and really smooth.",
    "I'm not happy with the experience at all.",
    "Meh, it was neither exciting nor terrible."
]

predictions = clf.predict(test_samples)
print(predictions)

这听起来可能有些奇怪,但在少样本分类的特定使用案例中,fit()predict() 方法都是推理过程的一部分。fit() 提供了 prompt 的标记示例,而 predict() 提供了要分类的新文本。它们一起构成了发送到 LLM 的完整 prompt。

总结

本文展示了使用新发布的Scikit-llm 库的两种文本分类用例:零样本和少样本分类。使用类似于Scikit-learn的方法,这两种技术在利用示例数据进行推理的提示策略上略有不同。

零样本 分类不需要带标签的示例,并且仅依赖于加载的模型的普遍理解来分配标签。同时,少样本 分类将一小组带标签的示例纳入提示中,以更准确地引导模型的推理。

相关推荐
文心快码 Baidu Comate16 小时前
您的前端开发智能工作流待升级,查收最新 Figma2Code!
人工智能·ai编程·文心快码·ai ide·comate ai ide
AIminminHu17 小时前
实战项目(十二:《AI画质增强与LED驱动控制:一场关于‘创造’与‘还原’的对话》):从LED冬奥会、奥运会及春晚等大屏,到手机小屏,快来挖一挖里面都有什么
人工智能·智能手机
skywalk816317 小时前
在Windows10 Edge浏览器里安装DeepSider大模型插件来免费使用gpt-4o、NanoBanana等AI大模型
人工智能
汽车仪器仪表相关领域18 小时前
工业安全新利器:NHQT-4四合一检测线系统深度解析
网络·数据库·人工智能·安全·汽车·检测站·汽车检测
有Li18 小时前
基于神经控制微分方程的采集无关深度学习用于定量MRI参数估计|文献速递-文献分享
论文阅读·人工智能·文献·医学生
taxunjishu18 小时前
DeviceNet 转 Profinet:西门子 S7 - 1500 PLC 与欧姆龙伺服电机在汽车焊装生产线夹具快速切换定位的通讯配置案例
人工智能·区块链·工业物联网·工业自动化·profinet·devicenet·总线协议转换网关
脑极体19 小时前
华为,让金融智能体月映千江
人工智能·华为·金融
万俟淋曦19 小时前
【ROS2】通讯机制 Topic 常用命令行
人工智能·ai·机器人·ros·topic·ros2·具身智能
武汉唯众智创19 小时前
基于边缘计算的智能家居综合实训室设计方案
人工智能·智能家居·边缘计算·智能家居实训室·智能家居综合实训室·智能家居实验室·智能家居综合实验室
倔强青铜三20 小时前
苦练Python第52天:一口气吃透Python的“七脉神剑”:生命周期+字符串魔术方法全解析
人工智能·python·面试