MeaningBERT
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