命名实体识别 (NER):从传统自然语言处理到 AI 驱动的数据提取

命名实体识别 (NER) 与 AI 数据提取示意图

命名实体识别 (Named Entity Recognition,简称 NER) 是自然语言处理 (NLP) 的基石之一。它是从非结构化文本中自动识别关键元素,并将其归类到预定义类别(如人名、组织机构名、地理位置、日期、货币数值以及产品名称)的过程。

如果没有 NER,搜索引擎、推荐系统和自动化文档分析系统将很难理解文本中包含的“人、事、时、地”等核心信息。

本指南将带您全面了解 NER 的定义、该技术的发展历程,以及为什么现代生成式 AI 彻底改变了实体提取的方式。


1. NER 技术的发展演变

为了理解为什么基于 AI 的 NER 具有如此革命性的意义,我们需要回顾过去几十年来实体提取技术的发展阶段。

第一阶段:基于规则和词典的系统

早期的 NER 主要依赖于正则表达式 (Regex) 和人工整理的词典 (Gazetteers)。

  • 工作原理:如果一个词存在于特定的地理位置数据库中,或者匹配某种模式(例如 [3位数字]-[3位数字]-[4位数字] 的电话号码),它就会被提取出来。
  • 局限性:鲁棒性极差。它无法处理拼写错误、新出现的实体或上下文语义。例如,它无法区分 “Apple” 指的是水果还是这家科技公司。

第二阶段:传统 machine learning (CRF 与 SVM)

在 21 世纪初,条件随机场 (CRF) 和支持向量机 (SVM) 等统计机器学习模型成为了行业标准。

  • 工作原理:工程师需要手动提取特征(例如前缀、后缀、大小写模式),并使用标注数据训练模型,以预测某个 Token 属于特定实体的概率。
  • 局限性:需要大量的标注数据集,且手动特征工程非常繁琐耗时。

第三阶段:深度学习 (BiLSTM-CRF 与 BERT)

随着深度学习的兴起,双向长短期记忆网络 (BiLSTM) 结合 CRF,以及后来的 Transformer 模型(如 BERT)彻底改变了 NLP 领域。

  • 工作原理:词嵌入 (Word Embeddings) 捕获了词语的语义,而深层 neural network 理解了上下文。基于 BERT 的模型能够根据上下文在“苹果发布了新款 iPhone”中将“苹果”识别为组织机构。
  • 局限性:仍然需要在特定领域的标注数据集上进行监督微调,并且在不进行重新训练的情况下,缺乏提取新的、未定义类别的灵活性。

第四阶段:生成式 AI 与基于大语言模型的 NER

如今,像 Gemini、GPT-4 和 Llama 3 这样的大语言模型 (LLM) 通过强大的语义理解和指令遵循能力来执行 NER 任务。

  • 工作原理:通过零样本 (Zero-shot) 或少样本 (Few-shot) 提示词,用户可以直接指示大模型提取任何自定义实体类型,并以结构化格式(如 JSON)返回。
  • 核心优势:能够理解复杂的句法、兼容拼写错误、推断含糊不清的上下文,且不需要任何初始训练数据。

2. 基于 AI 的 NER 与传统 NER 对比

特性 传统 NER (BERT / CRF) 基于 AI 的 NER (LLMs)
训练数据需求 高(需要数千个标注好的样本) 无至极低(零样本 / 少样本)
灵活性 较低(只能提取预先训练好的类别) 极高(可在提示词中定义任意实体)
上下文理解能力 中等(局部上下文窗口) 深厚(理解全局文档上下文与真实意图)
未登录词 (OOV) 处理 较差(难以应对未见过的词汇) 优秀(利用语义推理能力)
执行延迟与成本 速度快、成本低(可在小型 CPU/GPU 上本地运行) 速度较慢、成本较高(需要运行庞大的模型推理)

3. 基于 AI 的 NER 的核心应用场景

