大模型系列:OpenAI使用技巧_给数据集中做文本向量化embeding


本笔记本提供了一个示例,演示如何从大型数据集中获取嵌入。

1. 加载数据集

本示例使用的数据集是来自亚马逊的精细食品评论。该数据集包含截至2012年10月,亚马逊用户留下的共568,454条食品评论。我们将使用该数据集的一个子集,包含最近的1,000条评论,以说明目的。这些评论是用英语编写的,倾向于是积极的或消极的。每个评论都有一个ProductId、UserId、Score、评论标题(Summary)和评论正文(Text)。

我们将把评论摘要和评论文本合并成一个单独的文本。模型将对这个合并的文本进行编码,并输出一个单一的向量嵌入。

要运行这个笔记本,您需要安装以下软件包:pandas、openai、transformers、plotly、matplotlib、scikit-learn、torch(transformer dep)、torchvision 和 scipy。

# 导入pandas和tiktoken模块
import pandas as pd
import tiktoken# 导入自定义的get_embedding函数
from utils.embeddings_utils import get_embedding
# 定义嵌入模型参数
embedding_model = "text-embedding-ada-002"
# 定义嵌入编码方式
embedding_encoding = "cl100k_base"  # 这是text-embedding-ada-002的编码方式
# 定义最大标记数
max_tokens = 8000  # text-embedding-ada-002的最大标记数为8191
# 加载和检查数据集
input_datapath = "data/fine_food_reviews_1k.csv"  # 为了节省空间,我们提供了一个经过预过滤的数据集
df = pd.read_csv(input_datapath, index_col=0)  # 使用pandas库的read_csv函数读取csv文件,并将第一列作为索引列
df = df[["Time", "ProductId", "UserId", "Score", "Summary", "Text"]]  # 选择数据集中的指定列
df = df.dropna()  # 删除包含缺失值的行
df["combined"] = (  # 创建一个新的列"combined",将"Summary"和"Text"两列的内容合并到一起"Title: " + df.Summary.str.strip() + "; Content: " + df.Text.str.strip()
)
df.head(2)  # 显示数据集的前两行数据
TimeProductIdUserIdScoreSummaryTextcombined
01351123200B003XPF9BOA3R7JR3FMEBXQB5where does one start...and stop... with a tre...Wanted to save some to bring to my Chicago fam...Title: where does one start...and stop... wit...
11351123200B003JK537SA3JBPC3WFUT5ZP1Arrived in piecesNot pleased at all. When I opened the box, mos...Title: Arrived in pieces; Content: Not pleased...
# subsample to 1k most recent reviews and remove samples that are too long
# 将数据集抽样为最近的1000个评论,并删除过长的样本top_n = 1000
# 对数据集按照"Time"列进行排序,然后取最后的2k个样本
df = df.sort_values("Time").tail(top_n * 2)  # first cut to first 2k entries, assuming less than half will be filtered out# 删除"Time"列
df.drop("Time", axis=1, inplace=True)# 使用tiktoken库的get_encoding方法获取嵌入编码
encoding = tiktoken.get_encoding(embedding_encoding)# 对于每个评论,计算其编码后的token数量,并将结果保存在新的列"n_tokens"中
df["n_tokens"] = df.combined.apply(lambda x: len(encoding.encode(x)))# 保留token数量不超过max_tokens的样本,并取最后的top_n个样本
df = df[df.n_tokens <= max_tokens].tail(top_n)# 返回数据集df的长度
len(df)
1000

2. 获取嵌入并保存以备将来使用

# 确保您已按照README中的说明在环境中设置了API密钥:https://github.com/openai/openai-python#usage# 这可能需要几分钟时间
# 将get_embedding函数应用于df的combined列,并将结果存储在df的embedding列中
df["embedding"] = df.combined.apply(lambda x: get_embedding(x, model=embedding_model))
# 将df保存为CSV文件,文件名为fine_food_reviews_with_embeddings_1k.csv
df.to_csv("data/fine_food_reviews_with_embeddings_1k.csv")

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

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

相关文章

线上隐私保护的未来:分布式身份DID的潜力

