Zongxia/answer_equivalence_distilbert

Zongxia
Clasificación de texto

QA-Evaluation-Metrics es un paquete de Python rápido y liviano para evaluar modelos de preguntas y respuestas y la generación de prompts para modelos de lenguaje grandes de código abierto y de caja negra. Proporciona varias métricas básicas y eficientes para evaluar el rendimiento de los modelos de QA.

Como usar

Para instalar el paquete, ejecute el siguiente comando:

pip install qa-metrics

El paquete de Python actualmente proporciona seis métodos de evaluación de QA.

Dado un conjunto de respuestas correctas, una respuesta candidata para ser evaluada, y una pregunta (si aplica), la evaluación devuelve True si la respuesta candidata coincide con alguna de las respuestas correctas, False en caso contrario.

Diferentes métodos de evaluación tienen distintos grados de rigor para evaluar la corrección de una respuesta candidata. Algunos tienen una correlación más alta con los juicios humanos que otros.

Ejemplo de uso para 'Normalized Exact Match':

from qa_metrics.em import em_match

reference_answer = ["The Frog Prince", "The Princess and the Frog"]
candidate_answer = "The movie \"The Princess and the Frog\" is loosely based off the Brother Grimm's \"Iron Henry\""
match_result = em_match(reference_answer, candidate_answer)
print("Exact Match: ", match_result)
Exact Match:  False

Ejemplo de uso para 'F1 Score':

from qa_metrics.f1 import f1_match, f1_score_with_precision_recall

f1_stats = f1_score_with_precision_recall(reference_answer[0], candidate_answer)
print("F1 stats: ", f1_stats)
F1 stats:  {'f1': 0.25, 'precision': 0.6666666666666666, 'recall': 0.15384615384615385}

Ejemplo de uso para 'Transformer Neural Evaluation':

from qa_metrics.transformerMatcher import TransformerMatcher

question = "Which movie is loosely based off the Brother Grimm's Iron Henry?"
tm = TransformerMatcher("roberta-large")
scores = tm.get_scores(reference_answer, candidate_answer, question)
match_result = tm.transformer_match(reference_answer, candidate_answer, question)
print("Score: %s; bert Match: %s" % (scores, match_result))
Score: {'The Frog Prince': {'The movie \"The Princess and the Frog\" is loosely based off the Brother Grimm's \"Iron Henry\"': 0.6934309}, 'The Princess and the Frog': {'The movie \"The Princess and the Frog\" is loosely based off the Brother Grimm's \"Iron Henry\"': 0.7400551}}; TM Match: True

Ejemplo de uso para 'Prompting OpenAI LLM':

from qa_metrics.prompt_llm import CloseLLM
model = CloseLLM()
model.set_openai_api_key(YOUR_OPENAI_KEY)
prompt = 'question: What is the Capital of France?\nreference: Paris\ncandidate: The capital is Paris\nIs the candidate answer correct based on the question and reference answer? Please only output correct or incorrect.'
model.prompt_gpt(prompt=prompt, model_engine='gpt-3.5-turbo', temperature=0.1, max_tokens=10)
'correct'

Funcionalidades

Método de coincidencia exacta normalizada
Método de puntuación F1
Evaluación eficiente y robusta de tipos de preguntas y respuestas
Evaluación con modelos neuronales Transformer
Evaluación utilizando LLM de caja negra

Casos de uso

Evaluación automatizada del rendimiento de modelos de preguntas y respuestas.
Generación de prompts para modelos de lenguaje grandes.
Medición de la eficacia de respuestas candidatas en comparación con respuestas de referencia.
Análisis detallado de coincidencias mediante métricas exactas y F1.