独家 | Scikit-LLM:Sklearn邂逅大语言模型

17f3ff63cdbf41264f4235555a5d94ec.png

作者:Fareed Khan翻译:陈之炎
校对:赵茹萱本文约2600字,建议阅读8分钟
本文为您介绍文本分析的工具包Scikit-LLM。

标签:LLM

43f543efce676afc20bfe3b0c7df0f62.png

Scikit-LLM是文本分析的游戏规则改变者,它将功能强大的ChatGPT语言模型和scikit-learn相结合,为理解和分析文本提供了一个无与伦比的工具包。利用scikit-LLM,可以在各种类型的文本数据中发现隐含的模式、情绪和上下文,如客户反馈、社交媒体帖子和新闻文章等。它汇集了语言模型和scikit-learn的优势,能够从文本中提取有价值的见解。

官方GitHub存储库:

https://github.com/iryna-kondr/scikit-llm

全部示例均直接取自官方的存储库。

接下来,开启Scikit-LLM曼妙之旅吧!

安装Scikit-LLM

从安装Scikit-LLM开始,它集成了scikit-learn和语言模型功能强大的各种库,可以使用pip来安装它:

pip install scikit-llm


获取OpenAI API密钥

截至2023年5月,Scikit-LLM兼容一组特定的OpenAI模型,要求用户提供自己的OpenAI API密钥才能成功集成。

首先从Scikit-LLM库中导入SKLLMConfig模块,然后添加openAI密钥:

# importing SKLLMConfig to configure OpenAI API (key and Name)
from skllm.config import SKLLMConfig# Set your OpenAI API key
SKLLMConfig.set_openai_key("<YOUR_KEY>")# Set your OpenAI organization (optional)
SKLLMConfig.set_openai_org("<YOUR_ORGANIZATION>")

正如在GitHub存储库中所述:

如果是免费试用的OpenAI帐户,那么费率限制就不够了(每分钟3个请求)。请先切换到“随付”计划。

当调用SKLLMConfig.set_openai_org时,必须提供组织ID,而非组织名称。可以从以下链接中找到组织ID: https://platform.openai.com/account/org-settings

零样本GPT分类器

ChatGPT的闪酷之处是它在无需经过专门的训练的情况下,便能够实现文本分类,需要的只是描述性的标签。

在此引入ZeroShotGPTClassifier,它是Scikit-LLM中的一个类,利用它创建scikit-learn分类器。

# importing zeroshotgptclassifier module and classification dataset
from skllm import ZeroShotGPTClassifier
from skllm.datasets import get_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还确保它能收到包含一个有效标签的响应,如果没有收到包含一个有效标签的响应,Scikit-LLM将随机选择一个标签,并根据标签在训练数据中出现的频度来计算其概率。

简单地说,Scikit-LLM处理API的内容,并确保能获取到可用的标签。如果响应中缺少标签,它会根据训练数据中出现的频度选取一个填充标签。

如果没有带标记的数据怎么办?

更为有趣的是——甚至不需要有带标记的数据来训练模型,只需要提供一个候选标签的列表:

# importing zeroshotgptclassifier module and classification dataset
from skllm import ZeroShotGPTClassifier
from skllm.datasets import get_classification_dataset# get classification dataset from sklearn for prediction onlyX, _ = 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)

太酷了吧?通过指定隐性标签,可以训练没有明确标记的数据。

正如在GitHub存储库中所述:

在零样本分类中,分类器的有效性取决于标签本身的结构,它可以用自然语言、描述性语言和自言自明来表达。

例如,在语义分类任务中,将标签从“<semantics>”转换为“the semantics of the provided text is <semantics>” (所提供文本的语义为语义)可能会更加有益。

多标签零样本文本分类

执行多标签零样本文本分类比想象得要更加容易:

# importing Multi-Label zeroshot module and classification dataset
from skllm import MultiLabelZeroShotGPTClassifier
from skllm.datasets import get_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)

如果没有标记好的数据(多标签示例)怎么办?

在上面的示例中,MultiLabelZeroShotGPTClassifier 用标记好的数据(X和y)进行训练。也可以通过提供候选标签列表来训练不带标记数据的分类器。在这种情况下,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 GPTVectorizer class from the skllm.preprocessing module
from skllm.preprocessing import GPTVectorizer# Creating an instance of the GPTVectorizer class and assigning it to the variable 'model'
model = GPTVectorizer()  # transorming the
vectors = model.fit_transform(X)

将GPTVectorizer实例的fit_transform 方法应用于输入数据X,将模型拟合到数据,并将文本转换为固定维度的向量,然后将得到的向量分配给向量变量。

接下来演示在scikit-learn 管道中组合GPTVectorizer 和XGBoost Classifier的例子,这种方法可以有效地实现文本预处理和分类:

