跳过导航
跳过mega-menu

关键字提取与LangChain和ChatGPT -动手的见解

我们将解释如何使用 LangChainChatGPT. 我们将创建一个简单的Python脚本,执行一系列步骤:

  • 循环通过简单的REST API检索的记录
  • 将每条记录的文本输入ChatGPT,以便它提取相关的关键字
  • 解析ChatGPT响应并从中提取关键字
  • 统计关键词
  • 按关键字的数量对其进行排序,并将其写入Excel表格中


的必备条件

我们将使用Python 3.10与 LangChainChatGPT. 为此我们创建了一个 水蟒 环境使用这个命令:

Conda create——name langchain python=3.10

我们安装了 LangChainChatGPT 使用下面的命令:

Conda install -c Conda -forge openai
Conda安装-c Conda -forge langchain

你还需要在OpenAI网站上生成一个API密钥: http://platform.openai.com/account/api-keys


从REST API中提取数据

实际上,您可以使用任何您选择的REST API来交付非结构化文本. 我们使用了我们创建的网站的REST API. 这个API提供了一个基于文本的标题和描述.

为了从REST API获取数据,我们使用了 请求 图书馆.

我们也决定用a Python发电机 循环遍历REST API检索到的每条记录.

相关的脚本方法有:

def extract_data (json_内容):
"""
从json对象中提取标题、描述、id和youtube id.

:param json_内容:包含视频元数据的JSON对象
返回:包含标题、描述、id和YouTube id的元组
"""
返回(json_内容['基地']['标题'], json_内容(“基地”)(“描述”), json_内容(“id”), json_内容 [' youtube_id '])


定义process_all_records(batch_size: int = 100)
"""
通过REST接口循环播放所有视频的生成器函数.

:param batch_size:通过REST接口调用检索的批处理的大小.
"""
开始= 0
而真正的:
响应=请求.(f”http://admin.thelighthouse.世界/视频?_limit = {batch_size}&开始的地方={}”)
Json_内容 = response.json ()
对于json_内容中的jc:
#使用yield生成器将内容传递给调用者
收益率extract_data (jc)
if len(json_内容) < batch_size:
打破
Start += batch_size


使用ChatGPT提取关键字

您可以向ChatGPT提供指令,以自然语言提取关键字. ChatGPT允许每次输入多个消息,因此我们可以嵌入一个公共指令,然后嵌入一些变量输入. 这是我们常用的指令:

提取文本中的主要关键字,并将其提取到逗号分隔的列表中. 请在关键字前加上“keywords:”

这是实现与ChatGPT交互进行关键字提取的函数:

Def extract_keywords_from_chat(chat, record_data):
"""
向ChatGPT发送聊天问题并返回其输出.

在底层与ChatGPT通信的对象.
record_data:包含标题、描述、id和youtube id的元组
"""
Dt_single = f"{record_data[0]} {record_data[1]}"
Resp = chat([
SystemMessage(内容=
“你提取文本中的主要关键字,并将它们提取到一个逗号分隔的列表中. 请在关键字前加上' keywords:'"),
HumanMessage(内容= dt_single)
])
答案= resp.内容
返回dt_single,回答


实际上,ChatGPT在大多数情况下都以预期的格式回答问题. 下面是ChatGPT给出的答案:

关键词:金色的心,跳动,50周年纪念,促销,促销视频.

关键词:Yogesh Sharda, 冥想者, 引导冥想, 内心的自由, 和平的国家, 心, 的关系, 和谐, 个人发展培训师.


处理ChatGPT的输出

因为输出格式很好,所以我们用正则表达式编写了一个简单的函数来提取关键字.

def extract_keywords(文本):
"""
从ChatGPT生成的文本中提取关键字.

:param text:来自ChatGPT的答案, like '关键词:金色的心,跳动,50周年纪念,促销,促销视频.'
"""
文本=文本.低()
表达式= r".关键词:(.+?)$"
如果再保险.搜索(表达、文本):
关键词:re.Sub (expression, r"\1", text, flags=re.S)
if keywords is not None 和 len(keywords) > 0:
返回(再保险.子(r \.$", "", k.对关键字中的k取条带()).带().分割(" "))
返回[]


循环通过和输出到Excel

脚本的最后一部分只是循环遍历所有记录并捕获Excel文件中的输出. 我们捕获每条记录中的关键字,然后使用Python计算最受欢迎的关键字。计数器集合”.

下面是循环函数:

def process_keywords ():
"""
实例化与ChatGPT接口并循环遍历记录的对象
捕获每个记录的关键字,并计算每个关键字的出现次数.
"""
ChatOpenAI(model_name=model_name, temperature=0)
popul_keywords = Counter()
关键字_data = []
对于i, record_data在enumerate(process_all_records())中:
试一试:
Dt_single, answer = extract_keywords_from_chat(聊天,record_data)
Extracted_keywords = extract_keywords(answer)
popular_keywords.更新(extracted_keywords)
Print (i, dt_single, popul_keywords)
keyword_data.追加({“id”:record_data [2], “youtube_id”:record_data [3], “标题”:record_data [0], “描述”:record_data [1],
“关键词”:”、“.澳门十大正规赌博娱乐平台(extracted_keywords)})
例外情况如下:
print(f"Error occurred: {e}")

write_to_excel (popular_keywords keyword_data)

以及获取Excel文件中对应关键字的记录信息和总体关键字计数的函数:

Def write_to_excel(popul_keywords, keyword_data):
"""
捕获一个文件中每条记录的关键字,然后捕获另一个文件中的总关键字计数.

:param popul_keywords:关键字计数器
:param keyword_data:包含记录数据和提取的关键字
"""
pd.DataFrame (keyword_data).to_excel(“keyword_info.xlsx”)
Keyword_data = [{'keyword': e[0], 'count': e[1]}}在popul_keywords中查找e.most_common ())
pd.DataFrame (keyword_data).sort_values(=(“计数”),提升= False).to_excel(“popular_keywords.xlsx”)

完整的剧本作为 Github要点.


结论

ChatGPT允许每次输入多个消息,您可以通过使用 SystemMessage LangChain中的参数. 如果在此给出说明 SystemMessage 很明显,你可以使用ChatGPT来执行特定的NLP任务, 比如关键词提取, 翻译, 情绪分析, 分类, 具有特定风格的文本生成等等.

然后可以将输出以结构化格式存储. 你可以用这样一个图表来表达这个想法:


吉尔·费尔南德斯,Onepoint咨询公司

澳门十大正规赌博娱乐平台

在这里注册