NLP 任务 - Pipeline 方式 - 特征提取
1 课程概览
本课讲解 Pipeline 方式进行特征提取。特征提取只返回文本处理后的特征,是半成品,需要和其他模型一起用。分为不带任务头输出(半成品)和带头任务头输出(成品)。特征提取属于不带任务头输出。使用 BERT base chinese 模型。
2 核心概念与定义
- 特征提取(Feature Extraction):提取文本的特征信息,半成品。
- 不带任务头输出:半成品,只给原材料(原始特征),适合后续开发新任务。
- 带头任务头输出:成品,直接给结果,适合直接用模型完成指定任务。
3 模型与算法详解
特征提取 vs 文本分类
| 任务 | 类型 | 说明 |
|---|---|---|
| 文本分类 | 带头任务头 | 直接出结果(如五星好评) |
| 特征提取 | 不带任务头 | 半成品,需要和其他模型一起用 |
不带任务头 vs 带头任务头
| 类型 | 说明 | 类比 |
|---|---|---|
| 不带任务头 | 半成品,只给原材料 | 买手机零件自己组装 |
| 带头任务头 | 成品,直接给结果 | 买现成手机能打电话 |
特征提取流程
1. 创建 pipeline(feature-extraction)
2. 输入文本
3. 输出特征(半成品)
4. 结合其他模型使用
模型选择
使用 BERT base chinese 模型。
| 任务 | 模型 |
|---|---|
| 特征提取 | bert-base-chinese |
4 数学原理与推导
特征提取
$$\text{features} = \text{model}.\text{extract}(x)$$
其中:
- $x$ 是输入文本
- $\text{features}$ 是提取的特征
不带任务头
$$\text{output} = \text{features}$$
带头任务头
$$\text{output} = \text{task_head}(\text{features})$$
5 代码示例
from transformers import pipeline
def dm02_feature_extraction():
"""Pipeline 方式:特征提取"""
# 1. 创建 pipeline 对象
# 注意:任务名用中划线(减号)
model_path = "C:/software/softwallg/bert-base-chinese"
extractor = pipeline(
"feature-extraction", # 特征提取任务(用中划线)
model=model_path,
tokenizer=model_path
)
# 2. 输入文本
text = "人生该如何起头"
# 3. 输出特征
features = extractor(text)
print(f"输入文本: {text}")
print(f"特征维度: {len(features[0])} x {len(features[0][0])}")
print(f"特征(前 5 个词的前 5 维):")
for i, word_features in enumerate(features[0][:5]):
print(f" 词 {i}: {word_features[:5]}...")
return extractor
# 测试
if __name__ == "__main__":
print("=== Pipeline 方式:特征提取 ===")
extractor = dm02_feature_extraction()
代码说明
| 代码 | 说明 |
|---|---|
pipeline("feature-extraction", ...) | 创建特征提取 pipeline(用中划线) |
bert-base-chinese | BERT 中文模型 |
extractor(text) | 提取特征 |
6 重难点与易错提醒
- ❗重点:特征提取是半成品,需要和其他模型一起用。
- ❗重点:任务名用中划线(feature-extraction),不是下划线。
- ⚠️易错:不带任务头是半成品,带头任务头是成品。
- 💡深入理解:特征提取类似词嵌入,提取原始特征。
7 课堂问答精选
Q1:特征提取和文本分类有什么区别?
A:文本分类是带头任务头,直接出结果(如五星好评);特征提取是不带任务头,半成品,需要和其他模型一起用。
Q2:什么是不带任务头和带头任务头?
A:不带任务头是半成品,只给原材料(原始特征),适合后续开发新任务;带头任务头是成品,直接给结果,适合直接用模型完成指定任务。
Q3:特征提取使用什么模型?
A:使用 bert-base-chinese 模型。
Q4:任务名用什么符号?
A:用中划线(减号),如 feature-extraction,不是下划线。
8 本课小结
- 特征提取:半成品,需要和其他模型一起用。
- 不带任务头:半成品;带头任务头:成品。
- 使用 bert-base-chinese 模型。
- 任务名用中划线:
feature-extraction。
9 延伸思考
- Pipeline 方式如何进行完形填空?
- 完形填空任务有什么限制?