# Importing the necessary modules and classes
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import LabelEncoder
from xgboost import XGBClassifier# 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为摘要长度设置了一个粗略的目标,但根据输入文本的上下文和内容,偶尔可能会生成略长一点的摘要。

如果有任何疑问,请随时提问!

原文标题:Scikit-LLM: Sklearn Meets Large Language Models

原文链接:https://medium.com/@fareedkhandev/scikit-llm-sklearn-meets-large-language-models-11fc6f30e530

编辑:黄继彦

译者简介

19e122f665785874a9ce9fcf138e269e.jpeg

陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师,现任北京吾译超群科技有限公司技术支持。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。业余时间喜爱翻译创作,翻译作品主要有:IEC-ISO 7816、伊拉克石油工程项目、新财税主义宣言等等,其中中译英作品“新财税主义宣言”在GLOBAL TIMES正式发表。能够利用业余时间加入到THU 数据派平台的翻译志愿者小组,希望能和大家一起交流分享,共同进步

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

fd91395116be5eb653b1646cb2cc77d6.png

点击“阅读原文”拥抱组织

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/41893.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLM应用的技术栈与设计模式详解

大型语言模型是构建软件的强大新原语。 但由于它们是如此新&#xff0c;并且其行为与普通计算资源如此不同&#xff0c;因此如何使用它们并不总是显而易见的。 在这篇文章中&#xff0c;我们将分享新兴 LLM 应用程序的参考架构。 它展示了我们所见过的人工智能初创公司和先进科…

GPT模型微调教程:打造您专属的ChatGPT模型

一、前言 通过前面对大语言模型的介绍&#xff0c;我们了解到&#xff0c;其实像目前已经发布的一些主流大语言模型如OpenAI公司发布的的GPT-3.5、GPT-4、Google发布的Bard和PaLM 2多模态模型、Anthropic最近推出的Claude 2、亦或是国内清华大学联合智普AI发布的ChatGLM 2等都…

[AI医学] ChatDoctor:借助医学知识库生成微调样本构建医疗领域大模型

关键词&#xff1a;AI医疗&#xff0c;医疗大模型&#xff0c;chatdoctor&#xff0c;大模型finetuning&#xff0c;基于疾病知识库的数据生成 ChatDoctor 在LLaMA模型的基础上进行fine tuning训练&#xff0c;样本数据采用100k在线真实医患对话&#xff0c;同时加入自主知识…

LLM/ChatGPT与多模态必读论文150篇(已更至第100篇)

