Estudo de Caso: Aplicação de Aprendizagem de Máquina para a classificação das Classes Processuais das Turmas Recursais do TJPI
Contextualização do Ambiente
Diariamente usuários do Sitema de
Controle Processual das Turmas Recursais do TJPI entram em contato com o
Service Desk tentando solucionar dúvidas de como fazer a classificação correta das
petições iniciais.
Essa classificação é realizada de
acordo com as Tabelas Processuais Unificadas do Conselho Nacional de Justiça –
CNJ, que foram criadas com o objetivo de padronizar e uniformizar a taxonomia e
terminologias dos processos de todos os Tribunais do Brasil. Porém, juntamente
com os benefícios criados pela implantação dessas tabelas veio à dificuldade
dos usuários conseguirem realizar tal classificação, tendo em vista que para o
completo entendimento e domínio da mesma se faz necessário um amplo
conhecimento dos códigos processuais.
Essa dificuldade deve-se,
principalmente, ao fato de que boa parte dos servidores responsáveis por
realizar essa atividade possui apenas o nível médio e nenhuma formação
complementar em Direito.
Surge daí a ideia de utilizar a
Aprendizagem de Máquina, mais especificamente a Mineração de Dados, para tentar
facilitar as atividades de classificação.
Abordagem utilizada
A primeira ideia era obter as
petições iniciais existentes na base de dados, extrair o texto e realizar o
treinamento, tendo em vista que as petições existentes já se encontram
classificadas corretamente.
Os arquivos disponíveis para
realizar essa atividade foram digitalizados sem o reconhecimento de caracteres
(OCR), com a menor qualidade possível (300 dpi e modo de cor preto e branco), visando a economia de espaço, e
salvos no formato PDF.
O primeiro obstáculo enfrentado
foi encontrar um software Open Source
para realizar o OCR que garantisse uma boa taxa de acerto. Os seguintes softwares
para OCR foram encontrados:
- Ocrad 0.21 (http://www.gnu.org/software/ocrad/ocrad.html)
- GOCR 0.49 (http://jocr.sourceforge.net/)
- SimpleOCR 3.1 (http://www.simpleocr.com/)
- Tesseract-OCR (http://code.google.com/p/tesseract-ocr/)
Devido o suporte a múltiplas
línguas, principalmente a língua portuguesa, o Tesseract obteve um melhor
desempenho, porém a entrada de dados é um arquivo de imagem.
Dessa forma foi necessário
realizar a conversão dos arquivos PDF para arquivos de imagens. O formato de
saída escolhido foi o TIFF (Tagged Image File Format) por realizar a compressão
sem perda de dados. A desvantagem desse formato é o tamanho final do arquivo
que é bem superior a outros formatos de imagens conhecidos como JPEG e PNG, o
que ocasionou diversos estouros de memória da JVM (Máquina Virtual Java)
durante a conversão de arquivos PDF com tamanho superior a 10 MB, por isso se
fez necessário excluir do conjunto de treinamento as petições com tamanho
superiores a esse.
O processo de extração de texto
das imagens mostrou-se muito demorado, necessitando em média de 5 segundos para
cada página. Cada petição possui em média 20 páginas, o que nos leva a um tempo
médio de 100 segundo por petição.
A análise dos textos extraídos
revelou uma grande quantidade de caracteres irrelevantes que o software gerou
ao se deparar com arquivos contendo imagens, carimbos, assinaturas e outros
gráficos que não representam caracteres. A saída seria a remoção desses ruídos,
para enfim ter o conteúdo necessário para aplicar os algoritmos de
classificação.
Entretanto, por questões de tempo
essa ideia não pôde seguir, pois ainda seria necessário um pré-processamento
para a remoção de palavras irrelevantes, análise léxica e seleção de termo de
indexação para enfim realizar a classificação, como ilustra a imagem abaixo.
A segunda ideia foi tentar
utilizar os demais dados dos iniciais dos processos existentes para realizar a
classificação. Os mais relevantes levantados foram:
- Natureza (Cível e Criminal)
- Assunto do Processo (Classificado pelas Tabelas Processuais Unificadas)
- Classe Processual (Objetivo da classificação)
Classificação com WEKA
Os dados necessários foram
extraídos diretamente da base de dados, através da conexão com
o banco de dados SQL Server 2008, portanto nenhum arquivo .arff foi gerado
para esse problema. A quantidade de instâncias (linhas do banco de dados)
utilizadas foram 3882.
Após a obtenção dos dados
iniciou-se a tentativa de classificação, os seguintes algoritmos foram utilizados:
- Árvore de decisão - J48
- Vizinhos mais próximos (k-nearest neighbor) – Ibk
- Rede Bayesiana - BayesNet
Resultados
Os três algoritmos utilizados
mostraram-se bastantes eficientes na classificação dos processos. A tabela a
seguir apresenta os resultados:
O melhor desempenho ficou com o
algoritmo BayesNet, a rede bayesiana criada pelo algoritmo é bastante simples,
como podemos ver na imagem abaixo.
Através da Confusion Matrix podemos verificar as classificações incorretas que foram realizadas:
Os Mandados de Segurança obtiveram um índice de acerto muito
baixo, quase 50% foram classificados incorretamente, um dos possíveis motivos
para esse desempenho fraco é que essa classe é bastante genérica. Processos com
essa classificação podem ter os mais variados tipos de assunto.
Conclusão
A abordagem inicial continua interessante e será estudada
mais detalhadamente, mas nesse momento, foi inviável para esse estudo de caso.
A segunda abordagem foi bastante satisfatória, através dela
conclui-se que a classificação dos processos pode ser realizada com um ótimo
índice de acerto, bastando para isso possuir dados mais simples de se obter: a
natureza e o assunto do processo.
Comentários