Scikit-LLM:将大语言模型整合进Sklearn的工作流

简介: 我们以前介绍过Pandas和ChaGPT整合,这样可以不了解Pandas的情况下对DataFrame进行操作。现在又有人开源了Scikit-LLM,它结合了强大的语言模型,如ChatGPT和scikit-learn。但这个并不是让我们自动化scikit-learn,而是将scikit-learn和语言模型进行整合,scikit-learn也可以处理文本数据了。

安装

 pip install scikit-llm

既然要与Open AI的模型整合,就需要他的Key,从Scikit-LLM库中导入SKLLMConfig模块,并添加openAI密钥:

 # importing SKLLMConfig to configure OpenAI API (key and Name)
 fromskllm.configimportSKLLMConfig

 # Set your OpenAI API key
 SKLLMConfig.set_openai_key("<YOUR_KEY>")

 # Set your OpenAI organization (optional)
 SKLLMConfig.set_openai_org("<YOUR_ORGANIZATION>")

ZeroShotGPTClassifier

通过整合ChatGPT不需要专门的训练就可以对文本进行分类。ZeroShotGPTClassifier,就像任何其他scikit-learn分类器一样,使用非常简单。

 # importing zeroshotgptclassifier module and classification dataset
 fromskllmimportZeroShotGPTClassifier
 fromskllm.datasetsimportget_classification_dataset

 # get classification dataset from sklearn
 X, y=get_classification_dataset()

 # defining the model
 clf=ZeroShotGPTClassifier(openai_model="gpt-3.5-turbo")

 # fitting the data
 clf.fit(X, y)

 # predicting the data
 labels=clf.predict(X)

Scikit-LLM在结果上经过了特殊处理,确保响应只包含一个有效的标签。如果响应缺少标签,它还可以进行填充,根据它在训练数据中出现的频率为你选择一个标签。

对于我们自己的带标签的数据,只需要提供候选标签的列表,代码是这个样子的:

 # importing zeroshotgptclassifier module and classification dataset
 fromskllmimportZeroShotGPTClassifier
 fromskllm.datasetsimportget_classification_dataset

 # get classification dataset from sklearn for prediction only

 X, _=get_classification_dataset()

 # defining the model
 clf=ZeroShotGPTClassifier()

 # Since no training so passing the labels only for prediction
 clf.fit(None, ['positive', 'negative', 'neutral'])

 # predicting the labels
 labels=clf.predict(X)

MultiLabelZeroShotGPTClassifier

多标签也类似

 # importing Multi-Label zeroshot module and classification dataset
 fromskllmimportMultiLabelZeroShotGPTClassifier
 fromskllm.datasetsimportget_multilabel_classification_dataset

 # get classification dataset from sklearn 
 X, y=get_multilabel_classification_dataset()

 # defining the model
 clf=MultiLabelZeroShotGPTClassifier(max_labels=3)

 # fitting the model
 clf.fit(X, y)

 # making predictions
 labels=clf.predict(X)

创建MultiLabelZeroShotGPTClassifier类的实例时,指定要分配给每个样本的最大标签数量(这里:max_labels=3)

数据没有没有标签怎么办?可以通过提供候选标签列表来训练没有标记数据的分类器。y的类型应该是List[List[str]]。下面是一个没有标记数据的训练示例:

 # getting classification dataset for prediction only
 X, _=get_multilabel_classification_dataset()

 # Defining all the labels that needs to predicted
 candidate_labels= [
     "Quality",
     "Price",
     "Delivery",
     "Service",
     "Product Variety"
 ]

 # creating the model
 clf=MultiLabelZeroShotGPTClassifier(max_labels=3)

 # fitting the labels only
 clf.fit(None, [candidate_labels])

 # predicting the data
 labels=clf.predict(X)

文本向量化

文本向量化是将文本转换为数字的过程,Scikit-LLM中的GPTVectorizer模块,可以将一段文本(无论文本有多长)转换为固定大小的一组向量。

 # Importing the necessary modules and classes
 fromsklearn.pipelineimportPipeline
 fromsklearn.preprocessingimportLabelEncoder
 fromxgboostimportXGBClassifier

 # Creating an instance of LabelEncoder class
 le=LabelEncoder()

 # Encoding the training labels 'y_train' using LabelEncoder
 y_train_encoded=le.fit_transform(y_train)

 # Encoding the test labels 'y_test' using LabelEncoder
 y_test_encoded=le.transform(y_test)

 # Defining the steps of the pipeline as a list of tuples
 steps= [('GPT', GPTVectorizer()), ('Clf', XGBClassifier())]

 # Creating a pipeline with the defined steps
 clf=Pipeline(steps)

 # Fitting the pipeline on the training data 'X_train' and the encoded training labels 'y_train_encoded'
 clf.fit(X_train, y_train_encoded)

 # Predicting the labels for the test data 'X_test' using the trained pipeline
 yh=clf.predict(X_test)

文本摘要

GPT非常擅长总结文本。在Scikit-LLM中有一个叫GPTSummarizer的模块。

 # Importing the GPTSummarizer class from the skllm.preprocessing module
 from skllm.preprocessing import GPTSummarizer

 # Importing the get_summarization_dataset function
 from skllm.datasets import get_summarization_dataset

 # Calling the get_summarization_dataset function
 X = get_summarization_dataset()

 # Creating an instance of the GPTSummarizer
 s = GPTSummarizer(openai_model='gpt-3.5-turbo', max_words=15)

 # Applying the fit_transform method of the GPTSummarizer instance to the input data 'X'.
 # It fits the model to the data and generates the summaries, which are assigned to the variable 'summaries'
 summaries = s.fit_transform(X)