目录 前言 第一部分 OpenAI/Google的基础语言大模型(11篇&#xff0c;总11篇) 第二部分 LLM的关键技术&#xff1a;ICL/CoT/RLHF/词嵌入/位置编码/加速/与KG结合等(34篇&#xff0c;总45篇) 第三部分 Meta等公司发布的类ChatGPT开源模型和各种微调(7篇&#xff0c;总52篇) …

讲课大师 把微信消息同步转发到企业微信中

讲课大师现在可以把微信中的语音、文字、图片等消息&#xff0c;转播到企业微信中了。开发这个功能&#xff0c;花了快三周的时间&#xff0c;主要是各种事情把我弄得太苦逼&#xff0c;让我无法集中精力&#xff0c;感谢上海杜总红包的鼓励&#xff0c;现在终于可以发布第一个…

好文转载 【ChatGPT】ChatGPT+MindShow三分钟生成PPT

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 第一步&#xff1a;获取PPT内容大概&#xff1a; 1.打开ChatGPT镜像 2.向他提问&#xff0c;提问格式如下&#xff0c;主题替换成你想获得的信息。比如某本书的拆解&#xff0c;自媒…

全面上新!阿里 2023 版(Java 岗)面试突击手册,Github 已标星 37K

程序员面试背八股&#xff0c;几乎已经是互联网不可逆的一个形式了。自从面试**八股文火了之后&#xff0c;网上出现了不少 Java 相关的面试题&#xff0c;很多朋友盲目收集背诵&#xff0c;**但网上大部分的面试题&#xff0c;大多存在这几个问题&#xff1a;第一&#xff0c;…

来阿里一年后我迎来了第一次工作变动....

你怎么不更新啦&#xff1f;怎么最近动态也变少啦&#xff1f;都去干吗了&#xff1f;工作很忙么&#xff1f; 算起来我也阶段性停更一年半了&#xff0c;这一年半不仅是在不断尝试自媒体不同的内容和方向&#xff0c;工作上的巨大转变也推着我去学习尝试了很多全新的东西。 …

阿里P8新年自爆内部使用的十万字面试手册

这份面试手册本来是我们部门面试时自用的【大厂的员工很辛苦的&#xff0c;不仅要敲代码还要去帮忙内推和面试】&#xff0c;可后来越来越多的朋友找到我&#xff0c;让我帮他们给一些面试的资料和面试上的指引&#xff0c;而且这些关系也不太好拒绝&#xff0c;我本就不是那种…

946页神仙文档, 四面阿里斩获offer,直接定级P7级

前言 最近气温逐渐回暖&#xff0c;几个朋友聚在一起聊天的时候统一发现&#xff0c;新的一波招聘旺季&#xff0c;马上要到来&#xff0c;毕竟年一过就金三银四了&#xff0c;这次的招聘依旧竞争压力山大&#xff0c;作为一个开发人员&#xff0c;你是否面上了自己理想的公司…

阿里高效沟通的秘密:向上沟通,跨部门沟通,PREP汇报...这5招绝了!

点击“技术领导力”关注∆ 每天早上8:30推送 来源&#xff1a;淘系技术 作者&#xff1a;鲁佳(鹿迦) 世界上有两件最难的事&#xff1a;把别人的钱装进自己的口袋&#xff1b;把自己的思想装进别人的脑袋。 为什么沟通那么重要 谁都知道在工作中沟通是非常重要的&#xff0…

阿里巴巴6大行业报告免费分享啦!

云栖君导读&#xff1a;飞天战略营将全方位研究人工智能、大数据与关键行业的合作、联动&#xff01;更有前沿案例深度解读成功企业的发展突破点&#xff0c;帮你抢占科技红利&#xff01;全球前沿科技领域的热门新闻评论为你带来前瞻性、专业性的阅读体验&#xff01; 飞天战略…

聊聊我在阿里第一年375晋升的心得

前言 思来想去&#xff0c;觉得这个事情除了领导赏识大佬抬爱之外&#xff0c;还是挺不容易的&#xff0c;主观认为有一定的参考价值&#xff0c;然后也是复盘一下&#xff0c;继续完善自己。 绩效 首先晋升的条件就是要有个好绩效&#xff0c;那么我们就先基于绩效这个维度…

在阿里晋升3次,4年拿下P8岗位,这份pdf或许对你有帮助

前言&#xff1a; 每一个互联网工作者都拥有一个阿里梦&#xff0c;而这个阿里梦的实现&#xff0c;除了幸运&#xff0c;还要靠努力。 初入阿里&#xff0c;是P5的位置进去的&#xff0c;当时校招顺利&#xff0c;很快就接到阿里的意向书&#xff0c;最后成功入职阿里。这个职…

在阿里晋升3次,5年拿下P8岗位,这份pdf记录了我的整个成长过程

前言&#xff1a; 每一个互联网工作者都拥有一个阿里梦&#xff0c;而这个阿里梦的实现&#xff0c;除了幸运&#xff0c;还要靠努力。 初入阿里&#xff0c;是P5的位置进去的&#xff0c;当时校招顺利&#xff0c;很快就接到阿里的意向书&#xff0c;最后成功入职阿里。这个职…

公司新来的阿里p8,看了我做的APP和接口测试,甩给了我这份文档

移动应用App已经渗透到每个人的生活、娱乐、学习、工作当中&#xff0c;令人激动、兴奋且具有创造性的各种App犹如雨后春笋般交付到用户手中。各类智能终端也在快速发布&#xff0c;而开发者对于全球移动设备的质量和性能却掌握甚少&#xff0c;App与设备的兼容性问题常常导致用…

苦卷28天,阿里P8给我的Alibaba面试手册,终于成功踹开字节大门

怎么说呢&#xff0c;今年真的是寒气逼人啊&#xff01;在这个大环境下&#xff0c;裁员已经不算是特别的事情&#xff0c;粗暴裁员也许是未来一种趋势…在职的卷的起飞&#xff0c;离职的找不到好工作。 做点能做的&#xff1a;跑跑步骑骑车多锻炼&#xff1b;当当上面正版书…

我在阿里做测试,入职5个月的回顾与总结

初来阿里实习的时候&#xff0c;我对测试人员的职责知之甚少&#xff0c;在校时更是从未接触过测试工作。一头雾水之际&#xff0c;主管说&#xff1a;“做项目吧&#xff0c;在实战中快速成长”。从学生到校招生&#xff0c;我在思维和心态完成了一次真正意义上的转变&#xf…

赶上ChatGPT的车,百度文心一言和阿里通义千问上线

百度“文心一言”&#xff0c;地址&#xff1a;https://yiyan.baidu.com 阿里“通义千问”&#xff0c;地址&#xff1a;https://tongyi.aliyun.com 以下介绍来自官方&#xff1a; 一、“文心一言”介绍&#xff1a; 你好&#xff0c;我是文心一言 ERNIE Bot 作为一个人工…

阿里入局,通义千问备受期待

目录 官宣内测体验内容鸟鸟分鸟后言 继百度文心一言发布三周之后&#xff0c;4月7日阿里通义大模型终于推出通义千问&#xff0c;阿里正式加入ChatGPT战局。下午市场一片大热&#xff0c;对于深耕NLP多年的阿里&#xff0c;大家有足够的期待。 官宣内测 “你好&#xff0c;我叫…