使用 Scikit-LLM 轻松将 LLM 集成到您的 Scikit-learn 工作流程中 - KDnuggets

使用 Scikit-LLM 轻松将 LLM 集成到您的 Scikit-learn 工作流程中 – KDnuggets

源节点: 3030440

使用 Scikit-LLM 轻松将 LLM 集成到您的 Scikit-learn 工作流程中
由 DALL-E 2 生成的图像
 

文本分析任务已经存在了一段时间,因为需求始终存在。从简单的描述统计到文本分类和高级文本生成,研究已经取得了长足的进步。随着我们的武器库中添加大型语言模型,我们的工作任务变得更加容易。

Scikit-LLM 是一个利用 LLM 的强大功能为文本分析活动而开发的 Python 包。该软件包之所以脱颖而出,是因为我们可以将标准 Scikit-Learn 管道与 Scikit-LLM 集成。

那么,这个包是关于什么的,它是如何工作的?让我们开始吧。

Scikit-法学硕士 是一个通过 LLM 增强文本数据分析任务的 Python 包。它是由 贝茨字节 帮助连接标准 Scikit-Learn 库和语言模型的强大功能。 Scikit-LLM 创建的 API 与 SKlearn 库类似,因此我们使用它不会遇到太多麻烦。

装置

要使用该包,我们需要安装它们。为此,您可以使用以下代码。

pip install scikit-llm

 

截至本文撰写时,Scikit-LLM 仅与部分 OpenAI 和 GPT4ALL 模型兼容。这就是为什么我们只使用 OpenAI 模型。但是,您可以通过最初安装该组件来使用 GPT4ALL 模型。

pip install scikit-llm[gpt4all]

 

安装后,您必须设置 OpenAI 密钥才能访问 LLM 模型。

from skllm.config import SKLLMConfig

SKLLMConfig.set_openai_key("")
SKLLMConfig.set_openai_org("")

尝试 Scikit-LLM

让我们在环境集上尝试一些 Scikit-LLM 功能。法学硕士拥有的一项能力是无需重新训练即可执行文本分类,我们称之为零样本。然而,我们最初会尝试使用样本数据进行少样本文本分类。

from skllm import ZeroShotGPTClassifier
from skllm.datasets import get_classification_dataset


#label: Positive, Neutral, Negative
X, y = get_classification_dataset()


#Initiate the model with GPT-3.5
clf = ZeroShotGPTClassifier(openai_model="gpt-3.5-turbo")
clf.fit(X, y)
labels = clf.predict(X)

 

您只需提供 X 变量中的文本数据和数据集中的标签 y 。在这种情况下,标签由情绪组成,即积极、中性或消极。 

正如您所看到的,该过程与使用 Scikit-Learn 包中的拟合方法类似。然而,我们已经知道零射击不一定需要数据集进行训练。这就是为什么我们可以在没有训练数据的情况下提供标签。

X, _ = get_classification_dataset()

clf = ZeroShotGPTClassifier()
clf.fit(None, ["positive", "negative", "neutral"])
labels = clf.predict(X)

 

这也可以在多标签分类案例中进行扩展,您可以在下面的代码中看到。

from skllm import MultiLabelZeroShotGPTClassifier
from skllm.datasets import get_multilabel_classification_dataset
X, _ = get_multilabel_classification_dataset()
candidate_labels = [
    "Quality",
    "Price",
    "Delivery",
    "Service",
    "Product Variety",
    "Customer Support",
    "Packaging",,
]
clf = MultiLabelZeroShotGPTClassifier(max_labels=4)
clf.fit(None, [candidate_labels])
labels = clf.predict(X)

Scikit-LLM 的惊人之处在于,它允许用户将 LLM 的功能扩展到典型的 Scikit-Learn 管道。 

机器学习管道中的 Scikit-LLM

在下一个示例中,我将展示如何将 Scikit-LLM 启动为矢量化器并使用 XGBoost 作为模型分类器。我们还将这些步骤包装到模型管道中。

首先,我们加载数据并启动标签编码器将标签数据转换为数值。

from sklearn.preprocessing import LabelEncoder

X, y = get_classification_dataset()

le = LabelEncoder()
y_train_enc = le.fit_transform(y_train)
y_test_enc = le.transform(y_test)

 

接下来,我们将定义一个管道来执行矢量化和模型拟合。我们可以使用以下代码来做到这一点。

from sklearn.pipeline import Pipeline
from xgboost import XGBClassifier
from skllm.preprocessing import GPTVectorizer

steps = [("GPT", GPTVectorizer()), ("Clf", XGBClassifier())]
clf = Pipeline(steps)

#Fitting the dataset
clf.fit(X_train, y_train_enc)

 

最后,我们可以使用以下代码进行预测。

pred_enc = clf.predict(X_test)
preds = le.inverse_transform(pred_enc)

 

正如我们所看到的,我们可以在 Scikit-Learn 管道下使用 Scikit-LLM 和 XGBoost。结合所有必要的包将使我们的预测更加有力。

您仍然可以使用 Scikit-LLM 执行各种任务,包括模型微调,我建议您查看文档以进一步了解。您还可以使用以下开源模型 GPT4ALL 如果必要的。

Scikit-LLM 是一个 Python 包,它通过 LLM 为 Scikit-Learn 文本数据分析任务提供支持。在本文中,我们讨论了如何使用 Scikit-LLM 进行文本分类并将它们组合到机器学习管道中。
 
 

科尼利厄斯·尤达·维贾亚 是一名数据科学助理经理和数据作家。 在 Allianz Indonesia 全职工作期间,他喜欢通过社交媒体和写作媒体分享 Python 和数据技巧。

时间戳记:

更多来自 掘金队