🚀 俄罗斯语句子相似度模型rubert-tiny2
这是一个基于俄罗斯语的小型BERT编码器,能生成高质量的句子嵌入向量。可用于句子相似度任务,如短文本的KNN分类等。
🚀 快速开始
这是 cointegrated/rubert-tiny 的更新版本。这篇俄语文章 提供了更多详细信息。
与之前版本的不同之处包括:
- 更大的词汇表:从29564个标记增加到83828个;
- 支持更长的序列:从512增加到2048;
- 句子嵌入向量比以前更接近LaBSE;
- 有意义的片段嵌入(在NLI任务上进行了调优)
- 该模型仅专注于俄语。
该模型可以直接用于生成句子嵌入向量(例如用于短文本的KNN分类),也可以针对下游任务进行微调。
✨ 主要特性
- 词汇表更大:拥有83828个标记,相比旧版本的29564个有显著提升。
- 支持长序列:能够处理长度为2048的序列,而不是之前的512。
- 嵌入更优:句子嵌入向量更接近LaBSE,且有意义的片段嵌入经过NLI任务调优。
- 语言专注:仅针对俄语进行优化。
📦 安装指南
在使用模型前,需要安装必要的库:
pip install transformers sentencepiece
💻 使用示例
基础用法
可以按照以下方式生成句子嵌入向量:
import torch
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("cointegrated/rubert-tiny2")
model = AutoModel.from_pretrained("cointegrated/rubert-tiny2")
def embed_bert_cls(text, model, tokenizer):
t = tokenizer(text, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
model_output = model(**{k: v.to(model.device) for k, v in t.items()})
embeddings = model_output.last_hidden_state[:, 0, :]
embeddings = torch.nn.functional.normalize(embeddings)
return embeddings[0].cpu().numpy()
print(embed_bert_cls('привет мир', model, tokenizer).shape)
高级用法
也可以结合 sentence_transformers
库使用该模型:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('cointegrated/rubert-tiny2')
sentences = ["привет мир", "hello world", "здравствуй вселенная"]
embeddings = model.encode(sentences)
print(embeddings)
📄 许可证
本模型采用MIT许可证。
属性 |
详情 |
模型类型 |
基于BERT的编码器,用于句子相似度任务 |
训练数据 |
未提及 |