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

07|文本聚类与摘要,让AI帮你做个总结

每个类的主要来源分组统计
OpenAI接口
Token数量限制
空文本过滤
20 newsgroups
K-Means
新轮对话继续
历史对话总结
HuggingFace账号
ChatGPT
翻译选取的文本内容
AI生成新闻组名称
随机选取文本
利用OpenAI的Completion接口
使用提示语(Prompt)
支持长对话记忆
为聚类结果命名
聚类结果分析
Embedding获取
数据预处理
数据集
使用聚类算法
基于Embedding向量
未标注文本的自动分类
研究聚类结果
分享有用的提示语
利用Embedding支持无限轮数聊天
使用API
聊天机器人部署
实践
方法
目的
实践
方法
定义
课后练习
高级技巧
应用开发
文本摘要
文本聚类
文本聚类与摘要

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

你好,我是徐文浩。
上一讲里,我们用上了最新的 ChatGPT 的 API,注册好了 HuggingFace 的账号,也把我们的聊天机器人部署了出去。希望通过这个过程,你对实际的应用开发过程已经有了充足的体验。那么这一讲里,我们会回到 OpenAI 的各个接口能够提供的能力。我们分别看看怎么通过 Embedding 进行文本聚类,怎么利用提示语(Prompt)做文本的总结。

基于 Embedding 向量进行文本聚类

我先给不太了解技术的同学简单科普一下什么叫做文本聚类,文本聚类就是把很多没有标注过的文本,根据它们之间的相似度,自动地分成几类。基于 GPT 系列的模型进行文本聚类很简单,因为我们可以通过 Embedding 把文本变成一段向量。而对于向量我们自然可以用一些简单的聚类算法,比如我们采用最简单的 K-Means 算法就可以了。
这一次,我们选用的数据集,是很多老的机器学习教程里常用的 20 newsgroups 数据集,也就是一个带了标注分好类的英文新闻组的数据集。这个数据集,其实不是最自然的自然语言,里面的数据是经过了预处理的,比如去除了标点符号、停用词等等。我们正好可以拿来看看,面对这样其实不太“自然语言”的数据,OpenAI 的 GPT 系列模型处理的效果怎么样。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何利用OpenAI的GPT模型进行文本聚类和摘要生成。作者首先通过Embedding将文本转换为向量,然后使用K-Means算法进行文本聚类,并在20 newsgroups数据集上进行了实验,结果显示大部分聚类结果能够对应到原始新闻组的分类。接着,文章介绍了如何利用提示语(Prompt)进行文本的总结,展示了聚类结果的统计数据,说明了聚类效果还算不错。整个过程涉及到数据预处理、Embedding向量获取、聚类算法应用和结果分析。通过本文,读者可以了解到如何利用OpenAI的接口进行文本聚类和摘要生成,以及相关技术的应用和效果评估。文章还展示了如何利用OpenAI的Completion接口让AI给聚合出来的类起一个名字,并通过代码示例展示了如何进行文本翻译。这些技术应用可以帮助读者快速了解文本内容并进行有效的文本处理和分析。文章还介绍了如何在对话中让AI记住尽量多的上下文,以及如何利用AI总结对话内容并继续对话。整体而言,本文涵盖了文本聚类、摘要生成和对话管理等多个方面的应用,为读者提供了丰富的技术知识和实践经验。

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

