当前位置: 首页 > article >正文

知识图谱入门——9: spaCy中命名实体识别(NER)任务中的预定义标签详解及案例(GPE、MONEY、PRODUCT、LAW、FAC、NORP是什么?)

命名实体识别(NER, Named Entity Recognition)是自然语言处理(NLP)中的重要任务之一,旨在从文本中识别出特定的实体,如人名、地名、时间等。spaCy 是一个广泛使用的 NLP 库,它提供了预训练的模型用于快速实现 NER 功能。在 spaCy 中,模型可以识别多种类型的命名实体,并将它们标注为特定的标签。

在这篇文章中,我们将系统地介绍 spaCy 中命名实体识别的常见 预定义标签,并探讨这些标签在实际应用中的意义。

文章目录

  • 1. 什么是命名实体识别(NER)?
  • 2. spaCy NER 中的预定义标签
  • 3. 标签详解
    • **PERSON**
    • **GPE**
    • **ORG**
    • **DATE**
    • **MONEY**
    • **PRODUCT**
  • 4. 中文应用示例:使用 spaCy 提取实体
  • 5. 自定义命名实体识别
  • 6. 总结

1. 什么是命名实体识别(NER)?

命名实体识别是一项自动化任务,旨在识别出文本中的 “命名实体” 并对其分类。常见的实体类型包括:

  • 人名(Person)
  • 地名(Location)
  • 组织机构(Organization)
  • 时间(Date)

这些实体通常对分析、信息抽取、以及知识图谱构建有重要作用。

2. spaCy NER 中的预定义标签

spaCy 提供了多种语言模型,其中包括对中文、英文等语言的支持。每个语言模型都包含一套预定义的命名实体标签,用来标识特定类型的实体。下面列举了 spaCy 英文模型中的主要 NER 标签。对于中文等其他语言的模型,标签体系会有所不同,但大部分核心标签是一致的。

标签全称描述
PERSONPerson人名。包括真实的个人或人物角色。
NORPNationalities or religious or political groups民族、宗教团体或政治派别。例如:“Chinese”(中国人)、“Buddhists”(佛教徒)。
FACFacilities设施。建筑物、机场、公路等人造设施。
ORGOrganizations组织机构。公司、政府机构、大学等。
GPEGeopolitical Entity地理政治实体。国家、城市、地区等。
LOCLocation位置。非地理政治区域,如山脉、河流等。
PRODUCTProducts产品。通常指消费品、工具、车辆等。
EVENTEvent事件。重大历史事件、比赛、节日等。
WORK_OF_ARTWork of Art艺术作品。包括书籍、歌曲、绘画等。
LAWLaw法律或相关文件。
LANGUAGELanguage语言。
DATEDate日期。
TIMETime时间。具体的时间点或时间段。
PERCENTPercentage百分比。
MONEYMoney货币。
QUANTITYQuantity数量。
ORDINALOrdinal序数词。
CARDINALCardinal基数词。

3. 标签详解

PERSON

PERSON 标签代表文本中的人名。它不仅可以标识单个名字,还可以识别完整的名字组合,如 “张三” 或 “李四”。无论是历史人物还是小说中的角色,只要是明确的人名,都会被标注为 PERSON

GPE

GPE(地理政治实体)标签用来表示国家、城市等政治区域,例如 “中国”、“北京”、“美国”。与 LOC 不同,GPE 更倾向于具有政治边界的实体。

ORG

ORG 用于标识公司、政府机构、非营利组织等。例如 “谷歌”、“联合国”、“哈佛大学”。这一标签对商业情报分析和社会网络研究尤为重要。

DATE

DATE 标签用于识别日期和日期范围,如 “2023年10月5日” 或 “去年夏天”。时间表达式如 “三天前” 也可以被识别为 DATE

MONEY

MONEY 标签用于识别金额及其单位,如 “500元”、“20美元”。它对金融文本分析、市场报告等应用非常重要。

PRODUCT

PRODUCT 标签主要用于识别各种消费品、工具、车辆等,如 “iPhone 14” 或 “特斯拉汽车”。

4. 中文应用示例:使用 spaCy 提取实体

