prudant/lsg_4096_sentence_similarity_spanish
prudant
Similitud de oraciones
Esta versión mejorada del modelo hiiamsid/sentence_similarity_spanish_es ahora utiliza el mecanismo de atención Local Sparse Global (LSG). La adaptación a LSG permite manejar de manera eficiente secuencias más largas, haciendo el modelo más versátil y robusto en una amplia gama de tareas de procesamiento del lenguaje natural. Esta adaptación permite al modelo procesar de manera eficiente secuencias de hasta 4096 tokens de longitud.
Como usar
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel
import torch
tokenizer = AutoTokenizer.from_pretrained('prudant/lsg_4096_sentence_similarity_spanish')
model = AutoModel.from_pretrained('prudant/lsg_4096_sentence_similarity_spanish', trust_remote_code=True)
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0] #First element of model_output contains all 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)
# Sentences
sentences = [
'Esa es una persona feliz',
'Ese es un perro feliz',
'Esa es una persona muy feliz',
'Hoy es un día soleado',
'Esa es una persona alegre',
]
# Tokenize sentences
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
# Compute token embeddings
with torch.no_grad():
model_output = model(**encoded_input)
# Perform pooling. In this case, max pooling.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print('Sentence embeddings:')
print(sentence_embeddings)
# Norm embeddings
normalized_embeddings = F.normalize(sentence_embeddings, p=2, dim=1)
# Sentence similarity
cosine_similarities = F.cosine_similarity(normalized_embeddings[0].unsqueeze(0), normalized_embeddings[1:], dim=1)
print(cosine_similarities)
Sentence embeddings:
tensor([[-0.1691, -0.2517, -1.3000, ..., 0.1557, 0.3824, 0.2048],
[ 0.1872, -0.7604, -0.4863, ..., -0.4922, -0.1511, -0.8539],
[-0.2467, -0.2373, -1.1708, ..., 0.4637, 0.0616, 0.2841],
[-0.2384, 0.1681, -0.3498, ..., -0.2744, -0.1722, -1.2513],
[ 0.2273, -0.2393, -1.6124, ..., 0.6065, 0.2784, -0.3354]])
tensor([0.5132, 0.9346, 0.3471, 0.8543])
Funcionalidades
- Atención Local Sparse Global (LSG)
- Capacidad para manejar secuencias largas
- Reducción significativa de la complejidad computacional
- Mayor versatilidad y robustez en tareas de procesamiento del lenguaje natural
Casos de uso
- Generación de embeddings para documentos largos