cointegrated/rubert-tiny2

cointegrated
Similitud de oraciones

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