Avaliacao — Multipla escolha
Objetivo
Avaliar as respostas dos modelos as questoes objetivas comparando com o gabarito oficial do dataset OAB Exams.
Como funciona
Extracao da resposta
A resposta do modelo e processada em duas etapas:
- Tentativa JSON: Limpa blocos markdown (
```json) e tenta parsear como JSON, extraindo o campo"resposta" - Fallback regex: Se o JSON falhar, busca a primeira ocorrencia de uma letra A-D no texto
# Etapa 1: JSON
json_str = _extract_json(model_answer)
if json_str:
resp = json.loads(json_str)
extracted = resp.get("resposta", "").strip().upper()[:1]
# Etapa 2: Regex fallback
if not extracted or extracted not in "ABCD":
match = re.search(r"\b([A-D])\b", model_answer.upper())
extracted = match.group(1) if match else model_answer[:1].upper()
Comparacao com gabarito
A resposta extraida e comparada diretamente com o campo answerKey do dataset. O resultado e um booleano is_correct.
Metricas calculadas
No leaderboard
| Metrica | Descricao |
|---|---|
| Acuracia | Percentual de respostas corretas |
| Precision (macro) | Media da precisao por classe (A, B, C, D) |
| Recall (macro) | Media do recall por classe |
| F1 (macro) | Media harmonica de Precision e Recall por classe |
As metricas Precision, Recall e F1 sao calculadas via sklearn.metrics com average="macro" e zero_division=0, tratando cada alternativa como uma classe de classificacao.
Para mais detalhes sobre as metricas, consulte Acuracia, Precision, Recall, F1.
Saida
Os resultados sao salvos em src/results/eval_multiple_choice.csv com as colunas:
- question_id — Identificador da questao
- model — Nome do modelo
- answer — Resposta extraida do modelo
- correct — Gabarito oficial
- is_correct — Se a resposta esta correta