bert-base-chinese预训练模型实战手把手教你运行中文语义相似度计算1. 镜像环境准备1.1 镜像启动与验证首先确保你已经成功启动包含bert-base-chinese预训练模型的Docker镜像。启动后可以通过以下命令验证模型文件是否存在ls /root/bert-base-chinese正常情况应该能看到以下文件pytorch_model.bin(模型权重)config.json(模型配置)vocab.txt(中文词表)test.py(演示脚本)1.2 环境依赖检查本镜像已预装所有必要依赖但建议运行前确认Python和PyTorch版本python --version python -c import torch; print(torch.__version__)2. 语义相似度计算原理2.1 BERT如何处理中文语义bert-base-chinese模型通过12层Transformer结构处理中文文本其核心能力包括字级别编码将每个汉字映射为768维向量上下文理解通过自注意力机制捕捉汉字间的语义关系句子级表征[CLS]标记可提取整个句子的语义特征2.2 相似度计算流程计算两个句子语义相似度的典型流程分别对两个句子进行BERT编码提取[CLS]位置的向量作为句子表征计算两个向量的余弦相似度相似度值范围0-1越接近1表示语义越相似3. 实战运行语义相似度计算3.1 使用内置演示脚本镜像已提供完整的语义相似度计算示例执行以下命令即可运行cd /root/bert-base-chinese python test.py脚本会自动计算以下三组句子的相似度今天天气真好 vs 今日阳光明媚深度学习很有趣 vs 机器学习很实用苹果是一种水果 vs 微软是一家科技公司3.2 代码解析以下是test.py中语义相似度计算的核心代码逻辑from transformers import BertTokenizer, BertModel import torch import numpy as np # 加载模型和分词器 tokenizer BertTokenizer.from_pretrained(/root/bert-base-chinese) model BertModel.from_pretrained(/root/bert-base-chinese) def cosine_similarity(vec1, vec2): 计算余弦相似度 return np.dot(vec1, vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2)) def get_sentence_embedding(text): 获取句子的BERT向量表示 inputs tokenizer(text, return_tensorspt) with torch.no_grad(): outputs model(**inputs) return outputs.last_hidden_state[:,0,:].numpy().squeeze() # 示例句子对 sentence_pairs [ (今天天气真好, 今日阳光明媚), (深度学习很有趣, 机器学习很实用), (苹果是一种水果, 微软是一家科技公司) ] # 计算并打印相似度 for sent1, sent2 in sentence_pairs: emb1 get_sentence_embedding(sent1) emb2 get_sentence_embedding(sent2) sim cosine_similarity(emb1, emb2) print(f{sent1} vs {sent2} - 相似度: {sim:.4f})4. 自定义语义相似度计算4.1 修改测试句子要计算其他句子的相似度只需修改test.py中的sentence_pairs列表sentence_pairs [ (华为是中国的科技巨头, 苹果是美国知名科技公司), (我喜欢吃火锅, 麻辣烫是我的最爱), (新冠病毒很危险, COVID-19具有强传染性) ]4.2 批量处理文本文件对于大量文本对可以创建CSV文件批量处理import pandas as pd # 读取CSV文件 (格式: text1,text2) df pd.read_csv(pairs.csv) results [] for _, row in df.iterrows(): emb1 get_sentence_embedding(row[text1]) emb2 get_sentence_embedding(row[text2]) sim cosine_similarity(emb1, emb2) results.append(sim) df[similarity] results df.to_csv(results.csv, indexFalse)5. 常见问题与优化5.1 性能优化建议GPU加速如果有NVIDIA GPU安装对应版本的PyTorch可大幅提升速度pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113批处理同时处理多个句子可提高效率# 批处理示例 texts [句子1, 句子2, 句子3] inputs tokenizer(texts, paddingTrue, truncationTrue, return_tensorspt) with torch.no_grad(): outputs model(**inputs)5.2 常见错误解决内存不足减小max_length或使用更小的batch_sizetokenizer(text, max_length128, truncationTrue)分词异常中文BERT使用字级别分词特殊符号可能需要处理text .join([c for c in text if c in tokenizer.vocab])6. 总结通过本教程你已经掌握了bert-base-chinese镜像的基本使用方法中文语义相似度计算的完整流程如何自定义和扩展相似度计算功能性能优化和问题排查的实用技巧获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。