揭开ChatGPT面纱(3):使用OpenAI进行文本情感分析(embeddings接口)

文章目录

  • 一、embeddings接口解析
  • 二、代码实现
    • 1.数据集dataset.csv
    • 2.代码
    • 3.运行结果

openai版本==1.6.1
本系列博客源码仓库:gitlab,本博客对应文件夹03

在这一篇博客中我将使用OpenAI的embeddings接口判断21条服装评价是否是好评。

  • 首先来看实现思路:

在这里插入图片描述

一、embeddings接口解析

在上一篇博客中说过了,OpenAI主要有11个接口,其中embeddings接口用于生成文本嵌入。下面通过解读参数来学习下这个接口的用法。

  • 在这个接口中,最主要使用的就是这个create()方法:

在这里插入图片描述

  • 参数解析:

input: 要嵌入的输入文本,可以是字符串、字符串列表、整数列表或整数数组列表。输入必须不超过模型的最大输入令牌数。
model: 要使用的模型ID。
encoding_format: 返回嵌入的格式,可以是float或base64。
user: 代表终端用户的唯一标识符,可以帮助OpenAI监控和检测滥用行为。
extra_headers: 发送额外的HTTP头。
extra_query: 在请求中添加额外的查询参数。
extra_body: 在请求中添加额外的JSON属性。
timeout: 覆盖客户端级别的默认超时时间,单位为秒。

二、代码实现

1.数据集dataset.csv

评价,标签
这件衣服的面料非常舒适,穿上去感觉很好,好评
款式时尚,颜色也很正,非常满意的一次购物体验,好评
衣服质量超出预期,非常满意,好评
穿上这件衣服,感觉整个人都精神了,好评,好评
质量很好,做工精细,好评,好评
颜色很鲜亮,非常喜欢,好评
尺码很准,穿上很合身,好评
衣服的版型很好,穿上很有型,好评
面料柔软,手感很好,好评
非常满意的一次购物,衣服质量非常好,好评
穿上很显瘦,非常喜欢,好评
颜色和图片一样,没有色差,好评
衣服的质感很好,穿上很有档次,好评
款式新颖,穿上很有气质,好评
衣服有质量问题,线头多,不满意,差评
颜色和图片有色差,感觉被欺骗了,差评
尺码不准确,穿上不合身,差评
面料很硬,穿上不舒服,差评
衣服做工粗糙,有很多线头,差评
款式一般,没有图片上看起来好看,差评
衣服有异味,洗了好几次还是有味道,差评

2.代码

from openai import OpenAI
import json
import httpx
import numpy as np# 读取配置,在上传gitlab时配置文件ignore了
with open('../config/openai.json') as config_file:config = json.load(config_file)client = OpenAI(base_url=config['base_url'],api_key=config['key'],http_client=httpx.Client(base_url=config['base_url'],follow_redirects=True,),
)# 指定模型
MODEL = "text-embedding-ada-002"# 读取数据集,忽略表头行
dataset = open('dataset.csv', 'r', encoding='utf-8').readlines()[1:]
reviews = []
labels = []
for row in dataset:items = row.split(',')reviews.append(items[0])labels.append(items[1])# 实现文本转embedding方法
def get_embedding(text, model=MODEL):return client.embeddings.create(input=[text], model=model).data[0].embedding# 将”好评“和”差评“转换为embedding
positive = get_embedding("好评")
negative = get_embedding("差评")# 把数据集的评论转为embedding
review_embeddings = []
for review in reviews:review_embeddings.append(get_embedding(review))# 实现余弦相似度算法
def cosine_similarity(vec_a, vec_b):# 计算两个向量的点积dot_product = np.dot(vec_a, vec_b)# 计算两个向量的欧几里得范数(即长度)norm_a = np.linalg.norm(vec_a)norm_b = np.linalg.norm(vec_b)# 计算余弦相似度cos_similarity = dot_product / (norm_a * norm_b)return cos_similarity# 计算每条评论是好评还是差评
for i in range(len(reviews)):print("第" + str(i) + "条评论为:" + reviews[i])pos_score = cosine_similarity(review_embeddings[i], positive)neg_score = cosine_similarity(review_embeddings[i], negative)print("该评论与好评的相似度为:" + str(pos_score))print("该评论与差评的相似度为:" + str(neg_score))print("判断结果为:" + ("好评" if pos_score>neg_score else "差评"))print("实际标签为:"+labels[i])

