1. Histórico

Em meados de 2017 o TJRO instituiu uma equipe formada por 4(quatro) analistas, com intuito de prospectar o uso de IA para celeridade do processo judicial.

Várias empresas foram contactadas, porém não havia nada no mercado com maturidade suficiente para atender a demanda exigida.O intuito naquele momento, era atender à uma solicitação do Desembargador Walter Waltenberg, que almejava a automatização do processo de concessão de medicamentos, minimizando o esforço realizado por seus assessores em pesquisas e triagens.

Diante da demanda, a então Secretária de TIC, Ângela Carmen, instituiu um setor de inovação, coordenado pela Diretora do DeGov Alessandra Lima.

Uma frente de trabalho para contratação de empresas foi criada, realizando um Estudo Técnico Preliminar (ETP), que culminaria em 4 (quatro) processos distintos de aquisição. Parte da equipe realizou viagens de sondagem, para conhecer sistemas similares já existentes em outros órgãos e empresas privadas.

Na esfera pública, os sistemas Aptus(MPF) e Sapiens(AGU) foram as soluções mais robustas encontradas, porém atendiam apenas em parte as necessidades e eram de difícil customização ao modelo de negócio do TJRO.

Em paralelo ao processo de contratação, a equipe foi encubida de realizar treinamentos em DataScience e Inteligência Artificial com a finalidade de desenvolver internamente a ferramenta preterida.

A escolha foram treinamentos da DataScience Academy, os quais serviram de norte para os integrantes da equipe, iniciando o treinamento em Outubro de 2017.

Em janeiro de 2018, os primeiros resultados já puderam ser observados no desenvolvimento realizado pela equipe do TJRO, que apresentou uma POC de um modelo de para classificação de despachos. A demonstração agradou aos gestores e ao atual Presidente Desembargador Walter Waltenberg, que disponibilizaram servidores da área negocial com intuito de treinar novos modelos de inteligência artificial.

Até então, não havia ainda uma plataforma nos moldes atuais, e dada a necessidade de gerar novos modelos com maior celeridade, possibilitando um interfaciamento com novos sistemas e a curadoria, ficou clara a necessidade de uma orquestração que foi totalmente agnóstica do ponto de vista de software, nascia ali o arcabouço do que viria a ser chamado de SINAPSES.

O nome SINAPSES foi escolhido por votação, entre os servidores do DeGov-TJRO.

Com uma inteface mais madura, possibilitando que novos modelos fossem treinados, as equipe de negócio iniciaram o treinamento de novos modelos, possibilitando o avanço nos trabalhos de pesquisa que vinham sendo desenvolvidos.

O projeto passou a ter noteriedade no cenário nacional, tem sido exposto em dois eventos que acabaram sendo marcos em sua trajetória, a CampusParty-RO e o Fórum de Inteligência Artificial do TSE, ocorridos entre junho e agosto de 2018.

O CNJ tomou conhecimento do projeto, e em setembro de 2018, realizou a primeira visita - coordenada pelo Juiz Auxiliar do CNJ Braúlio Gabriel Gusmão - ao TJ-RO para conhecer a plataforma. A visão da equipe em relação ao sistema ia de encontro com os anseios do CNJ, em prover um ambiente ancorado em microserviços, que não tolhesse a capacidade de inovar dos tribunais.

Deste encontro, saiu o compromisso de nacionalizar o SINAPSES para atender ao judiciário nacional, o que foi feito em 16 de outubro de 2018, através do Termo de Cooperação 42/2018 , assinados pelo Presidente do CNJ, ministro Dias Toffoli e o presidente do TJ-RO, desembargador Walter Waltenberg.

image

1.1. InovapJE

Um espaço para pensar, pesquisar e produzir inovação para o processo judicial eletrônico. Com intuito de ser uma comunidade no judiciário, com foco na inovação do PJE, foi instituido o Laboratório de Inovação do Processo Judicial Eletrônico (InovaPJE)

Portaria 25/2019 CNJ - Institui o Laboratório de Inovação http://www.trtsp.jus.br/geral/tribunal2/Trib_Sup/STF/CNJ/Port_25_19.html

Edital 02/2019 CNJ - Abre processo de seleção para projetos em IA http://www.trtsp.jus.br/geral/tribunal2/Trib_Sup/STF/CNJ/Edital_02_19.html

1.1.1. Vantagens

  1. Datasets da justiça nacional, de modo a possibilitar o estudo e treinamento de modelos de inteligência artificial sobre bases reais;

  2. O Centro de Inteligência Artificial operará como um acelerador de resultados, ao tornar disponível ferramentas, dados, consultoria técnica e intelectual, bem como um ambiente de colaboração entre os pesquisadores. O objetivo é escalar as iniciativas de todo país para sublimação tecnológica do PJe com uso da inteligência artificial.

  3. Ambiente de comunidade, de modo a facilitar a troca de experiências e o trabalho entre pesquisadores;

  4. Compartilhamento dos modelos de IA criados

  5. Participação preferencial nas novas iniciativas prospectadas a partir das atividades desenvolvidas no Centro de Inteligência Artificial, tais como seminários, fóruns, palestras e treinamentos;

  6. O fornecimento dos subsídios necessários ao sucesso dos projetos.

2. O que é

O sistema SINAPSES é uma plataforma para desenvolvimento e disponibilização em larga escala de modelos de inteligência artificial, também comumente conhecido como “Fábrica de Modelos de IA”. Esta terminologia se deve ao fato de a plataforma possibilitar que o processo de entrega dos modelos seja acelerado em uma escala não permitida quando estes são desenvolvidos da forma tradicional, onde o cientista de dados e os desenvolvedores trabalham em conjunto para acoplar a inteligência ao sistema nativamente, muitas vezes incorporando ao código (fortemente acoplado) do sistema a inteligência.

No SINAPSES, esta atividade acontece de uma forma diferente, o sistema cliente (que irá consumir a inteligência) opera de forma totalmente independente do processo de construção dos modelos de inteligência artificial, consumindo micro serviços, também conhecidos como API’s, possibilitando assim total liberdade para as equipes de DataScience e também de Desenvolvedores, trabalhando em uma abordagem fracamente acoplada.

