3. 产业链实体识别:实体定义与NER技术

好,咱们进入第三章。这一章聊的是产业链建模里最基础、也最磨人的一步——实体识别。

说白了,你得先知道产业链里到底有哪些“东西”。企业、产品、原材料,这三类是最核心的实体。我刚开始做产业链分析时,以为这不就是抽几个关键词嘛。结果一上手才发现,光“产品”和“原材料”的边界就能吵半天。

3.1 实体定义:企业、产品、原材料

先给个明确的定义,不然后面建模全是糊涂账。

实体类型 定义 举例
企业 从事生产、流通或服务的独立法人 宁德时代、特斯拉、巴斯夫
产品 企业生产的、可交易的最终或中间物品 磷酸铁锂电池、Model Y、聚丙烯
原材料 用于生产产品的初级或次级物料 锂矿、镍、玉米、铁矿石

这里有个坑,我踩过好几次。比如“锂电池”算产品还是原材料?

我的经验是:看它在当前产业链中的位置。对电池厂来说,锂电池是产品;对整车厂来说,它就是原材料。所以实体定义不能死板,得结合上下文。

核心原则:实体类型是相对的,取决于你在产业链的哪个环节看它。

3.2 命名实体识别(NER)技术

定义清楚了,接下来就是怎么从文本里把这些实体捞出来。这就是NER的活儿。

NER,全称Named Entity Recognition。我习惯把它分成三步:

  1. 边界识别——这个词从哪开始、到哪结束
  2. 类型分类——它是企业、产品还是原材料
  3. 消歧——同名不同义的情况处理

举个例子,文本里出现“苹果”。

  • 如果是“苹果公司发布了新手机”,那“苹果”是企业
  • 如果是“苹果的价格上涨了”,那“苹果”是原材料(农产品)

你看,同一个词,上下文不同,实体类型完全不同。这就是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技术 边界识别 类型分类 消歧 方法对比 基于规则 基于模型

嗯,这张图把实体定义、NER技术、方法对比串起来了。你顺着箭头看,就是一套完整的识别流程。

3.6 避坑指南

最后,分享几个我踩过的坑:

  • 别把实体类型定死——同一个词在不同上下文里类型会变,留好扩展接口
  • 规则别写太细——我见过有人写了3000条规则,最后自己都维护不了。够用就行
  • 模型别盲目上——数据量不够时,模型效果还不如规则。先跑基线
  • 别忘了消歧——同名实体是产业链NER里最大的坑,没有之一

一句话总结:实体识别是产业链建模的“地基”。地基没打好,后面所有分析都是空中楼阁。

专注资料整理