概念
GPT是基于大模型去进行的机器学习的训练,对于机器学习相关的概念它是比较了解的
比如: 文本的分类, 文本的情感分析等等
相关的机器学习的功能,GPT如何支持?是否有相关接口供我们调用?
有的,文档地址: https://platform.openai.com/docs/api-reference/embeddings/create
基于这个接口,可以去进行分类,进行情感分析
关于这个 embeddings 接口
接口地址: https://api.openai.com/v1/embeddings
model 参数,必填,string 类型,可用的model可以是 text-embedding-ada-002
input 参数,必填,string / array 类型
user 参数,可选
代码
示例代码,python版本 embedding_example.py# -*- coding: utf-8
import os
import openai
from openai.embeddings_utils import cosine_similarity, get_embedding
openai.api_key = "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"
openai.proxy="http://127.0.0.1:7890"
# 1 )方案 1
# 计算 好评 和 差评 得分。
positive_review = get_embedding("好评")
negative_review = get_embedding("差评")
# 计算评论的得分, 如果 评论&好评 - 评论&差评 > 好评
example=get_embedding("降价很厉害,不能保价")
score = cosine_similarity(example,positive_review) - cosine_similarity(example, negative_review)
if score > 0:
print("评论是正向的")
else:
print("评论是负面的")
# 2 )方案 2
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "对于商品的评价分为正面评价和负面评价,请根据我的输入判断该评价情感"},
{"role": "user", "content": "银色版很好看,一天就到了,系统很丝滑流畅,做工扎实,手感细腻,苹果一如既往的好品质"}
]
)
print(completion.choices[0].message.content)
分析
关于机器学习中的情感分析
情感分析是指我们根据一段文字去判断它的态度是正面的还是负面的
比如在传统的互联网产品里面,用户的一些评价,像京东淘宝等的一些评价
或者是说在大众点评里面对于餐馆的一些评价等等
这些数据都会被平台去拿去分析,然后给商家或者餐馆的评分去做一个参考
也有一些品牌会抓取社交网络里面,用户对自己产品的评价来进行情感的分析
来判断消费者的评价是正面的还是负面的
然后可以根据这些评价改进自己的产品
对于情感分析传统的解决方案,就是把它当做一个分类的问题去判断是正面的还是负面的
其实就可以通过去调用 embedding 的这个API去获取相关的这些内容
我们这里处理的逻辑是怎样的呢?
举个例子,我们首先去计算好评和差评这两个词的得分
然后,我们再去计算评论,评论和好评的相似度减去评论和差评的相似度如果大于零
我们则认为是好评,否则则是差评,这是我们的一个计算的逻辑。
本质上它是通过去计算我们的文本和好评以及差评之间的一个余弦的距离
就是通过向量去进行计算,计算出它们的相似度
通过 embedding 已经正确的识别了用户的评论
可以根据用户的评论去做一个分类,能分析出它的情感
这个逻辑是通过我们这段文本它的 embedding 和好评以及差评
去通过余弦距离计算出它的相似度
根据相似度之间的这个差值来进行的判断
可以不用任何数学相关的概念,用自然语言的提示语
让GPT帮我们去判断用户评论的情感是正面还是负面
可以以构建 Prompt 告诉 GPT 我们需要它帮助判断用户评论的情感是正面还是负面的
然后加入一些示例,比如基于GPT的chatCompletion
调用GPT3.5构建 message, 里面 system 这个角色告诉 GPT需要对商品的评价
分为正面和负面, 需要根据我们的输入来判断评价
然后,我们以用户的角色去输入了一段评论
之后,打印一段返回
第一个输出是前面我们测试的内容
第二个输出是我们通过自然语言去让GPT帮我们去分析评论是正向的还是负向的
通过GPT的分析得出是一个正面的评价,答案也是正确的
通过这两种方案,可以发现相关的这些复杂的概念对于我们的普通人是越来越友好了
即使我们不知道诸如: 向量,相似度,文本分类等等的这些名词
依然可以通过 GPT 去实现相关的一些比较专业的需求
这也是GPT能发展这么火爆的原因之一