3.运行结果

21条评论,只计算错误3条,正确率高达85.7%。

D:\setup\tensorflow\envs\openaidemo\python.exe "D:/0 project/openaidemo/03/sentiment_analysis.py"0条评论为:这件衣服的面料非常舒适,穿上去感觉很好
该评论与好评的相似度为:0.7866600025796906
该评论与差评的相似度为:0.7340914289400244
判断结果为:好评
实际标签为:好评第1条评论为:款式时尚,颜色也很正,非常满意的一次购物体验
该评论与好评的相似度为:0.8116062681356471
该评论与差评的相似度为:0.7592264307269887
判断结果为:好评
实际标签为:好评第2条评论为:衣服质量超出预期,非常满意
该评论与好评的相似度为:0.835177254990754
该评论与差评的相似度为:0.7910031400363514
判断结果为:好评
实际标签为:好评第3条评论为:穿上这件衣服,感觉整个人都精神了,好评
该评论与好评的相似度为:0.8479253083790808
该评论与差评的相似度为:0.7992275199715745
判断结果为:好评
实际标签为:好评第4条评论为:质量很好,做工精细,好评
该评论与好评的相似度为:0.8804815052105072
该评论与差评的相似度为:0.8202060552575923
判断结果为:好评
实际标签为:好评第5条评论为:颜色很鲜亮,非常喜欢
该评论与好评的相似度为:0.8122908056959066
该评论与差评的相似度为:0.7453758474352993
判断结果为:好评
实际标签为:好评第6条评论为:尺码很准,穿上很合身
该评论与好评的相似度为:0.8095639635935163
该评论与差评的相似度为:0.7542509575575985
判断结果为:好评
实际标签为:好评第7条评论为:衣服的版型很好,穿上很有型
该评论与好评的相似度为:0.8029880472359789
该评论与差评的相似度为:0.752721443961377
判断结果为:好评
实际标签为:好评第8条评论为:面料柔软,手感很好
该评论与好评的相似度为:0.8202393074180623
该评论与差评的相似度为:0.7715710993474748
判断结果为:好评
实际标签为:好评第9条评论为:非常满意的一次购物,衣服质量非常好
该评论与好评的相似度为:0.8304340790084418
该评论与差评的相似度为:0.7686974883325032
判断结果为:好评
实际标签为:好评第10条评论为:穿上很显瘦,非常喜欢
该评论与好评的相似度为:0.7845954204223071
该评论与差评的相似度为:0.7344546937738867
判断结果为:好评
实际标签为:好评第11条评论为:颜色和图片一样,没有色差
该评论与好评的相似度为:0.7889487515789574
该评论与差评的相似度为:0.7629094836325928
判断结果为:好评
实际标签为:好评第12条评论为:衣服的质感很好,穿上很有档次
该评论与好评的相似度为:0.8103547992920661
该评论与差评的相似度为:0.7626423966774464
判断结果为:好评
实际标签为:好评第13条评论为:款式新颖,穿上很有气质
该评论与好评的相似度为:0.7940717784875954
该评论与差评的相似度为:0.7563715210341154
判断结果为:好评
实际标签为:好评第14条评论为:衣服有质量问题,线头多,不满意
该评论与好评的相似度为:0.7944173838386458
该评论与差评的相似度为:0.800127661438339
判断结果为:差评
实际标签为:差评第15条评论为:颜色和图片有色差,感觉被欺骗了
该评论与好评的相似度为:0.7822516772149408
该评论与差评的相似度为:0.7907092043951234
判断结果为:差评
实际标签为:差评第16条评论为:尺码不准确,穿上不合身
该评论与好评的相似度为:0.7697819579113206
该评论与差评的相似度为:0.7768264577324818
判断结果为:差评
实际标签为:差评第17条评论为:面料很硬,穿上不舒服
该评论与好评的相似度为:0.7652704470138616
该评论与差评的相似度为:0.7608743799318946
判断结果为:好评
实际标签为:差评第18条评论为:衣服做工粗糙,有很多线头
该评论与好评的相似度为:0.748231684611617
该评论与差评的相似度为:0.7604407281022945
判断结果为:差评
实际标签为:差评第19条评论为:款式一般,没有图片上看起来好看
该评论与好评的相似度为:0.7825934944171562
该评论与差评的相似度为:0.7738324828014607
判断结果为:好评
实际标签为:差评第20条评论为:衣服有异味,洗了好几次还是有味道
该评论与好评的相似度为:0.7546261044756783
该评论与差评的相似度为:0.7442435431393303
判断结果为:好评
实际标签为:差评Process finished with exit code 0

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

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

