3. 产业链实体识别:实体定义与NER技术
好,咱们进入第三章。这一章聊的是产业链建模里最基础、也最磨人的一步——实体识别。
说白了,你得先知道产业链里到底有哪些“东西”。企业、产品、原材料,这三类是最核心的实体。我刚开始做产业链分析时,以为这不就是抽几个关键词嘛。结果一上手才发现,光“产品”和“原材料”的边界就能吵半天。
3.1 实体定义:企业、产品、原材料
先给个明确的定义,不然后面建模全是糊涂账。
| 实体类型 | 定义 | 举例 |
|---|---|---|
| 企业 | 从事生产、流通或服务的独立法人 | 宁德时代、特斯拉、巴斯夫 |
| 产品 | 企业生产的、可交易的最终或中间物品 | 磷酸铁锂电池、Model Y、聚丙烯 |
| 原材料 | 用于生产产品的初级或次级物料 | 锂矿、镍、玉米、铁矿石 |
这里有个坑,我踩过好几次。比如“锂电池”算产品还是原材料?
我的经验是:看它在当前产业链中的位置。对电池厂来说,锂电池是产品;对整车厂来说,它就是原材料。所以实体定义不能死板,得结合上下文。
核心原则:实体类型是相对的,取决于你在产业链的哪个环节看它。
3.2 命名实体识别(NER)技术
定义清楚了,接下来就是怎么从文本里把这些实体捞出来。这就是NER的活儿。
NER,全称Named Entity Recognition。我习惯把它分成三步:
- 边界识别——这个词从哪开始、到哪结束
- 类型分类——它是企业、产品还是原材料
- 消歧——同名不同义的情况处理
举个例子,文本里出现“苹果”。
- 如果是“苹果公司发布了新手机”,那“苹果”是企业
- 如果是“苹果的价格上涨了”,那“苹果”是原材料(农产品)
你看,同一个词,上下文不同,实体类型完全不同。这就是NER的难点。
3.3 基于规则 vs 基于模型的方法
做NER,主流就两条路:规则驱动和模型驱动。我两种都用过,各有各的脾气。
3.3.1 基于规则的方法
规则法,说白了就是写一堆正则表达式和词典。
# 一个简单的规则示例
import re
def extract_company(text):
# 匹配“XX有限公司”、“XX集团”等模式
pattern = r'[\u4e00-\u9fa5]+(有限公司|集团|股份|有限合伙)'
return re.findall(pattern, text)
优点:
- 速度快,不用训练
- 可解释性强,出错了能直接改规则
- 对特定领域(比如化工、医药)很精准
缺点:
- 维护成本高,规则多了就是一团乱麻
- 泛化能力差,换个领域规则基本废掉
我的经验:规则法适合做“冷启动”。我刚接手一个新材料产业链项目时,先写了200条规则,两天就上线了。虽然召回率只有60%,但够用了。
3.3.2 基于模型的方法
模型法,主流是BiLSTM-CRF或者BERT系列。
# 伪代码示意:BERT + CRF
from transformers import BertTokenizer, BertForTokenClassification
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
model = BertForTokenClassification.from_pretrained(
'bert-base-chinese',
num_labels=5 # 实体类型数
)
优点:
- 泛化能力强,见过类似模式就能识别
- 准确率高,尤其是BERT出来后,F1值轻松上90%
缺点:
- 需要大量标注数据
- 训练和推理成本高
- 黑盒,出错了不好排查
注意:我曾经在一个项目里直接上BERT,结果标注数据只有500条,模型学了一堆噪声。后来老老实实先用规则兜底,再慢慢迭代模型。别一上来就追求高大上。
3.4 两种方法对比
我整理了一张对比表,你一看就明白:
| 维度 | 基于规则 | 基于模型 |
|---|---|---|
| 开发速度 | 快(几天) | 慢(几周) |
| 准确率 | 中(70-80%) | 高(90%+) |
| 召回率 | 低(50-60%) | 高(85%+) |
| 维护成本 | 高(规则膨胀) | 低(重训即可) |
| 可解释性 | 强 | 弱 |
| 适用场景 | 小规模、领域固定 | 大规模、多领域 |
我个人习惯的做法是:规则打底,模型精调。先用规则快速覆盖常见实体,保证不出大错;然后用模型去补漏,提升召回率。
3.5 知识体系图
下面这张图,把本章的核心逻辑串起来了:
嗯,这张图把实体定义、NER技术、方法对比串起来了。你顺着箭头看,就是一套完整的识别流程。
3.6 避坑指南
最后,分享几个我踩过的坑:
- 别把实体类型定死——同一个词在不同上下文里类型会变,留好扩展接口
- 规则别写太细——我见过有人写了3000条规则,最后自己都维护不了。够用就行
- 模型别盲目上——数据量不够时,模型效果还不如规则。先跑基线
- 别忘了消歧——同名实体是产业链NER里最大的坑,没有之一
一句话总结:实体识别是产业链建模的“地基”。地基没打好,后面所有分析都是空中楼阁。