一句话定义:命名实体识别(Named Entity Recognition,简称 NER)是让计算机从一段文字里自动找出人名、地名、机构名、时间、金额这类"实指片段",并给每个片段贴上类别标签。
先看一个具体例子
给机器一句话:"张三上周五从北京飞到上海,去腾讯总部开会。"
NER 的输出大致是:
- 张三 → 人物
- 上周五 → 时间
- 北京 → 地点
- 上海 → 地点
- 腾讯 → 组织机构
打个比方
可以把它想成读一封手写信时,用荧光笔把"谁、哪天、在哪、多少钱、哪家公司"划出来。人做这件事靠语感,看到"张"字后面跟单字名,多半是人;看到"省""市""路"结尾,多半是地名。机器做的是同一件事,只不过把"语感"换成了统计规律和上下文线索。
早期的做法很直白:查词典加正则表达式,城市名有清单,日期有固定写法。但人的写法太多变,"下周三之前""上个月底"很难穷举,于是主流转向序列标注:把每个字或词标成 B-PER(人名开头)、I-PER(人名中间)、O(非实体)这样的标签,前后字互相影响,用序列模型来建模。再往后是把整句上下文交给预训练语言模型来打标签,泛化能力更好,但对标注数据的依赖也更强。
和相邻概念的区别
| 概念 | 关心什么 | 例子输出 |
|---|---|---|
| 分词 | 边界切在哪 | 张三 / 上周五 / 北京 |
| 词性标注 | 语法角色 | 张三 = 名词 |
| 命名实体识别 | 是不是实体、属于哪一类 | 张三 = 人物,北京 = 地点 |
| 关系抽取 | 实体之间是什么关系 | 张三 — 任职于 — 腾讯 |
分词只管切开,不管语义;词性标注标的是语法属性;关系抽取是 NER 的下一步,先有实体,才谈得上判断两者关系。NER 通常是信息抽取和知识图谱构建的第一道工序,节点原料就来自它。
对普通人和从业者意味着什么
普通人其实每天都在用:搜索框能分清"苹果手机"和"苹果产地",输入法能记住你常提的人名,语音助手听懂"明天下午三点提醒我",简历筛选、合同审阅、发票报销、客服工单自动打标签——底层都有 NER 在跑。
对从业者,几个坑值得提前知道:
- 领域迁移差。新闻语料上训出来的模型,换到病历、判决书、工业设备日志上常常掉得厉害。
- 边界和嵌套。"北京大学人民医院"既是机构名,里面又套着地名,标到哪一层需要先定规范。
- 歧义与长尾。"苹果"是公司还是水果,"小米"是粮食还是品牌,只能靠上下文判断。
- 标注规范先行。"有限公司"这几个字标不标进机构名,这种细节不统一,模型训练和人工评估都会乱。
评估时通常同时看精确率、召回率和 F1(Precision / Recall / F1)。业务上更关键的是想清楚:漏掉一个实体和标错一个实体,哪个代价更大。具体工具选型和接口细节,以官方页面为准。
