AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


大模型最佳实践之情感分析
发布日期:2024-06-13 13:06:56 浏览次数: 1917


大语言模型提供了一种革命性方法,只通过单一提示就可执行各种任务,这种方式简化了传统的工作流程,本文通过实际例子来说明大语言模型如何方便快捷的进行情感分析、情绪识别以及从客户评论中提取产品和公司名称等信息。

文章目录
1.设置工作环境
2.产品评论的情感分析
3.情绪识别
4.同时执行多个任务
5.从客户评论中提取产品和公司名称


1. 设置工作环境

在传统的机器学习工作流程中,您需要收集标签数据集,训练模型,弄清楚如何在云中部署模型,并进行推理。这样做可能效果不错,但需要经历一系列繁琐的工作流程。而且,对于每个任务,比如情感分析、提取名称和分类情绪,您都需要训练和部署一个单独的模型。

大型语言模型的一个优点是,您可以为许多类似的任务编写提示,并立即开始生成结果。这种方式大幅度提高了应用程序开发的效率。当然,你也可以只使用一个模型、一个API来执行许多不同的任务,而不需要弄清楚如何训练和部署许多不同的模型。

我们先导入OpenAI包来初始化我们的工作环境,然后从本地的 .env 文件中定义API密钥:

import openai
import os

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file

openai.api_key = os.getenv('OPENAI_API_KEY')


现在让我们定义一个函数,该函数将接受提示并从LLM返回响应。

def get_completion(prompt, model="gpt-3.5-turbo"):
messages = [{"role": "user", "content": prompt}]
response = client.chat.completions.create(
model=model,
messages=messages,
temperature=0
)
return response.choices[0].message.content


2. 产品评论的情感分析

情感分析是一种自然语言处理(NLP)技术,用于确定文本中表达的情感。在产品评论方面,情感分析对于企业了解客户的意见和反馈非常有价值。在本文中,我们将使用一篇关于一款产品的评论,这款产品将是一盏灯。以下是评论内容。

lamp_review = """
需要一盏漂亮的灯来装饰我的卧室,这款灯具有额外的存储空间,价格也不算太高。送货速度很快。然而,在运输过程中,灯绳断了,但公司很快送来了一个新的。几天之内就送到了。组装起来很容易。我缺了一个零件,所以我联系了他们的客服,他们很快就给我寄来了缺失的部分!Lumina对我来说是一个非常关心客户和产品的好公司!"""

让我们编写一个提示来对这篇评论的情感进行分类。我希望系统告诉我评论的情感是什么。我们将使用通常的分隔符问它:“以下产品评论的情感是什么”,然后我们将运行它。

prompt = f"""
以下产品评论的情感是什么,产品评论是用三个反引号作为分隔符的?
评论: '''{lamp_review}'''
"""
response = get_completion(prompt)
print(response)


执行上述代码后:正面,也就是说关于产品的评论的情感是正面的。我么可以看到结果相当准确。

如果您想要一个更简洁的响应,以便更容易进行后续处理,我可以可以添加另一个指令,让其以一个词的形式给出答案,要么是积极的,要么是消极的。因此,它只会打印出"积极的"。

prompt = f"""
以下产品评论的情感是什么,产品评论是用三个反引号作为分隔符的?
用积极或者消极来回答。
评论: '''{lamp_review}'''
"""
response = get_completion(prompt)
print(response)


执行上述代码后返回:积极的

3.识别情绪

让我们来看另一个例子,我们可以使用提示工程来执行一个复杂的情感任务,即识别情绪。因此,大型语言模型非常擅长从一段文本中提取特定的内容。这对于理解客户如何看待特定产品是很有用的。对于许多公司来说,了解特定用户在使用产品过程中是否愉快很重要。以下是执行此操作的提示:

prompt = f"""
识别下面评论的作者想要表达的情绪列表。列表中的项目不超过五个。将您的答案格式化为用逗号分隔的列表。
评论: '''{lamp_review}'''
"""
response = get_completion(prompt)
print(response)

执行上面代码后返回结果:满意、感激、印象深刻、高兴、快乐

您可能有不同的分类问题,比如识别特定的情绪,我们想要知道客户是否生气。如果有人真的很生气,可能值得额外注意,公司可以联系客户以弄清楚到底发生了什么并为客户解决问题。

prompt = f"""
以下评论是否表达了愤怒?
评论用三个反引号作为分隔符。请用是或否来回答。
评论: '''{lamp_review}'''
"""
response = get_completion(prompt)
print(response)

执行上面代码后返回:否

在这种情况下,客户并没有生气。请注意,如果我们想要构建所有这些分类器,使用监督学习是无法在短短几分钟内完成的。

4. 从客户评论中提取产品和公司名称

信息提取是NLP非常重要的应用方向之一,什么是信息提取?信息提取就是从文本中提取出你想要了解的特定相关内容。因此,在这个提示中,我们要求大模型识别购买的物品以及制造该物品的公司名称。

如果你想了解大家在评论哪些物品、谁制造了这些物品以及这些评论是积极还是消极的,通过收集这些信息我们可以跟踪用户对特定物品或制造商的情感发展趋势。

在下面这个示例中,我们将要求大模型将结果格式化为一个JSON对象。


prompt = f"""
从下面评论中识别以下物品:

  • 评论者购买的物品

  • 制造该物品的公司

评论用三个反引号作为分隔符。将您的响应格式化为一个JSON对象,其中"Item"和"Brand"是键。

如果信息不存在,请返回不知道。

请保持回答尽可能的简洁。

评论: '''{lamp_review}'''
"""

response = get_completion(prompt)
print(response)

执行上述代码后返回:

{
“Item”: “灯”,
“Brand”: “Lumina公司”
}

5. 同时执行多个任务

在我们所介绍的示例中,我们编写了提示来识别情感,弄清楚是否有人生气,然后还提取了物品和品牌。提取所有这些信息的一种方法是使用三个或四个提示,并调用“get_completion”函数,三次或四次分别提取这些不同的内容。你也可以编写一个单一提示,同时提取所有这些信息,如下所示:
prompt = f"""
从评论中识别以下内容:

  • 情感(积极或消极)

  • 评论者是否表达了愤怒?(是或否)

  • 评论者购买的物品

  • 制造该物品的公司

评论用三个反引号作为分隔符。

将你的响应格式化为一个JSON对象,其中"Sentiment","Anger","Item"和"Brand"是键。

如果信息不存在,请返回不知道作为json值。

将Anger值格式化为布尔值。

尽可能简洁。

评论: '''{lamp_review}'''
"""

response = get_completion(prompt)
print(response)

执行上述代码后返回:

{
“Sentiment”: “积极”,
“Anger”: 否,
“Item”: “灯”,
“Brand”: “Lumina公司”
}

总结

通过了解以上内容,我们只需几分钟就可以构建多个AI系统,用于对文本进行情感分析,而这些在以前可能需要熟练的机器学习开发人员数天甚至数周的时间。




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询