用openai和python轻松提取段落关键词
2024-03-01 14:23:51
如果你有一个工具,可以自动地从一段文本中提取出最重要的单词,那么你的工作或学习会变得多么容易?你是否曾经想过,如果你可以利用人工智能的力量,来帮助你分析和理解任何主题,那么你会有多么高效和聪明?如果你对这些问题感兴趣,那么这篇文章就是为你准备的。
在这篇文章中,我将向你展示如何使用openai和python来提取段落的关键词。这是一个非常有用的技能,可以帮助你快速地获取文本的主旨,或者为文本生成摘要或标题。我将向你介绍以下几个方面:
- 什么是openai,它如何工作,以及它有什么优势
- 如何使用openai的Completion API来生成文本
- 如何编写一个简单的python类来调用openai的API,并提取段落的关键词
- 如何优化和改进你的代码,以获得更好的结果
- 一些常见的问题和答案
什么是openai,它如何工作,以及它有什么优势
openai是一个非营利性的人工智能研究机构,它的目标是创建和推广一种友善和可信赖的人工智能,可以为全人类带来福祉。openai拥有一些最先进和最强大的人工智能模型,比如GPT-3和DALL-E,它们可以在各种领域表现出惊人的能力,比如自然语言处理、计算机视觉、音乐生成等。
openai提供了一系列的API,让开发者和用户可以方便地访问和使用它们的人工智能模型。其中一个API就是Completion API,它可以让你输入一个文本片段(称为prompt),然后生成一个接续的文本(称为completion)。Completion API可以根据不同的参数来调整生成文本的风格、长度、复杂度等。例如,你可以输入一个问题作为prompt,然后让Completion API给出一个答案;或者你可以输入一个文章开头作为prompt,然后让Completion API写出一个结尾;或者你可以输入一个段落作为prompt,然后让Completion API提取出其中最重要的单词。
使用openai有很多优势,比如:
- 它可以让你利用最先进的人工智能技术来完成各种任务,而不需要自己搭建或训练模型
- 它可以让你节省时间和精力,而不需要自己编写复杂的算法或逻辑
- 它可以让你获得更高质量和更多样化的结果,而不需要自己限制或过滤输出
如何使用openai的Completion API来生成文本
要使用openai的Completion API来生成文本,你需要做以下几个步骤:
- 注册一个openai账户,并获取一个API密钥
- 安装openai库,并导入openai模块
- 设置openai.api_key为你的API密钥
- 调用openai.Completion.create()方法,并传入相应的参数
- 获取返回的response对象,并提取其中的choices属性
- 从choices属性中选择一个choice对象,并提取其中的text属性
下面是一个简单的示例,演示了如何使用openai的Completion API来生成文本:
import openai
# 设置你的API密钥
openai.api_key = ""
# 定义一个prompt,作为输入文本
prompt = "What is the meaning of life?"
# 调用Completion API,传入相应的参数
response = openai.Completion.create(
engine="text-davinci-003", # 使用text-davinci-003引擎,这是最强大的引擎之一
prompt=prompt, # 传入prompt作为输入文本
temperature=0.5, # 设置temperature为0.5,这是一个控制生成文本多样性的参数,越高越多样,越低越保守
max_tokens=30 # 设置max_tokens为30,这是一个控制生成文本长度的参数,单位是词语的数量
)
# 获取返回的response对象,并提取其中的choices属性
choices = response.choices
# 从choices属性中选择一个choice对象,并提取其中的text属性
text = choices[0].text
# 打印输出文本
print(text)
运行这段代码,你可能会得到以下输出:
The meaning of life is a question that has puzzled many people for centuries. There is no definitive answer, but some possible answers are:
- The meaning of life is to find your own purpose and happiness.
- The meaning of life is to love and be loved by others.
- The meaning of life is to contribute to the world and make it a better place.
- The meaning of life is to explore and learn from the universe.
如何编写一个简单的python类来调用openai的API,并提取段落的关键词
要编写一个简单的python类来调用openai的API,并提取段落的关键词,你需要做以下几个步骤:
- 定义一个类,比如叫做OpenAI\_API,并初始化它的属性,比如api\_key
- 在类中定义一个方法,比如叫做extract\_keywords,并接受一个参数,比如paragraph
- 在方法中定义一个prompt,根据paragraph来生成一个合适的输入文本,比如:
prompt = f"[{paragraph}]\nThe most important word in the paragraph is:"
- 在方法中调用openai.Completion.create()方法,并传入相应的参数,比如engine, prompt, temperature, max\_tokens等
- 在方法中获取返回的response对象,并提取其中的choices属性
- 在方法中从choices属性中选择一个choice对象,并提取其中的text属性
- 在方法中对text属性进行一些处理,比如移除标点符号和空格,过滤掉and这个词等
- 在方法中返回处理后的text属性作为结果
下面是一个简单的示例,演示了如何编写一个简单的python类来调用openai的API,并提取段落的关键词:
import
import
import re # 导入正则表达式模块
class OpenAI_API:
def __init__(self, api_key=""):
openai.api_key = api_key
def extract_keywords(self, paragraph):
prompt = f"[{paragraph}]\nThe most important word in the paragraph is:" # 定义prompt
response = openai.Completion.create(
engine="text-davinci-003", # 使用text-davinci-003引擎
prompt=prompt, # 传入prompt作为输入文本
temperature=0.7, # 设置temperature为0.7
max_tokens=10 # 设置max_tokens为10
)
choices = response.choices # 获取choices属性
text = choices[0].text # 获取text属性
text = re.sub(r'[^\w\s]', '', text) # 使用re.sub()方法来替换掉符号
text = text.strip() # 使用strip()方法来移除空格
text = text.lower() # 使用lower()方法来转换为小写
if text == 'and': # 如果text是and,就返回空字符串
text = ''
return text # 返回结果
# 以下是一个使用这个类的例子
openai_api = OpenAI_API() # 创建一个OpenAI_API的实例
paragraph = "Yoga is a group of physical, mental, and spiritual practices or disciplines which originated in ancient India. Yoga is one of the six Āstika (orthodox) schools of Indian philosophical traditions. There is a broad variety of yoga schools, practices, and goals in Hinduism, Buddhism, and Jainism." # 定义一个段落
keyword = openai_api.extract_keywords(paragraph) # 调用extract_keywords方法,并传入段落
print(keyword) # 打印结果
# 运行这段代码,你可能会得到以下输出:
yoga
如何优化和改进你的代码,以获得更好的结果
你可能会发现,使用openai和python提取段落的关键词并不是一件容易的事情。有时候,你可能会得到一些不太准确或者不太相关的结果,比如:
- 一个数字或者一个动词,而不是一个名词或者一个形容词
- 一个短语或者一个句子,而不是一个单词
- 一个常见或者无意义的单词,而不是一个特定或者有意义的单词
为了优化和改进你的代码,以获得更好的结果,你可以尝试以下几种方法:
- 修改你的prompt,让它更具体或者更清晰地表达你想要的结果。例如,你可以增加一些限制条件或者给出一些例子,比如:
prompt = f"[{paragraph}]\nPlease write one word that best summarizes the main idea or topic of the paragraph. The word should be a noun or an adjective, not a verb or a number. For example: ‘apple’, ‘banana’, ‘orange’."
- 调整你的temperature,让它适合你想要的多样性和保守性。例如,你可以根据不同的段落来选择不同的temperature,比如:
temperature=0.5 # 如果段落比较简单或者明确,可以使用较低的temperature temperature=0.9 # 如果段落比较复杂或者模糊,可以使用较高的temperature
- 调整你的max\_tokens,让它适合你想要的长度和精确性。例如,你可以根据不同的段落来选择不同的max\_tokens,比如:
max\_tokens=10 # 如果段落比较短或者具体,可以使用较小的max\_tokens max\_tokens=30 # 如果段落比较长或者抽象,可以使用较大的max\_tokens
- 对你的text属性进行一些处理,让它更符合你想要的格式和内容。例如,你可以增加一些过滤条件或者转换规则,比如:
text = re.sub(r’^1^', ‘’, text) # 使用re.sub()方法来替换掉所有非字母数字和空格的字符 text = text.strip() # 使用strip()方法来移除前后的空格 text = text.lower() # 使用lower()方法来转换为小写 if text == ‘and’: # 如果text是and,就返回空字符串 text = ‘’ if len(text.split()) > 1: # 如果text包含多个单词,就返回第一个单词 text = text.split()[0]
一些常见的问题和答案
在使用openai和python提取段落的关键词的过程中,你可能会遇到一些常见的问题,比如:
- Q: 我需要付费才能使用openai吗?
- A: openai目前提供了一个免费的试用计划,让你可以每月免费调用100次API。如果你想要更多的调用次数或者更高级的功能,你可以申请一个付费的计划,根据你的使用量和需求来支付相应的费用。
- Q: 我如何获取我的API密钥?
- A: 你可以在openai的官网上注册一个账户,然后在你的账户设置中找到你的API密钥。你的API密钥是一个以sk-开头的字符串,比如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。你需要保管好你的API密钥,不要泄露给其他人,因为它是你访问openai服务的唯一凭证。
- Q: 我如何选择合适的引擎、temperature和max\_tokens?
- A: openai提供了多种不同的引擎,每个引擎都有自己的特点和优势。你可以根据你想要生成文本的类型、质量、风格等来选择合适的引擎。目前,最强大和最通用的引擎是text-davinci-003,它可以在各种领域表现出惊人的能力。temperature是一个控制生成文本多样性的参数,它的范围是0到1,越高越多样,越低越保守。你可以根据你想要生成文本的创意、新颖、意外等来选择合适的temperature。max\_tokens是一个控制生成文本长度的参数,单位是词语的数量。你可以根据你想要生成文本的完整、详细、精确等来选择合适的max\_tokens。
- Q: 我如何提高我提取段落关键词的准确率和相关性?
- A: 除了优化和改进你的代码之外,你还可以尝试以下几种方法来提高你提取段落关键词的准确率和相关性:
- 使用更高质量和更专业的段落作为输入,避免使用过于简单或者模糊的段落
- 使用更具体和更清晰的prompt作为输入,避免使用过于抽象或者模糊的prompt
- 使用更合适和更灵活的参数作为输入,避免使用过于极端或者固定的参数
结论
在这篇文章中,我向你展示了如何使用openai和python来提取段落的关键词。这是一个非常有用的技能,可以帮助你快速地获取文本的主旨,或者为文本生成摘要或标题。我向你介绍了以下几个方面:
- 什么是openai,它如何工作,以及它有什么优势
- 如何使用openai的Completion API来生成文本
- 如何编写一个简单的python类来调用openai的API,并提取段落的关键词
- 如何优化和改进你的代码,以获得更好的结果
- 一些常见的问题和答案