揭开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.hqwc.cn/news/638100.html

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

相关文章

2024 IDM最新破解版及软件介绍

*IDM:信息时代的高效管理工具** 在快节奏的现代社会中,随着信息的爆炸式增长,如何高效、有序地管理信息成为每个人都需要面对的挑战。IDM,作为一种信息管理工具,正在逐渐受到人们的青睐。 IDM,全称Inform…

MariaDB InnoDB 空洞清理

1、背景 数据库占用服务器内存越来越高,除了bin-log文件之外,还发现了一些带有text或者longtext数据类型字段的表,这种表也会占用很高的服务器磁盘空间 数据库版本: 表引擎: InnoDB 数据量:清理之前1500万…

Qt基础之四十六:Qt界面中嵌入第三方程序的一点心得

本文主要讲解QWidget和QWindow的区别,以及如何在QWidget中嵌入第三方程序,并完美解决在QWidget中嵌入某些程序(比如Qt程序)时出现的白边问题。 下面是嵌入QQ音乐的样子,这首歌还不错。 先用spy++查看QQ音乐的窗口信息,如果安装了Visual Studio,工具菜单里自带spy++ 然后…

Docker搭建项目管理软件禅道

文章目录 一、简介二、部署三、使用 一、简介 禅道是以项目管理为核心的协作平台,旨在帮助团队高效地进行项目管理和协作。 禅道提供了项目管理、任务管理、团队协作、文档管理、报告统计等功能。 禅道官网 二、部署 操作系统:22.04.4 创建文件夹 …

netstat 命令的 Local Address 参数

一天在K8S环境部署项目是,部署之后项目始终访问不了。检查了是否开放端口、ingress配置、内部是否能访问等。最后万没想到,端口只能本地访问。一般来说项目端口开放了都是0.0.0.0,惯性思维导致了没去检查。。正好来说说 netstat 吧。netstat …

PyTorch与深度学习:探索现代神经网络的魅力

在科技飞速发展的今天,深度学习作为人工智能领域的重要分支,已经在图像识别、自然语言处理、语音识别等多个领域取得了突破性的进展。而PyTorch,作为一款开源的深度学习框架,以其简洁易用、动态计算图等特性,赢得了广大…

内网抓取Windows密码明文与hashdump思考题笔记整理

目录 思考题 第一题 第二题 第三题 第四题 第五题 思考题 1.windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文 2.我们通过hashdump 抓取出 所有用户的密文,分为…

设计模式——2_A 访问者(Visitor)

文章目录 定义图纸一个例子:如何给好奇宝宝提供他想知道的内容菜单、菜品和配方Menu(菜单) & Cuisine(菜品)Material(物料、食材) 产地、有机蔬菜和卡路里Cuisine & Material 访问者VisitorCuisine & Material 碎碎念访问者和双分派访问者和代理写在最后…

CSS——高级选择器

层次的选择器&#xff1a; <1> 后代选择器&#xff1a; 格式&#xff1a; 标签1 标签2{} 解释&#xff1a; 标签1 不生效&#xff0c;被标签1 嵌套中的 标签2才生效 举例&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charse…

Rust基本数据类型-切片

一、切片是什么&#xff0c;怎么用 1、切片是什么 切片并不是 Rust 独有的概念&#xff0c;在 Go 语言中就非常流行&#xff0c;它允许你引用集合中部分连续的元素序列&#xff0c;而不是引用整个集合。 对于字符串而言&#xff0c;切片就是对 String 类型中某一部分的引用&…

frp改造Windows笔记本实现家庭版免费内网穿透

文章目录 前言frp原理Windows服务端IP检验IP固定软件下载端口放行端口映射开机启动 NAS客户端端口查询软件下载端口检验穿透测试自启设置 Ubuntu客户端软件下载后台启动 后记 前言 之前一直用花生壳远程控制一个服务器&#xff0c;但最近内网的网络策略似乎发生了变化&#xf…

C# winfrom 超详细UI创建过程 实现双色球选号器UI界面设计过程

一、 效果展示 1. 无点击效果展示&#xff1a;不选中——双色球为灰色&#xff0c;字体也为灰色 2.点击双色器效果展示&#xff1a;选中——双色球为红或者蓝&#xff0c;字体为白色 二、 使用控件标注说明 三、界面特点介绍 双色球代码控制生成---------由于红色33个球&…