Figura 00

image

A finalidade do SINAPSES: prover um mercado de modelos para serem utilizado no PJE, possibilitando que estes modelos possam ser utilizados pelas diversas versões, e que cada tribunal possa construir seus proprios modelos, compartilha-los e consumir modelos de outros tribunais.

3. Funcionalidades

Abaixo algumas funcionalidades encontradas no SINAPSES:

3.1. Treinamento supervisionado para modelos de machine learning

A plataforma oferece uma interface que possibilita o treinamento supervisionamento de modelos de classificação ou extração de texto. De forma simples, a curadoria pode ser realizadas pelas equipes de negócio, possibilitando a criação de novos modelos que necessitem de treinamento supervisionado.

3.1.1. Classificação de Documentos

Figura 01

imageClassificação

3.1.2. Extração de texto

Figura 02

imageExtração de texto

3.2. Versionamento de Modelos

Uma das grandes vantagens no SINAPSES está na seu suporte ao versionamento de modelos de IA. É possível manter várias versões do mesmo modelo ativas, e criar novas versões a partir do algoritmo de versões anteriores ou novos algoritmos, acompanhando a evolução do modelo quanto a sua acurácia, situação, data de início e fim de treinamento, situação e status, gestão de recursos, algoritmo, dependências do container, gestão de réplicas e monitoramento de pods hospedados na infra-estrutura.

Figura 03

imageTela de informações de todas as versões disponíveis por modelo

Figura 04

imageTela de informações do modelo

Figura 05

imageTela de gestão de réplicas

Figura 06

imageTela gestão de recursos

Figura 07

imageTela de algoritmo

Figura 08

imageTela de dependências

Figura 09

imageTela de gestão de pods(pod saudável)

Figura 10

imageTela de gestão de pods(pod com erro)

3.3. Auditabilidade dos modelos

É possível gerenciar o comportamento dos modelos em produção, provendo um ciclo de auditabilidade do mesmo. Isso é possível pois cada modelo pode ter suas predições auditadas a cada requisição, gerando um relatório que contém a convicção, classe (rótulo, label) predita, a data, o nome do classificador e o documento que foi enviado para predição. A partir destas informações, e do processo de desenvolvimento que cada modelo possui dentro da plataforma ( extração, treinamento, algoritmo, dependências), podemos garantir uma oferta mínima de revisão do processo de sugestões realizadas pela IA. Aliando esta funcionalidade, a necessidade de validação ética e jurídica dos modelos que são disponibilizado em produção, estaremos ofertando uma governança da atuação da IA dentro do processo judicial.

Figura 11

imageTela de Predições

Figura 12

imageDocumento enviado para predição

Figura 13

imageHistórico de predições realizadas para um documento

3.4. Interface para importar datasets

É possível importar datasets de forma simples, via arquivos CSV, ZIP ou a partir de outros modelos já hospedados. Uma vez importados para um novo projeto, este ficam disponíveis para curadoria ou uso imediato nas futuras versões do modelos.

Figura 14

imageTela para importar novos datasets

3.5. Ambiente Multi-tenant

A plataforma possibilita que cada instituição tenha um ambiente exclusivo para usuários e dados de seu domínio. Embora seja adotada uma política de comunidade, com compartilhamento de conhecimento e algoritmos, essa prática pode ser gerida por cada unidade, conforme política própria para compartilhamento de dados, modelos e pesquisas.

Figura 15

imageTela de gestão de domínios

3.6. Aprendizado por reforço

A plataforma permite que os sistemas clientes alimentem a base de documentos (para treinamento do modelo) com novos exemplos a partir do uso. Se houver divergência entre a sugestão ofertada pela IA e a escolha do usuário, o documento em questão para esta divergência será armazenado em uma área de “reforço”, registrando o impasse, para que seja resolvido por um terceiro (humano). Após a definição de quem estava certo, o novo exemplo poderá compor uma nova base de treinamento, para uma nova versão do modelo.

3.7. Sistemas que operam em conjunto com o SINAPSES

  • Iris: API para OCR de documentos

  • Prisma: API para parser de documentos

  • Codex: sistema para consolidação de bases processuais, com finalidade de prover documentos estruturados para construção de modelos de IA. Os insumos produzido pelo CODEX podem ser utilizados na produção de BI e pesquisa unificada. Este sistema está em fase de homologação, com previsão para entrar em produção até primeira quinzena de dezembro de 2019. Alem de consolidar em texto "puro" os processos, ele também extrai os metadados (partes, dados das partes, quantidade de partes, classe, assunto, valor da causa, número do processo, data de ajuizamento, justiça gratuita, nivel de sigilo, liminar, competência, origem, tipo de justiça, jurisdição, movimentos dos processos). Em média, a cada três segundos os dados são sincronizados com o CODEX.

3.7.1. Codex - Arquitetura

Figura 16

imageDiagrama de operação

4. Modelos de Inteligência Artificial

4.1. O que é um modelo de inteligência artificial

Abstração de atividades ou rotinas, criada a partir de modelos matemáticos para classificar novas interações com padrões similares (realizar predições).

Exemplo:

Um determinado tribunal, selecionou 50 mil petições  relacionadas a Energia Elétrica, Companhias Telefônicas, Companhias Aéreas, Bancos, etc. Estas petições foram divididas em cinco grupos, com dez mil exemplos para cada tipo. Esta rotulagem aplicada foi submetida a uma rede neural, criando assim um modelo de IA que é capaz de classificar novas petições semelhantes nestas cinco classes.

4.1.1. Modelos em desenvolvimento:

Os modelos abaixo listados estão em desenvolvimento, homologação ou produção, e estarão disponíveis para todos os tribunais que utilizam o PJE, com a finalidade de implementarem automações com uso de Inteligência Artificial ao processo judicial.

4.1.1.1. 1. Movimento Inteligente
Table 1. Movimento Inteligente
Nome Descrição Tipo Tribunal Gestor Responsáveis Situação Acurácia GIT

Movimento Inteligente

O modelo de movimento inteligente tem por finalidade sugerir, em acordo com a TPU, qual o movimento será aplicado no despacho, fazendo uso de inteligência artificial. A API está adaptada para receber documentos, e retornar uma predição do movimento mais provável o mesmo (gratuidade de justiça, mero expediente, concedida medida liminar, etc).

