【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 喂给 sklearnLogisticRegression

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

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

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


🏷 标签

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

相关推荐
美酒没故事°21 小时前
Open WebUI安装指南。搭建自己的自托管 AI 平台
人工智能·windows·ai
云烟成雨TD21 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
Csvn21 小时前
🌟 LangChain 30 天保姆级教程 · Day 13|OutputParser 进阶!让 AI 输出自动转为结构化对象,并支持自动重试!
python·langchain
AI攻城狮21 小时前
用 Obsidian CLI + LLM 构建本地 RAG:让你的笔记真正「活」起来
人工智能·云原生·aigc
鸿乃江边鸟21 小时前
Nanobot 从onboard启动命令来看个人助理Agent的实现
人工智能·ai
lpfasd1231 天前
基于Cloudflare生态的应用部署与开发全解
人工智能·agent·cloudflare
俞凡1 天前
DevOps 2.0:智能体如何接管故障修复和基础设施维护
人工智能
comedate1 天前
[OpenClaw] GLM 5 关于电影 - 人工智能 - 的思考
人工智能·电影评价
财迅通Ai1 天前
6000万吨产能承压 卫星化学迎来战略窗口期
大数据·人工智能·物联网·卫星化学
liliangcsdn1 天前
Agent Memory智能体记忆系统的示例分析
数据库·人工智能·全文检索