Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • CreatiCode
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

CreatiCode Scratch Forum

  1. CreatiCode Forum
  2. 知识库
  3. 小教程
  4. ChatGPT 人工智能 - 产品评论摘要(难度:4)

ChatGPT 人工智能 - 产品评论摘要(难度:4)

Scheduled Pinned Locked Moved 小教程
1 Posts 1 Posters 804 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • CreatiCodeI Offline
    CreatiCodeI Offline
    CreatiCode
    wrote on last edited by admin
    #1

    介绍

    ChatGPT 可以阅读、编写和理解自然语言,因此它可以用来构建非常有用的文本处理工具。

    文本摘要就是一个例子。如今,我们被网站、书籍和博客文章等数据淹没。如果 ChatGPT 可以为人们生成摘要以供阅读,这将节省人们大量的时间。

    在本教程中,你将使用 ChatGPT 来总结产品评论。例如,亚马逊上的一个热门产品可能有数千条评论,而且通常使用不同的语言。没有人有时间浏览所有评论。我们的解决方案是让 ChatGPT 阅读所有评论并为我们生成摘要。

    当这个工具运行时,ChatGPT 将在阅读更多用户评论时不断更新其摘要:

    c2.gif

     
     

    步骤 1 - 创建一个初始项目

    我们将使用这个项目作为起点,所以请先 remix 它:

    https://play.creaticode.com/projects/ca4bbe666a1934bab795661b

     
    这个项目包含一个名为“reviews”的表格,其中包含 100 条玩具产品的评论,包括星级评分、评论主题和评论详情。

    c1.gif

     
    收集此类评论数据的方法有很多,但它们不在本教程的讨论范围内,因为我们希望专注于如何使用 ChatGPT 处理这些评论。

     
     

    步骤 2 - 核心思想

    在开始编码之前,让我们先讨论一下我们需要解决的核心问题是什么。我们已经知道 ChatGPT 可以总结我们提供给它的任何文本。但问题是有太多的评论无法一次性全部提供给 ChatGPT。想象一个产品有 1000 条评论,每条评论平均 20 个单词,那么总共有 20000 个单词。但是我们正在使用的 ChatGPT API 只能处理多达 4000 个 token,大约 3000 个单词。

    所以关键问题是如何让 ChatGPT 阅读所有评论,并将它们总结成一个摘要。

    想象一下,我们需要将 1000 个数字相加以得到总和,但每次我们只能添加 2 个数字。在这种情况下,我们会先将前 2 个数字相加,然后逐个添加下一个数字。

    我们可以将相同的想法应用于总结评论。

    1. 我们首先获得前几条评论的摘要;
    2. 我们给 ChatGPT 一些新的评论,同时也给它第 1 步中的摘要,然后我们要求 ChatGPT 根据新的信息更新此摘要。
    3. 我们继续这个过程,根据新信息反复更新摘要。

    我们可以将此解决方案称为“增量摘要”。现在让我们来实现它。

     
     

    步骤 3 - 打印第一条评论

    为了简单起见,让我们尝试读取“reviews”表格中的第一条评论,并将其打印出来。我们将忽略“rating stars”,而专注于“subject”和“details”列。以下是我们可以用来将主题和详情读入 2 个变量,然后将它们连接到“reviews”变量中,并在控制台面板中打印出来的块:
     

    97015a8b-bf3c-425e-ad90-494762697ec5-image.png

     

     
     

    步骤 4 - 打印前 20 条评论

    接下来,我们可以使用 for 循环来逐条重复读取 20 行评论。我们需要首先将“reviews”变量设置为空,然后反复将每条评论附加到其中:

    f765ed54-bbdf-40c2-a23a-29e498a0e93f-image.png

     
    请注意,我们在每条评论的末尾添加了一个“\n”,以便下一条评论将在新的一行中开始。以下是我们在控制台面板中得到的内容:

     
    22403c30-1ec0-4b52-8973-2c201221a3fc-image.png
     

    正如你所看到的,只有 20 条评论,我们自己逐一阅读所有评论就已经开始感到困难了。

     
     

    步骤 5 - 获取任意行的评论

    由于我们需要反复从表格中读取更多评论,我们应该将代码包装成一个新的块“get reviews”。它应该获取第一行和最后一行行号,并使用这些行的内容设置变量“reviews”。

    a9ffc306-6f24-4962-9f98-bfa8b1906251-image.png

     
     

    步骤 6 - 从 ChatGPT 获取初始摘要

    现在我们有了评论,我们可以让 ChatGPT 为我们提供它们的第一个摘要:

    b5e3fa9c-23ab-4f4b-a862-a51758806646-image.png

     
    请注意,我们现在只是使用“waiting”模式,以保持代码简单。以下是我们得到的一个示例摘要:

    aa05fd07-6592-4d44-a7c4-2adf7e66c9a1-image.png

     
     

    步骤 7 - 改进摘要格式

    在我们处理更多评论之前,现在是改进 ChatGPT 输出格式的好时机。长段落仍然难以阅读。如果 ChatGPT 可以将其分解为优点和缺点,并为每个方面提供一些要点,那就更好了。我们可以通过稍微修改我们的提示来轻松实现这一点:

    a3b3645c-71c0-4624-8887-11882dd03833-image.png

     
    现在你应该得到类似这样的内容:

    a5198b54-122a-4773-b909-187f2295c502-image.png

     
     

    步骤 8 - 避免重复

    我们可以立即看到另一个问题:一些要点是重复的。例如,“易碎且不是由坚固的塑料制成”类似于“不像旧的变形金刚那样坚固”。

    我们可以尝试要求 ChatGPT 像这样改进答案:

    将这些产品评论总结为要点,包括优点和缺点。跳过类似的要点。
    

    不幸的是,输出仍然不是很简洁:

    3d17eefc-ce55-419a-be3a-d859f0172103-image.png

     
    看来 ChatGPT 在删除类似要点方面训练得不是很好。我们能做什么?

     
     
     
     
     
     
     
     
     
     
     
     
     

    另一种方法是简单地限制要点的数量,这将迫使 ChatGPT 选择最常见的要点:

    将这些产品评论总结为要点,包括前 3 个优点和缺点。
    

     
    这一次,我们得到了一个很好的摘要,没有太多重复:

    aa52722e-2e6c-40ed-b5bd-2c79d9c4d72f-image.png

     
     

    步骤 9 - 获取接下来的 20 条评论

    现在让我们提取第 21 行到第 40 行的评论,并打印出来看看:

    d41982a9-eecd-4221-923e-6c9016b11bba-image.png

     
    它们在控制台面板中看起来像这样:

    976641c5-67bc-4355-9237-acbf542e6ddd-image.png

     
     

    步骤 10 - 更新摘要

    现在我们既有之前评论的“summary”,也有新评论的“reviews”变量,我们只需要让 ChatGPT 将它们组合成一个更新的摘要。

    我们提示的基本结构如下:

    1. 这是一个摘要:摘要
    2. 这里有一些新的评论:评论
    3. 将它们组合起来

    因此,我们需要使用几个变量来组成这个长提示:

    第 1 部分:

    以下是一些客户评论的产品摘要:
    

    第 2 部分:

    以下是一些新的客户评论:
    

    第 3 部分:

    现在请根据上面的新客户评论更新上面的摘要。使用相同的要点格式,列出前 3 个优点和缺点。
    

     
    以下是将所有变量组合成一个提示,并打印出更新后的摘要的代码:

    20e9526c-43e8-4f22-a5fe-08883d9c8bb6-image.png

     

    以下是我们得到的更新后的摘要:

    05284dde-7d27-42c0-9e5e-3f1147fb5a64-image.png

     
     

    步骤 11 - 对所有行重复此过程

    现在我们只需要重复获取更多评论并使用它们更新摘要。我们可以使用一个 for 循环,该循环将变量“start row”更改为 21、41、61 和 81。对于每个“start row”,我们获取接下来的 20 行评论。

    c04a8ddc-6977-413a-9de3-f3a45d6da556-image.png

     
     

    步骤 12 - 在文本框中显示摘要

    对于我们的最后一步,让我们在舞台上使用一个文本框显示摘要,而不是打印出来。为此,我们首先需要在程序开始时添加文本框,然后反复将其值设置为变量“summary”:

    924e36e4-8a29-4e26-9dbf-d0df23d3c641-image.png

     
    以下是我们运行程序时将得到的内容:

    c2.gif

     
     

    更多创意

    现在是时候尝试扩展这个项目来练习你所学到的内容了。以下是一些供你参考的想法:

    • 限制评论类型:不同的用户可能对产品不同方面的评论感兴趣。尝试添加一个下拉菜单以允许用户选择一个类别,例如“适用性”、“易用性”、“产品质量”等。用户将首先选择一个类别,然后单击一个按钮以获取该类别中评论的摘要。

    • 其他内容:本项目中使用的技术可以应用于总结其他内容,例如关于 AI 使用的全校调查的答案。再举一个例子,这种方法可以用来总结一篇长文章甚至一本书。

    1 Reply Last reply
    0
    • CreatiCodeI CreatiCode pinned this topic on

    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

    With your input, this post could be even better 💗

    Register Login
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • CreatiCode