Classificador

Tribunal de Justiça de Rondônia

Equipe TJRO: Alcides Fernando, Cleiton Augusto, Felipe Colen, Mikaell Araujo, Pablo Moreira

Ativo / Produção

91%

GIT LIN

4.1.1.2. 2. Prevenção
Table 2. Prevenção
Nome Descrição Tipo Tribunal Gestor Responsáveis Situação Acurácia GIT

Prevenção

Varre bases processuais e identifica possíveis casos de prevenção, em acordo com o código civil.

Clustering

Tribunal de Justiça de Rondônia

Equipe TJRO: Alcides Fernando, Cleiton Augusto, Felipe Colen, Mikaell Araujo, Pablo Moreira

Em testes

Não se aplica

GIT

4.1.1.3. 3. Similaridade Processual
Table 3. Similaridade Processual
Nome Descrição Tipo Tribunal Gestor Responsáveis Situação Acurácia GIT

Similaridade processual

varre bases processuais e identifica similaridade entre documentos, com aplicação na assinatura em lote, identificando a partir de um documento escolhido, quais entre os demais do lote possuem maior similaridade.

Clustering

Tribunal de Justiça de Rondônia

Equipe TJRO: Alcides Fernando, Cleiton Augusto, Felipe Colen, Mikaell Araujo, Pablo Moreira

Em testes / Homologação

Não se aplica

GIT

4.1.1.4. 4. Acordão Sessões
Table 4. Acordão Sessões
Nome Descrição Tipo Tribunal Gestor Responsáveis Situação Acurácia GIT

Acórdão Sessões

Lê, identifica e possibilita extrair partes de uma acórdão, como ementa, relatório e voto.

Classificação e estração de conteúdo

Tribunal de Justiça de Rondônia

Equipe TJRO: Alcides Fernando, Cleiton Augusto, Felipe Colen, Mikaell Araujo, Pablo Moreira

Ativo / Diponível para uso

94%

GIT

4.1.1.5. 5. Gerador de texto jurídico (auto-complete)
Table 5. Gerador de texto jurídico
Nome Descrição Tipo Tribunal Gestor Responsáveis Situação Acurácia GIT

Gerador de texto jurídico

Produz automaticamente sugestões de palavras (autocomplete) com base no que já foi escrito.

-

Tribunal de Justiça de Rondônia

Equipe TJRO: Alcides Fernando, Cleiton Augusto, Felipe Colen, Mikaell Araujo, Pablo Moreira

Ativo / Diponível para uso

Não se aplica

GIT

4.1.1.6. 6. Sumarizador
Table 6. Sumarizador
Nome Descrição Tipo Tribunal Gestor Responsáveis Situação Acurácia GIT

Sumarizador

Produz resumos customizados de textos, reduzindo conforme o parâmetro recebido.

-

Tribunal de Justiça de Rondônia

Equipe TJRO: Alcides Fernando, Cleiton Augusto, Felipe Colen, Mikaell Araujo, Pablo Moreira

Ativo / Diponível para uso

Não se aplica

GIT

4.1.1.7. 7. Triagem de Grande Massa
Table 7. Triagem de Grande Massa
Nome Descrição Tipo Tribunal Gestor Responsáveis Situação Acurácia GIT

Triagem de Grande Massa

Faz a classificação de petições iniciais de acordo com temas pré-estabelecidos (energia, banco, cia aérea, etc)

Classificador

Tribunal de Justiça de Rondônia

Equipe TJRO: Alcides Fernando, Cleiton Augusto, Felipe Colen, Mikaell Araujo, Pablo Moreira

Ativo / Diponível para uso

66%

GIT

4.1.1.8. 8. Verifica Petição
Table 8. Verifica Petição
Nome Descrição Tipo Tribunal Gestor Responsáveis Situação Acurácia GIT

Verifica Petição

Faz a classificação de um documento, informando se trata ou não de uma Petição Inicial

Classificador

Tribunal de Justiça de Rondônia

Equipe TJRO: Alcides Fernando, Cleiton Augusto, Felipe Colen, Mikaell Araujo, Pablo Moreira

Ativo / Diponível para uso

99%

GIT

5. Mão na massa

Neste capítulo iremos aprender como criar um modelo de classificação no SINAPSES. O exemplo abordado tem caráter didático, por isso utilizaremos um dataset simbólico, para otimizar o tempo de importação e treinamento.

5.1. Pré-requisitos

Para realizar os passos seguintes, é necessário que você tenha conhecimentos suficientes no desenvolvimento de linguagem Python, para lhe auxiliar, indicamos que você realize um dos cursos abaixo, todos gratuitos.

5.2. Acessando a SandBox

5.2.1. Credenciais

Criamos um ambiente para que você possa realizar as atividades propostas neste passo a passo. Acesse a ulr https://sinapses-hml.ia.pje.jus.br e faça login com o usuario da sua instituição.

Caso você esteja fazendo o treinamento online, ou apenas deseja acesso para efetuar testes em seu tribunal, siga os passos abaixo para obter seu acesso.

1 - Acesse a url http://keycloak.ia.cnj.jus.br/auth, e clique em ADMIN CONSOLE conforme a imagem abaixo para ter acesso ao painel de controle do Keycloack.
Tela inicial

image

2 - Clique em register, indicado pelo retangulo vermelho.
Registro

image

3 - Preencha os campos, conforme indicado na imagem abaixo. No campo USERNAME, insira seu CPF sem pontos e sem traço.
Cadastro Inicial

image

Uma vez cadastrado, faça conforme abaixo:

  1. Acesse o SINAPSES: faça seu primeiro logon no SINAPSES, ainda não terá acesso aos recursos, mas isso irá criar suas credenciais na plataforma, só então, após ter efetuado o primeiro logon, siga os passos abaixo.

  2. Aluno EAD: Solicite o acesso ao DOMINIO EAD, através do suporte do CNJ.

  3. Acesso via Tribunal: Solicite o acesso ao DOMINIO SANDBOX/SEUTRIBUNAL, através do suporte do CNJ.