基于 AI 的命名实体识别不仅能高亮显示文本,还能将非结构化文本转换为结构化、可直接处理的 JSON 数据,从而赋能以下业务的自动化:

文档解析与信息提取

企业每天都要处理成千上万份发票、简历、合同以及招标文件 (RFP)。基于 AI 的 NER 可以智能提取:

  • 发票:纳税人识别号、明细条目、总金额、账单地址。
  • 简历:候选人姓名、工作年限、专业技能、毕业院校。
  • 合同:终止日期、责任限制条款、适用法律、签署人姓名。

知识图谱构建

通过提取实体以及实体之间的关系(例如,[詹妮弗·李] -> [工作于] -> [Acme Innovations]),基于 AI 的 NER 构成了知识图谱的底层数据接入引擎,目前常与 GraphRAG 结合用于企业级的高级智能搜索。

增强型 RAG 与元数据自动打标

在检索增强生成 (RAG) 系统中,用元数据标签(如作者、产品版本、国家/地区和技术类别)对文档进行索引,能大幅提升检索准确率。基于 AI 的 NER 可在文档导入时,自动、批量地生成这些标签。

临床与医学 NLP

医疗机构使用 NER 从医生的病历中提取患者症状、药物剂量、病史和诊断结果,同时自动对个人健康隐私信息 (PHI) 进行脱敏,以符合医疗合规要求。


4. 基于 AI 的 NER 的工作流程

现代基于 AI 的 NER 依赖于向大语言模型提供系统指令和目标 Schema,以强制其输出结构化数据。

[非结构化文本] ──> [LLM + 系统指令 + JSON Schema] ──> [结构化 JSON 输出]
  1. 输入文本:待处理的原始文本。
  2. 系统提示词与 Schema:定义我们希望提取的实体(例如姓名、公司、日期)以及所需的具体格式(如 JSON)。
  3. 大模型提取:模型进行语义分析,识别出实体,消除歧义,并进行格式化。
  4. 结构化 JSON:输出的数据可以直接存入数据库或传递给下游 API。

5. 代码实现示例:在 Python 中使用 AI 进行 NER

以下是一个在 Python 中利用结构化 JSON 输出模式执行基于 AI 的 NER 的简单示例:

import json
from google import genai
from google.genai import types
from pydantic import BaseModel

# 初始化 Gemini 客户端
client = genai.Client()

# 使用 Pydantic 定义目标数据结构
class EntityExtraction(BaseModel):
    people: list[str]
    organizations: list[str]
    locations: list[str]
    dates: list[str]

text_content = """
2024年3月14日,Jennifer Lee 被任命为 Acme Innovations Inc. 
(位于日本京都)的新任工程副总裁。她将接替 David Miller 的工作。
"""

# 请求 Gemini 生成结构化数据
response = client.models.generate_content(
    model='gemini-2.5-flash',
    contents=text_content,
    config=types.GenerateContentConfig(
        system_instruction="提取文本中所有的人物、组织机构、地点和日期。",
        response_mime_type="application/json",
        response_schema=EntityExtraction,
    ),
)

# 解析并打印干净的 JSON 结果
entities = json.loads(response.text)
print(json.dumps(entities, indent=2))

输出结果:

{
  "people": ["Jennifer Lee", "David Miller"],
  "organizations": ["Acme Innovations Inc."],
  "locations": ["Kyoto", "Japan"],
  "dates": ["March 14, 2024"]
}

结论

命名实体识别已经从静态的词典查表转变为由 AI 驱动的动态语义提取。如今,企业无需任何训练数据,即可从各种杂乱的文档中提取复杂的特定领域实体。通过将基于 AI 的 NER 引入您的工作流程,您可以将非结构化文本文件快速转换为结构化数据库条目,从而将自动化和商业智能提升到全新的高度。


在 Ghaznix 博客上探索更多人工智能见解 →