相关文章

Llama3新一代 Llama模型

最近,Meta 发布了 Llama3 模型,从发布的数据来看,性能已经超越了 Gemini 1.5 和 Claud 3。 Llama 官网说,他们未来是要支持多语言和多模态的,希望那天赶紧到来。 未来 Llama3还将推出一个 400B大模型,目前…

计算机网络——数据链路层(介质访问控制)

计算机网络——数据链路层(介质访问控制) 介质访问控制静态划分信道动态划分信道ALOHA协议纯ALOHA(Pure ALOHA)原理特点 分槽ALOHA(Slotted ALOHA)原理特点 CSMA协议工作流程特点 CSMA-CD 协议工作原理主要…

JVM虚拟机(十二)ParallelGC、CMS、G1垃圾收集器的 GC 日志解析

目录 一、如何开启 GC 日志?二、GC 日志分析2.1 PSPO 日志分析2.2 ParNewCMS 日志分析2.3 G1 日志分析 三、GC 发生的原因3.1 Allocation Failure:新生代空间不足,触发 Minor GC3.2 Metadata GC Threshold:元数据(方法…

【数据结构|C语言版】算法效率和复杂度分析

前言1. 算法效率2. 大O的渐进表示法3. 时间复杂度3.1 时间复杂度概念3.2 时间复杂度计算举例 4. 空间复杂度4.1 空间复杂度的概念4.2 空间复杂度计算举例 5. 常见复杂度对比结语 ↓ 个人主页:C_GUIQU 个人专栏:【数据结构(C语言版&#xff09…

Kafka源码分析(四) - Server端-请求处理框架

系列文章目录 Kafka源码分析-目录 一. 总体结构 先给一张概览图: 服务端请求处理过程涉及到两个模块:kafka.network和kafka.server。 1.1 kafka.network 该包是kafka底层模块,提供了服务端NIO通信能力基础。 有4个核心类:…

【Django】django.core.exceptions.AppRegistryNotReady: Apps aren‘t loaded yet.

其中django后台manage.py入口程序报错,检索很多问题解决方案,这里记录下个人问题原因 1.django启动异常问题详情 django.core.exceptions.AppRegistryNotReady: Apps aren’t loaded yet. 2.问题原因 Python第三方包安装版本不一致或缺少依赖包&…

Flink窗口机制

1.窗口的概念 时间是为窗口服务的。窗口是什么?为什么会有窗口呢? (1)Flink要处理的数据,一般是从Kafka过来的流式数据,如果只是单纯地统计流的数据量,是没办法统计的。 (2&#xff…

C语言程序设计:简易版的printf函数实现

简易版的printf函数实现 功能说明 (1)使用putchar函数、va可变参完成printf函数基本功能的实现; (2)函数说明: 实现对下列数据类型的输出,并返回成功输出打印的字符个数: 整数&…

在CSDN创作了6个月,我收获了什么?文末送书~

作者主页:阿玥的小东东主页! 正在学习:python和C/C 期待大家的关注哦 目录 一次很好的机会,让我开始了CSDN之旅 首先来看看我的几位领路人 创作动力 1W粉丝 在CSDN我收获了什么? 很高的展现量 认证创作者身份 社…

【Linux】系统安全及应用

目录 一、账号安全基本措施 1.系统账号清理 2.密码安全控制 3.历史命令安全管理 4.限制su切换用户 1)将信任的用户加入到wheel组中 2)修改su的PAM认证配置文件 5.ssh远程登录输入三次密码错误则锁定用户 二、Linux中的PAM安全认证 1.su命令的…

Redis入门到通关之数据结构解析-动态字符串SDS

文章目录 Redis数据结构-动态字符串动态扩容举例二进制安全SDS优点与C语言中的字符串的区别 Redis数据结构-动态字符串 我们都知道 Redis 中保存的Key是字符串,value 往往是字符串或者字符串的集合。可见字符串是 Redis 中最常用的一种数据结构。 不过 Redis 没有…

Android Studio超级详细讲解下载、安装配置教程(建议收藏)

博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,深受全网粉丝喜爱与支持✌有…

贪吃蛇游戏实现(VS编译环境)

贪吃蛇游戏 🥕个人主页:开敲🍉 🔥所属专栏:C语言🍓 🌼文章目录🌼 0. 前言 1. 游戏背景 2. 实现后游戏画面展示 3. 技术要求 4. Win32 API介绍 4.1 Win32 API 4.2 控制台程序 4.…

Java之类和对象

一面向对象的初步认知 1.什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想…

嵌入式物联网实战开发笔记-乐鑫ESP32开发环境ESP-IDF搭建【doc.yotill.com】

乐鑫ESP32入门到精通项目开发参考百例下载: 链接:百度网盘 请输入提取码 提取码:4e33 3.1 ESP-IDF 简介 ESP-IDF(Espressif IoT Development Framework)是乐鑫(Espressif Systems)为 ESP 系列…

大型网站系统架构演化实例_2.使用缓存改善网站性能

1.使用缓存改善网站性能 网站访问的特点和现实世界的财富分配一样遵循二八定律:80%的业务访问集中在20%的数据上。既然大部分业务访问集中在一小部分数据上,那么如果把这一小部分数据缓存在内存中,就可以减少数据库的访问压力&#xf…

【Python】自定义修改pip下载模块默认的安装路径

因为电脑下载了Anaconda提供的默认Python 3.9 以及后期下载的python3.10所以在Pychram进行项目开发时,发现一些库怎么导入都导入不了,手动install也是失败,后期在cmd里面发现python以及pip配置有点儿混乱,导致执行命令时&#xff…

碳循环、人类、遥感之间的关联

1. 碳与碳循环 碳是自然界中很常见的一种元素,它以多种形式广泛存在于大气和地壳之中。碳单质很早就被人认识和利用,碳的一系列化合物——有机物是生命的根本。 1.1 自然界中的碳 地球上最大的两个碳库是岩石圈和化石燃料,含碳量约占…

在RISC-V64架构的CV1811C开发板上应用perf工具进行多线程程序性能分析及火焰图调试

CV1811C环境编译 SDK目录结构 . ├── build // 编译目录,存放编译脚本以及各board差异化配置 ├── buildroot-2021.05 // buildroot开源工具 ├── freertos // freertos系统 ├── fsbl // fsbl启动固件,prebuilt形式存在…

Android14 - WindowManagerService之客户端Activity布局

Android14 - WindowManagerService之客户端Activity布局 一、主要角色 WMS作为一个服务端,有多种客户端与其交互的场景。我们以常见的Activity为例: Activity:在ActivityThread构建一个Activity后,会调用其attach方法,…