Este não é um ambiente de produção, então não utilize com intuito de realizar apresentações ou integrar ao sistema de produção, mas caso faço isso, lembre-se que as atividades realizadas neste ambiente está compartilhando recursos e dados com os demais utilizadores. Se o seu interesse é de imediato colocar em produção um produto, contacte a gestão do CNJ para adquirir um dominio exclusivo para sua instituição em ambiente de produção.

5.2.2. CRIANDO UM MODELO - Classificador

Basicamente, todos os modelos criados no SINAPSES seguem um pipeline similiar, iremos demonstrar como realizar a criação de um modelo de IA, criando um classificador.

5.2.2.1. Criando um Classificador
1. No menu lateral, clique no menu Classificador/Classificadores.
Figura 17

image

2. No rodapé da nova página que abrirá, clique em no botão NOVO.
Figura 18

image

3. A tela abaixo será apresentadada, nela você deverá preencher conforme o seu caso de uso.
Figura 19

image

Como preencher os campos
  1. Nome - o sistema automaticamente irá recursar caracteres especiais e espaços, bem como só permitirar caixa alta. Não é permitido dentro da mesma unidade de dominio o mesmo nome para mais de um classificador (este restrição tem por fundamento garantir um único endereço de API por modelo.

  2. Descrição - preenchimento livre, considere colocar informações relativas ao classificador para sua melhor identificação dentro da plataforma.

  3. Unidade Domínio - você deverá escolher um dominio (detro dos quais sua conta está inserida) para

  4. Registrar Atividade de Predição - ao marcar este campo, você está passando a informação para API, que todas as predições serão auditadas, salvando os documentos que foram ofertados em cada predição. Esta função é útil, além da auditoria, para gerar novos exemplos que poderão ser utilizados para apredizado por reforço do modelo. Avalie bem antes de utilizar esta opção.

  5. Tipo Classificador - escolha conforme o seu caso (esta opção será desabilitada nas próximas versões da interface, e sua resposabilidade ficará a cargo do algortimo do modelo criado).

4. Para o nosso exemplo iremos criar um modelo didático, para realizar predições sobre personagens da DC e COMIC, chamaremos este classificador de CB_PERSONAGENS e será preenchido conforme abaixo. Por questões didáticas, não faremos um exemplo com dados e situações relacionadas ao PJE, pois a maioria destes modelos demanda um tempo signtificativo para treinamento, mas você encontrará na documentação dos modelos ativos, aqui disponível, o passo a passo para criar novas versões dos modelos existentes com uso da base de dados do seu tribunal.
Figura 20

image

5. Se tudo estiver certo, você receberá uma mensagem de sucesso, e o ID da versão ser aplicado, clique em voltar, e retorne para lista de classificadores de seu dominio.
Figura 21

image

6. No campo nome, realize a pesquisa por seu modelo, e clique em pesquisar, deve retornar conforme a tela abaixo.
Figura 22

image

Conforme a numeração da imagem, a função de cada menu é apresentada a abaixo:
  1. Cadastrar exemplos - esta é uma foma de você cadastrar exemplos manualmente, um por um para o seu classificador.

  2. Importar exemplos em lote - esta opção lhe permite importar exemplos em lotes de arquivos csv ou zip.

  3. Editar Classificador - nesta opção você poderá editar e ver maiores informações relacionadas ao seu classificador.a

  4. Preparar uma nova versão - irá abrir uma tela para criar uma nova versão do modelo. É necessário que tenham exemplos válidos, do contrário o sistema irá retornar uma mensagem de erro.

  5. Duplicar Classificador - escolha conforme o seu caso (esta opção será desabilitada nas próximas versões da interface, e sua resposabilidade ficará a cargo do algorítmo do modelo criado).

  6. Exportar Classificador - escolha conforme o seu caso (esta opção será desabilitada nas próximas versões da interface, e sua resposabilidade ficará a cargo do algortimo do modelo criado).

  7. Excluir Classificador - Esta opção irá deletar o classificador e todos os exemplos vinculados a ele.

5.2.2.2. Editando um Classificador

Você pode acessar a edição de um classificador, clicando em EDITAR CLASSIFICADOR, conforme a figura anterior, onde lhe será a apresentada a tela abaixo:

1. Nesta tela, é possível alterar as informações do classificador, modificando as funções já demonstradas. Podemos também editar a versão do modelo associada ao classificado (caso ela já exista); visualizar, editar, excluir ou incluir novas classes; ver informações de auditoria do classificador.
Figura 23

image

2. Na aba Auditoria estão informações de criação e alterações sofridas pelo classificador.
Figura 24

image

3. Classes (rótulos ou labels). Quando criamos um modelo para classificação, necessitamos definir rótulos/labels para os documentos que serão utilizados no apredendizado supervisionado. Embora você possa futuramente se deparar com modelos que usam rótulos da TPU (Classes e Assuntos), esta vinculção não possui correlação com a mesma, por regra chamamos classes, mas pode ser entendido como rótulo, tags ou saídas. Na imagem abaixo, nosso classificador está sem nenhuma classe, pois ainda não criamos nenhuma. Podemo criar as classes que iremos utilizar, ou, ao importar nossos exemplos, definir no arquivo de importação estas classes já vinculadas aos exemplos, isso fará com que o SINAPSES crie automaticamente estas classes para o classificador.
Figura 25

image

4. Na imagem abaixo, fizemos a inclusão de algumas classes. A descrição da classe, será o rótulo ofertado pela predição quando a API do modelo for requisitada. Você pode incluir quantas classes desejar, de acordo com os exemplos que tem disponíveis para cada uma delas. Vale ressaltar que você também poderá excluir os rótulos, porém se houverem exemplos associados, eles também serão excluídos. Isso as versões dos modelos já treinados, porém irá impactar nas próximas versões geradas.
Figura 26

image

4. Se você clicar no menu EDITAR MODELO, irá ser apresentada a tela abaixo, e poderá observar que ainda não existe nenhuma versão de modelos criadas, pois é o que faremos nos próximos passos, criar uma nova versão de um modelo para o classificador. No SINAPSES podemos ter várias versões treinadas(ativas ou não) para um classificador.
Figura 27

image

5.2.2.3. Importando Exemplos

Neste topico iremos aprender como importar exemplos para o nosso classificador, atividade esta que pode ser realizada de três formas, como já citado anteriormente, a maneira que você irá utilizar irá depender da comodidade e habilidade no manuseio dos seus dados. Na sessão COOKBOOK, estaremos disponibilizando scripts prontos para a maioria dos modelos já homologados, facilitando este processo para você.

IMPORTANDO UM A UM

Para este método, é preciso antes criar as classes que irão receber os exemplos, então realize os seguintes passos:

a. Pesquise pelo seu modelo, conforme descrito na Figura 22, e clique no ícone indicado pelo número 3(caneta), depois vá na aba classes, conforme a figura 25, e clique em adicionar, coloque o nome que desejar, depois clique em salvar. Clique em voltar

b. Pesquise pelo seu modelo, conforme descrito na Figura 22, e clique no ícone indicado pelo número 1(sinal de mais). A tela abaixo será apresentada.

c. Selecione uma classe e cole o texto que deseja inserir, depois clique em CADASTRAR.
Figura 28

image

IMPORTANDO EM LOTE - CSV

Antes de iniciar este método, delete a classe criada no exemplo anterior, ela não será necessária para nosso modelo. Feito isto, siga os passos abaixo.

a. Pesquise pelo seu modelo, conforme descrito na Figura 22, e clique no ícone indicado pelo número 2(sinal de nuvem). A tela abaixo será apresentada.

b. Na opção CONVERTER TEXTO, clique em NÃO (quando usar documentos que possuam marcação html, utilize SIM). O conversor realiza limpeza de textos com tags html, deixando texto puro.

c. MEIO DE IMPORTAÇÃO, selecione ARQUIVO CSV

d. Faça o download do arquivo de exemplo, disponível na url DATASET01 logo abaixo.

e. Clique em SELECIONAR ARQUIVO CSV e depois em IMPORTAR, aguarde até receber uma mensagem de confirmação positiva.
Figura 29

image

IMPORTANDO EM LOTE - ZIP

Você também pode utilizar arquivo zip para importar seus datasets, esta é a forma mais prática para grandes quantidades de dados. Os script do CookBook irão ofertar este formato de entrada.

a. Pesquise pelo seu modelo, conforme descrito na Figura 22, e clique no ícone indicado pelo número 2(sinal de nuvem). A tela abaixo será apresentada.

b. Na opção CONVERTER TEXTO, clique em NÃO (quando usar documentos que possuam marcação html, utilize SIM). O conversor realiza limpeza de textos com tags html, deixando texto puro.

c. MEIO DE IMPORTAÇÃO, selecione ARQUIVO CSV

d. Faça o download do arquivo de exemplo, disponível na url DATASET01 logo abaixo.

e. Clique em SELECIONAR ARQUIVO CSV e depois em IMPORTAR, aguarde até receber uma mensagem de confirmação positiva.
Figura 29

image

5.2.2.4. Verificando Exemplos Importados

Após ter importado nossos exemplos, podemos verificar a efetividade do processo seguindo os passos abaixo, além de outras atividades que podem ser realizadas de acordo com os casos elencados a seguir. Um ponto importante a ser frisado, a plataforma faz o controle por hash de conteúdo dos arquivos, ou seja, não teremos arquivos duplicados. Quando um exemplo é inserido, e o mesmo já está armazenado, ele apenas será indexado.

Nos dois menus indicados na figura 30, você poderá manipular os exemplos inseridos.

Figura 30

image

Reclassificar exemplos

A reclassificação de exemplos é utilizada pela atividade de curadoria para validar, invalidar exemplos, processo chamado de "aprendizado supervisionado. Uma vez finalizada a atividade de curadoria, os exemplos válidos estão aptos a serem utilizado no dataset de treinamento do modelo.

Em ambiente de produção, um perfil TREINADOR é ofertado às equipes de negócio, para realizarem o processo de aprendizado supervisionado dos modelos.

As considerações necessárias para esta tela, são feitas logo abaixo, de acordo com a figura 31.

Os exemplos podem ser divididos em 3 estados:
1. Valido - cenário ideal, os documentos passaram pelo processo de curadoria, ou já foram validados em lote previamente, e estão aptos para compor o dataset das versões a serem preparadas do modelo.
2. Invalido - são documentos que passaram pelo processo de curadoria, e por algum motivo, conforme a regra de negócio acertada entre a equipe, o documento não possui os critérios ou qualidade necessária para ser inserido no dataset, então o mesmo será invalidado. Durante o processo de raspagem de dados, é comum algum lixo vir juntamente com os demais documentos, por isso a necessidade de um processo minucioso de curadoria ser realizado antes da utilização desta base de dados.
3. Não definido - são documentos que foram inseridos e aguardam o processo de curadoria, caso você tente gerar uma versão para o modelo, e todos os seus documentos estejam neste estágio, uma mensagem de erro será apresentada.

O processo de reclassificação, além da validação, consiste também em, aplicar, confirmar ou retificar os rótulos/labels/classes aplicados a cada documento. O curador, ao ler o documento, poderá realizar esta atividade (indicado pelos número 4 e 5), garantindo um dataset de qualidade. Uma outra vantagem em utilizar o SINAPSES para esta atividade, é que este processo é realizado com grande rapidez e intuitividade, após validar ou invalidar o documento, o próximo será lançado em tela, e assim sucessivamente até a total curadoria de toda base.

PS: Está no backlog, para versões futuras do SINAPSES, a possibilidade de realizer um double check, onde a validação ocorrerá através da validação por dois curadores, e na ocorrência de divergências na validação de um documento, ester será ofertado a um terceiro curador para desempate. Isso trará uma qualidade ainda maior ao processo de aprendizado supervisionado.
Figura 31

image

5.2.2.5. Gerando uma versão do modelo

Importamos o nosso modelo, já reclassificamos ou verificamos que nossos documentos estão com a qualidade necessária, então é a hora de prepararmos uma versão do nosso modelo, a primeira versão.

Volte novamente a tela de CLASSIFICADORES, pesquise por seu modelo e clique no ícone  conforme a imagem abaixo:
Figura 32

image

A tela abaixo lhe será apresentada, é nela que você irá definir quantas replicas o seu modelo terá em produção, e a quantidde de memória de cada pod. Não altere nada, para nosso exemplo, apenas confirme clicando em CRIAR VERSÃO.
Figura 33

image

Após clicar, o processo de preparação da versão será iniciado, o mesmo pode demorar um pouco, a depender da quantidade de exemplos. Ao final do processo, a tela abaixo será mostrada. Anote o ID da versão, indicado pela seta, pois o utilizaremos nas próximas etapas. A outra seta está apontando para a SITUAÇÃO, que está setada como "Pendente de Dataset".
Figura 34

image

Atualize sua tela (F5), e a SITUAÇÃO deverá estar setada como "PENDENTE DE ALGORITMO".
Figura 35

image

Na aba recursos, os arquivos do DATASET já deverão estar disponíveis.
Figura 36

image

Para chegarmos  a tela de gerenciamento de versões, apresentada abaixo, siga clicando em CLASSIFICADORES , pesquise por seu modelo, e clique em EDITAR CLASSIFICADOR (icone da caneta), depois clique em EDITAR MODELO.

Conforme novas versões forem sendo criadas, você poderá gerir cada uma delas a partir desta dela, por padrão, caso você não defina, o sistema irá ativar apenas a versão com maior acurácia, ainda que novas vesões sejam treinadas, mas você pode ativar manualmente e manter em operação mais versões.

Os botões, conforme a numeração:

1. Reiniciar Treino - é possível reiniciar o processo de treinamento em caso de falha.
2. Visualizar Versão - são apresentadas informações avanças da versão (algoritmo, recursos, dependências, logs)
3. Excluir - para excluir a versão.
4. Ativar versão - ativação e desativação manual da versão do modelo. Isso irá desabilitar a API que cada versão possui para ser consumida pelos sistemas clientes.
Figura 37

image

5.2.3. TREINANDO O MODELO

LEIA COM ATENÇÃO

Para treinarmos modelos no SINAPSES, podemos utilizar duas formas:

  1. IDE Eclipse ou Console Shell - é a maneira mais indicada, pois permite o debug do código.

  2. Jupyter Notebook - costuma ser o padrão entre cientistas de dados, mas não é mais trabalhoso para debug de erros.

As duas formas estão estáveis para uso atualmente, mas somente o treinamento via IDE sofrerá evoluções futuras no tocante a possibilidade de fazer o deploy do modelo já treinado, sem a necessidade do pipeline de treinamento na plataforma.

5.2.3.1. Dependências de ambiente

Para treinarmos nosso modelo, necessitamos configurar o nosso ambiente, o que faremos nos passos seguintes. Por padrão, estes passos foram homologados em Sistema Operacional Linux, mas você pode adapta-lo ao Windows, porém não terá suporte aos erros que surgirem, então nossa recomendação é que utilize o Linux como sua base para desenvolvimento e treinamento dos modelos. Em nossos exemplos, utilizamos o Ubuntu 18 LTS.

INSTALANDO O PYENV

O modo mais indicado para trabalhar com o ambiente de desenvolvimento em python, é utilizar o pyenv. Tomaremos como verdade que você já possui conhecimentos suficientes em Linux e na instalação de pacotes, mas abaixo indicamos alguns artigos para lhe auxiliar nesse processo.

1 - Com o pyenv instalado, abra um terminal shell e execute os comandos abaixo:

1
2
3
4
$ cd ~
$ pyenv install 3.6.8
$ pyenv virtualenv 3.6.8 cranium
$ pyenv activate cranium

A sua tela deve estar semelhante (o usuario e nome da máquina irão estar de acordo com a sua configuração local) a imagem 38, do contrário, revise novamente os procedimentos.

Figura 38

image

Temos agora um ambiente isolado, para que possamos trabalhar sem interferir e sem interferências do nosso sistema operacional. Precisamos ainda configurar o PIP apontando para o Nexus do CNJ e instalar as dependências.
CONFIGURAND O PIP E ATUALIZANDO O AMBIENTE

Necessitams alterar a configuração do PIP para buscar os pacotes no repositório do CNJ, para isso, execute os comandos abaixo conforme indicado ou faça a adptação necessária ao seu sistema operacional.

1 - Faça o download do arquivo pip.conf (disponível no link abaixo) e salve no diretório ~/.config/pip

Com o botão direito sobre o link, escolha salvar link como

2 - Faça o download do arquivo requirement.txt, que possui as dependências do nosso ambiente.

Com o botão direito sobre o link, escolha salvar link como

3 - No mesmo direitório em que fez o download do arquivo requirements.txt execute os comandos abaixo:

Se for utilizar o jupyter-notebook

1
2
3
$ pip install -r requirements.txt
$ pip install sinapses-nbextension
$ pip install jupyter

Se for utilizar o ECLIPSE

1
$ pip install -r requirements.txt
Se tudo estiver corretamente configurado, irá instalar as dependências necessárias ao abmiente para treinamento(local) e deploy nosso modelo.
5.2.3.2. Jupyter Notebook - ALGORITMO

Com nosso ambiente configurando, já podemos treinar nosso modelo, utilizando o algoritmo que desenvolvemos. O SINAPSES só possui uma restrição em relação ao desenvolvimento de modelos, é necessário utilizar linguagem PYTHON, mas o Cientista de Dados possui total liberdade (ancorado nesta restrição) para desenvolver seus modelos utilizando qualquer framework de IA.

Iremos utilizar o jupyter notebook, mas antes, faça o download do algoritmo no link abaixo.

1 - Com o pyenv instalado, abra um terminal shell e execute os comandos abaixo na mesma pasta onde realizou o download do algoritmo:

1
2
$ pyenv activate cranium
$ jupyter-notebook

Será aberta uma nova janela no seu navegador, conforme a imagem abaixo (use o Chrome).

Figura 39

image

2 - Vamos agora à execução do algoritmo, clique no arquivo comic_book_jupyter.ipynb, um nova janela será aberta, com o arquivo diponível para execução.

Figura 40

image

Verique se o botão SINAPSES está disponível na sua interface, caso não esteja, reveja os passos de instalação das dependências do arquivo requirements.txt

3 - Ao iniciar a execução das celulas, já na segunda tela, você deverá inserir algumas informações:

  1. a primeira será o endereço do SINAPSES, digite https://sinapses-backend-hml.ia.pje.jus.br/rest

  2. a segunda será seu usuário, o mesmo com qual acessa o SINAPSES

  3. a terceira será a senha, a mesma de acesso ao SINAPSES

  4. e por ultimo, o ID do modelo, que mostramos na figura 34

Figura 41

image

4 - Continue com a execução das células do notebook, até chegar na ultima célula, onde econtrará a função pipeline.executar_teste(), ela serve como um pré-teste antes do envio do algorítmo para o SINAPSES. Execute esta também, e verifique se a tela apresentada é semelhante a apresentada abaixo:

Figura 42

image

5 - Neste ponto, já realizamos o treinamento do modelo em nossa máquina, e certificamos que ele está sem erros, agora podemos realizar o deploy no SINAPSES, para isso, comente a função pipeline.executar_teste(), conforme a imagem abaixo:

Figura 43

image

6 - Para realizar o deploy no SINAPSES, clique no botão SINAPSES, no centro do menu.

Figura 44

image

7 - Um dialog será aberto, e irá executar um novo pré-treinamento, conforme a tela abaixo, antes de enviar para o SINAPSES.

Figura 45

image

8 - Vamos voltar agora a tela do nosso modelo, e verificar o estado da nossa versão.

Figura 46

image

Na imagem acima vemos que, antes do deploy, nossa versão estava PENDENTE DE ALGORITMO.
Figura 47

image

E agora, após o deploy, nossa versão está PENDENTE DE TREINAMENTO.

Aqui é necessário explicarmos, pois certamente você desve estar se perguntando "Mas eu já não treinei o meu modelo ?". Sim, verdade, você já treinou, mas em sua estação. No SINAPSES, quando fazemos o deploy, estamos enviando o algoritmo e as dependências do nosso ambiente local, e um novo processo de treinamento será realizado em um pod exclusivo, com as mesmas configurações do seu ambiente local, porém utilizando os recursos da infra-estrutura no qual o SINAPSES está abrigado. Há no backlog, a implementação de possibilitar que esse pipeline possa ser opcional, efetuando o deploy completo dos pesos a rede neural treinada localmente e demais recursos, possibilitando a liberação direta do serviço.

9 - Se formos até os logs da nossa versão, poderemos ver o pod (cranium-trn) de treinamento sendo criado, até finalizar o processo de treinamento.

Figura 48

image

Na tela acima, podemos acompanhar o treinamento do modelo.
Figura 49

image

Finalizado o treinamento, agora o SINAPSES irá subir o pod de serviço, responsável por receber as requisições para predição, clique nele e você poderá ver resultados semelhantes a imagem acima.

10 - Nosso modelo neste momento está treinado e ativo, conforme imagem abaixo, e pronto para ser consumido.

Figura 50

image

Finalizado o treinamento, agora o SINAPSES irá subir o pod (craniun-svc) de serviço, responsável por receber as requisições para predição, clique nele e você poderá ver resultados semelhantes a imagem acima.
5.2.3.3. Eclipse/Shell - ALGORITMO

Você deverá repetir a mesma sequência já apresentada com o Jupyter Notebook, porém fazendo as devidas adequações a sua IDE.

Para download do algoritmo, use o link abaixo

1 - Certifique-se que em sua IDE, o ambiente pyenv criado está atividado, e caso utilize o shell, não esqueça de executar o comando abaixo antes de rodar o algorítmo.

1
$ pyenv activate cranium

5.2.4. Testando o Modelo

Para avaliar o funcionamento do seu modelo, há uma tela específica para esta finalidade na própria plataforma. Vá ao menu EDITOR/Específico.

Figura 50

image

1 - Na tela que será apresentada, pesquise e selecione a versão do modelo criado.

Figura 51

image

2 - Uma vez que tenha selecionado o modelo, você pode testa-lo digitando o colando algum conteudo no editor. Conforme edita, o SINAPSES irá realizar predições sobre o conteúdo que está sendo ofertado. Em nosso caso, nosso modelo foi treinado para realizar predições sobre personagens da DC e MARVEL.

Figura 52

image

Na imagem acima, nosso modelo realizou uma predição com 3 saídas, em ordem de certeza (%). Embora tenham ficado bem próximas, a classe campeã foi BATMAN. Em um caso real, caberia ao operado humano do sistema escolher entre as três opções. E em caso de divergência, a API recebe um retorno informando que houve descordância, registrando na plataforma esta divergência para resolução futura e reaprendizado do modelo.

5.2.5. Consultando A API

Tomando com base a requisição realizada na Figura 51, temos os seguinte cenário:

Requisição

Todos os modelos utilizaram a mesma raíz de requisição /rest/modelo/executarServico/, e terão suas peculiaridades conforme a descrição abaixo:

  1. https://sinapses-backend-hml.ia.pje.jus.br - servidor {servidor}.

  2. /rest/modelo/executarServico - serviço {servico}.

  3. /-tjro - dominio no qual o modelo está hospedado {dominio}.

  4. /CLS_CB_PERSONAGENS - nome do modelo {nome_modelo}.

  5. /1 - número do modelos {versao_modelo}.

API: {servidor}/{servico}/{dominio}/{nome_modelo}/{versao_modelo}

Listing 1. Mensagem Json
1
2
3
4
5
6
7
{
    "mensagem": {
        "tipo": "TEXTO",
        "conteudo": "TmEgbm9pdGUgZXNjdXJhIGV1IHNvdSBv"
    },
    "quantidadeClasses": 3
}

Resposta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
   "classeConvicto":{
      "codigo":"BATMAN",
      "descricao":"BATMAN"
   },
   "resultados":[
      {
         "classe":{
            "codigo":"BATMAN",
            "descricao":"BATMAN"
         },
         "conviccao":33.39008464003392
      },
      {
         "classe":{
            "codigo":"SUPER_HOMEM",
            "descricao":"SUPER_HOMEM"
         },
         "conviccao":33.35604335701127
      },
      {
         "classe":{
            "codigo":"MULHER_MARAVILHA",
            "descricao":"MULHER_MARAVILHA"
         },
         "conviccao":33.25387200295481
      }
   ]
}

