Skip to content

Pacote dikemetria: coleta nacional, avaliação por capítulos e cálculo da condenação - #1

Merged
luccas-amorim merged 3 commits into
mainfrom
claude/affectionate-pasteur-o8seso
Oct 4, 2026
Merged

luccas-amorim merged 3 commits into
mainfrom
claude/affectionate-pasteur-o8seso

Conversation

@luccas-amorim

Copy link
Copy Markdown
Owner

Resumo

Transforma os scripts do protótipo no pacote dikemetria, com linha de comando, testes e CI, e implementa o fluxo completo: coleta nacional, pseudonimização, avaliação do resultado, cálculo e relatório público.

Estrutura e pipeline de uma decisão

  • Os scripts soltos e o colab.py duplicado dão lugar ao pacote com pyproject.toml, ruff, pytest e GitHub Actions (Python 3.11 a 3.13). O notebook do Colab passa a só chamar o pacote.
  • Corrige o pipeline antigo, que não rodava: o main desempacotava um dict de cinco chaves em duas variáveis; as regex de artigos tinham barras duplicadas e rodavam sobre texto já sem números; e a limpeza apagava â, ê e ô.
  • Extrai citações normalizadas (artigos, leis, súmulas, temas e número CNJ com dígito verificador) e divide a decisão em relatório, fundamentação e dispositivo.

Coleta nacional (dikemetria/coleta/)

  • DataJud: metadados e movimentos de 91 tribunais. DJEN: texto das decisões publicadas. Também arquivos locais.
  • Registra a proveniência de cada resposta (URL, parâmetros, data e hash) e retoma de onde parou.
  • Pseudonimiza o texto antes de gravar, descarta processos em segredo de justiça e marca matérias sensíveis, seguindo as regras de LGPD do README.

Regras de avaliação e de cálculo

As regras completas estão em docs/REGRAS.md.

  • avaliacao.py: lê o dispositivo por capítulos, cada um com objeto (ação, reconvenção, pedido contraposto, embargos de declaração, denunciação, impugnação, recurso) e força, e agrega os resultados por regras fixas. Também:

    • trata prescrição e decadência (inclusive quando afastadas), o art. 487, II e III, e os incisos do art. 485;
    • cobre embargos à execução e à monitória, mandado de segurança e absolvição penal;
    • nos acórdãos, faz prevalecer o parágrafo ACORDAM e não lê o voto vencido.
  • valores.py: extrai os valores por categoria, os honorários, a repetição em dobro, os termos iniciais e a taxa dos juros, o índice da correção e a gratuidade.

  • consolidacao.py: forma uma decisão por processo e instância. Texto e movimentos são unidos, o texto prevalece e as divergências são registradas.

  • jurimetria.py:

    • taxa agregada e média entre tribunais, com IC de Wilson;
    • provimento por recurso e reforma em segundo grau;
    • valores de danos morais, parâmetros de cálculo e motivos de extinção.

    Nenhuma tabela agrega por magistrado, e grupos com menos de 10 casos são suprimidos.

Relatório e validação

  • Relatório HTML autocontido (modos claro e escuro, tabela em cada gráfico), CSVs, metadados e dicionário de dados sob CC BY 4.0.
  • dikemetria amostra e dikemetria validar medem a classificação contra rotulagem manual.

Testes

  • 181 testes, incluindo 85 dispositivos de referência em tests/dados/dispositivos.csv e acórdãos com voto vencido e relator vencido.
  • ruff check, ruff format --check e pytest passam no CI.
  • A coleta foi testada com respostas simuladas, porque o ambiente de desenvolvimento bloqueia o DataJud e o DJEN. Antes da primeira coleta real, rode dikemetria sondar --fonte datajud e --fonte djen.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FtwcBmVRcMiFTuxjXmrmGc


Generated by Claude Code

