pipeline_tag: 句子相似度
language:
- 阿拉伯语
- 德语
- 英语
- 西班牙语
- 法语
- 意大利语
- 日语
- 韩语
- 荷兰语
- 波兰语
- 葡萄牙语
- 俄语
- 泰语
- 土耳其语
- 中文
tags:
- bert模型
- 句子嵌入
- 多语言处理
- 谷歌技术
- 句子相似度计算
- LaBSE框架
license: apache-2.0许可证
datasets:
- CommonCrawl语料库
- 维基百科数据
LaBSE模型
模型描述
精简版语言无关BERT句子编码器(LaBSE)是基于BERT架构的模型,通过Ukjae Jeong在论文《按需加载:多语言BERT的精简版本》中描述的技术,从原始LaBSE模型蒸馏而来,支持15种语言(原始支持109种语言)。
使用方式
基础调用示例:
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_samples = [
"dog",
"Puppies are nice.",
"I enjoy taking long walks along the beach with my dog.",
]
english_inputs = tokenizer(english_samples, return_tensors="pt", padding=True)
with torch.no_grad():
english_outputs = model(**english_inputs)
获取句子嵌入向量(使用池化层输出):
english_embeddings = english_outputs.pooler_output
多语言处理示例:
italian_samples = [
"cane",
"I cuccioli sono carini.",
"Mi piace fare lunghe passeggiate lungo la spiaggia con il mio cane.",
]
japanese_samples = ["犬", "子犬はいいです", "私は犬と一緒にビーチを散歩するのが好きです"]
italian_inputs = tokenizer(italian_samples, return_tensors="pt", padding=True)
japanese_inputs = tokenizer(japanese_samples, 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 compute_similarity(emb1, emb2):
norm_emb1 = F.normalize(emb1, p=2)
norm_emb2 = F.normalize(emb2, p=2)
return torch.matmul(norm_emb1, norm_emb2.transpose(0, 1))
print(compute_similarity(english_embeddings, italian_embeddings))
print(compute_similarity(english_embeddings, japanese_embeddings))
print(compute_similarity(italian_embeddings, japanese_embeddings))
技术细节
关于训练数据、评估方法和性能指标等完整信息,请参阅原始论文。
引用信息
@misc{feng2020languageagnostic,
title={语言无关的BERT句子嵌入技术},
author={方晓宇、杨寅飞、Daniel Cer、Naveen Arivazhagan和王伟},
year={2020},
eprint={2007.01852},
archivePrefix={arXiv},
primaryClass={自然语言处理}
}