提示工程03文本概括

打印 上一主题 下一主题

主题 678|帖子 678|积分 2034

一、引言

当今天下上文本信息浩如烟海,我们很难拥有充足的时间去阅读全部想了解的东西。但欣喜的是,目前LLM在文本概括使命上展现了强大的水准,也已经有不少团队将概括功能实现在多种应用中。
本章节将先容如何利用编程的方式,调用API接口来实现“文本概括”功能。
首先,我们必要引入 OpenAI 包,加载 API 密钥,定义 getCompletion 函数。
  1. import openai
  2. # 导入第三方库
  3. openai.api_key = "sk-..."
  4. # 设置 API_KEY, 请替换成您自己的 API_KEY
复制代码
  1. def get_completion(prompt, model="gpt-3.5-turbo"):
  2.     messages = [{"role": "user", "content": prompt}]
  3.     response = openai.ChatCompletion.create(
  4.         model=model,
  5.         messages=messages,
  6.         temperature=0, # 值越低则输出文本随机性越低
  7.     )
  8.     return response.choices[0].message["content"]
复制代码
二、单一文本概括

以商品品评的总结使命为例:对于电商平台来说,网站上往往存在着海量的商品品评,这些品评反映了全部客户的想法。假如我们拥有一个工具去概括这些海量、冗长的品评,便能够快速地浏览更多品评,洞悉客户的偏好,从而指导平台与商家提供更优质的服务。
  1. prod_review_zh = """
  2. 这个熊猫公仔是我给女儿的生日礼物,她很喜欢,去哪都带着。
  3. 公仔很软,超级可爱,面部表情也很和善。但是相比于价钱来说,
  4. 它有点小,我感觉在别的地方用同样的价钱能买到更大的。
  5. 快递比预期提前了一天到货,所以在送给女儿之前,我自己玩了会。
  6. """
复制代码
2.1 限制输出文本长度

我们实验限制文本长度为最多30词。
  1. prompt = f"""
  2. 您的任务是从电子商务网站上生成一个产品评论的简短摘要。
  3. 请对三个反引号之间的评论文本进行概括,最多30个词汇。
  4. 评论: ```{prod_review_zh}```
  5. """
  6. response = get_completion(prompt)
  7. print(response)
复制代码
  可爱软熊猫公仔,女儿喜好,面部心情和蔼,但价钱有点小贵,快递提前一天到货。
  2.2 设置关键角度偏重

偶尔,针对差别的业务,我们对文本的偏重会有所差别。比方对于商品品评文本,物流会更关心运输时效,商家更加关心代价与商品质量,平台更关心整体服务体验。
我们可以通过增加Prompt提示,来体现对于某个特定角度的偏重。
2.2.1 偏重于快递服务

  1. prompt = f"""
  2. 您的任务是从电子商务网站上生成一个产品评论的简短摘要。
  3. 请对三个反引号之间的评论文本进行概括,最多30个词汇,并且聚焦在产品运输上。
  4. 评论: ```{prod_review_zh}```
  5. """
  6. response = get_completion(prompt)
  7. print(response)
复制代码
  快递提前到货,熊猫公仔软可爱,但有点小,价钱不太划算。
  可以看到,输出效果以“快递提前一天到货”开头,体现了对于快递效率的偏重。
2.2.2 偏重于代价与质量

  1. prompt = f"""
  2. 您的任务是从电子商务网站上生成一个产品评论的简短摘要。
  3. 请对三个反引号之间的评论文本进行概括,最多30个词汇,并且聚焦在产品价格和质量上。
  4. 评论: ```{prod_review_zh}```
  5. """
  6. response = get_completion(prompt)
  7. print(response)
复制代码
  可爱软熊猫公仔,面部心情友爱,但价钱有点高,尺寸较小。快递提前一天到货。
  可以看到,输出效果以“质量好、代价小贵、尺寸小”开头,体现了对于产物代价与质量的偏重。
2.3 关键信息提取

在2.2节中,虽然我们通过添加关键角度偏重的 Prompt ,使得文本择要更偏重于某一特定方面,但是可以发现,效果中也会保留一些其他信息,如偏重代价与质量角度的概括中仍保留了“快递提前到货”的信息。假如我们只想要提取某一角度的信息,并过滤掉其他全部信息,则可以要求 LLM 举行“文本提取( Extract )”而非“概括( Summarize )”
  1. prompt = f"""
  2. 您的任务是从电子商务网站上的产品评论中提取相关信息。
  3. 请从以下三个反引号之间的评论文本中提取产品运输相关的信息,最多30个词汇。
  4. 评论: ```{prod_review_zh}```
  5. """
  6. response = get_completion(prompt)
  7. print(response)