5.2.6. "RE-TREINANDO" O MODELO

No SINAPSES o retreino do modelo é diferente, pois não iremos de fato retreinar, mantendo a mesma API, iremos gerar um nova versão do modelo, com uma nova API. Isso ficará mais claro com os exemplos as seguir.

1 - Mas antes de retreinar nosso modelo, é necessário um motivo. Nesse caso, o nosso cenário é: a primeira versão do nosso modelo foi treinada com poucos exemplos, agora temos novos exemplos, e queremos efetuar este retreino para verificar se haverá melhoria na eficiência do modelo. Voltemos então ao nosso classificador, conforme a FIGURA 22, e clique no menu IMPORTAR EXEMPLOS EM LOTE (2).

Faça todo processo de importação, mas agora utilize o arquivo do link abaixo.

Uma vez realizado este procedimento, se o dataset já estivesse com cada exemplo marcado como VALIDO, como ocorreu no primeiro dataset, íriamos direto para o próximo passo e gerar uma nova versão. Mas não é o caso, este nosso dataset não está validade, e necessita passar pela curadoria. Esse processo de curadoria, em casos reais, é realizado pela equipe de negócios. Os nossos novos exemplos foram importados em estã com status NÃO DEFINIDO.

2 - Conforme a FIGURA 30, clique em RECLASSIFICADOR EXEMPLOS, pesquise pelo seu classificador.