在日益数字化的世界中&#xff0c;人们的生活越来越多地依赖于互联网&#xff0c;数字身份也因而变得越来越重要。根据法律规定&#xff0c;互联网应用需要确认用户的真实身份才能提供各种服务&#xff0c;而用户则希望在进行身份认证的同时能够尽量保护他们的个人隐私&#xf…

Windows中共享文件夹以及防火墙介绍

目录 一. 共享文件夹是什么? 1.2 优缺点 1.3 实操案例 普通共享 高级共享 二. 防火墙 防火墙概述 防火墙典型应用场景 防火墙的基本概念 案例展示 JDK的安装 tomcat 防火墙配置 防火墙开放端口设置 一. 共享文件夹是什么? 它的作用就是让局域网的所有电脑都能获…

嵌入式SOC之通用图像处理之OSD文字信息叠加的相关实践记录

机缘巧合 机缘巧合下, 在爱芯元智的xx开发板下进行sdk的开发.由于开发板目前我拿到是当前最新的一版(估计是样品)&#xff0c;暂不公开开发板具体型号信息.以下简称板子 .很多优秀的芯片厂商,都会提供与开发板配套的完善的软件以及完善的技术支持(FAE)&#xff0c;突然觉得爱芯…

Pytorch简介

1.1 Pytorch的历史 PyTorch是一个由Facebook的人工智能研究团队开发的开源深度学习框架。在2016年发布后&#xff0c;PyTorch很快就因其易用性、灵活性和强大的功能而在科研社区中广受欢迎。下面我们将详细介绍PyTorch的发展历程。 在2016年&#xff0c;Facebook的AI研究团队…

远程网络唤醒家庭主机(openwrt设置)

远程网络唤醒家庭主机&#xff08;openwrt设置&#xff09; 前提&#xff1a; 1.配置好主板bios的网络唤醒功能(网络教程自己百度一下找) 2.电脑开启网络唤醒功能(网络教程自己百度一下找) 3.路由器通过ddns实现域名和动态IP绑定内网穿透方法汇总_不修改光猫进行内网穿透-C…

8 异步通知

一,异步通知 应用程序可以通过sigevent请求异步接收特定Screen事件。 对于多线程应用程序,所有事件处理都可以通过异步通知定向到一个线程。当应用程序的所有事件处理都由一个线程执行时,更容易同步任务并确保某些任务按正确的顺序执行。 在你调用screen_notify()之前,你…

AAAI 2024:大模型如何掌握复杂工具?看孔子框架的教学之道

如今&#xff0c;大型语言模型&#xff08;LLM&#xff09;发展飞速&#xff0c;在文本和图像生成方面表现都很出色&#xff0c;但在我们的实际生活中&#xff0c;要理解和正确使用各种工具方面尚存在困难。人们期望这些模型在解决实际问题时能够灵活运用和理解各种工具&#x…

