sentence-transformers/xlm-r-100langs-bert-base-nli-mean-tokens

sentence-transformers
Similitud de oraciones

Este es un modelo de sentence-transformers: mapea oraciones y párrafos a un espacio vectorial denso de 768 dimensiones y se puede usar para tareas como la agrupación o la búsqueda semántica. ⚠️ Este modelo está obsoleto. Por favor, no lo uses ya que produce incrustaciones de oraciones de baja calidad. Puedes encontrar modelos recomendados de incrustaciones de oraciones aquí: SBERT.net - Modelos preentrenados

Como usar

Uso (Sentence-Transformers)

Usar este modelo es fácil cuando tienes sentence-transformers instalado:

pip install -U sentence-transformers

Entonces puedes usar el modelo así:

from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]

model = SentenceTransformer('sentence-transformers/xlm-r-100langs-bert-base-nli-mean-tokens')
embeddings = model.encode(sentences)
print(embeddings)

Uso (HuggingFace Transformers)

Sin sentence-transformers, puedes usar el modelo así: Primero, pasas tu entrada a través del modelo transformer, luego tienes que aplicar la operación de agrupamiento correcta sobre las incrustaciones de las palabras contextualizadas.

from transformers import AutoTokenizer, AutoModel
import torch

#Mean Pooling - Toma en cuenta la máscara de atención para un promedio correcto
def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0] #El primer elemento de model_output contiene todas las incrustaciones de tokens
    input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
    return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)

# Oraciones para las que queremos incrustaciones de oraciones
sentences = ["This is an example sentence", "Each sentence is converted"]

# Cargar modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('sentence-transformers/xlm-r-100langs-bert-base-nli-mean-tokens')
model = AutoModel.from_pretrained('sentence-transformers/xlm-r-100langs-bert-base-nli-mean-tokens')

# Tokenizar las oraciones
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')

# Computar las incrustaciones de los tokens
with torch.no_grad():
    model_output = model(**encoded_input)

# Realizar agrupamiento. En este caso, agrupamiento por promedio.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

print("Incrustaciones de oraciones:")
print(sentence_embeddings)

Funcionalidades

Mapeo de oraciones a un espacio vectorial denso de 768 dimensiones
Adecuado para tareas de agrupación o búsqueda semántica
Compatible con PyTorch y TensorFlow
Utiliza XLM-Roberta como modelo de Transformer
Realiza extracción de características

Casos de uso

Agrupación de oraciones
Búsqueda semántica
Extracción de características de texto
Generación de incrustaciones de oraciones para tareas de análisis de texto