3 - Conforme a FIGURA 31, desmarque os botões VALIDO e INVALIDO, deixando apenas NÃO DEFINIDO, isso irá apresentar para reclassificação apenas os nossos novos exemplos. Verifique se o conteúdo de cada documento condiz com a classe/rótulo e clique em VALIDAR(botão verde) até que todos os documentos disponíveis sejam validados e não reste mais exemplos em tela.

4 - Com os documentos classificados, Voltemos então ao nosso classificador, conforme a FIGURA 22, e clique no menu PREPARAR UMA NOVA VERSÃO(4).

A tela abaixo será apresentada.

Figura 53

image

Algumas considerações precisam ser feitas antes de avançarmos ao próximo passo. Nesse ponto, se clicarmos em CRIAR VERSÃO, estaríamos repetindo todo o nosso _pipeline_ já apresentado anteriormente para treinamento do nosso modelo. Mas não é o que queremos, pois isso nos levaria a ter que novamente gerar um algorítmo para este modelo, e nosso modelo irá usar o mesmo algorítmo da versão anterior. Então, o SINAPSES nos oferece a possibilidade de retreino fazendo uso do algorítmo de versões antiores.

5 - Na tela apresentada anteriormente, clique em SIM (Usar algorítmo de versão anterior), e a tela abaixo será apresentada.

