l3cube-pune/indic-sentence-bert-nli

l3cube-pune
Similitud de oraciones

Este es un modelo MuRIL (google/muril-base-cased) entrenado en el conjunto de datos NLI de diez idiomas principales de la India. El modelo único funciona para inglés, hindi, marathi, kannada, tamil, telugu, gujarati, oriya, punjabi, malayalam y bengalí. El modelo también tiene capacidades de traducción cruzada. Lanzado como parte del proyecto MahaNLP: https://github.com/l3cube-pune/MarathiNLP. Un mejor modelo de similitud de oraciones (versión ajustada de este modelo) se comparte aquí: https://huggingface.co/l3cube-pune/indic-sentence-similarity-sbert. Más detalles sobre el conjunto de datos, modelos y resultados básicos 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 instalado sentence-transformers:

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 es convertida"]
modelo = 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 en la parte superior de las incrustaciones de palabras contextualizadas.

from transformers import AutoTokenizer, AutoModel
import torch

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)

sentencias = ['Esta es una oración de ejemplo', 'Cada oración es convertida']

tokenizer = AutoTokenizer.from_pretrained('{MODEL_NAME}')
modelo = AutoModel.from_pretrained('{MODEL_NAME}')

encoded_input = tokenizer(sentencias, padding=True, truncation=True, return_tensors='pt')

with torch.no_grad():
 model_output = model(**encoded_input)

sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

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

Funcionalidades

Similitud de oraciones
Transformadores de oraciones
PyTorch
Transformers
Extracción de características
Inferencia de incrustaciones de texto
Capacidades de traducción cruzada

Casos de uso

Similitud de oraciones a través de múltiples idiomas
Generación de incrustaciones de oraciones para diversas aplicaciones NLP
Traducción cruzada entre idiomas