











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)和计算句子相似度的经典标准流程。
以下是针对代码中每一行和各语法模块的详细解读:
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")
model 对象,传入的参数是 Hugging Face 上的预训练模型名称。如果是首次运行,库会自动从云端下载该模型的权重和分词器并在本地缓存。# 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]
语法要点:
model.encode(sentences):调用实例方法 encode,接收字符串列表进行批量推理。
embeddings.shape:访问输出对象的 shape 属性(默认返回 NumPy 数组或 PyTorch 张量的维度元组)。
结果含义:(3, 384) 表示编码生成了一个二维矩阵——3 行(对应输入的 3 个句子),每行有 384 个数值(该特定模型输出的稠密向量维度为 384 维)。
# 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]])
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。