MiniCheck-Flan-T5-Large

lytang
Clasificación de texto

Este es un modelo de verificación de hechos basado en Flan-T5-Large que predice una etiqueta binaria - 1 para 'apoyado' y 0 para 'no apoyado'. El modelo hace predicciones a nivel de oración. Toma como entrada un documento y una oración y determina si la oración está apoyada por el documento: MiniCheck-Modelo(documento, afirmación) -> {0, 1}. MiniCheck-Flan-T5-Large es el mejor modelo de verificación de hechos con tamaño inferior a 1B y alcanza el rendimiento de GPT-4. Está finamente ajustado a partir de google/flan-t5-large (Chung et al., 2022) en la combinación de 35K datos: 21K datos de ANLI (Nie et al., 2020) y 14K datos sintéticos generados desde cero de manera estructurada (más detalles en el documento).

Como usar

Por favor, ejecute el siguiente comando para instalar el paquete MiniCheck y todas las dependencias necesarias.

pip install "minicheck @ git+https://github.com/Liyan06/MiniCheck.git@main"

A continuación, se muestra un caso de uso simple

from minicheck.minicheck import MiniCheck
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

doc = "Un grupo de estudiantes se reúne en la biblioteca de la escuela para estudiar para sus próximos exámenes finales."
claim_1 = "Los estudiantes están preparándose para un examen."
claim_2 = "Los estudiantes están de vacaciones."

# model_name puede ser uno de ['roberta-large', 'deberta-v3-large', 'flan-t5-large', 'Bespoke-MiniCheck-7B']
scorer = MiniCheck(model_name='flan-t5-large', cache_dir='./ckpts')
pred_label, raw_prob, _, _ = scorer.score(docs=[doc, doc], claims=[claim_1, claim_2])

print(pred_label) # [1, 0]
print(raw_prob) # [0.9805923700332642, 0.007121307775378227]

Prueba en nuestro Benchmark LLM-AggreFact

import pandas as pd
from datasets import load_dataset
from minicheck.minicheck import MiniCheck
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

# cargar 29K datos de prueba
df = pd.DataFrame(load_dataset("lytang/LLM-AggreFact")['test'])
docs = df.doc.values
claims = df.claim.values

scorer = MiniCheck(model_name='flan-t5-large', cache_dir='./ckpts')
pred_label, raw_prob, _, _ = scorer.score(docs=docs, claims=claims) # ~ 500 docs/min, dependiendo del hardware

Para evaluar el resultado en el benchmark
from sklearn.metrics import balanced_accuracy_score

df['preds'] = pred_label
result_df = pd.DataFrame(columns=['Dataset', 'BAcc'])
for dataset in df.dataset.unique():
sub_df = df[df.dataset == dataset]
bacc = balanced_accuracy_score(sub_df.label, sub_df.preds) * 100
result_df.loc[len(result_df)] = [dataset, bacc]

result_df.loc[len(result_df)] = ['Average', result_df.BAcc.mean()]
result_df.round(1)

Funcionalidades

Verificación de hechos a nivel de oración
Predicción de etiqueta binaria (1 para 'apoyado', 0 para 'no apoyado')
Modelo basado en Flan-T5-Large
Alcanza rendimiento similar al de GPT-4
Entrenado en combinación de 35K datos (21K ANLI y 14K sintéticos)

Casos de uso

Verificación de hechos eficiente de modelos de lenguaje en documentos de referencia
Predicción de la veracidad de afirmaciones basadas en documentos
Evaluación comparativa de modelos en nuevas colecciones de datos de verificación de hechos