🚀 LaBSE
LaBSE(Smaller Language-agnostic BERT Sentence Encoder)是一款用于句子相似度计算的多语言模型,支持包括阿拉伯语、德语、英语等在内的15种语言。它基于BERT架构,从原始的LaBSE模型蒸馏而来,可有效进行跨语言句子嵌入和相似度计算。
🚀 快速开始
模型使用
以下是使用该模型的示例代码:
import torch
from transformers import BertModel, BertTokenizerFast
tokenizer = BertTokenizerFast.from_pretrained("setu4993/smaller-LaBSE")
model = BertModel.from_pretrained("setu4993/smaller-LaBSE")
model = model.eval()
english_sentences = [
"dog",
"Puppies are nice.",
"I enjoy taking long walks along the beach with my dog.",
]
english_inputs = tokenizer(english_sentences, return_tensors="pt", padding=True)
with torch.no_grad():
english_outputs = model(**english_inputs)
获取句子嵌入
要获取句子嵌入,可以使用池化层输出:
english_embeddings = english_outputs.pooler_output
其他语言输出示例
以下是意大利语和日语句子的处理示例:
italian_sentences = [
"cane",
"I cuccioli sono carini.",
"Mi piace fare lunghe passeggiate lungo la spiaggia con il mio cane.",
]
japanese_sentences = ["犬", "子犬はいいです", "私は犬と一緒にビーチを散歩するのが好きです"]
italian_inputs = tokenizer(italian_sentences, return_tensors="pt", padding=True)
japanese_inputs = tokenizer(japanese_sentences, return_tensors="pt", padding=True)
with torch.no_grad():
italian_outputs = model(**italian_inputs)
japanese_outputs = model(**japanese_inputs)
italian_embeddings = italian_outputs.pooler_output
japanese_embeddings = japanese_outputs.pooler_output
句子相似度计算
在计算句子相似度之前,建议先进行L2归一化:
import torch.nn.functional as F
def similarity(embeddings_1, embeddings_2):
normalized_embeddings_1 = F.normalize(embeddings_1, p=2)
normalized_embeddings_2 = F.normalize(embeddings_2, p=2)
return torch.matmul(
normalized_embeddings_1, normalized_embeddings_2.transpose(0, 1)
)
print(similarity(english_embeddings, italian_embeddings))
print(similarity(english_embeddings, japanese_embeddings))
print(similarity(italian_embeddings, japanese_embeddings))
✨ 主要特性
- 多语言支持:支持15种语言,包括阿拉伯语、德语、英语、西班牙语、法语等。
- 基于BERT架构:利用BERT的强大能力进行句子编码。
- 模型蒸馏:从原始的LaBSE模型蒸馏而来,减小了模型规模。
📦 模型信息
📚 详细文档
关于数据、训练、评估和性能指标的详细信息,请参考原始论文。
BibTeX引用
@misc{feng2020languageagnostic,
title={Language-agnostic BERT Sentence Embedding},
author={Fangxiaoyu Feng and Yinfei Yang and Daniel Cer and Naveen Arivazhagan and Wei Wang},
year={2020},
eprint={2007.01852},
archivePrefix={arXiv},
primaryClass={cs.CL}
}