from sentence_transformers import SentenceTransformer model = SentenceTransformer('sentence-transformers/paraphrase-multilingual-mpnet-
时间: 2025-07-11 09:26:52 浏览: 3
### 如何在Python中使用SentenceTransformer加载`paraphrase-multilingual-mpnet`模型
为了正确加载并使用 `SentenceTransformer` 中的 `paraphrase-multilingual-mpnet` 模型,需先安装必要的库,并按照以下方法实现。以下是完整的解决方案:
#### 安装依赖项
首先需要确保已安装 `sentence-transformers` 和其他必要库:
```bash
pip install sentence-transformers torch transformers
```
#### 加载模型
通过 `SentenceTransformer` 类来加载指定的预训练模型 `paraphrase-multilingual-mpnet-base-v2`[^1]。
```python
from sentence_transformers import SentenceTransformer
model_name = "paraphrase-multilingual-mpnet-base-v2"
model = SentenceTransformer(model_name)
```
上述代码片段会下载并缓存模型文件至本地目录以便后续调用。
#### 获取句子嵌入向量
定义一个函数用于计算给定文本的句向量表示形式。此过程涉及分词器编码输入数据以及无梯度上下文中执行前向传播操作以获取隐藏状态平均值作为最终特征表达。
```python
import torch.nn.functional as F
import torch
def mean_pooling(model_output):
return torch.mean(model_output["last_hidden_state"], dim=1)
def get_sentence_embedding(text):
encoded_input = model.tokenizer(text, return_tensors="pt", padding=True, truncation=True)
with torch.no_grad():
model_output = model(**encoded_input)
sentence_embeddings = mean_pooling(model_output)
normalized_embeddings = F.normalize(sentence_embeddings, p=2, dim=1)
return normalized_embeddings
embedding = get_sentence_embedding("今天天气很好")
print(embedding[0][:5])
```
以上脚本展示了如何利用自定义池化策略生成标准化后的句子嵌入向量。注意这里我们还加入了填充(padding)和截断(truncation),使得不同长度的句子能够被统一处理成固定大小张量供下游任务消费[^3]。
#### 计算相似度分数
如果希望评估两句话之间的语义相近程度,则可以通过余弦距离衡量它们对应向量间的夹角关系得出结论:
```python
text_1 = "今天的阳光非常灿烂"
text_2 = "天空湛蓝,万里无云"
emb1 = get_sentence_embedding(text_1)
emb2 = get_sentence_embedding(text_2)
cosine_similarity = torch.dot(emb1.squeeze(), emb2.squeeze())
print(f"Cosine Similarity Score: {cosine_similarity.item()}")
```
这段程序打印出了两个中文短语间基于BERT变体所提取表征空间位置角度差别的量化指标。
---
###
阅读全文
相关推荐

















