semantic_xlmr

headlesstech
Similitud de oraciones

Este es un modelo de sentence-transformers: Mapea oraciones y párrafos a un espacio vectorial denso de 768 dimensiones y puede ser utilizado para tareas como agrupamiento o búsqueda semántica.

Como usar

Usando Sentence-Transformers

Instalar el paquete de sentence-transformers:

pip install -U sentence-transformers

Luego usar el modelo de la siguiente manera:

from sentence_transformers import SentenceTransformer
sentences = ["I sing in bengali", "আমি বাংলায় গান গাই"]
model = SentenceTransformer('headlesstech/semantic_xlmr')
embeddings = model.encode(sentences)
print(embeddings)

Usando HuggingFace Transformers

Usar el modelo sin sentence-transformers:

from transformers import AutoTokenizer, AutoModel
import torch
# Mean Pooling - Tomar en cuenta la máscara de atención para una media correcta

#Function to mean pool

def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0] # Primer elemento de model_output contiene todas las token embeddings
    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 cuales queremos las embeddings de oraciones
sentences = ["I sing in bengali", "আমি বাংলায় গান গাই"]
# Cargar el modelo desde HuggingFace Hub

tokenizer = AutoTokenizer.from_pretrained('headlesstech/semantic_xlmr')
model = AutoModel.from_pretrained('headlesstech/semantic_xlmr')
# Tokenizar oraciones
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
# Calcular las embeddings de tokens
with torch.no_grad():
    model_output = model(**encoded_input)
# Realizar pooling. En este caso, mean pooling.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Sentence embeddings:")
print(sentence_embeddings)

Arquitectura Completa del Modelo

SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: XLMRobertaModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False})
)

Funcionalidades

Transformador de oraciones
Espacio vectorial denso de 768 dimensiones
Soporte multilingüe
Ajustado específicamente para el idioma bengalí

Casos de uso

Similitud semántica
Agrupamiento
Búsquedas semánticas
Recuperación de documentos
Sistemas de recomendación
Sistemas de chatbots
Sistema de preguntas frecuentes (FAQ)