inokufu/flaubert-base-uncased-xnli-sts

inokufu
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 el agrupamiento o la búsqueda semántica. Este modelo está basado en el modelo pre-entrenado flaubert-base-uncased en francés. Luego fue ajustado para una tarea de inferencia de lenguaje natural (XNLI). Esta tarea consiste en entrenar el modelo para reconocer relaciones entre las oraciones (contradicción, neutral, implicación). Luego fue afinado en una tarea de similitud semántica de textos (en datos STS-fr). Esta tarea consiste en entrenar el modelo para estimar la similitud entre dos oraciones. Este proceso de afinación permite que nuestro modelo tenga una representación semántica de las palabras mucho mejor que la propuesta por el modelo base.

Como usar

Uso (transformadores de oraciones)

pip install -U sentence-transformers

from sentence_transformers import SentenceTransformer
sentences = ["Aprender python", "Convertirse en un experto en contabilidad"]

model = SentenceTransformer('inokufu/flaubert-base-uncased-xnli-sts')
embeddings = model.encode(sentences)
print(embeddings)

Uso (HuggingFace Transformers)

from transformers import AutoTokenizer, AutoModel
import torch

#Mean Pooling - Tener 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 cuales queremos incrustaciones de oraciones
sentences = ["Aprender python", "Convertirse en un experto en contabilidad"]

# Cargar modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('inokufu/flaubert-base-uncased-xnli-sts')
model = AutoModel.from_pretrained('inokufu/flaubert-base-uncased-xnli-sts')

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

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

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

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

Funcionalidades

Mapeo de oraciones y párrafos a un espacio vectorial denso de 768 dimensiones
Basado en el modelo pre-entrenado flaubert-base-uncased
Afinado en una tarea de inferencia de lenguaje natural (XNLI)
Afinado en una tarea de similitud semántica de textos (STS-fr)

Casos de uso

Agrupamiento de oraciones
Búsqueda semántica
Reconocimiento de relaciones entre oraciones como contradicción, neutralidad e implicación
Estimación de similitud entre dos oraciones