命名实体识别:完整实现指南
使用LLM和spaCy构建生产级NER系统
命名实体识别:完整实现指南
使用LLM和spaCy构建生产级NER系统
LLM 实体识别(NER)完整实现(2026):提示词定义实体即用,免训练数据。关键设计:精确子串规则+text.find() 验证一招同时杀幻觉实体和找回字符偏移、闭集类型表、mini 档模型+few-shot。含归一化/实体链接分层与按类型评估。
使用LLM实现命名实体识别:完整实现指南
NER——从文本中提取人物、组织、地点、日期、金额——过去意味着为每个实体模式训练一个spaCy/BERT模型。LLM改变了构建方式:在提示词中定义实体,立即获得结构化提取结果,无需训练数据。 本指南实现了生产级LLM-NER,涵盖了经典模型仍然胜出的场景,以及无论哪种方式你都需要进行的评估。
LLM-NER vs 经典NER:真正的权衡
经验法则:LLM适用于自定义模式、低/中等规模、快速迭代;经典模型适用于标准实体的大规模处理或需要精确字符跨度时(高亮、遮盖叠加)。下面的混合方案涵盖了其余情况。
生产实现
python
import json
from openai import OpenAIclient = OpenAI()
NER_PROMPT = '''从文本中提取实体。返回JSON:
{"entities": [{"text": "<来自输入的精确子串>",
"type": "PERSON" | "ORG" | "LOCATION" | "DATE" | "MONEY" | "PRODUCT",
"context": "<周围5个词的片段>"}]}
规则:
"text"必须从输入中完全复制(相同大小写/空格)。
仅限列出的类型。不要解释:直接提取"next Tuesday",不要解析它。
如果没有,返回空列表。仅JSON。 文本:{input}'''
def extract_entities(text: str) -> list[dict]:
resp = client.chat.completions.create(
model='gpt-4o-mini', # NER是mini级别的工作
response_format={'type': 'json_object'},
messages=[{'role': 'user', 'content': NER_PROMPT.replace('{input}', text)}],
)
ents = json.loads(resp.choices[0].message.content)['entities']
# 使LLM-NER值得信赖的验证步骤:
verified = []
for e in ents:
idx = text.find(e['text'])
if idx >= 0: # 精确匹配定位
verified.append({**e, 'start': idx, 'end': idx + len(e['text'])})
return verified
关键设计选择:
text.find() 验证——这一招彻底消灭了幻觉实体类(任何不在输入中的内容都会被丢弃)*并且*恢复了字符偏移,一举解决了LLM-NER的两个经典弱点。(与合同分析和OCR验证中相同的字符串定位技巧。)超越提取:链接与归一化
真正的流水线很少止步于跨度:
评估(不可省略,2小时)
标注100份代表性文档(你的真实数据,包括那些难处理的)。按实体类型计算精确率和召回率——而不是整体(聚合指标会掩盖"MONEY是99%,PRODUCT是60%")。每次修改提示词或模型后重新运行(评估规范)。典型发现:标准类型在验证步骤后精确率达到90%以上;自定义类型初始较低,通过few-shot示例得到改善。
常见问题
GLiNER风格的紧凑型零样本NER模型? 一个真正不错的中间选项:像LLM一样零样本自定义类型,像经典模型一样本地/低成本运行——当数据量增长但模式不断变化时,值得进行基准测试。
多语言? LLM-NER可以在一个提示词中处理主要语言——用你的评估集验证精确子串规则在每个语言的标记化特性下是否仍然有效。
PII脱敏用例? 本流水线 + 偏移量 = 脱敏;对于合规级别的PII,请与专用检测器(Presidio)配合使用——两个独立系统之间的不一致是有益的(隐私模式)。
*最后更新:2026年6月。*
相关工具
相关教程
OpenAI API 模式中的成本与吞吐量权衡——跨 openai 和 python 的批处理对比
LangChain与LlamaIndex构建检索增强生成应用的诚实技术对比,含基准测试、用例及迁移指南
使用现代 Python AI 栈构建生产级 AI 应用
通过 LlamaIndex 摄取管道和查询引擎将 LLM 连接到您的文档
使用 vLLM 构建生产级 AI——PagedAttention 实现 GPU 推理
使用 Dify 构建生产级 AI——开源 LLM 工作流平台