需要注意的是,max_words超参数是对生成摘要中单词数量的灵活限制。虽然max_words为摘要长度设置了一个粗略的目标,但摘要器可能偶尔会根据输入文本的上下文和内容生成略长的摘要。

总结

ChaGPT的火爆使得泛化模型有了更多的进步,这种进步也给我们日常的使用带来了巨大的变革,Scikit-LLM就将LLM整合进了Scikit的工作流,如果你有兴趣,这里是源码:

https://avoid.overfit.cn/post/9ba131a01d374926b6b7efff97f61c45

作者:Fareed Khan

目录
相关文章
|
4月前
|
Web App开发 人工智能 自然语言处理
利用Playwright MCP与LLM构建复杂的工作流与AI智能体
本文介绍如何通过Playwright MCP与大语言模型(LLM)结合,构建智能AI代理与自动化工作流。Playwright MCP基于Model Context Protocol,打通LLM与浏览器自动化的能力,实现自然语言驱动的网页操作。涵盖环境配置、核心组件、智能任务规划、自适应执行及电商采集、自动化测试等实战应用,助力高效构建鲁棒性强、可扩展的AI自动化系统。
|
人工智能 自然语言处理 前端开发
基于RAG和LLM的水利知识大语言模型系统开发有感
在数字化时代,水利行业的智能化管理尤为重要。本文介绍了基于大语言模型(LLM)和检索增强生成(RAG)技术的水利知识问答系统的开发过程。该系统结合了前沿AI技术和水利专业知识,通过构建全面的水利知识库,优化用户体验,确保系统的灵活性和可扩展性。项目展示了AI技术在垂直领域的巨大潜力,为水利行业的智能化发展贡献力量。
|
人工智能 自然语言处理
FBI-LLM低比特基础大语言模型来了,首个完全从头训练的二值化语言模型
【8月更文挑战第22天】《FBI-LLM:通过自回归蒸馏从头开始扩展全二值化大语言模型》由Ma等学者发布于arXiv。该研究呈现了首个完全从头训练的全二值化大语言模型FBI-LLM,在不牺牲性能的前提下大幅降低计算资源需求。通过自回归蒸馏技术,FBI-LLM在多种任务上展现出与高精度模型相当的表现,为二值化模型的发展开辟新路径,并有望推动专用硬件的进步。研究者公开了所有相关资源以促进领域内的进一步探索。
281 10
|
10月前
|
人工智能 自然语言处理 数据可视化
89.4K star!这个开源LLM应用开发平台,让你轻松构建AI工作流!
Dify 是一款开源的 LLM 应用开发平台,通过直观的可视化界面整合 AI 工作流、RAG 管道、智能代理等功能,助你快速实现从原型到生产的跨越。支持本地部署和云端服务,提供企业级功能与完整 API 接口。
745 4
|
并行计算 API 调度
加速大语言模型推理:NVIDIATensorRT-LLM更新
本次分享由NVIDIA亚太区资深总监李曦鹏主讲,聚焦于加速大语言模型推理的挑战与解决方案。内容涵盖大模型推理优化、性能提升策略及KVCash在用户请求处理中的应用。通过TensorRT-LLM的更新,NVIDIA提供了高性能推理引擎和多种优化技术,如KVCache优化、InflightBatching等,大幅提升了大模型的推理效率。此外,还介绍了与魔搭社区的合作,支持超过50个主流模型的一键部署,显著降低了使用门槛和成本。
647 1
|
人工智能 自然语言处理 物联网
LLM2CLIP:使用大语言模型提升CLIP的文本处理,提高长文本理解和跨语言能力
LLM2CLIP 为多模态学习提供了一种新的范式,通过整合 LLM 的强大功能来增强 CLIP 模型。
745 3
LLM2CLIP:使用大语言模型提升CLIP的文本处理,提高长文本理解和跨语言能力
|
机器学习/深度学习 人工智能 自然语言处理
【LLM】能够运行在移动端的轻量级大语言模型Gemma实践
【4月更文挑战第12天】可以运行在移动端的开源大语言模型Gemma模型介绍
940 0
|
存储 人工智能 自然语言处理
无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
【8月更文挑战第8天】无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
|
人工智能 API 调度
大语言模型 LLM 管理功能特点解析
大语言模型领域正快速发展,涵盖技术革新、跨领域应用及行业影响。随着技术进步,更多创新性AI应用和服务涌现。Botnow加速迭代AI应用开发平台,赋能各行各业。新发布的模型管理功能包括模型仓库和模型服务,支持模型文件托管、部署及推理服务,提升使用效率,降低成本。模型服务具备本地推理和接入外部模型的能力,满足中大型企业对大语言模型自主可控的需求。
|
机器学习/深度学习 人工智能 搜索推荐
歌发布专用于个人健康的大语言模型PH-LLM
【8月更文挑战第8天】谷歌推出个人健康大语言模型(PH-LLM),利用个人健康数据提供定制化建议。通过三大数据集评估,PH-LLM在睡眠和健身场景中表现出色,多项选择题测试中正确率分别达79%和88%,超越专家平均水平。它还能预测自我报告的睡眠质量,性能媲美专业模型。尽管如此,PH-LLM仍需克服可靠性、复杂性等挑战。此模型标志着AI在个人健康管理上的重要进展。[论文](https://arxiv.org/abs/2406.06474)
252 1

热门文章

最新文章