键盘字符(#键)显示错误

当屏幕上显示的键与键盘上按下的键不同时&#xff0c;尤其是 # 键。大多数情况下&#xff0c;此错误是由于 raspbian 和 NOOBS 软件的默认英国键盘配置所致。 解决方案&#xff1a; 要解决此问题&#xff0c;您需要将配置更改为您自己的键盘或语言的配置。这可以通过转到树莓派…

LeetCode第63题 - 不同路径 II

题目 解答 class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m obstacleGrid.length;int n obstacleGrid[0].length;if (obstacleGrid[0][0] 1) {return 0;}if (obstacleGrid[m - 1][n - 1] 1) {return 0;}int[][] dp new int[m][n];dp…

Qt/QML编程学习之心得:loader和component(二十)

这个的确不是那么好用,最近使用中发现loader主要不让所有界面一起加载,可以实现异步加载的。假如使用如下的asychronous,属性值设置为true,但是光这个没法达成真正的异步加载,这点可以通过Component.onConstruction(类似于构造函数)和Component.onDestruction(类似于析…

树莓派 ubuntu20.04下 python调讯飞的语音API,语音识别和语音合成

目录 1.环境搭建2.去讯飞官网申请密钥3.语音识别&#xff08;sst&#xff09;4.语音合成&#xff08;tts&#xff09;5.USB声卡可能报错 1.环境搭建 #环境说明&#xff1a;(尽量在ubuntu下使用, 本次代码均在该环境下实现) sudo apt-get install sox # 安装语音播放软件 pip …

拓展操作(三) jenkins迁移到另一个机器

让清单成为一种习惯 互联网时代的变革,不再是简单的开发部署上线,持续,正确,安全地把事情做好尤其重要;把事情做好的前提是做一个可量化可执行的清单,让工程师就可以操作的清单而不是专家才能操作: 设定检查点 根据节点执行检查程序操作确认或边读边做 二者选其一不要太…

Typora快捷键设置详细教程

文章目录 一、快捷键设置步骤二、设置快捷键简单案例参考资料 一、快捷键设置步骤 在typora软件中&#xff0c;快捷键的设置步骤主要为&#xff1a; 打开【文件】–>【偏好设置】&#xff0c;找到【通用】–>【打开高级设置】&#xff0c;找到 conf.user.json 文件。 然…

数据库中如何修改和删除字段

PS&#xff1a;在"[ ]"中的所有数据都是可修改的 添加表字段 ALTER TABLE [表名] add [添加的新字段名] [添加新的数据类型] COMMENT [昵称] alter&#xff1a;修改&#xff08;后面一般加table表示修改表&#xff09; add&#xff1a;添加一个字段 在这个里面c…

代码随想录刷题笔记(DAY3)

今日总结&#xff1a;虽然之前刷过链表&#xff0c;但这次做的是有些费力的&#xff0c;也有了更深的理解。整理完今天的 Vue 笔记就睡。。。 DAY 3 01. 移除链表元素&#xff08;No. 203&#xff09; 题目链接&#xff1a;https://leetcode.cn/problems/remove-linked-list-…

SpringBoot项目部署及多环境

1、多环境 2、项目部署上线 原始前端 / 后端项目宝塔Linux容器容器平台 3、前后端联调 4、项目扩展和规划 多环境 程序员鱼皮-参考文章 本地开发&#xff1a;localhost&#xff08;127.0.0.1&#xff09; 多环境&#xff1a;指同一套项目代码在把不同的阶段需要根据实际…

nginx配置https请求转发到http出现Mixed Contend问题

问题描述 nginx配置https请求转发到http后&#xff0c;部分网站访问出现空白页&#xff0c;感觉像是js、css没有正常加载。通过F12&#xff0c;发现很多js文件出现Mixed Content&#xff0c;状态是已屏蔽&#xff0c;协议都是http的。 HTTPS网页中加载HTTP资源被称之为Mixed …

ADRC-跟踪微分器TD的Maltab实现及参数整定

目录 问题描述&#xff1a; 跟踪微分器TD基本概念&#xff1a; Matlab及其实现&#xff1a; 跟踪效果&#xff1a; 例1&#xff1a;跟踪信号 sin(t) 0.5*rand(1,1)。 例2&#xff1a;跟踪部分时段为方波的信号&#xff0c;具体形式见代码get_command。 参数整定&#xf…

Flink 日志总结

前言 总结一下 Flink 项目代码打印日志的配置。 目的 默认情况下不会打印Flink日志信息,只会抛出缺少日志类警告,比如上篇文章中的 flink-hbase 代码就没有打印 Flink 日志信息。有些情况下我们需要从 Flink 日志中获取一下信息,对于我们学习 Flink 或者解决问题都有帮助…

(已解决)(pytorch指定了gpu但还是占用了一点0号gpu)以及错误(cuDNN error: CUDNN_STATUS_INTERNAL_ERROR)

文章目录 错误原因解决问题 错误原因 出现错误cuDNN error: CUDNN_STATUS_INTERNAL_ERROR&#xff0c;从这个名字就可以看出&#xff0c;出错原因其实有可能有很多种&#xff0c;我这里说一种比较常见的&#xff0c;就是&#xff1a;显存不足。 一个困惑点在于&#xff0c;在…