Zongxia/answer_equivalence_distilbert
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.