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

这篇具有很好参考价值的文章主要介绍了Scikit-LLM:将大语言模型整合进Sklearn的工作流。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

安装

 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文章来源地址https://www.toymoban.com/news/detail-461052.html

到了这里,关于Scikit-LLM:将大语言模型整合进Sklearn的工作流的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大语言模型(LLM)综述(五):使用大型语言模型的主要方法

    随着人工智能和机器学习领域的迅速发展,语言模型已经从简单的词袋模型(Bag-of-Words)和N-gram模型演变为更为复杂和强大的神经网络模型。在这一进程中,大型语言模型(LLM)尤为引人注目,它们不仅在自然语言处理(NLP)任务中表现出色,而且在各种跨领域应用中也展示

    2024年02月06日
    浏览(52)
  • 大型语言模型 (LLM)全解读

    大型语言模型 是 一种深度学习算法 ,可以 执行各种自然语言处理 (NLP) 任务 。 大型语言模型底层 使用多个转换器模型 , 底层转换器是一组神经网络 。 大型语言模型是 使用海量数据集 进行训练的超大型深度学习模型。 这也是它们能够识别、翻译、预测或生成文本或其他

    2024年01月23日
    浏览(65)
  • 如何评估大型语言模型(LLM)?

    编者按:近期几乎每隔一段时间,就有新的大语言模型发布,但是当下仍然没有一个通用的标准来评估这些大型语言模型的质量,我们急需一个可靠的、综合的LLM评估框架。 本文说明了为什么我们需要一个全面的大模型评估框架,并介绍了市面上这些现有的评估框架,同时指

    2024年02月10日
    浏览(56)
  • 什么是LLM大语言模型?

    什么是LLM大语言模型? 大语言模型(英文:Large Language Model,缩写LLM),也称大型语言模型,是一种人工智能模型,旨在理解和生成人类语言。它们在大量的文本数据上进行训练,可以执行广泛的任务,包括文本总结、翻译、情感分析等等。LLM的特点是规模庞大,包含数十亿

    2024年02月12日
    浏览(43)
  • AI:大语言模型LLM

    LLM 大语言模型(Large Language Model,LLM)是一种利用大量文本数据进行训练的自然语言处理模型,其评价可以从多个方面进行。 以下是一些主要的评价方面: 语言理解和生成能力: 评价大语言模型在自然语言理解(如语义理解、实体识别、情感分析等)和自然语言生成(如文

    2024年02月05日
    浏览(35)
  • LLM大语言模型(九):LangChain封装自定义的LLM

    想基于ChatGLM3-6B用LangChain做LLM应用,需要先了解下LangChain中对LLM的封装。本文以一个hello world的封装来示例。 继承关系:BaseLanguageModel——》BaseLLM——》LLM 简化和LLM的交互 _call抽象方法定义 BaseLLM类其实有两个abstract方法:_generate方法和_llm_type方法 注意:LLM类仅实现了_genera

    2024年04月10日
    浏览(48)
  • LLM之幻觉(二):大语言模型LLM幻觉缓减技术综述

           LLM幻觉缓减技术分为两大主流, 梯度方法 和 非梯度方法 。梯度方法是指对基本LLM进行微调;而非梯度方法主要是在推理时使用Prompt工程技术。LLM幻觉缓减技术,如下图所示: LLM幻觉缓减技术值得注意的是: 检索增强生成(RAG) 知识检索(https://arxiv.org/abs/2307.039

    2024年01月18日
    浏览(45)
  • 大型语言模型LLM的基础应用

    ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案

    2024年02月09日
    浏览(52)
  • 从头开始构建大语言模型(LLM)

    了解如何从头开始构建大语言模型,从而创建、训练和调整大语言模型! LLMs 在“从头开始构建大语言模型”中,你将了解如何从内到外LLMs工作。在这本富有洞察力的书中,畅销书作家塞巴斯蒂安·拉施卡 (Sebastian Raschka) 将指导您逐步创建自己的LLM阶段,并用清晰的文本、

    2024年02月01日
    浏览(39)
  • 大语言模型LLM的一些点

    GPT模型是一种自然语言处理模型,使用Transformer来预测下一个单词的概率分布,通过训练在大型文本语料库上学习到的语言模式来生成自然语言文本。 GPT-1(117亿参数),GPT-1有一定的泛化能力。能够用于和监督任务无关的任务中。 GPT-2(15亿参数),在生成方面表现出很大天赋,

    2024年02月13日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包