CoolFace
Datasetpublic

juliadollis/tessera-extraidollm

tessera-extraidollm O dataset tessera com a norma aplicável extraída do comentário por um LLM. Questões de múltipla escolha de direito brasileiro (Exame de Ordem, edições 38 a 45). O comentário oficial de cada questão transcreve o texto da lei ao justificar a resposta — a extração isola esse texto. O funil questões no CSV original 640 − anuladas −16 − sem as quatro letras A/B/C/D −10 base 614 com norma extraída 522 (85.0%) com a norma da… See the full description on the dataset page: https://huggingface.co/datasets/juliadollis/tessera-extraidollm.

sourceHugging Faceotherupdated 2mo agoView on Hugging Face
0likes18downloads
Dataset Card

tessera-extraidollm

O dataset `tessera` com a norma aplicável extraída do comentário por um LLM.

Questões de múltipla escolha de direito brasileiro (Exame de Ordem, edições 38 a 45). O comentário oficial de cada questão transcreve o texto da lei ao justificar a resposta — a extração isola esse texto.

O funil

questões no CSV original640
− anuladas−16
− sem as quatro letras A/B/C/D−10
base614
com norma extraída522 (85.0%)
com a norma da alternativa correta identificada385 (62.7%)
sem nenhum problema no diagnóstico469 (76.4%)

Como a extração foi feita

Modelo: gpt-5-nano-2025-08-07 · teto de 16000 tokens por chamada · finish_reason conferido.

A chamada é dividida por alternativa. O comentário vem separado por letra em ~90% das questões; cada letra vira uma chamada com ~300 caracteres, em vez de uma chamada com o comentário inteiro (~1.500). Nas ~10% consolidadas, uma chamada com o texto todo.

Isso não é detalhe de implementação. Medido em 30 questões, com o mesmo modelo:

coberturatrechostexto literal
uma chamada com o comentário inteiro70,0%3694,4%
uma chamada por alternativa86,7%5898,3%

Uma rodada anterior com o comentário inteiro produziu 15,3% de texto não-literal. Os três erros dominantes — colar passagens não vizinhas, truncar, e sub-extrair — são todos efeito de entrada longa, não de capacidade do modelo.

Efeito colateral bom: como a chamada é feita sobre o comentário de uma letra, sabe-se de qual alternativa cada norma saiu por construção. É daí que sai lei_da_resposta.

Efeito colateral ruim, e como é tratado: o comentarista cita a mesma norma ao explicar várias alternativas, e cada chamada devolve a sua cópia sem saber das outras. Nenhuma regra de prompt resolve — a informação não está no contexto da chamada.

A coluna lei passa por deduplicação ao ser montada, em dois níveis: texto idêntico (depois de normalizar espaços, aspas e o rótulo) e contenção — um recorte contido em outro é descartado, ficando o mais longo, que tem mais conteúdo e nunca menos.

Isso não perde nada: lei_por_letra guarda o que cada chamada devolveu, cru. lei é uma view, e dedup registra exatamente o que foi removido e por quê.

O prompt

Você recebe o comentário oficial de uma questão da OAB e extrai dele o texto das normas.

O comentário mistura a análise do comentarista com o texto literal das normas que ele cita.
Devolva SÓ o texto das normas, do jeito que está escrito ali.

REGRAS

1. COPIE, NÃO REESCREVA. Recorte exatamente os caracteres que estão no comentário. Não
   corrija ortografia, não complete abreviação, não resuma, não reformule.

2. CADA TRECHO É UM PEDAÇO ÚNICO E CONTÍNUO do comentário. **Nunca junte duas passagens
   que estão separadas no texto.** Se o comentário cita o artigo em dois lugares, ou você
   pega um dos dois inteiro, ou devolve os dois como parágrafos separados — nunca colados.
   Se você não consegue copiar um trecho contínuo, não devolva aquela norma.

3. NÃO INCLUA A ANÁLISE. Frases como "a alternativa B está incorreta", "nesse sentido" ou
   "conforme entendimento" não são texto de norma.

4. NUNCA DEVOLVA SÓ A REFERÊNCIA. `CC, art. 877, § 1º, I` sozinho não serve — isso é o
   nome, não a norma. Se o texto da norma não estiver transcrito no comentário, **não
   devolva aquele artigo**. O mesmo vale para "artigos 60 e 61 da Lei 9.099/95": isso é
   uma menção, não o texto.

