cointegrated/rubert-tiny2
Esta es una versión actualizada de cointegrated/rubert-tiny: un pequeño codificador basado en BERT ruso con incrustaciones de oraciones de alta calidad. Este post en ruso da más detalles. Las diferencias con la versión anterior incluyen: un vocabulario más grande: 83828 tokens en lugar de 29564; secuencias soportadas más grandes: 2048 en lugar de 512; incrustaciones de oraciones que se aproximan más a LaBSE que antes; incrustaciones de segmentos significativos (ajustadas en la tarea de NLI); el modelo se enfoca solo en ruso. El modelo debe usarse tal como está para producir incrustaciones de oraciones (por ejemplo, para la clasificación KNN de textos cortos) o ajustarse para una tarea posterior.
Como usar
Las incrustaciones de oraciones pueden producirse de la siguiente manera:
# 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')
# model.cuda() # uncommentar si tiene una GPU
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)
# (312,)
Alternativamente, puede usar el modelo con sentence_transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('cointegrated/rubert-tiny2')
sentences = ['привет мир', 'hello world', 'здравствуй вселенная']
embeddings = model.encode(sentences)
print(embeddings)
Funcionalidades
- Vocabulario más grande: 83828 tokens en lugar de 29564
- Secuencias soportadas más grandes: 2048 en lugar de 512
- Incrustaciones de oraciones que se aproximan más a LaBSE que antes
- Incrustaciones de segmentos significativos (ajustadas en la tarea de NLI)
- El modelo se enfoca solo en ruso
Casos de uso
- Clasificación KNN de textos cortos
- Ajustar para tareas posteriores