在前面的学习中,我们已经了解了如何使用一些经典的方法和模型来处理自然语言任务,如文本分类、命名实体识别等。但当我们需要更强的语言生成能力时,往往会求助于更先进的预训练语言模型。OpenAI 旗下的 GPT 系列模型(如 GPT-3、GPT-3.5、GPT-4 等)在生成文本方面拥有强大的表现。它们不仅能进行语言生成,也可用于诸多 NLP 任务,包括文本摘要和情感分析。
本章将重点介绍:
希望你能通过本章的学习,初步掌握如何集成 GPT 模型到你的实际项目中,为后续更复杂的应用打好基础。
注意: 我们并不需要深入了解 Transformer 的所有数学细节,只要知道它是一种基于自注意力(Self-attention)机制的模型,在学习语句间的依赖关系时非常有效。
举个简单例子:假设你运营着一个电商平台,需要在最短时间内产出多种产品描述文案,而让人工逐一撰写费时费力。GPT 就能在几秒钟之内帮你自动生成多份高质量的文案供筛选,大大提升效率。
pip install openai
import openai
# 1. 设置 API Key
openai.api_key = "YOUR_OPENAI_API_KEY"
# 2. 构造请求参数
prompt_text = "帮我写一段介绍AI产品的文案,产品主要卖点是节省人力。"
# 3. 调用 GPT 模型生成文本
response = openai.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": prompt_text}
],
temperature=0.7
)
# 4. 获取生成结果
generated_text = response.choices[0].message
print("生成的文案如下:")
print(generated_text.content)
示例输出:
生成的文案如下:
欢迎来到我们的AI产品世界!我们的产品利用最先进的人工智能技术,为您提供高效、智能的解决方案。无论是数据分析、客服服务还是生产流程优化,我们的AI产品都能帮助您节省大量人力资源,提高工作效率。让我们的智能系统为您解放双手,让您的团队更专注于创新和发展,实现更高效的业务运营。选择我们的AI产品,让未来的工作变得更加轻松、高效!赶快体验我们的产品,感受人工智能带来的无限可能吧!
text-davinci-003
、gpt-3.5-turbo
等,视你的权限和需要而定。**提示:**多尝试改变
prompt
、temperature
等参数,你会发现 GPT 生成的内容会有不小的差异。
在当今的信息时代,我们每天要接触海量的文本,比如新闻文章、学术论文、会议纪要等。要想快速地抓住要点,文本摘要就是一个有效的解决方案。GPT 模型可以一口气读完大段文本并给出简练的概要,为我们节省大量的时间。
import openai
openai.api_key = "YOUR_OPENAI_API_KEY"
# 待摘要的长文本
long_text = """
在今天的公司季度会议上,我们讨论了明年的市场战略,以及
如何在竞争激烈的环境中保持产品的创新性。会议结论包括:
1. 增加研发投入
2. 聚焦于核心产品市场
3. 尝试新的数字化营销策略
4. 与更多伙伴建立合作关系
"""
# 构造一个摘要请求
prompt_for_summary = f"请为下面的文本生成一个简短的摘要:\n\n{long_text}\n\n摘要:"
response = openai.chat.completions.create(
model = "gpt-3.5-turbo",
messages = [
{"role": "user", "content": prompt_for_summary}
],
temperature = 0.7
)
summary_text = response.choices[0].message
print("文本摘要:")
print(summary_text.content)
示例输出:
文本摘要:
在公司季度会议上讨论了明年的市场战略和产品创新,会议结论包括增加研发投入、聚焦核心产品市场、尝试新的数字化营销策略以及与更多伙伴建立合作关系。
temperature
调低,比如 0.2 ~ 0.5。否则会出现一些“创造性”但不精准的表达。GPT 并不像传统的机器学习模型需要训练一个“情感分类器”。它可直接通过 prompt 指令“让 GPT 帮你分辨情感”,它会根据内置的知识来理解文本的语义。相当于“零样本学习(Zero-shot Learning)”,极大地减少了实现成本。
import openai
openai.api_key = "YOUR_OPENAI_API_KEY"
test_texts = [
"我非常喜欢这款手机,使用体验无可挑剔!",
"这次的售后服务太糟糕了,让我非常失望!",
"品质还行吧,但价格稍微有点高。",
]
for txt in test_texts:
prompt_for_sentiment = f"请判断下面文本的情感倾向(正面、中性、负面),并简要说明原因:\n\n文本:{txt}\n\n输出格式:情感 - 原因"
response = openai.chat.completions.create(
model = "gpt-3.5-turbo",
messages = [
{"role": "user", "content": prompt_for_sentiment}
],
temperature = 0.7
)
sentiment_result = response.choices[0].message.content
print(f"原文本: {txt}")
print(f"分析结果: {sentiment_result}\n")
示例输出:
原文本: 我非常喜欢这款手机,使用体验无可挑剔!
分析结果: 情感 - 正面。因为作者表示非常喜欢这款手机,使用体验无可挑剔,表明他对手机的评价是积极的。
原文本: 这次的售后服务太糟糕了,让我非常失望!
分析结果: 情感 - 负面。原因是因为文本中表达了对售后服务的不满和失望。
原文本: 品质还行吧,但价格稍微有点高。
分析结果: 中性 - 文本中提到产品的品质还行,这是一个中性评价,但同时也指出价格稍微有点高,这可能会让消费者感到不太满意,因此整体情感是中性的。
重点:相比传统的分类器,需要先拿到大量的正负样本并训练模型,GPT 的好处在于无需额外训练,就能对情感进行分类分析。
文本生成:
文本摘要:
情感分析:
文本生成加固
temperature
参数下,生成故事的差异,并做简单的分析。摘要任务进阶
情感分析的自定义标签
思考题:Prompt Engineering
恭喜你走到这里!我们见识了 GPT 在自然语言生成方面的强大能力,也看到了它在摘要和情感分析等任务上的直接应用。和传统的 NLP 方法不同,GPT 的出现让我们可以用更少的训练和数据准备,获得更好的结果。这就意味着做 NLP 项目不会再被海量标注数据所束缚,门槛相对降低,也给更多人带来创造灵感。
在接下来的学习或工作中,希望你能多花一些时间进行Prompt Engineering,因为写得越好的指令,就能激发出 GPT 越强的潜力。同时,也别忘了关注相关的隐私与安全问题。至此,我们的 GPT 专题内容就告一段落了,期待你在后续章节里继续探索更高阶或更专业的 NLP 应用!
本章总结:
希望你能通过本章的示例和练习,真正动手试一试。加油!