惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
量子位
人人都是产品经理
人人都是产品经理
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - Franky
Recent Announcements
Recent Announcements
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
N
Netflix TechBlog - Medium
H
Help Net Security
博客园 - 三生石上(FineUI控件)
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
The Cloudflare Blog
S
SegmentFault 最新的问题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
Vercel News
Vercel News

博客园 - 立体风

autohotkey2.0 Send keys参数分析 autohotkey2.0 盲从模式 windows 10 下 vscode 编写编译一个 nana c++ 库的示例程序 vscode 插件 cmake-tools 输出内容解读 Claude Code 处理中文乱码问题 python 启动器命令 py 答惑 windows 下 python 3.11 的版本问题 pip 安装 老版本 pytorch 的一个容易迷惑的错误 Sentence Transformers 介绍 Jina Reranker 替代方案:改用 ModelScope 模型 Webnovel Writer 6.2.1 项目分析 windows 10 LTSC 版 安装 Terminal autohotkey2.0 脚本运行机制 windows wsl2 安装 gentoo 的步骤 windows 10 LTSC版 打开 wsl2 autohotkey 提示词 编译安装最新版 perl rust 做到“快并且安全” 的逻辑思路 rust 和 go 语言的核心目的 用 vim 查看文件的格式和编码 throughput 和 efficient 词义 python 以字符数量分割文档 (三) python 以字符数量分割文档 (二) python 以字符数量分割文档 (一) GNU Bash 参考手册(中文版)(六) GNU Bash 参考手册(中文版)(五) GNU Bash 参考手册(中文版)(四) GNU Bash 参考手册(中文版)(三) GNU Bash 参考手册(中文版)(二) GNU Bash 参考手册(中文版)(一)
sentence transformer 例子及说明
立体风 · 2026-08-22 · via 博客园 - 立体风

例子

Retrfrom sentence_transformers import SentenceTransformer

# 1. Load a pretrained Sentence Transformer model
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")

# The sentences to encode
sentences = [
    "The weather is lovely today.",
    "It's so sunny outside!",
    "He drove to the stadium.",
]

# 2. Calculate embeddings by calling model.encode()
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]

# 3. Calculate the embedding similarities
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.6660, 0.1046],
#         [0.6660, 1.0000, 0.1411],
#         [0.1046, 0.1411, 1.0000]])

解读语法及说明用途

这段代码展示了使用 sentence-transformers 库进行文本向量化(Embedding)和计算句子相似度的经典标准流程。

以下是针对代码中每一行和各语法模块的详细解读:


1. 模块导入与模型实例化

from sentence_transformers import SentenceTransformer

  • 语法要点from ... import ... 语法,从第三方库 sentence_transformers 中导入核心类 SentenceTransformer
# 1. Load a pretrained Sentence Transformer model
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")

  • 语法要点:类的实例化(Instantiation)
  • 含义:调用构造函数创建了一个 model 对象,传入的参数是 Hugging Face 上的预训练模型名称。如果是首次运行,库会自动从云端下载该模型的权重和分词器并在本地缓存。

2. 数据定义与特征编码

# The sentences to encode
sentences = [
    "The weather is lovely today.",
    "It's so sunny outside!",
    "He drove to the stadium.",
]

  • 语法要点:定义了一个标准的 Python 列表(List),包含 3 个字符串元素。
# 2. Calculate embeddings by calling model.encode()
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]

  • 语法要点

  • model.encode(sentences):调用实例方法 encode,接收字符串列表进行批量推理。

  • embeddings.shape:访问输出对象的 shape 属性(默认返回 NumPy 数组或 PyTorch 张量的维度元组)。

  • 结果含义(3, 384) 表示编码生成了一个二维矩阵——3 行(对应输入的 3 个句子),每行有 384 个数值(该特定模型输出的稠密向量维度为 384 维)。


3. 相似度计算与矩阵输出

# 3. Calculate the embedding similarities
similarities = model.similarity(embeddings, embeddings)
print(similarities)

  • 语法要点

  • model.similarity(a, b):Sentence Transformers 内置的方法,用于计算两组向量之间的余弦相似度(Cosine Similarity)

  • 传入 (embeddings, embeddings) 表示让这 3 个句子的向量与自身做全量两两比对(Self-similarity)

  • 结果分析

# tensor([[1.0000, 0.6660, 0.1046],
#         [0.6660, 1.0000, 0.1411],
#         [0.1046, 0.1411, 1.0000]])

  • 输出为一个 \(3 \times 3\) 的对称张量(Tensor):
  • 对角线值(1.0000):句子与自身的相似度,完全一致。
  • 第 1 句与第 2 句(0.6660):“天气很好”与“外面阳光明媚”,语义相近,得分较高。
  • 第 1 句与第 3 句(0.1046):“天气很好”与“他开车去体育场”,语义无关,得分接近于 0。