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

news2024/11/30 12:32:09

命名实体识别(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.coloradmin.cn/o/2191620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构之排序(5)

摘要:本文主要讲各种排序算法,注意它们的时间复杂度 概念 将各元素按关键字递增或递减排序顺序重新排列 评价指标 稳定性: 关键字相同的元素经过排序后相对顺序是否会改变 时间复杂度、空间复杂度 分类 内部排序——数据都在内存中 外部排序——…

涂色问题 乘法原理(2024CCPC 山东省赛 C)

//*下午打得脑子连着眼睛一起疼 很多很基础的题目都没有做出来,规律题也找得很慢。比如下面这题,一定要多做,下次看到就直接写。 原题链接:https://codeforces.com/group/w6iGs8kreW/contest/555584/problem/C C. Colorful Segm…

LabVIEW光偏振态检测系统

开发一套LabVIEW的高精度光偏振态检测系统,采用机械转动法结合光电探测器和高性能数据采集硬件,能快速、准确地测量光的偏振状态。该系统广泛应用于物理研究、激光技术和光学工业中。 系统组成 该光偏振态检测系统主要由以下硬件和软件模块构成&#xf…

无人机+无人车+机器狗+无人船:大规模组网系统技术详解

无人机、无人车、机器狗和无人船的大规模组网系统技术,是实现海陆空全空间无人设备协同作业的关键。这种组网系统技术通过集成先进的通信、控制、感知和决策技术,使得不同类型的无人平台能够高效、准确地完成各种复杂任务。以下是对该技术的详细解析&…

SysML案例-呼吸机

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 图片示例摘自intercax.com,作者是Intercax公司总裁Dirk Zwemer博士。

【项目安全设计】软件系统安全设计规范和标准(doc原件)

1.1安全建设原则 1.2 安全管理体系 1.3 安全管理规范 1.4 数据安全保障措施 1.4.1 数据库安全保障 1.4.2 操作系统安全保障 1.4.3 病毒防治 1.5安全保障措施 1.5.1实名认证保障 1.5.2 接口安全保障 1.5.3 加密传输保障 1.5.4终端安全保障 资料获取:私信或者进主页。…

将列表中的各字符串sn连接成为一个字符串s使用;将各sn间隔开os.pathsep.join()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 将列表中的各字符串sn 连接成为一个字符串s 使用;将各sn间隔开 os.pathsep.join() [太阳]选择题 下列说法中正确的是? import os paths ["/a", "/b/c", "/d&q…

Android开发修改为原生主题(在Android Studio开发环境下)

结构如下图: 修改方法:在Android模式目录下,将res下的values文下的themes.xml文件中的 : parent"Theme.Material3.DayNight.NoActionBar" 修改为: parent"Theme.MaterialComponents.DayNight.Bridge&…

Meta 推出Movie Gen

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

ChatGPT 更新 Canvas 深度测评:论文写作这样用它!

我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 ChatGPT又又更新了:基于ChatGPT 4o模型的Canvas 写作和代码功能。目前,仅针对Plus和Team用户。是一个独立的模块,如下所示: 官方…

【Python】simplejson:Python 中的 JSON 编解码利器

simplejson 是一个高效且功能丰富的 Python JSON 编码和解码库。它能够快速地将 Python 数据结构转换为 JSON 格式(序列化),或将 JSON 格式的字符串转换为 Python 对象(反序列化)。相比标准库中的 json 模块&#xff0…

数据结构实验二 顺序表的应用

数据结构实验二 顺序表的应用 一、实验目的 1、掌握建立顺序表的基本方法。 2、掌握顺序表的插入、删除算法的思想和实现,并能灵活运用 二、实验内容 用顺序表实现病历信息的管理与查询功能。具体要求如下: 1.利用教材中定义顺序表类型存储病人病历信息(病历号…

直立行走机器人技术概述

直立行走机器人技术作为现代机器人领域的重要分支,结合了机械工程、计算机科学、人工智能、传感技术和动态控制等领域的最新研究成果。随着技术的不断发展,直立行走机器人在救灾、医疗、家庭辅助等领域开始发挥重要作用。本文旨在对直立行走机器人的相关…

Java 注释新手教程一口气讲完!ヾ(≧▽≦*)o

Java 注释 Java面向对象设计 - Java注释 什么是注释? Java中的注释允许我们将元数据与程序元素相关联。 程序元素可以是包,类,接口,类的字段,局部变量,方法,方法的参数,枚举&…

【STM32开发之寄存器版】(五)-窗口看门狗WWDG

一、前言 窗口看门狗简介: 窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个M…

C语言 | Leetcode C语言题解之第459题重复的子字符串

题目&#xff1a; 题解&#xff1a; bool kmp(char* query, char* pattern) {int n strlen(query);int m strlen(pattern);int fail[m];memset(fail, -1, sizeof(fail));for (int i 1; i < m; i) {int j fail[i - 1];while (j ! -1 && pattern[j 1] ! pattern…

Pikachu-PHP反序列化

从后端代码可以看出&#xff0c;拿到序列化后的字符串&#xff0c;直接做反序列化&#xff1b;并且在前端做了展示&#xff1b; 如果虚拟化后的字符串&#xff0c;包含alert 内容&#xff0c;反序列化后&#xff0c;就会弹出窗口 O:1:"S":1:{s:4:"test";s…

佑航科技Pre-A+轮融资成功:加速车载超声波芯片研发与量产

近日,超声波芯片领域的领先企业珠海佑航科技有限公司(简称“佑航科技”)宣布成功完成数千万元的Pre-A+轮战略融资。本轮融资由上市公司思瑞浦微电子旗下的芯阳基金进行战略投资,标志着佑航科技在车载超声波芯片及传感器领域的研发与量产能力迈上了新台阶。此次融资不仅为佑…

《Linux从小白到高手》理论篇:深入理解Linux的网络管理

今天继续宅家&#xff0c;闲来无事接着写。本篇详细深入介绍Linux的网络管理。 如你所知&#xff0c;在Linux中一切皆文件。网卡在 Linux 操作系统中用 ethX,是由 0 开始的正整数&#xff0c;比如 eth0、eth1… ethX。而普通猫和ADSL 的接口是 pppX&#xff0c;比如 ppp0 等。 …

Golang | Leetcode Golang题解之第459题重复的子字符串

题目&#xff1a; 题解&#xff1a; func repeatedSubstringPattern(s string) bool {return kmp(s s, s) }func kmp(query, pattern string) bool {n, m : len(query), len(pattern)fail : make([]int, m)for i : 0; i < m; i {fail[i] -1}for i : 1; i < m; i {j : …