全部留言(26)

  • 最新
  • 精选
  • Geek_d8a880
    随着对话的轮数越来越多,文本摘要也会越来越抽象,能保留的上下文信息也会越来越少吧

    作者回复: 是的,所以实际运用中,还需要考虑保留哪些记忆信息。哪些存储在外部,可以继续往后看。

    2023-03-30归属地:北京
    5
    8
  • Geek2014
    请问徐老师,chatgpt 给出的文本摘要,我们能够用什么方法来评估给出的摘要是好或不好呢?可以通过哪些指标来测试呢?

    作者回复: 来自ChatGPT的回答在下面,大家都买了这个课了还是有问题可以多问ChatGPT啊。不过新时代下,很多自动评价指标其实已经不一定合适了,值得研究一下有什么新的评价方法 常用的文本摘要评价指标有: 1. ROUGE(Recall-Oriented Understudy for Gisting Evaluation):用于衡量自动文本摘要与参考摘要之间的匹配程度,在召回率(recall)的基础上计算精确率(precision)和 F1 值。 2. BLEU(Bilingual Evaluation Understudy):基于 n-gram 的统计方法,用于衡量自动文本摘要与参考摘要的相似度。 3. METEOR(Metric for Evaluation of Text with Explicit ORdering):结合了语义模型和短语表征的评价指标,能够处理同义词、语法变化等问题。 4. NIST(NIST Information Retrieval):基于语言模型的自动摘要评价指标,使用统计的方法获取参考摘要中的关键词信息,将这些信息与自动摘要进行比对。 5. CIDEr(Consensus-based Image Description Evaluation):最初是用于评价图像描述的指标,也可以应用于文本摘要评价上,能够捕捉到多样性和流畅性等方面。

    2023-04-09归属地:北京
    6
  • Kevin
    请教一下徐老师,chatpdf的实现也是基于embedding来对上传的pdf建立一个index么?chatpdf自己回答所不是基于embedding建立的index,顾左右而言他,说是用了其他技术,比如提了part-of-speech tagging 和 named entity recognition。所以它用其他技术对pdf做了一个摘要文件对么?使用chatgpt api是为了更好的理解自然语言(把用户语言转换成可以part-of-speech或者其他专用库的操作,类似于embedding的cosine-similarity操作,然后再把答案用自然语言回复)?非常好奇如何实现,请徐老师分享一下洞见,谢谢!以下是chatpdf回复: In order to analyze the text of a PDF file, a PDF reader is used to extract the text from the file. This text is then passed to me as input, and I use natural language processing (NLP) techniques to analyze it. first step in my analysis involves breaking down the text into smaller units such as words or phrases. This is done using a process called tokenization, which involves splitting the text into individual tokens based on whitespace and punctuation. Once the text has been tokenized, I use various NLP techniques to extract meaning from it. For example, I might use part-of-speech tagging to identify the grammatical structure of sentences, or named entity recognition to identify specific entities such as people, places, or organizations.

    作者回复: 因为ChatPDF没有开源,所以具体它是怎么做的我不知道。 其实最合理的方式,是既使用Embedding,也可以用其他的NLP技术,包括找一些关键字(利用POS分词),做命名实体识别等等,来做段落的搜索(召回)。 然后通过ChatGPT的API再根据内容做问答。其实要做好索引还是有很多技巧的。

    2023-04-02归属地:澳大利亚
    6
  • 嗯哼😬
    😰糟糕,没有 NLP 基础的普通开发人员越看越迷糊。

    作者回复: 先把代码跑起来有点体感。

    2023-03-30归属地:广东
    2
    5
  • 陈鹏
    老师好,我理解第5和第7节说的是:利用openai大语言模型的api,将数据embedding,用embedding的结果去训练其他的模型,比如聚类模型或分类模型。 我不太理解这里的“训练”是什么意思? 把embedding后的数据集给到小模型算法,小模型会得出分类或聚类的结果,课程中,老师说这样做的效果比较好。那么这里的“训练”体现在哪里呢? 用embedding后的数据给到小模型,小模型就自动优化内部参数了?还是说课程中没有涉及到模型训练的内容? 如果这样就是训练了小模型,那么训练后的参数是如何存储的?下次调用后,这次训练的参数还存在吗? 谢谢老师解惑

    作者回复: 这个训练,是指传统的机器学习模型训练。 有额外的一组“参数”,这个参数很少,比如1537个(正好和我们的Embedding的维度数量+1),将embedding再映射到我们想要的分类问题。 小模型训练的过程就是自动优化这组额外参数的问题,参数想存在哪里都可以。下次要用的时候加载这组参数就可以了。

    2023-05-19归属地:立陶宛
    2
  • gc
    老师,本人小白,问个别的问题,如何对书籍进行分类聚合呢,比如一本书拆出一些分类标签,能提供一些思路吗?这种大文本的好像本章节方式并不适合?

    作者回复: 你想要什么样的标签? 根据书的介绍,而不是全文来打标签一般就足够了吧。

    2023-05-04归属地:上海
    2
    2
  • 卖烧烤夫斯基
    请问老师,面对大量随机文本,聚类的个数如何确定呢?

    作者回复: 一般都是试几个值然后比较一些评价指标。 来自chatgpt的回答,不理解指标的定义可以进一步问他。大家一定要习惯起来有问题可以不断追问ChatGPT来回答 聚类算法的聚类数量是一个非常重要的参数,对聚类结果影响很大。以下是几种测试聚类数量合适的方法: 1. Elbow method(肘部法则):随着聚类数量的增加,聚类效果不断增加,但是聚类数量达到一定程度后,聚类效果不再明显提高,这个点称为“拐点”,也称为肘部点。通过在不同的聚类数量下计算聚类误差并绘制成图表,找到聚类误差开始骤降的点作为聚类数量的参考。 2. Silhouette method(轮廓系数法):通过计算每个样本的轮廓系数,得到平均轮廓系数,通过不同聚类数量下的平均轮廓系数来确定最合适的聚类数量。 3. Gap statistic method(间隔统计法):与随机数据比较得到理论上最佳聚类数目,原理是用原始数据与随机数据比较得到一个统计值,随着聚类数量的增加,统计值先增加后减少,取的值与随机数据的差距最大的点为最佳聚类数。 4. DBSCAN(基于密度的聚类算法):该算法本身是没有聚类数量的限制,会自动根据数据样本的密度来确定聚类数量。可以通过调整聚类半径和样本密度参数来调整聚类数量。 需要注意的是,不同的数据集和聚类算法可能适用不同的方法,寻找最合适的聚类数量需要进行一定的尝试和比较。

    2023-04-10归属地:广东
    2
  • Hugh
    display(new_df) 没有引入 from IPython.display import display

    作者回复: 啊,对。因为我用 Colab 或者 VSCode 内置的默认不需要import,我和编辑同步修改一下

    2023-05-16归属地:上海
    1
  • Geek_32772e
    第一段代码403Forbidden了,报错如下:urllib.error.HTTPError: HTTP Error 403: Forbidden

    作者回复: 感觉是网络或者源IP在国内的问题?OpenAI目前大陆和香港应该都不让访问

    2023-04-27归属地:北京
    3
    1
  • suzg
    有没有可能是这个newsgroup数据集就在openai的训练数据中,所以效果好

    作者回复: 有可能,你也可以拿自己的数据集试一下呀。

    2023-04-12归属地:北京
    1
收起评论
显示
设置
留言
26
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部