当前位置: 首页 > java >正文

tokenizer.encode_plus,BERT类模型 和 Sentence-BERT 他们之间的区别与联系

🌱 一句话总结

  • tokenizer.encode_plus:是预处理器,把句子变成模型能读的数字。
  • BERT 类模型:是语义理解机器,输入这些数字,输出每个词或整句话的“理解结果”(向量)。
  • Sentence-BERT(SBERT):是用 BERT 改造的句子级向量提取器,能把整句话变成一个语义向量,适合“语义相似度”“检索”类任务。

🧱 分别是什么?怎么联系在一起的?

工具是什么输入输出用来干嘛
tokenizer.encode_plus把文字 → 编码(token id)+ 掩码(mask)文本句子input_ids, attention_mask给模型准备输入
BERT语言模型本体(不懂语义→懂语义)编码后的 input_ids + attention_mask每个 token 的向量常用于分类、NER、问答等
Sentence-BERT用 BERT 改造的“句子向量”模型原始句子一个句子向量(通常是768维或384维)相似度计算、语义检索、聚类

📌 联系流程示意图(简化版):

一般 BERT 流程:
tokens = tokenizer.encode_plus("我喜欢吃苹果")
outputs = model(**tokens)
print(outputs.last_hidden_state.shape)  # [1, seq_len, 768]

➤ 输出的是每个词的向量(比如“我”、“喜欢”、“吃”、“苹果”都有一个向量)


Sentence-BERT 流程:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")sentence_vec = model.encode("我喜欢吃苹果")
print(sentence_vec.shape)  # (384,)

➤ 输出的是整句话的语义向量


🍎 举个例子

任务:找“我想吃水果”和“我喜欢苹果”是不是一个意思?

如果你用 BERT:

  • 你要写很多额外代码来对比两个句子向量(比如平均池化、CLS提取、再计算余弦相似度)
  • 不方便、不准

如果你用 Sentence-BERT:

  • 直接两个 .encode() 出句子向量
  • 然后 .cosine_similarity(vec1, vec2) 就能判断相似度
  • 高效、准确!

✅ 总结对比:

方面tokenizer.encode_plusBERTSentence-BERT
类型预处理器模型架构特化模型
输出Token id + mask每个 token 的向量整句的向量
用途模型输入准备分类/问答/NER等相似度/检索/聚类
是否理解整句语义部分✅ 强化了整句理解
http://www.xdnf.cn/news/5418.html

相关文章:

  • 数据结构练习:顺序表题目
  • terraform云上实战(一):执行阿里云云助手命令
  • C++ string初始化、string赋值操作、string拼接操作
  • Celery 在分布式任务调度中的实现原理及 MQ 系统对比
  • GIF图像技术介绍
  • 隐马尔可夫模型(HMM)在彩票预测中的Java实现
  • OpenCV进阶操作:指纹验证、识别
  • 复现MAET的环境问题(自用)
  • Javascript基础语法
  • 【STM32开发】-单片机开发基础(以STM32F407为例)
  • SEO长尾关键词布局优化法则
  • 虚拟内存笔记(三)虚拟内存替换策略与机制
  • 前端项目打包部署流程j
  • 北大闰凯博士:热辐射输运问题蒙特卡罗模拟中的全局最优参考场方法
  • HTOL集成电路老化测试学习总结-20250510
  • Linux : 多线程【线程概念】
  • ssh -T git@github.com 测试失败解决方案:修改hosts文件
  • 计算机基础
  • 深入了解linux系统—— 自定义shell
  • 24、TypeScript:预言家之书——React 19 类型系统
  • MYSQL语句,索引,视图,存储过程,触发器(一)
  • 用 LVGL 打造苹果风格音量滑块:圆润无球,极简优雅
  • TCP/IP 模型每层的封装格式
  • C++ stl中的set、multiset、map、multimap的相关函数用法
  • SQL语句的优化
  • 学习和测试WebApi项目限制客户端ip访问接口(基于中间件)
  • Python httpx库终极指南
  • 端口号被占用怎么解决
  • 《Effective Python》第1章 Pythonic 思维详解——深入理解 Python 条件表达式(Conditional Expressions)
  • JAVA EE_网络原理_网络层