AI 大模型之美
徐文浩
bothub 创始人
32335 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 33 讲
AI 大模型之美
15
15
1.0x
00:00/00:00
登录|注册

02|无需任何机器学习,如何利用大语言模型做情感分析?

全概率公式
条件概率
Kaggle亚马逊耳机评论数据
F1-Score
Recall
Precision
模型评估
数据集处理
判断正负面
计算分数
获取Embedding
分数判断情感倾向
余弦距离计算相似度
计算"好评"和"差评"的Embedding
文本转向量
Embedding
Complete
K-Fold训练
AUC和混淆矩阵
数据集切分
TF-IDF
去除停用词
2-Gram和3-Gram
随机森林
逻辑回归
朴素贝叶斯
负面情感
正面情感
OpenAI调用限速解决方案
大批量数据处理
注意OpenAI调用限制
分享和讨论结果
应用于其他数据集
准确率分析
亚马逊食品评论
利用"好评"和"差评"概念
预训练模型蕴含知识
不需要新样本训练
代码实现
情感分析步骤
Embedding API
OpenAI接口
模型调参
特征工程
机器学习模型
二分类问题
下节预告
课后练习
实际应用案例
零样本分类
大语言模型的情感分析
传统情感分析方法
情感分析与大语言模型

该思维导图由 AI 生成,仅供参考

你好,我是徐文浩。
上一讲我们看到了,大型语言模型的接口其实非常简单。像 OpenAI 就只提供了 Complete 和 Embedding 两个接口,其中,Complete 可以让模型根据你的输入进行自动续写,Embedding 可以将你输入的文本转化成向量。
不过到这里,你的疑问可能就来了。不是说现在的大语言模型很厉害吗?传统的自然语言处理问题都可以通过大模型解决。可是用这么简单的两个 API,能够完成原来需要通过各种 NLP 技术解决的问题吗?比如情感分析、文本分类、文章聚类、摘要撰写、搜索,这一系列问题怎么通过这两个接口解决呢?
别急,在接下来的几讲里,我会告诉你,怎么利用大语言模型提供的这两个简单的 API 来解决传统的自然语言处理问题。这一讲我们就先从一个最常见的自然语言处理问题——“情感分析”开始,来看看我们怎么把大语言模型用起来。

传统的二分类方法:朴素贝叶斯与逻辑回归

“情感分析”问题,是指我们根据一段文字,去判断它的态度是正面的还是负面的。在传统的互联网产品里,经常会被用来分析用户对产品、服务的评价。比如大众点评里面,你对餐馆的评论,在京东买个东西,你对商品的评论,都会被平台拿去分析,给商家或者餐馆的评分做参考。也有些品牌,会专门抓取社交网络里用户对自己产品的评价,来进行情感分析,判断消费者对自己的产品评价是正面还是负面的,并且会根据这些评价来改进自己的产品。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

