【AI总结】Python BERT 向量化入门指南

Python BERT 向量化入门指南


一、流程图一览(30 秒看懂)

否 是 数据准备 是否安装依赖? 安装依赖 加载BERT模型 批量处理文本 向量化文本 输出向量

Tips :照着流程图一步一步敲,零深度学习背景也能跑通!


二、Step-0 环境准备(1 分钟)

bash 复制代码
# 创建虚拟环境(可选,强烈建议)
conda create -n bert_py38 python=3.8 -y
conda activate bert_py38

# 安装依赖(清华镜像加速)
pip install -U transformers torch -i https://pypi.tuna.tsinghua.edu.cn/simple

验证安装:

python 复制代码
import torch, transformers
print(torch.__version__, transformers.__version__)
# 2.1.2 4.40.0

三、Step-1 数据准备(10 秒)

python 复制代码
# 任意中文文本即可
texts = ["你好",
         "今天的天气怎么样", 
         "BERT 是一种很厉害的模型"]

生产环境直接替换成 df['comment'].tolist() 即可,无需分词、去停用词!


四、Step-2 加载 BERT 中文模型(20 秒)

python 复制代码
from transformers import BertTokenizer, BertModel

tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
model = BertModel.from_pretrained('bert-base-chinese')

国内下载慢?

bash 复制代码
export HF_ENDPOINT=https://hf-mirror.com

再跑代码,速度×10!


五、Step-3 批量分词(Attention Mask 一并生成)

python 复制代码
import torch
# padding=True  → 自动补零
# truncation=True → 超长截断
# return_tensors='pt' → 返回 PyTorch 张量
inputs = tokenizer(texts,
                   padding=True,
                   truncation=True,
                   return_tensors='pt')
print(inputs.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask'])
字段 形状 含义
input_ids (batch_size, seq_len) 每个 token 的编号
attention_mask (batch_size, seq_len) 1 表示真 token,0 表示 pad

六、Step-4 向量化(核心 3 行)

python 复制代码
with torch.no_grad():          # 推理模式,节省内存
    outputs = model(**inputs)  # 前向传播
    last_hidden_state = outputs.last_hidden_state  # 所有 token 向量

print(last_hidden_state.shape)  # torch.Size([3, 11, 768])
# 3 条文本,11 是最大长度,768 是向量维度

七、Step-5 提取句向量(拿 CLS token)

BERT 在预训练时把分类任务 的符号 [CLS] 放在句首,它的向量 = 整句语义!

python 复制代码
cls_embeddings = last_hidden_state[:, 0, :]  # 第 0 列就是 [CLS]
print(cls_embeddings.shape)  # torch.Size([3, 768])
print(cls_embeddings)

输出示例:

复制代码
tensor([[-0.2314,  0.1921, ...,  0.1245],
        [-0.2819,  0.2103, ..., -0.0754],
        [-0.2547,  0.1938, ...,  0.0827]])

八、关系图(变量之间到底啥关系?)

graph LR TEXTS -->|tokenizer| INPUT_IDS INPUT_IDS -->|BERT_MODEL| LAST_HIDDEN LAST_HIDDEN -->|切片 [:,0,:]| CLS_EMB

一句话记忆:TEXTS → INPUT_IDS → BERT → 切片 → 句向量


九、一键封装函数(以后直接 import)

python 复制代码
def bert_encode(texts, model, tokenizer):
    inputs = tokenizer(texts, padding=True, truncation=True,
                       return_tensors='pt')
    with torch.no_grad():
        outputs = model(**inputs)
    return outputs.last_hidden_state[:, 0, :]  # [CLS] 向量

# 调用
vec = bert_encode(["明天会下雨吗"], model, tokenizer)
print(vec.shape)  # torch.Size([1, 768])

十、常见报错急救包

报错 原因 解决
CUDA out of memory 批太大 加 device='cpu' 或降 batch
403 Client Error 镜像失效 export HF_ENDPOINT=https://hf-mirror.com
维度看不懂 打印 shape 记住 (batch, seq_len, 768)
中文乱码 Windows 终端 换 VSCode / Jupyter

十一、下一步能干嘛?(进阶路线图)

  1. 相似度 :cosine_similarity(vec1, vec2)
  2. 聚类 :KMeans(n_clusters=10).fit(cls_embeddings)
  3. 检索 :faiss.IndexFlatIP(768) 毫秒级搜百万向量
  4. 分类 :把 cls_embeddings 喂给 sklearn 的 LogisticRegression

十二、总结(一句话记住)

"tokenizer 先分词,BERT 再编码,切片 :,0,: 拿句向量!"

全文代码 ≤ 30 行,复制即可跑通。


🏷 标签

#BERT #向量化 #CLS #transformers #PyTorch #中文 #入门 #保姆级

相关推荐
Dawson Zhu4 分钟前
【CUDA编程入门⑦】HPC算子开发实战:从优化方法论到业务落地
人工智能·语言模型·架构·aigc·agi
深蓝电商API5 分钟前
Playwright+多模态大模型:让AI自己“看”页面并决策
人工智能·爬虫·playwright
水如烟9 分钟前
孤能子视角:数智时代的实-虚-实——AI卡在中间那一环,人站在两个接口上
人工智能
QinHsiu10 分钟前
Prompt已死?猎聘岗位暴涨486%,但67%的岗位已经消失
人工智能
拓恒技术11 分钟前
内河航道无人机智能巡检系统与算法应用
人工智能·深度学习·算法·无人机·智慧城市
昇腾CANN13 分钟前
基于CANNBot PyPTO Pro的DeepSeek-V4.1融合算子Agent生成实践
人工智能·开源·昇腾·cann·cann开源
STQY燊桐启元(深圳)电子科技17 分钟前
5G射频滤波器腔体寄生谐振的吸波抑制方案:从工程痛点 to 材料选型
人工智能·5g·导热片·电磁抑制吸波材料、·导热绝缘
紧跟先前的步伐18 分钟前
Go AI Agent 实战 14|多轮对话与上下文历史管理
人工智能·ai·golang·1024程序员节
肖永威25 分钟前
AI大模型不是答案机:研发场景下的多模型迭代工作流
人工智能·1024程序员节
海盗123425 分钟前
微软技术日报 2026-10-24:CA 私钥是 4,Windows 封了中间证书未动父根
人工智能·机器人·aigc·1024程序员节