claude added 3 commits October 3, 2026 13:11
Fase 0: pacote dikemetria com pyproject, CLI, testes (pytest), ruff e CI.
Remove os scripts antigos e o colab.py duplicado; o notebook do Colab
passa a chamar o pacote.

Fase 1: corrige o pipeline de um documento. O main desempacotava um dict
de cinco chaves em duas variáveis; as regex de artigos tinham barras
duplicadas e rodavam sobre texto sem números; a limpeza apagava â, ê, ô.
Citações, termos e argumentos agora usam o texto bruto; a decisão é
dividida em relatório, fundamentação e dispositivo.

Fase 2: coleta nacional com proveniência (URL, parâmetros, data, hash)
e retomada: DataJud (metadados e movimentos de 91 tribunais), DJEN
(texto das decisões) e arquivos locais. Pseudonimização antes de gravar,
exclusão de segredo de justiça e marcação de matérias sensíveis.

Fase 3: classificação do resultado pelo dispositivo e pelos movimentos
da TPU, com amostra para rotulagem manual e medida de acerto.

Fase 4: taxas de procedência, acolhimento e provimento com IC de Wilson,
tempos até o julgamento, normas citadas e vocabulário por resultado
(log-odds com prior de Dirichlet). Sem agregação por magistrado e com
supressão de grupos com menos de 10 casos.

Fase 5: relatório HTML autocontido (modo claro e escuro, tabelas em cada
gráfico), CSVs, metadados e dicionário de dados sob CC BY 4.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtwcBmVRcMiFTuxjXmrmGc
Avaliação (avaliacao.py): o dispositivo é lido como uma série de
comandos decisórios, cada um com rótulo, força e objeto (ação,
reconvenção, pedido contraposto, embargos de declaração, denunciação,
impugnação, recurso). Os capítulos da ação e do recurso são agregados
por regras fixas: procedente e improcedente juntos = parcialmente
procedente; reconvenção não muda o resultado da ação; comandos fracos
("sentença mantida", "condeno o réu") só valem sem comando forte.
Cobre prescrição e decadência (inclusive quando afastadas), art. 487,
II e III, incisos do art. 485, embargos à execução e à monitória,
mandado de segurança, absolvição penal, formas com pronome oblíquo e o
resultado da ação fixado no acórdão. Registra motivo, confiança, tipo
de decisão e votação.

Cálculo (valores.py): valores do dispositivo por categoria (danos
morais e materiais, restituição, débito, multa, honorários, valor da
causa), honorários em percentual e base, repetição em dobro ou simples,
termos iniciais e taxa dos juros, termos iniciais e índice da correção,
gratuidade.

Consolidação (consolidacao.py): uma decisão por processo e instância,
unindo texto e movimentos, com o texto prevalecendo e a divergência
registrada; decisões só de embargos de declaração ficam fora.

Medidas novas: taxa agregada e média entre tribunais, provimento por
recurso, reforma em segundo grau com resultado final inferido pela
sucumbência, valores de danos morais, parâmetros de cálculo, motivos
de extinção e indicadores de qualidade da classificação.

docs/REGRAS.md descreve todas as regras; tests/dados/dispositivos.csv
traz 85 dispositivos de referência que as testam. O banco ganha a
coluna avaliacao, com migração automática. O CI passa a rodar em todo
push.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtwcBmVRcMiFTuxjXmrmGc
O dispositivo passa a ser procurado antes de declaração de voto ou voto
vencido, e o parágrafo ACORDAM é lido à parte. Se o resultado do recurso
no ACORDAM diferir do voto lido (relator vencido), prevalece o ACORDAM.
A amostra de validação mostra os dois trechos ao revisor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtwcBmVRcMiFTuxjXmrmGc
@luccas-amorim
luccas-amorim merged commit e4c119a into main Oct 4, 2026
6 checks passed
@luccas-amorim
luccas-amorim deleted the claude/affectionate-pasteur-o8seso branch October 4, 2026 02:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants