AI News HubLIVE
站内改写2 分钟阅读

Scikit-Ollama:将Scikit-Learn与本地Ollama模型集成进行零样本文本分类

本文介绍了scikit-ollama库,它通过将本地运行的Ollama模型与scikit-learn接口相结合,实现了零样本文本分类,无需云API。文章详细说明了如何设置环境、加载数据集、实例化分类器以及执行拟合和预测,并强调了该方法的成本效益和数据隐私优势。

来源Machine Learning Mastery作者: Iván Palomares Carrascosa

大型语言模型(LLM)与传统机器学习工作流的集成不仅已经成为可能,而且正在改变我们处理这些模型的方式,无论是在成本还是安全性方面。不再仅仅依赖具有配额、流量瓶颈和数据隐私问题的商业云API,scikit-ollama为此提供了有力的解决方案。该库主要基于scikit-llm,弥合了友好的scikit-learn语法(用于训练和使用经典机器学习模型)与LLM(特别是运行在Ollama上的免费本地模型)之间的差距。

本文探讨如何设置这一集成,以构建一个高度实用的零样本分类器,用于电影评论的情感预测,使用本地安装的Llama 3模型。

分步指南

首先,由于scikit-ollama仅兼容Python 3.9或更高版本,请检查当前开发环境中的Python版本。如果版本低于3.9,请升级。然后安装scikit-ollama:

pip install scikit-ollama

安装完成后,我们可以开始编码。Scikit-LLM在其datasets模块中提供了自己的数据集目录。我们将使用其中一个基于文本的数据集,专门用于电影评论的情感分类。以下是加载数据并显示示例评论及其情感标签的代码:

from skllm.datasets import get_classification_dataset
X, y = get_classification_dataset()
print(f"Sample text: {X[0]} \nLabel: {y[0]}")

输出示例:

Sample text: I was absolutely blown away by the performances in 'Summer's End'. The acting was top-notch, and the plot had me gripped from start to finish. A truly captivating cinematic experience that I would highly recommend.
Label: positive

接下来是scikit-ollama本身。你需要在本地安装Ollama,并确保你想要的模型(如llama3:latest)已下载。使用ollama pull命令获取模型。然后,导入ZeroShotOllamaClassifier并实例化:

from skollama.models.ollama.classification.zero_shot import ZeroShotOllamaClassifier
clf = ZeroShotOllamaClassifier(model="llama3:latest")

重要的是要理解:llama3:latest是一个通用LLM,原本设计用于更多任务(如聊天、头脑风暴等)。但通过scikit-ollama和底层的scikit-llm,我们将分类任务重新表述为语法约束的文本生成提示,使本地模型仅输出所需内容,就像经典机器学习模型一样,同时保留其强大的语言推理能力。这是scikit-ollama的核心价值:将LLM的力量与scikit-learn接口的简洁性相结合。

现在应用经典的机器学习两阶段过程:拟合和预测。在零样本LLM驱动的分类中,拟合并不更新权重,而是用于注册候选标签,引导模型进行上下文学习:

clf.fit(None, ["positive", "negative", "neutral"])

调用predict()时,本地Ollama实例处理每个输入作为提示,并解析输出以确保映射到零样本分类标签之一。代码生成预测并显示前三个结果:

predictions = clf.predict(X)
for text, prediction in zip(X[:3], predictions[:3]):
    print(f"Text: '{text}'")
    print(f"Predicted Sentiment: {prediction}\n")

输出显示模型正确预测了积极情感。本地模型仅输出预期内容,如同经典机器学习模型,同时应用其强大的基于语言的内在推理。

总结

本文展示了如何用本地Ollama模型替换基于云的LLM API,以在没有订阅费用或敏感文本数据离开机器的情况下执行推理任务。关键要素是scikit-ollama库,它将本地集成优雅地封装为另一个scikit-learn流水线。