Este repositório reúne o código do projeto de formatura (TCC II) da disciplina PCS3560, intitulado “Development of an Automatic Segmentation Model for Legal Documents”.
O objetivo do trabalho é segmentar e rotular automaticamente contratos jurídicos extensos, a partir apenas do texto simples, usando um modelo bi-encoder e um LLM para geração de rótulos silver.
bi-encoder/— código do modelo principal de segmentação e rotulação.LLM_data_augmentation/— scripts para geração automática de anotações silver com LLM.LLM_eval/— scripts/notebooks para avaliação da qualidade das anotações produzidas pelo LLM.pre_processing/— preparação dos contratos brutos (limpeza, tokenização por linha etc.).retriever/— componente de recuperação/busca de trechos de contrato.visualization/— notebooks e utilitários para inspeção de segmentos e resultados.cost_estimation/,logs/— experimentos auxiliares e artefatos de execução.
O modelo de segmentação é um bi-encoder hierárquico em duas etapas:
- Um encoder de sentenças baseado em XLM-RoBERTa gera embeddings para cada linha do contrato.
- Um BiLSTM sobre a sequência de linhas estima, para cada posição, a probabilidade de início de segmento e os rótulos de seção (por exemplo: título do contrato, preâmbulo, artigo, assinatura, anexos).
O diretório bi-encoder/ contém o código de treinamento, inferência e os principais modelos utilizados nos experimentos descritos na monografia.
A pasta LLM_data_augmentation/ contém os prompts e scripts usados para:
- gerar rótulos silver a partir dos contratos originais;
- converter as respostas do LLM para o formato de dataset de segmentação.
A avaliação dessas anotações está em LLM_eval/.
Os notebooks de avaliação dos modelos estão distribuídos principalmente em LLM_eval/ e bi-encoder/test.ipynb.
Eles reproduzem os resultados apresentados na monografia.
O projeto utiliza um conjunto privado de contratos jurídicos, não público.
Por motivos de confidencialidade e de proteção de dados:
- os arquivos de contratos e suas anotações não estão incluídos neste repositório;
- scripts que dependem diretamente dos dados assumem uma estrutura de pastas compatível, mas que não é versionada aqui.