郭震 AI公众号:郭震AI

20 从零学NLP系列教程:命名实体识别

发布日期:

最近更新:

分类: NLP小白

预计阅读: 3 分钟

阅读次数: 0

系列进度

自然语言处理入门 · 第 20 / 30

预计阅读3 分钟
结构重点8 个
图文要点6 张
正文规模1.5k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 8 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

命名实体识别流程图查看大图
命名实体识别流程图

NER 不是只找关键词,它还要判断实体边界和类型。边界错一个字,后面的知识抽取和检索都会受影响。

命名实体识别实操核对图查看大图
命名实体识别实操核对图

我会专门看边界样本:简称、别名、嵌套实体和中文机构名。实体抽取最容易在这些地方失真。

在本篇教程中,我们将深入探讨命名实体识别(Named Entity Recognition, NER)这一序列标注任务。命名实体识别是信息提取的一部分,主要目的是从文本中识别出具有特定意义的实体,如人名、地点、组织等。通过前面的内容,我们已经了解了文本分类的评价指标,那么接下来的内容将集中在序列标注上,特别是如何进行命名实体识别。

什么是命名实体识别?

命名实体识别的主要目标是识别文本中的命名实体,并将其分类。典型的命名实体类别包括:

命名实体识别入门判断卡查看大图
命名实体识别入门判断卡

学习命名实体识别时,先看实体类型、标注规则、上下文线索、模型预测、错误边界和应用场景。

  • 人名(PERSON)
  • 地名(LOCATION)
  • 机构名(ORGANIZATION)
  • 日期(DATE)
  • 时间(TIME)
  • 数量(MONEY)

这样的选择让NER任务在很多应用场景中都有重要意义,比如信息检索、问答系统、机器翻译等。

NER的基本方法

命名实体识别任务通常使用序列标注的方法来处理,也就是为文本中的每个词分配一个标签。最常用的标签集为IOB格式:

自然语言处理阅读地图卡查看大图
自然语言处理阅读地图卡

学《从零学NLP系列教程:命名实体识别》时,可以先找一个自己能复现的小场景,再看相关概念和练习步骤,读完后用自己的例子复述一遍。

  • I: Inside (内部,表示该词是实体的一部分)
  • O: Outside (外部,表示该词不是实体)
  • B: Begin (开始,表示该词是一个实体的开始)

举个例子,句子“Bill Gates是微软的创办人。”可以标注为:

单词 标签
Bill B-PER
Gates I-PER
O
微软 B-ORG
O
创办人 O
O

在这个例子中,“Bill Gates”被标识为一个人名(PER),而“微软”被标识为一个组织名(ORG)。

数据准备

在进行命名实体识别之前,我们需要对数据进行适当的准备。首先,我们需要一个文本和相应标签的集合。以下是一个示例数据集的结构:

{
  "sentences": [
    {
      "text": "Bill Gates是微软的创办人。",
      "labels": [
        {"start": 0, "end": 4, "label": "B-PER"},
        {"start": 5, "end": 11, "label": "I-PER"},
        {"start": 12, "end": 12, "label": "O"},
        {"start": 13, "end": 15, "label": "B-ORG"},
        {"start": 16, "end": 16, "label": "O"},
        {"start": 17, "end": 20, "label": "O"},
        {"start": 21, "end": 21, "label": "O"}
      ]
    }
  ]
}

NER模型示例

我们可以使用深度学习模型来进行NER任务。下面的例子展示了如何使用transformers库中的预训练模型来构建NER模型。我们将使用Python和Hugging Face库来实现这一过程。

安装依赖

确保你已经安装了transformerstorch库。

pip install transformers torch

代码示例

以下是一个简单的NER模型实现:

import torch
from transformers import BertTokenizer, BertForTokenClassification
from transformers import pipeline

# 加载预训练模型和分词器
model_name = "dbmdz/bert-large-chinese-ner"
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertForTokenClassification.from_pretrained(model_name)

# 创建ner管道
ner = pipeline("ner", model=model, tokenizer=tokenizer)

# 测试文本
text = "Bill Gates是微软的创办人。"

# 进行命名实体识别
results = ner(text)

# 输出结果
for entity in results:
    print(f"实体: {entity['word']}, 标签: {entity['entity']}, 置信度: {entity['score']:.2f}")

运行结果

运行上述代码后,输出可能会是这样的结果:

实体: Bill, 标签: B-PER, 置信度: 0.99
实体: Gates, 标签: I-PER, 置信度: 0.98
实体: 微软, 标签: B-ORG, 置信度: 0.97
从零学NLP系列教程:命名实体识别应用复盘卡查看大图
从零学NLP系列教程:命名实体识别应用复盘卡

读到这里,可以把《从零学NLP系列教程:命名实体识别》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。

从零学NLP系列教程:命名实体识别应用检查卡查看大图
从零学NLP系列教程:命名实体识别应用检查卡

读完《从零学NLP系列教程:命名实体识别》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。

小结

在本篇教程中,我们介绍了命名实体识别的基本概念和实现方法,并结合代码实例展示了如何使用深度学习模型来进行NER任务。通过了解NER,读者可以更好地掌握如何从文本中提取具有重要意义的信息。

在下一篇教程中,我们将继续深入探讨序列标注的另一个重要方面——部分语法分析(Shallow Parsing),欢迎继续关注!

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

从零学NLP系列教程:命名实体识别适合谁读?

这是 自然语言处理入门 系列第 20 / 30 篇,适合正在学习自然语言处理入门,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇自然语言处理入门教程要多久?

按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...