
提升数据工程效率:使用generative Ai进行实体识别与提取的实用指南 - 第3部分
实体识别
实体识别,也称为 命名实体识别 (NER),是一种自然语言处理 (NLP) 技术,用于识别和分类文本中的关键信息。这些实体可以包括 人、组织、地点、日期、产品等。
传统的 NLP 模型长期以来一直用于实体识别,帮助从非结构化文本中提取结构化信息,使得分析大型数据集变得更加容易。然而,生成式人工智能进一步推动了这一概念,允许以更大的灵活性、适应性和最小的设置进行实体提取。
为什么使用生成式人工智能进行实体识别?
- 无需预定义规则: 传统的命名实体识别(NER)模型需要使用大量标记数据集进行预训练,而生成式人工智能可以动态识别实体。
- 上下文意识: 生成式人工智能可以理解文本的上下文,确保更好地识别实体,即使它们以不同格式出现。
- 易于实现: 只需几行代码,使用大型语言模型(LLMs)如生成预训练变换器(GPT),而无需开发和微调自然语言处理(NLP)管道。
- 处理各种文本格式: 无论是新闻文章、社交媒体帖子、合同还是评论,生成式人工智能都可以高精度地提取相关实体。
让我们探索如何使用GPT-4o通过几个应用程序接口(API)调用来执行命名实体识别。
示例 1:基本实体识别
在这个例子中,我们分析一个简单的句子并提取 人名、地点、日期和组织。
import openai
import pandas as pd
import json
import numpy as np
from pprint import pprint
openai.api_key ='your-api-key'
def clean(dict_variable):
return next(iter(dict_variable.values()))
text = "John Snow visited Red Castle on January 4, 2025, and met with the King of Westeros."
response = openai.ChatCompletion.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are an AI assistant skilled in entity recognition."},
{"role": "user", "content": f"Identify and categorize the named entities in the following text. Output in JSON form: {text}"}
],
response_format={"type": "json_object"}
)
print(response.choices[0].message.content)
输出
示例 2:新闻文章中的实体识别
一个更复杂的例子,我们从新闻文章中提取关键实体,如组织、地点、人物和日期。
news_article = """
On September 15, 2024, Apple Inc. unveiled its latest iPhone models at its headquarters in Cupertino, California.
CEO Tim Cook presented the new devices, highlighting their advanced features. The event was attended by tech journalists from various publications, including The New York Times and TechCrunch.
"""
response = openai.ChatCompletion.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are an AI assistant skilled in entity recognition."},
{"role": "user", "content": f"Extract and categorize all named entities from this news article. Include categories such as PERSON, ORGANIZATION, DATE, LOCATION, and PRODUCT. Output in JSON form: {news_article}"}
],
response_format={"type": "json_object"}
)
print(response.choices[0].message.content)
输出
示例 3:社交媒体帖子中的实体识别
这对分析社交媒体趋势、提取标签、地点、用户名和地标特别有用。
social_media_post = """
刚到达 #NewYork! 😍 迫不及待想去时代广场和自由女神像。
明天将与 @SaiParvathaneni 见面,进行一次河流游船。
有没有推荐在第五大道附近最好的咖啡馆? #旅行博客 #纽约冒险
"""
response = openai.ChatCompletion.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "您是一位擅长实体识别的人工智能助手,特别是在社交媒体上下文中。"},
{"role": "user", "content": f"识别并分类此社交媒体帖子中的实体,包括地点、地标、用户名和标签。以 JSON 形式输出:{social_media_post}"}
],
response_format={"type": "json_object"}
)
print(response.choices[0].message.content)
输出
结论
命名实体识别 (NER) 使用 生成式人工智能 提供了一种 快速、灵活和可扩展 的方式,从非结构化文本中提取结构化信息。与传统的自然语言处理方法不同,大型语言模型 (LLMs) 动态适应,消除了手动编码规则算法的需求。
主要好处:
- 准确的实体提取: 自动识别和分类各种实体。
- 适用于不同文本类型: 社交媒体、新闻文章、合同、评论等。
- 减少时间和复杂性: 无需开发自定义的自然语言处理模型或预处理管道。
- 可扩展和适应性强: 轻松处理变化的文本结构。
只需几行代码,数据工程师和分析师就可以利用生成式人工智能驱动的命名实体识别进行各种应用,如数据标注、社交媒体分析、自动报告和内容组织。
感谢阅读!
如果你喜欢我的工作并想支持我…