l3cube-pune/indic-sentence-similarity-sbert

l3cube-pune
Similitud de oraciones

Este es un modelo IndicSBERT (l3cube-pune/indic-sentence-bert-nli) entrenado en el conjunto de datos STS de diez idiomas principales de la India. El modelo único funciona para inglés, hindi, maratí, kannada, tamil, telugu, gujarati, oriya, punjabi, malayalam y bengalí. El modelo también tiene capacidades multilingües. Lanzado como parte del proyecto MahaNLP: https://github.com/l3cube-pune/MarathiNLP. Se comparte aquí el modelo Indic Sentence BERT genérico: l3cube-pune/indic-sentence-bert-nli. Más detalles sobre el conjunto de datos, modelos y resultados de referencia se pueden encontrar en nuestro [artículo] (https://arxiv.org/abs/2304.11434)

Como usar

Uso (Sentence-Transformers):

Usar este modelo se vuelve fácil cuando tienes sentence-transformers instalados:

pip install -U sentence-transformers

Entonces puedes usar el modelo así:

from sentence_transformers import SentenceTransformer
sentences = ["Esta es una oración de ejemplo", "Cada oración se convierte"]

model = SentenceTransformer('{MODEL_NAME}')
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 agrupación correcta sobre las incrustaciones de palabras contextualizadas.

from transformers import AutoTokenizer, AutoModel
import torch

# Agrupación promedio - 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 oración
sentences = ['Esta es una oración de ejemplo', 'Cada oración se convierte']

# Cargar el modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('{MODEL_NAME}')
model = AutoModel.from_pretrained('{MODEL_NAME}')

# 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 la agrupación. En este caso, agrupación promedio.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

print("Incrustaciones de oración:")
print(sentence_embeddings)

Funcionalidades

Similitud de oraciones
Transformadores de oraciones
PyTorch
Transformers
12 idiomas
bert
extracción de características
inferencia de incrustaciones de texto
Puntos finales de inferencia

Casos de uso

Similitud de oraciones en múltiples idiomas
Agrupación y clasificación de oraciones
Análisis de sentimientos
Traducción y alineación de oraciones multilingües