Figura 54

image

Na imagem acima, selecione a versão desejada, para o nosso caso é a VERSÃO 1.  Feito isso, clique em CRIAR VERSÃO.

6 - Diferentemente do processo anterior, a plataforma agora se encarregará dos próximos passos, e irá gerar uma nova versão do modelo, o qual ficará PEDENTE DE TREINAMENTO, e uma vez treinado, disponibilizará uma nova API para consumo (INATIVA). Por padrão, se a acurácia da nova versão for igual o inferior a versão anterior, a plataforma deixar a mesma inativa, cabendo a você julgar a necessidade de manter mais de uma versão ativa.

7 - Aguarde o treinamento, e após finalizado, verifique em DADOS DAS VERSÕES (do modelo). Nesta tela você poderá ativar e desativar as versões do seu modelo.

6. Agora é com você

Nesta sessão, você irá gerar produtos para o seu tribunal. Iremos compartilhar aqui, todos os algoritmos e processos para geração dos modelos disponíveis no ambiente do SINAPSES, com o passo a passo mínimo, somado ao seu conhecimento em programação, você poderá replicar versões em acordo com a realidade do seu tribunal.

6.1. COOKBOOK - DATASETS

Na sessões abaixo, serão apresentadas formas de extrair datasets que servirão para gerar novos modelos para os algorítmos de IA disponíveis, fazendo uso da base do sistema processual do seu tribunal.