接下来我们用中文演示如何从文本中提取命名实体,使用 spaCy 的中文模型。

import spacy

# 加载预训练的spaCy中文模型
nlp = spacy.load("zh_core_web_sm")

# 输入中文文本
text = "李雷在2023年10月5日去北京参加了清华大学的会议。"

# 处理文本
doc = nlp(text)

# 打印出识别到的实体
for ent in doc.ents:
    print(ent.text, ent.label_)

输出结果:
在这里插入图片描述

在这个例子中:

  • 李雷 被标注为 PERSON(人名),
  • 2023年10月5日 被标注为 DATE(日期),
  • 北京 被标注为 GPE(地理政治实体),
  • 清华大学 被标注为 ORG(组织)。

这个示例展示了 spaCy 中文模型如何自动从自然语言文本中提取出常见的实体类型,并对其进行正确的标注。

5. 自定义命名实体识别

除了 spaCy 提供的预定义标签之外,你还可以根据自己的需要自定义命名实体识别模型。例如,如果你希望识别特定的行业术语或领域专有名词,spaCy 允许你通过训练新的模型来实现。

你可以通过以下方式添加自定义实体:

import spacy
from spacy.tokens import Span

# 加载spaCy中文模型
nlp = spacy.load("zh_core_web_sm")

# 输入文本
text = "李雷在2023年10月5日去北京参加了清华大学的会议。"

# 处理文本
doc = nlp(text)

# 打印原始识别到的实体
print("原始识别到的实体:")
for ent in doc.ents:
    print(ent.text, ent.label_)

# 确认 "清华大学" 的索引位置
for token in doc:
    print(token.text, token.i)

# 手动将 "清华大学" 标记为 EDU
# 通过打印每个 token 的索引,发现 "清华大学" 的索引应该是 (9, 10)
new_ent = Span(doc, 9, 11, label="EDU")  # 修改实体索引,确保正确对应 "清华大学"
doc.set_ents([new_ent], default="unmodified")  # 使用 set_ents 修改实体

# 打印修改后的实体
print("\n修改后的实体:")
for ent in doc.ents:
    print(ent.text, ent.label_)

在这里插入图片描述

6. 总结

spaCy 提供的命名实体识别模型具有强大的通用性,能够自动识别多种语言中的实体。通过预定义的标签,spaCy 可以轻松处理诸如人名、地名、组织等常见实体类型。同时,用户还可以根据具体需求扩展和自定义这些实体标签。

在实际项目中,NER 可以用于文本分析、搜索引擎优化、自动摘要、信息抽取等多种应用。理解这些预定义标签的使用场景和扩展能力,将帮助我们更好地利用 spaCy 进行深度的自然语言处理。

后续博客,我们也会解释如何使用自定义词袋进行实体抽取,以及结合 BERT 模型等进行增强,可以关注知识图谱的专栏:知识图谱:从0到 ∞


希望这篇博客能帮助大家更好地理解 spaCy 中的命名实体识别任务。如果你有任何问题或建议,欢迎留言讨论!


http://www.kler.cn/news/333532.html

相关文章:

  • 新160个crackme - 073-abexcrackme3
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-28
  • 浙大数据结构:07-图4 哈利·波特的考试
  • AI运用在营销领域的经典案例及解析
  • 【DNA序列还原】刷题
  • JC2804快速入门
  • 前端开发设计模式——策略模式
  • 分享9个论文写作中强化观点三要素的奇技淫巧
  • 【TypeScript学习】TypeScript基础学习总结二
  • C题(五)求输入的十个整数的最大值
  • CSS中的font-variation-settings:探索字体的可变性
  • 封装el-upload组件,用于上传图片和视频
  • 机器学习(6):机器学习项目步骤(三)——选择算法并建立模型
  • JsonSerializer 实现手机号等敏感字段序列化脱敏
  • 机器人跳跃问题
  • AD 的不规则阵列使用及方法
  • Llama 3.2 多模态大模型快速指南
  • 信号处理快速傅里叶变换(FFT)的学习
  • Linux: network: sysctl: tcp_mem
  • SpringBoot3 Swagger笔记整理