利用大型语言模型进行情感分析是一种简单而高效的方法。传统的情感分析方法需要进行特征工程和机器学习训练,而利用大语言模型提供的API,只需不到10行代码就能完成,并且能获得非常好的效果。文章通过示例代码演示了如何利用大语言模型的Embedding API进行情感分析,以及在真实数据集上的准确率验证。这种方法被称为零样本分类,即不需要任何新的样本来训练机器学习的模型,就能进行分类。通过大语言模型的API,可以轻松实现文本分类应用,大大降低了门槛。文章鼓励读者尝试将这个方法运用在其他数据集上,以验证其效果。总的来说,利用大型语言模型进行情感分析是一种简单、高效且准确的方法,为文本分类任务提供了新的解决方案。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《AI 大模型之美》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(87)

  • 最新
  • 精选
  • Dev.lu
    conda install -c conda-forge matplotlib conda install -c conda-forge plotly conda install -c anaconda scikit-learn 跑情感分析的部分,可能需要额外安装这些包

    作者回复: 👍

    2023-04-15归属地:新加坡
    3
    21
  • humor
    大模型是怎么知道好评和差评是代表什么意思的呢

    作者回复: 它是根据海量的预训练数据在高维空间里给他们两个找了个位置,我们只是我们拿到的评论离哪个位置近。 大模型的语义理解能力,就没法用一两句话说清了。如果真的想要知道,还是要深入理解深度学习,可以去看看李沐老师的论文解读系列。https://www.bilibili.com/video/BV1AF411b7xQ/

    2023-03-22归属地:浙江
    4
    18
  • jo
    “我们把这段文本的 Embedding 和“好评”以及“差评”通过余弦距离(Cosine Similarity)计算出它的相似度”,不太懂

    作者回复: 不理解什么是向量的余弦距离,可以问问ChatGPT: 什么是向量的余弦距离? 向量的余弦距离是用于度量两个向量之间的相似性的一种方法。它衡量的是两个向量之间的夹角的余弦值。 具体来说,假设有两个n维向量a和b,其余弦距离为cos(θ),其中θ是a和b之间的夹角,计算公式如下: cos(θ) = (a·b) / (||a|| ||b||) 其中,a·b表示向量a和向量b的点积,||a||和||b||分别表示向量a和向量b的范数。 余弦距离的取值范围在[-1, 1]之间,当两个向量之间的夹角越小时,余弦距离越接近1,表示两个向量越相似;当两个向量之间的夹角越大时,余弦距离越接近-1,表示两个向量越不相似。当夹角为90度时,余弦距离为0,表示两个向量完全不相关。

    2023-04-07归属地:上海
    2
    12
  • Geek_035566
    知乎上张俊林对GPT对NLP的影响做了很好解读,我这个小白听了也能有很深的理解。 他把NLP解决的问题分为中间任务和最终任务,先阐述中间任务其实是人类没有找到更好办法处理自然语言时想出来的辅助工具,GPT的出现一瞬间让这些脚手架都没了用处。 再进一步,他又把最终任务分为自然语言理解和自然语言生成任务,进一步分析GPT对这两类任务的影响。 很简洁优美的讲清楚了GPT对NLP的冲击,知乎地址我放下面,感兴趣的可以自己看。 https://zhuanlan.zhihu.com/p/597586623

    作者回复: 👍

    2023-05-08归属地:广东
    2
    10
  • Roy Liang
    课后作业,全部数据集是不是太多,出不了结果,前33条记录没问题,我是不是该给OpenAI充值? precision recall f1-score support negative 0.81 0.93 0.87 14 positive 0.92 0.79 0.85 14 accuracy 0.86 28 macro avg 0.86 0.86 0.86 28 weighted avg 0.86 0.86 0.86 28 代码 import pandas as pd import numpy as np from sklearn.metrics import classification_report,PrecisionRecallDisplay from openai.embeddings_utils import cosine_similarity, get_embedding EMBEDDING_MODEL = "text-embedding-ada-002" #datafile_path = "data/AllProductReviews.csv" datafile_path = "data/test.csv" df = pd.read_csv(datafile_path) df["embedding"] = df.ReviewBody.apply(lambda x: get_embedding(x, engine=EMBEDDING_MODEL)) # convert 5-star rating to binary sentiment df = df[df.ReviewStar != 3] df["sentiment"] = df.ReviewStar.replace({1: "negative", 2: "negative", 4: "positive", 5: "positive"}) def evaluate_embeddings_approach( labels = ['negative', 'positive'], model = EMBEDDING_MODEL, ): label_embeddings = [get_embedding(label, engine=model) for label in labels] def label_score(review_embedding, label_embeddings): return cosine_similarity(review_embedding, label_embeddings[1]) - cosine_similarity(review_embedding, label_embeddings[0]) probas = df["embedding"].apply(lambda x: label_score(x, label_embeddings)) preds = probas.apply(lambda x: 'positive' if x>0 else 'negative') report = classification_report(df.sentiment, preds) print(report) display = PrecisionRecallDisplay.from_predictions(df.sentiment, probas, pos_label='positive') _ = display.ax_.set_title("2-class Precision-Recall curve") evaluate_embeddings_approach()

    作者回复: 这个是API限速导致的,我们在第4讲里会讲解应该怎么处理。 这个思考题看来是我考虑不周了,我建议拿个100条试一下吧,全量数据可以看完第四讲之后再来,而且需要注意Token费用问题。

    2023-03-22归属地:浙江
    4
    8
  • 陈敏俊
    文本向量positive和negative标签是openai训练标注好的,那还有其他什么标签吗?只有这两种吗?

    作者回复: 这不是预先训练好的标签。而是模型根据文本,计算出来的向量,我们只是利用了向量的相似度而已。 你可以用任意的单词,或者句子来做这样的功能,比如 beautiful 和 ugly,polite 和 rude 都可以试一试

    2023-03-22归属地:上海
    3
    4
  • xbc
    后续是否会讲讲如何使用openai api实现chatpdf这样的功能。以及使用公开的弱一些的模型,来尽量实现chatpdf的功能。

    作者回复: 专栏的第二部分,实战应用部分里,会大量涵盖这部分内容。 也会通过一些开源模型来降低使用的成本。

    2023-03-22归属地:海南
    3
    4
  • 钱雨
    经历了无数次下面的失败,不停重新安装pillow和matplotlib之后,终于成功了。 解决方案是狠心把miniconda、python全卸载,重新安装。 注意install openai以后,默认的pillow版本是9.4,太高了,把pillow卸载,安装8.4。 这么操作以后,新的问题是openai又没了,就把openai重新装回来。 很开心的是,pillow居然还是8.4.结果正常了。 File ~\miniconda3\envs\py310\lib\site-packages\PIL\Image.py:103 94 MAX_IMAGE_PIXELS = int(1024 * 1024 * 1024 // 4 // 3) 97 try: 98 # If the _imaging C module is not present, Pillow will not load. 99 # Note that other modules should not refer to _imaging directly; 100 # import Image and use the Image.core variable instead. 101 # Also note that Image.core is not a publicly documented interface, 102 # and should be considered private and subject to change. --> 103 from . import _imaging as core 105 if __version__ != getattr(core, "PILLOW_VERSION", None): 106 msg = ( 107 "The _imaging extension was built for another version of Pillow or PIL:\n" 108 f"Core version: {getattr(core, 'PILLOW_VERSION', None)}\n" 109 f"Pillow version: {__version__}" 110 ) ImportError: DLL load failed while importing _imaging: The specified module could not be found.

    作者回复: python的环境的确是个问题,我看一下是否晚点能搞个Docker的Image来解决问题

    2023-04-04归属地:河北
    2
    2
  • 渣渣辉
    为什么同样是用chatgpt的出来的结果跟老师的事例稍有不同,是因为chatgpt这个模型是在实时更新的吗

    作者回复: 有两个原因 1. chatgpt的模型在实时更新,我选用的一般都不是快照的模型,而是模型最新版本。 2. 本身 GPT 输出结果是概率采样,有一定的随机性。

    2023-04-02归属地:日本
    2
  • piboye
    老师, text complete 和 chat complete 接口有什么区别啊, 我看能力没看出大的差别

    作者回复: Chat Complete是针对对话微调过的模型。我自己的体验是很多时候给它明确的指令,它也会有点话唠,废话有点多。

    2023-03-22归属地:广东
    3
    2
收起评论
显示
设置
留言
87
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部