MeaningBERT

davebulaval
Clasificación de texto

MeaningBERT es una métrica automática y entrenable para evaluar la preservación del significado entre oraciones. Fue propuesto en nuestro artículo MeaningBERT: Evaluar la preservación del significado entre oraciones. Su objetivo es evaluar la preservación del significado entre dos oraciones que correlacionan altamente con los juicios humanos y las pruebas de sanidad. Esta versión pública de nuestro modelo utiliza el mejor modelo entrenado (donde en nuestro artículo presentamos los resultados de rendimiento de un promedio de 10 modelos) durante un período más prolongado (500 épocas en lugar de 250). Observamos posteriormente que el modelo puede reducir aún más la pérdida de desarrollo e incrementar el rendimiento. Además, cambiamos la técnica de aumento de datos utilizada en el artículo por una más robusta, que también incluye la propiedad conmutativa de la función de significado. Es decir, Meaning(Sent_a, Sent_b) = Meaning(Sent_b, Sent_a).

Como usar

Puedes usar MeaningBERT como un modelo que puedes reentrenar o usar para inferencia utilizando lo siguiente con HuggingFace

# Cargar modelo directamente
from transformers import AutoTokenizer, AutoModelForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained('davebulaval/MeaningBERT')
model = AutoModelForSequenceClassification.from_pretrained('davebulaval/MeaningBERT')

O puedes usar MeaningBERT como una métrica para evaluación (sin reentrenamiento) utilizando lo siguiente con HuggingFace

import torch

from transformers import AutoTokenizer, AutoModelForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained('davebulaval/MeaningBERT')
scorer = AutoModelForSequenceClassification.from_pretrained('davebulaval/MeaningBERT')
scorer.eval()

documents = ['He wanted to make them pay.', 'This sandwich looks delicious.', 'He wants to eat.']
simplifications = ['He wanted to make them pay.', 'This sandwich looks delicious.',
'Whatever, whenever, this is a sentence.']

# Tokenizamos el texto como un par y devolvemos tensores de Pytorch
tokenize_text = tokenizer(documents, simplifications, truncation=True, padding=True, return_tensors='pt')

with torch.no_grad():
# Procesamos el texto
scores = scorer(**tokenize_text)

print(scores.logits.tolist())

O usando nuestro módulo de métrica de HuggingFace

import evaluate

documents = ['He wanted to make them pay.', 'This sandwich looks delicious.', 'He wants to eat.']
simplifications = ['He wanted to make them pay.', 'This sandwich looks delicious.',
'Whatever, whenever, this is a sentence.']

meaning_bert = evaluate.load('davebulaval/meaningbert')

print(meaning_bert.compute(documents=documents, simplifications=simplifications))

Funcionalidades

Evaluación de la preservación del significado entre oraciones
Correlación con juicios humanos
Pruebas automatizadas
Entrenamiento extendido a 500 épocas
Técnica de aumento de datos robusta

Casos de uso

Evaluación de la preservación del significado entre oraciones idénticas
Evaluación de frases no relacionadas generadas por un modelo de lenguaje grande
Medición automática de la preservación del significado