6.1.1. Movimento Inteligente

6.1.1.1. 1. Faça o download do kit de extração de acordo com o seus sistema processual.
Nome Descrição Sistema Processual Versão Requisitos Fonte

Movimento Inteligente

Este kit contem os scripts necesários para que você efetue o download dos documentos do PJE necessários a geração do dataset para o modelo.

PJE

1.0.1

Sistema Operacional Linux

Download

6.1.1.2. 2. Verifique o seu ambiente

Certifique-se de que o docker e docker compose estejam instalados em sua máquina, caso não esteja, acesse a documentação oficial e realize a instalação de acordo com a versão do seu sistema operacional.

6.1.1.3. 3. Execute o script

Após ter descompactado o arquivo do kit, abra um terminal shell do linux, e execute o script conforme abaixo:

1
2
3
$ chmod +x script-extracao.sh

$ ./script-extracao.sh
6.1.1.4. 4. Aguardando a finalização

Uma pasta no mesmo local em que o arquivo foi executada será criada, onde serão armazenados os documentos extraídos. Você poderá acompanhar a finalização do processo através dos logs do docker, para o container criado.

1
$ docker logs -f nomedocontainer
6.1.1.5. 5. Importando e criando o modelo

Terminado o processamento, realize os passos descritos para criação de um modelo(classificador), prepare o dataset e solicite o algoritmo para ajuste e execução.

7. Alterar Senha

1 - Acesse a url http://keycloak.ia.cnj.jus.br/auth, clique em ADMIN CONSOLE conforme a imagem abaixo para ter acesso ao painel de controle do Keycloack, e faça logon com suas credenciais.
Figura 01

image

2 - Na tela que será renderizada, no canto superior direito, clique em MANAGE ACCOUNT.
Figura 02

image

3 - Clique em PASSWORD, digite a senha antiga, a nova senha, confirme a nova senha e clique em SAVE.
Figura 02

image