Projetos
1. Classificação de Decisões Juciais segundo Temas Repetitivos do STJ e STF
Participação como pesquisador voluntário no Projeto de Pesquisa para desenvolvimento de ferramentas baseadas em Inteligência Artifical (IA) e Aprendizado de Máquina, desenvolvido no âmbito da parceria entre o Instituto de Ciências Matemáticas e de Computação (ICMC) da Universidade de São Paulo (USP) e o Tribunal de Justiça do Estado de São Paulo (TJSP). A participação neste projeto ocorreu entre outubro de 2022 a agosto de 2024.
As minhas contribuições no projeto foram:
- Análise dos resultados dos experimentos de classificação durante o chamado ‘Desafio de Maio de 2023‘. Foram testadas mais de 800 configurações de modelos de classificação, e os resultados foram consolidados e analisados utilizando a biblioteca
pandas
, e as bibliotecasmatplotlib
eseaborn
para visualização dos resultados; - Treinamento de um modelo de Reconhecimento de Entidades Nomeadas (NER) para identificação de entidades em textos judiciais, utilizando a biblioteca Spacy e o conjunto de dados LeNER-Br;
- Anotação de um novo conjunto de Entidades específicas para as necessidades do projeto, utilizando a ferramenta Inception e treinamento de modelos baseados em Redes Neurais Recorrentes LSTM e modelos Transformers como BERTimbau e outros modelos da biblioteca
Hugging Face
específicos para o domínio jurídico em Português Brasileiro; - Desenvolvimento de protótipos de interfaces gráficas para comunicação dos resultados dos diversos modelos de IA aos usuários clientes. As interfaces foram desenvolvidas utilizando a biblioteca
streamlit
. Ver os artigos sobre o LegalSum e LegalClass; - Refinamento dos workflows de pré-processamento e preparação dos documentos para classificação, utilizando as bibliotecas
pandas
,nltk
,spacy
,scikit-learn
ere
(Regular Expressions) e outras; - Desenvolvimento de scripts para segmentação dos documentos segundo a estrutura dos acórdãos (voto do relator, relatório, fundamentação, e declaração de voto contrário) e extração de metadados dos documentos contidos no conteúdo dos acórdãos;
- Participação em reuniões de alinhamento com os clientes do projeto, e apresentação dos resultados obtidos durante o desenvolvimento das atividades.
2. Operadores de cruzamento para Algoritmos Genéticos aplicados ao Problema da Árvore de Steiner em Grafos
Projeto de pesquisa desenvolvido durante o Mestrado em Informática do Programa de Pós-Graduação Profissional em Informática da Universidade Tecnológica Federal do Paraná (UTFPR), sob a orientação do Prof. Dr. Danilo Sipoli Sanches, realizado no período de agosto de 2019 a dezembro de 2021.
Considerando um grafo não direcionado e ponderado $G(V, E)$, onde $V$ representa o conjunto de vértices e $E$ o conjunto de arestas, e $T \in V$ um subconjunto de $V$ de vértices especiais denominados terminais. O Problema da Árvore de Steiner em Grafos (Steiner Tree Problem in Graphs - STPG) consiste em determinar uma árvore de custo mínimo que conecta todos os vértices de $T$. O STPG é um problema NP-difícil, e possui diversas aplicações práticas em redes de comunicação, redes de distribuição de energia, e em problemas de roteamento de veículos.
A utilização de Algoritmos Evolutivos para esse problema não é tão comum quanto se pode pensar. A maioria dos trabalhos na literatura utiliza métodos baseados em programação inteira, métodos exatos, ou heurísticas. A proposta deste projeto foi investigar a utilização de Algoritmos Genéticos para o STPG, especificamente a adaptação de operadores baseados na partição de grafos como o Partition Crossover (PX) e o Generalized Partition Crossover (GPX) para o STPG. Esses operadores foram originalmente propostos para o Problema do Caixeiro Viajante, e apresentaram bons resultados em comparação com operadores clássicos da literatura.
As atividades desenvolvidas durante o projeto foram:
- Revisão bibliográfica sobre o STPG, incluindo o estudo de heurísticas clássicas e algoritmos evolutivos para o problema;
- Estudo dos operadores de cruzamento PX, GPAX e GPX a partir dos trabalhos de Tinós et al. (2020), Tinós et al. (2014) e Whitley et al. (2009);
- Implementação de um Algoritmo Genético com operadores clássicos para o STPG, seguindo a descrição das propostas de Kapsalis, Rayward-Smith and Smith (1993) e Esbensen (1995);
- Implementação de operadores para o GA baseados em uma versão randômica dos algoritmos de Prim e Kruskal, baseado na descrição de Raidl and Julstrom (2003);
O repositório github/ppgi-stpg-gpx contém o código fonte dos operadores de cruzamento e dos experimentos conduzidos. Os resultados principais foram reportados no artigo A Graph-Based Crossover and Soft-Repair Operators for the Steiner Tree Problem apresentado no BRACIS 2021.
O repositório github/xsteiner contém uma refatoração do código com a inclusão de novos operadores, melhor organização dos módulos e outras mudanças.
O arquivo da dissertação pode ser encontrada no repositório da Universidade, através desse link.
Durante a realização desse projeto considero que foram trabalhadas as seguintes competências:
- Estudo de algoritmos avançados e Estrutura de Dados;
- Desenho e condução de experimentos computacionais;
- Análise e visualização de resultados experimentais;
- Escrita e apresentação de artigos científicos;
- Desenvolvimento de software.
3. Pesquisa com Redes Corporais Sem Fio (Wireless Body Area Networks - WBAN)
Estágio curricular obrigatório realizado no Laboratório de Computação de Alto Desempenho (LeCAD) na Universidade Tecnológica Federal do Paraná (UTFPR), Campus de Cornélio Procópio (PR), sob a supervisão do Prof. Dr. Rogério Santos Pozza. O estágio foi realizado no período de abril a junho de 2018. Após esse período, as pesquisas continuaram até dezembro de 2018 para a conclusão do trabalho de conclusão de curso.
As atividades envolveram:
- Pesquisa na área de Redes Corporais Sem Fios (Wireless Body Area Networks - WBAN);
- Estudo de estratégias para controle da potência de transmissão em nós sensores visando o melhor uso da energia disponível;
- Simulação de uma rede WBAN utilizando o software Castalia;
- Implementação de um algoritmo de controle baseado em uma simples regra probabilística;
- Utilização de uma abordagem Cross-Layer, em que a comunicação entre camadas não adjacentes do modelo OSI é explorada;
- As pesquisas do estágio foram estendidas para um trabalho de conclusão de cursos, um artigo apresentado em um simpósio nacional, e alguns resultados foram mencionados na tese de doutorado do orientador;
- Os resultados mostraram que as a abordagem Cross-Layer e o controle estatístico da potência de transmissão são alternativas viáveis para reduzir o consumo energético enquanto mantém a taxa de pacotes enviados e recebidos na rede.