5. NÃO REPITA. Cada norma aparece uma vez só, mesmo que o comentário a transcreva várias
   vezes. Se houver duas versões da mesma norma, devolva a mais completa.

6. NADA DE MARCADOR OU ARTEFATO. Não escreva `VAZIO` no meio de outros parágrafos, nem
   comentário de código, nem `/* linha em branco */`, nem separador. Só o texto da norma.

7. TRECHO COM SENTIDO PRÓPRIO. Não devolva fragmento solto de enumeração, como
   `I - processar e julgar, originariamente:`. Ou pega o dispositivo com o caput que o
   introduz, ou não pega.

8. NA DÚVIDA, DEVOLVA. Se o comentário transcreve a norma mas você não tem certeza de qual
   lei é, devolva o texto assim mesmo, com o rótulo que der para identificar ou sem rótulo.
   Perder norma que está lá é pior que ficar sem o nome dela.

9. JURISPRUDÊNCIA CONTA, mas marcada. Se o trecho for decisão de tribunal, súmula ou
   acórdão — e não texto de lei —, comece o parágrafo com `JURISPRUDENCIA:`.

10. `VAZIO` SÓ SOZINHO. Se não houver nada transcrito — nem lei nem jurisprudência —
    responda exatamente `VAZIO`, e mais nada.

FORMATO

Um trecho por parágrafo, separados por linha em branco:

    CC, art. 822: "Não sendo limitada, a fiança compreenderá todos os acessórios..."

    CC, art. 827: "O fiador demandado pelo pagamento da dívida tem direito a exigir..."

Responda só com o texto extraído, sem introdução e sem comentário seu.

Verificação

Todo trecho passa por dez regras automáticas, entre elas:

  • —substring literal — o texto devolvido tem que estar no comentário de origem, com espaços e aspas normalizados. É o que separa "o modelo extraiu" de "o modelo escreveu"
  • —não colar passagens não contíguas · não devolver só a referência · não repetir · não truncar · não devolver artefato

O que falhou fica em problemas, com o trecho e a regra.

Colunas

colunatipoo que é
idstrexame-questao, ex. 38-38
exameint38 a 45
questaostr01 a 80
splitstrdev (38–43) · teste (44–45)
enunciadostro enunciado da questão
alternativasstr (JSON)[{"letra":"A","texto":"..."}, ...] — sempre as quatro
respostastra letra do gabarito
comentariostro comentário oficial inteiro
comentario_por_letrastr (JSON)o comentário separado por alternativa
`lei`str ou nulla norma a injetar no prompt — todas as extraídas, uma por parágrafo
`lei_da_resposta`str ou nullsó a norma que saiu do comentário da alternativa correta
lei_por_letrastr (JSON){"A":"...","B":"..."} — o fato: o que cada chamada devolveu, sem tocar
dedupstr (JSON)o que a deduplicação removeu de lei, e por quê
lei_okboolpassou nas dez regras
problemasstr (JSON)quais regras falharam, com o trecho
tem_jurisprudenciabooltem julgado junto da lei
so_jurisprudenciaboolsó julgado, sem lei nenhuma

Ressalva importante — vazamento

O texto transcrito não é neutro: é a passagem que o comentarista escolheu porque ela decide a questão. Um baseline lexical sem nenhum conhecimento jurídico — que só conta palavras em comum entre a norma e as alternativas — acerta bem acima dos 25% do acaso só de receber lei.

Qualquer resultado que use `lei` precisa reportar esse baseline ao lado. Sem isso, a acurácia com contexto está inflada.

O que não é garantido

  • —se o nome da lei está certo. O texto é verificado por substring; o rótulo (CC, art. 822) é julgamento do modelo, e nenhuma checagem automática pega um nome errado
  • —se a extração deixou passar norma que estava no comentário. A verificação pega o que foi inventado, não o que foi esquecido
  • —se o trecho é a norma que decide ou uma citada de passagem

Aviso

comentario e comentario_por_letra contêm a resposta — o comentário começa dizendo qual alternativa é a correta. Nunca injetar no prompt de um modelo sendo avaliado.