Pular para o conteúdo principal

Aprendizagem de Máquina com WEKA


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:

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

Esse estudo de caso discutiu a aplicação de Aprendizagem de Máquina em um problema real, apresentando as abordagens utilizadas e os resultados obtidos com a aplicação dos algoritmos de classificaçã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

Postagens mais visitadas deste blog