Pipeline 方式 - NER 任务
1 课程概览
本课讲解 Pipeline 方式进行 NER(命名实体识别)。NER 是 NLP 中的基础任务,主要用来识别文本中的人名、地名、组织或其他实体。使用 RoBERTa base 模型。实体标记:B(开始)、I(内部)、O(非实体)。
2 核心概念与定义
- NER(Named Entity Recognition):命名实体识别,识别文本中的实体。
- B(Begin):实体的开始。
- I(Inside):实体的内部(中间部分)。
- O(Outside):非实体。
- PER(Person):人名。
- LOC(Location):地名。
- ORG(Organization):组织名。
- MISC:其他实体。
3 模型与算法详解
NER 任务
识别文本中的命名实体。
- 人名(PER)
- 地名(LOC)
- 组织名(ORG)
- 其他实体(MISC)
实体标记
| 标记 | 含义 | 说明 |
|---|---|---|
| B | Begin | 实体的开始 |
| I | Inside | 实体的内部 |
| O | Outside | 非实体 |
标记示例
"王小明在办公室"
| 字 | 标记 | 说明 |
|---|---|---|
| 王 | B-PER | 人名开始 |
| 小 | I-PER | 人名内部 |
| 明 | I-PER | 人名内部 |
| 在 | O | 非实体 |
| 办 | B-LOC | 地名开始 |
| 公 | I-LOC | 地名内部 |
| 室 | I-LOC | 地名内部 |
实体拼接规则
一个 B 跟多个 I,遇到 O 或下一个 B 表示实体结束。
- B 开始一个实体
- 后续的 I 属于同一实体
- 遇到 O 或下一个 B 表示实体结束
- 拼接 B 和 I 得到完整实体
模型选择
使用 RoBERTa base 模型。
| 任务 | 模型 |
|---|---|
| NER | roberta-base |
NER 流程
1. 创建 pipeline 对象(ner)
2. 输入文本
3. 输出实体识别结果
4 数学原理与推导
NER
$$\text{tags} = \text{model}(\text{text})$$
其中:
- $\text{text}$ 是输入文本
- $\text{tags}$ 是每个字的标签序列
实体识别
$$\text{entity} = \text{concat}(B, I_1, I_2, ..., I_n)$$
其中:
- $B$ 是实体开始
- $I_1, I_2, ..., I_n$ 是实体内部
5 代码示例
from transformers import pipeline
def dm06_ner():
"""Pipeline 方式:NER 任务"""
# 1. 创建 pipeline 对象
model_path = "C:/software/softwallg/pretrained_model/roberta-base"
my_model = pipeline(
"ner", # NER 任务
model=model_path,
tokenizer=model_path
)
# 2. 输入文本
text = "我叫浩哥,我是一名教师,我在北京大学工作"
# 3. 输出实体识别结果
output = my_model(text)
print(f"输入文本: {text}")
print(f"\n实体识别结果:")
for item in output:
print(f" 实体: {item['word']}")
print(f" 标签: {item['entity']}")
print(f" 分数: {item['score']:.4f}")
print("-" * 30)
return my_model
# 测试
if __name__ == "__main__":
print("=== Pipeline 方式:NER 任务 ===")
my_model = dm06_ner()
代码说明
| 代码 | 说明 |
|---|---|
pipeline("ner", ...) | 创建 NER pipeline |
roberta-base | RoBERTa 模型 |
my_model(text) | 识别实体 |
6 重难点与易错提醒
- ❗重点:NER 是命名实体识别,识别文本中的实体。
- ❗重点:实体标记:B(开始)、I(内部)、O(非实体)。
- ❗重点:一个 B 跟多个 I,遇到 O 或下一个 B 表示实体结束。
- ⚠️易错:拼接实体时要注意 B 和 I 的对应关系。
7 课堂问答精选
Q1:NER 任务是什么?
A:NER(Named Entity Recognition)是命名实体识别,识别文本中的人名、地名、组织或其他实体。
Q2:实体标记有哪些?
A:①B(Begin):实体的开始;②I(Inside):实体的内部;③O(Outside):非实体。
Q3:如何拼接实体?
A:一个 B 跟多个 I,遇到 O 或下一个 B 表示实体结束。拼接 B 和 I 得到完整实体。
Q4:NER 使用什么模型?
A:使用 RoBERTa base 模型。
8 本课小结
- NER:命名实体识别,识别文本中的实体。
- 实体标记:B(开始)、I(内部)、O(非实体)。
- 实体类型:PER(人名)、LOC(地名)、ORG(组织)、MISC(其他)。
- 一个 B 跟多个 I,遇到 O 或下一个 B 表示实体结束。
- 使用 RoBERTa base 模型。
9 延伸思考
- 自动模型方式如何使用?
- AutoModel 和 Pipeline 有什么区别?