复制代码
  快递比预期提前了一天到货。
  三、同时概括多条文本

在实际的工作流中,我们往往有许很多多的品评文本,以下示例将多条用户评价放进列表,并利用 for 循环,利用文本概括(Summarize)提示词,将评价概括至小于 20 词,并按次序打印。当然,在实际生产中,对于差别规模的品评文本,除了利用 for 循环以外,还大概必要思量整合品评、分布式等方法提升运算效率。您可以搭建主控面板,来总结大量用户品评,来方便您或他人快速浏览,还可以点击查看原品评。这样您能高效掌握顾客的全部想法。
  1. review_1 = prod_review
  2. # review for a standing lamp
  3. review_2 = """
  4. 我想为我的卧室找一个漂亮的灯,这款灯还有额外的存储空间,价格也不太高。\
  5. 购买后很快就收到了,两天就送到了。但在运输过程中,灯的拉链断了,公司态度\
  6. 很好,发来了一条新的。新的拉链也在几天内就到了。这个灯非常容易装配。后来,我\
  7. 发现缺少一个部分,所以我联系了他们的客户支持,他们很快就给我寄来了缺失的部件\
  8. !我觉得这是一家非常关心他们的客户和产品的好公司。
  9. """
  10. # review for an electric toothbrush
  11. review_3 = """
  12. 我的牙科卫生师推荐我使用电动牙刷,这就是我购买这款牙刷的原因。目前为止,我发现电池的\
  13. 续航时间颇为令人印象深刻。在初次充电并在第一周保持充电器插头插入以调节电池状态之后,我\
  14. 已经将充电器拔掉,并在过去的3周里,每天两次刷牙都使用同一次充电。然而,这款牙刷的刷头实\
  15. 在太小了。我见过的婴儿牙刷都比这个大。我希望牙刷头能做得更大一些,搭配不同长度的刷毛更好\
  16. 地清洁牙齿间缝,因为现有的无法做到这一点。总的来说,如果你能以大约50美元的价格购入这款电动\
  17. 牙刷,那它就物超所值。厂家配套的替换刷头价格相当昂贵,但你可以买到价格更为合理的通用款。\
  18. 使用这款牙刷让我感觉像每天都去看了牙医一样,我的牙齿感觉洁净如新!
  19. """
  20. # review for a blender
  21. review_4 = """
  22. 他们还在11月把17件套系统以大约$49的优惠价格销售,几乎是五折。但不明原因(轻易就可以归咎为价格欺诈)\
  23. 在到了12月第二周,同一套系统的价格一下儿飙升到了$70-$89之间。11件套系统的价格也从之前的优惠价$29上\
  24. 升了大概$10。看上去还算公道,但如果你仔细观察底部,会发现刀片锁定的部位相比几年前的版本要略逊一筹,所\
  25. 以我打算非常小心翼翼地使用(例如,我会将像豆子、冰块、大米之类的硬质食材先用搅拌机压碎,然后调到我需要\
  26. 的份量,再用打发刀片研磨成更细的粉状,制作冰沙时我首选交叉刀片,如果需要更细腻些或者少些浆糊状,我会换成\
  27. 平刀)。在制作果昔时,把将要用的水果和蔬菜切片冷冻是个小技巧(如果你打算用菠菜,要先稍微焖炖软,再冷冻,\
  28. 制作雪葩时,用一个小到中号的食品加工器就行)这样就不用或者很少加冰块到你的果昔了。大约一年后,电机开始发出\
  29. 一些可疑的声音。我联系了客服,但保修期已经过期,所以我只好另购一台。友情提示:这类产品的整体质量都在下滑,\
  30. 所以他们更多的是利用品牌知名度和消费者的忠诚度来保持销售。我在两天之后就收到了它。
  31. """
  32. reviews = [review_1, review_2, review_3, review_4]
复制代码
  1. for i in range(len(reviews)):
  2.     prompt = f"""
  3.     你的任务是从电子商务网站上的产品评论中提取相关信息。
  4.     请对三个反引号之间的评论文本进行概括,最多20个词汇。
  5.     评论文本: ```{reviews[i]}```
  6.     """
  7.     response = get_completion(prompt)
  8.     print(i, response, "\n")
复制代码
  0 概括:可爱的熊猫毛绒玩具,质量好,送货快,但有点小。
  1 这个品评是关于一款具有额外储存空间的床头灯,代价适中。客户对公司的服务和产物表示满足。
  2 品评概括:电动牙刷电池寿命长,但刷头太小,必要更长的刷毛。代价合理,利用后牙齿感觉干净。
  3 品评概括:产物代价在12月份上涨,质量不如从前,但交付速度快。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表