ChatGPT 人工智能 - 产品评论摘要(难度:4)
-
介绍
ChatGPT 可以阅读、编写和理解自然语言,因此它可以用来构建非常有用的文本处理工具。
文本摘要就是一个例子。如今,我们被网站、书籍和博客文章等数据淹没。如果 ChatGPT 可以为人们生成摘要以供阅读,这将节省人们大量的时间。
在本教程中,你将使用 ChatGPT 来总结产品评论。例如,亚马逊上的一个热门产品可能有数千条评论,而且通常使用不同的语言。没有人有时间浏览所有评论。我们的解决方案是让 ChatGPT 阅读所有评论并为我们生成摘要。
当这个工具运行时,ChatGPT 将在阅读更多用户评论时不断更新其摘要:
步骤 1 - 创建一个初始项目
我们将使用这个项目作为起点,所以请先 remix 它:
https://play.creaticode.com/projects/ca4bbe666a1934bab795661b
这个项目包含一个名为“reviews”的表格,其中包含 100 条玩具产品的评论,包括星级评分、评论主题和评论详情。
收集此类评论数据的方法有很多,但它们不在本教程的讨论范围内,因为我们希望专注于如何使用 ChatGPT 处理这些评论。
步骤 2 - 核心思想
在开始编码之前,让我们先讨论一下我们需要解决的核心问题是什么。我们已经知道 ChatGPT 可以总结我们提供给它的任何文本。但问题是有太多的评论无法一次性全部提供给 ChatGPT。想象一个产品有 1000 条评论,每条评论平均 20 个单词,那么总共有 20000 个单词。但是我们正在使用的 ChatGPT API 只能处理多达 4000 个 token,大约 3000 个单词。
所以关键问题是如何让 ChatGPT 阅读所有评论,并将它们总结成一个摘要。
想象一下,我们需要将 1000 个数字相加以得到总和,但每次我们只能添加 2 个数字。在这种情况下,我们会先将前 2 个数字相加,然后逐个添加下一个数字。
我们可以将相同的想法应用于总结评论。
- 我们首先获得前几条评论的摘要;
- 我们给 ChatGPT 一些新的评论,同时也给它第 1 步中的摘要,然后我们要求 ChatGPT 根据新的信息更新此摘要。
- 我们继续这个过程,根据新信息反复更新摘要。
我们可以将此解决方案称为“增量摘要”。现在让我们来实现它。
步骤 3 - 打印第一条评论
为了简单起见,让我们尝试读取“reviews”表格中的第一条评论,并将其打印出来。我们将忽略“rating stars”,而专注于“subject”和“details”列。以下是我们可以用来将主题和详情读入 2 个变量,然后将它们连接到“reviews”变量中,并在控制台面板中打印出来的块:
步骤 4 - 打印前 20 条评论
接下来,我们可以使用 for 循环来逐条重复读取 20 行评论。我们需要首先将“reviews”变量设置为空,然后反复将每条评论附加到其中:
请注意,我们在每条评论的末尾添加了一个“\n”,以便下一条评论将在新的一行中开始。以下是我们在控制台面板中得到的内容:
正如你所看到的,只有 20 条评论,我们自己逐一阅读所有评论就已经开始感到困难了。
步骤 5 - 获取任意行的评论
由于我们需要反复从表格中读取更多评论,我们应该将代码包装成一个新的块“get reviews”。它应该获取第一行和最后一行行号,并使用这些行的内容设置变量“reviews”。
步骤 6 - 从 ChatGPT 获取初始摘要
现在我们有了评论,我们可以让 ChatGPT 为我们提供它们的第一个摘要:
请注意,我们现在只是使用“waiting”模式,以保持代码简单。以下是我们得到的一个示例摘要:
步骤 7 - 改进摘要格式
在我们处理更多评论之前,现在是改进 ChatGPT 输出格式的好时机。长段落仍然难以阅读。如果 ChatGPT 可以将其分解为优点和缺点,并为每个方面提供一些要点,那就更好了。我们可以通过稍微修改我们的提示来轻松实现这一点:
现在你应该得到类似这样的内容:
步骤 8 - 避免重复
我们可以立即看到另一个问题:一些要点是重复的。例如,“易碎且不是由坚固的塑料制成”类似于“不像旧的变形金刚那样坚固”。
我们可以尝试要求 ChatGPT 像这样改进答案:
将这些产品评论总结为要点,包括优点和缺点。跳过类似的要点。
不幸的是,输出仍然不是很简洁:
看来 ChatGPT 在删除类似要点方面训练得不是很好。我们能做什么?
另一种方法是简单地限制要点的数量,这将迫使 ChatGPT 选择最常见的要点:
将这些产品评论总结为要点,包括前 3 个优点和缺点。
这一次,我们得到了一个很好的摘要,没有太多重复:
步骤 9 - 获取接下来的 20 条评论
现在让我们提取第 21 行到第 40 行的评论,并打印出来看看:
它们在控制台面板中看起来像这样:
步骤 10 - 更新摘要
现在我们既有之前评论的“summary”,也有新评论的“reviews”变量,我们只需要让 ChatGPT 将它们组合成一个更新的摘要。
我们提示的基本结构如下:
- 这是一个摘要:摘要
- 这里有一些新的评论:评论
- 将它们组合起来
因此,我们需要使用几个变量来组成这个长提示:
第 1 部分:
以下是一些客户评论的产品摘要:
第 2 部分:
以下是一些新的客户评论:
第 3 部分:
现在请根据上面的新客户评论更新上面的摘要。使用相同的要点格式,列出前 3 个优点和缺点。
以下是将所有变量组合成一个提示,并打印出更新后的摘要的代码:以下是我们得到的更新后的摘要:
步骤 11 - 对所有行重复此过程
现在我们只需要重复获取更多评论并使用它们更新摘要。我们可以使用一个 for 循环,该循环将变量“start row”更改为 21、41、61 和 81。对于每个“start row”,我们获取接下来的 20 行评论。
步骤 12 - 在文本框中显示摘要
对于我们的最后一步,让我们在舞台上使用一个文本框显示摘要,而不是打印出来。为此,我们首先需要在程序开始时添加文本框,然后反复将其值设置为变量“summary”:
以下是我们运行程序时将得到的内容:
更多创意
现在是时候尝试扩展这个项目来练习你所学到的内容了。以下是一些供你参考的想法:
-
限制评论类型:不同的用户可能对产品不同方面的评论感兴趣。尝试添加一个下拉菜单以允许用户选择一个类别,例如“适用性”、“易用性”、“产品质量”等。用户将首先选择一个类别,然后单击一个按钮以获取该类别中评论的摘要。
-
其他内容:本项目中使用的技术可以应用于总结其他内容,例如关于 AI 使用的全校调查的答案。再举一个例子,这种方法可以用来总结一篇长文章甚至一本书。
-