揭开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:元数据(方法…

在React中的函数组件和类组件——附带示例的对比

在React中,创建组件有两种主要方式:函数组件和类组件。每种方式都有自己的语法和用例,尽管随着React Hooks的引入,它们之间的差距已经显著缩小。但选择适当的组件类型对于构建高效和可维护的React应用程序仍然非常关键。 在本文中…

3. 指标收口

在数据仓库建设中,“指标收口”指的是在数据仓库的指标体系设计和实施过程中,对指标进行统一管理和优化,以确保数据的一致性、准确性。 对“指标收口”的详细理解: 1、明确指标定义和计算方法:在数据仓库建设中&#…

【数据结构|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我收获了什么? 很高的展现量 认证创作者身份 社…

Java Web常见框架

1、Spring Framework Spring是一个非常强大的框架,用于构建企业级应用程序。它提供了全面的编程和配置模型。 2、Spring Boot 基于Spring,它简化了配置过程,使得启动和运行基于Spring的应用程序变得更快,更容易。 3、Hibernat…

【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超级详细讲解下载、安装配置教程(建议收藏)

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

ES是什么?ES的使用场景有哪些?分词器??

一、ES是什么??? 1、Elasticsearch 是一个基于 Apache Lucene 构建的开源分布式搜索引擎和分析引擎。同时还可以被视为一种特殊的数据库,具体而言,它是一种分布式、面向文档的NoSQL数据库,专为全文搜索和数…

贪吃蛇游戏实现(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 系列…

如何用JS校验HTTP和HTTPS地址

在日常开发过程中,我们有时候对某些应用功能进行封装,但是在请求接口又不能写死,这个时候我们需要对他进行多方面考虑。 如何验证请求地址是HTTP还是HTTPS 方法一: function getBaseUrl (string) {let url;try {url new URL(s…