🚀 semantic_xlmr
这是一个句子转换器(sentence-transformers)模型,它能将句子和段落映射到一个768维的密集向量空间,可用于聚类或语义搜索等任务。
🚀 快速开始
本模型可用于语义相似度计算、聚类和语义搜索等任务。如果你安装了sentence-transformers,使用该模型会非常方便。
✨ 主要特性
- 多语言支持:该模型为多语言模型,尤其针对孟加拉语进行了微调。
- 知识蒸馏微调:采用多语言知识蒸馏方法进行微调,以
paraphrase-distilroberta-base-v2
为教师模型,xlm-roberta-large
为学生模型。
- 广泛应用场景:可用于语义相似度计算、聚类、语义搜索、文档检索、信息检索、推荐系统、聊天机器人系统和常见问题解答系统等。
📦 安装指南
若要使用该模型,你需要安装sentence-transformers
库:
pip install -U sentence-transformers
💻 使用示例
基础用法
使用sentence-transformers
库调用模型:
from sentence_transformers import SentenceTransformer
sentences = ["I sing in bengali", "আমি বাংলায় গান গাই"]
model = SentenceTransformer('headlesstech/semantic_xlmr')
embeddings = model.encode(sentences)
print(embeddings)
高级用法
若未安装sentence-transformers
库,可使用HuggingFace Transformers库调用模型:
from transformers import AutoTokenizer, AutoModel
import torch
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0]
input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
sentences = ["I sing in bengali", "আমি বাংলায় গান গাই"]
tokenizer = AutoTokenizer.from_pretrained('headlesstech/semantic_xlmr')
model = AutoModel.from_pretrained('headlesstech/semantic_xlmr')
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
model_output = model(**encoded_input)
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Sentence embeddings:")
print(sentence_embeddings)
📚 详细文档
模型详情
属性 |
详情 |
模型名称 |
semantic_xlmr |
模型版本 |
1.0 |
模型架构 |
句子转换器(Sentence Transformer) |
支持语言 |
多语言(针对孟加拉语进行微调) |
训练方法
该模型采用多语言知识蒸馏方法进行微调,以paraphrase-distilroberta-base-v2
为教师模型,xlm-roberta-large
为学生模型。

预期用途
- 主要用例:语义相似度计算、聚类和语义搜索。
- 潜在用例:文档检索、信息检索、推荐系统、聊天机器人系统和常见问题解答系统。
完整模型架构
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: XLMRobertaModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False})
)