BIO 标签(BIO Tagging) 是自然语言处理(NLP)中用于 序列标注任务(Sequence Labeling) 的一种经典标注方案,主要用于 命名实体识别(NER) 、词性标注(POS) 、分块(Chunking) 等任务。
它的核心思想是:用三个标签(B, I, O)来标记每个 token 在序列中的角色,从而识别出连续的"片段"(span)。
🔤 一、BIO 标签含义
| 标签 | 全称 | 含义 | 示例 |
|---|---|---|---|
| B-XXX | Begin-XXX | 当前 token 是 XXX 类型片段的开始 | B-PER(人名开始) |
| I-XXX | Inside-XXX | 当前 token 是 XXX 类型片段的内部(非开始) | I-PER(人名中间) |
| O | Outside | 当前 token 不属于任何目标片段 | O(普通词) |
✅ 关键规则:
- 每个片段必须以
B-XXX开头;I-XXX必须紧跟在B-XXX或I-XXX之后;- 不同类型的片段不能重叠。
🌰 二、完整示例:命名实体识别(NER)
输入句子:
马云 创立 了 阿里巴巴 集团 。
BIO 标注(识别 PER=人名, ORG=组织名):
| Token | 标签 | 说明 |
|---|---|---|
| 马云 | B-PER | 人名开始 |
| 创立 | O | 普通动词 |
| 了 | O | 助词 |
| 阿里巴巴 | B-ORG | 组织名开始 |
| 集团 | I-ORG | 组织名内部(与"阿里巴巴"同属一个组织) |
| 。 | O | 标点符号 |
✅ 提取结果:
- 人名:
马云 - 组织名:
阿里巴巴集团
🧩 三、为什么需要 B-I-O?------ 解决边界问题
❌ 如果只用两类标签(如 PER / 非PER):
马云 → PER
阿里巴巴 → ORG
集团 → ORG
→ 无法区分 "阿里巴巴" 和 "集团" 是两个独立组织 ,还是 同一个组织"阿里巴巴集团"。
✅ BIO 标签明确边界:
B-ORG+I-ORG= 一个连续片段;B-ORG+B-ORG= 两个独立片段。
对比例子:
| 句子 | 标注 | 含义 |
|---|---|---|
| 华为 技术 | B-ORG, I-ORG |
一个组织:"华为技术" |
| 华为 苹果 | B-ORG, B-ORG |
两个组织:"华为"、"苹果" |
📊 四、BIO 的变体
1. BIOES(更精细)
| 标签 | 含义 |
|---|---|
| B-XXX | 片段开始 |
| I-XXX | 片段内部 |
| O | 外部 |
| E-XXX | 片段结束 |
| S-XXX | 单字片段(Single) |
示例:
周 星 驰 → B-PER, I-PER, E-PER
李 → S-PER
✅ 优势:更精确控制边界,提升模型性能。
2. BMES(用于中文分词)
- B egin, M iddle, E nd, Single
- 专为中文无空格分词设计。
🤖 五、在 Transformer 模型中如何使用 BIO?
模型结构(以 BERT 为例):

训练目标:
- 损失函数 :token-level 交叉熵
L=−∑i=1nlogP(yi∣x;θ) \mathcal{L} = -\sum_{i=1}^{n} \log P(y_i | x; \theta) L=−i=1∑nlogP(yi∣x;θ)- yiy_iyi:第 iii 个 token 的真实 BIO 标签;
- xxx:输入句子。
推理时:
- 模型输出每个 token 的标签概率;
- 后处理:过滤非法序列(如
I-PER前无B-PER)。
⚠️ 六、常见问题与注意事项
❓ Q1: 为什么不用 B-XXX 直接表示整个片段?
A:因为 NLP 模型是 token-level 预测,必须为每个 token 分配标签。
❓ Q2: 能否用数字代替 BIO(如 0,1,2)?
A:可以,但 BIO 语义更清晰,且便于后处理(如正则过滤)。
❓ Q3: 如何处理嵌套实体(如"马云"是"阿里巴巴集团"的 CEO)?
A:BIO 不支持嵌套!需用其他方案:
- 多层标注(每层一个 BIO 序列);
- Span-based 模型(直接预测 (start, end) 位置);
- Graph-based 模型。
✅ 七、总结
| 关键点 | 说明 |
|---|---|
| 目的 | 标记序列中连续片段的边界 |
| 核心标签 | B-XXX(开始), I-XXX(内部), O(外部) |
| 典型应用 | 命名实体识别(NER)、分块、分词 |
| 优势 | 简单、高效、明确边界 |
| 局限 | 不支持嵌套实体 |
💡 记住口诀 :
"B 开头,I 跟随,O 是路人甲。"
掌握 BIO 标注,你就拥有了打开 NLP 序列标注任务大门的钥匙!🔑