[Música] primeiramente nesse fluxograma a gente tem uma entrada que é um texto bruto né que ele vai ser inserido na função principal do aa justamente naquele Jon você passa o texto bruto e ele entra na função aqui um exemplo né segundo parágrafo 7 do Arte 6 lei 14 1666 traço 2021 e artigo 10 do Decreto 300 nenhum padrão pegamos um um texto assim bem bem livre o que que ele vai fazer primeiramente né Ele vai tentar encontrar tanto dispositivos quanto artigo eh a gente fez essa formatação aqui do artigo que é uma tupla que ele
diz o artigo se ele tem complemento tipo artigo 1 a 1 B eh temos o inciso o parágrafo a linha o item n essa formatação aqui nesse caso ele encontrou dois né Eh artigo 6 sequência né na sequência artigo a argumento do artigo parágrafo isso inciso a linha e item perdão tem um erro nessa nessa nessa figura aqui eu botei artigo se aqui era para ser seis parágrafo 7 então e aqui ele vê o outro artigo 10 e aqui ele vai separadamente ver os dispositivos né os documentos essa lei 14.16 2021 e o decreto 300
tudo isso a gente pode ver nessas duas funções aqui se a gente entrar nelas é que a brincadeirinha começa né só uma coisa então basicamente é o seguinte a gente tem um código que é o Main que ele basicamente é o código principal obviamente e vai chamar várias outras funções essas outras funções estão estruturadas do mesmo jeito que parecido que daquele que o do trata Tex tem lote de ontem do treinamento de ontem né então por exemplo a O Eric vai chamar ele a gente poderia definir mais funções poderia só que a gente acabou que
a gente só definiu essas por enquanto Ah que seria a encontra dispositivo encontra artigo padroniza nome lei a modelo de distância e a consulta do gcl o gcl é o knowledge graph né é o graf do conhecimento legal né basicamente o aa é uma função que aqui o Eric Não tá mostrando mas a no caso local a gente faz um um codigo Zinho em flesk para rodar essa função é ele tá aqui na verdade o flesk ah certo então basicamente por exemplo se você quiser rodar local você vai rodar por exemplo aqui a gente fez
com flesk então ele vai rodar desse jeito mas lá no no sinapses ele vai est um pouquinho diferente por causa da peculiaridade do sinapses né mas basicamente ele vai rodar a função essa função que tá dentro do Main que é a função a Ila mesmo né só para adiantar basicamente ela é um re s é reets e essa função maior elas é basicamente uma algumas divisões de casos certo que são aqueles tipos que a gente mostrou exato então Eh para encontrar os dispositivos e artigos eh a gente recorreu a reex mesmo porque o o usuário
ele vai digitar lá a gente olha esse texto que ele enviou e tenta encontrar algumas entidades então é um reex não tão bonito ele é é extenso mas a gente eh precisou fazer isso porque como é que um artigo ele é citado na citação né legal ele pode ter uma citação direta ou indireta ele pode ser artigo um parágrafo um inciso tal alinha tal ou ele pode ser o contrário ele pode dizer parágrafo três do artigo 1 então eh a gente teve que contemplar esses dois casos né porque são dois tipos de escritas comuns de
um peticionante Mas tirando isso é realmente um reex a gente encontra esse todos esses artigos do texto e retorna no final como um dicionário aqui todas as a os subníveis do artigo a posição que ele tá se ele é direto ou indireto é isso essa função aqui do artigo e a do dispositivo Segue o mesmo raciocínio porém com alguns casos extras um dispositivo ele pode tá como abreviatura Então a gente tem o dicionário da mais utilizadas também feito pela nossa equipe de direito ele pode tá o nome eh eh por exens o apelido da Lei
assim como ele pode Tá escrito com o o número daquele daquele documento né Eh o tipo de documento o número dele e a data eh Essas funções aqui são as mesmas usadas no trat texto em lote né da gente padronizar a a a data para ser eh PR o o o dispositivo para ser adaptações né são adaptações daquela da da do time lote Néo mas a ideia geral foi a mesma que a gente apresentou ontem eh então por exemplo eu vou tentar padronizar algo como lei o número dessa lei barra o ano com quatro dígitos
pronto eh então aqui ele vai encontrar o que eh a pessoa digitou né E vai vai armazenar nessa nessa lista né no dicionário e a posição daquele dispositivo também então vamos para o próximo né temos os dispositivos temos os artigos encontrados no texto aqui a gente a gente faz um dicionário eh varrendo todos os artigos e dizendo olha nesse momento os artigos aqui não estão pareados com nenhum dispositivo né Eh a gente ainda não fez um modelo de distância para saber quem pertence a quem então a gente inicializa todo mundo como não pareado e Aqui
começa o bruto mesmo né do da das comparações da da da do do aa em si que a gente vai iterar cada dispositivo e vai consultar aqui no no eh no fluxograma né a gente tem todo dispositivo e consulta no knowledge graph aqui é que a gente vai saber se é tá e padronizado certo se tá e se existe ou não aquela aquele dispositivo aquele documento no na nossa base de dados né então ele faz uma séries olha Eh voltou mais de tem sugestões então tem algo para eh existe no knowledge graph então Eh se
a sugestão foi igual que ele digitou quer dizer que ele tá padronizado a gente vai retornar a ementa né o tex do dispositivo senão a gente sugere as correções que encontramos né de padronização aqui ó retorna consult dispositivo e aqui padronizar o dispositivo aqui os tipos né aqui eu falei n as diferenças dos tipos vão est nessas condicionais aqui OK Eu tenho um dispositivo padronizado E agora se eu tenho artigo eu preciso fazer Model né aqui ó consultou knowledge graph a gente viu que o usuário quis opa não é esse dispositivo aqui então depois de
achar o artigo a gente vai fazer um modelo de distância essa saída aqui é justamente a consulta do dispositivo né se foi padronizado ele retorna aqui a ementa senão a gente sugere o padrão e entrando agora no modelo de distância é um artigo uma lista de artigos e um dispositivo Esse é o modelo distância vamos lá para o código dele que é um pouquinho diferente do dos anteriores não é mais um reex é um modelinho matemático mesmo e de distâncias dos daqueles elementos encontrados dentro de uma string aqui a gente tem um fator de sensibilidade
Delta que ele é no momento está hardcoded na função do modelo de distância eh mas aqui é que você altera e o que que significa esse Delta é a distância máxima que eu vou considerar como um um um contexto por exemplo se o artigo tá a 10 caracteres de distância de um dispositivo a gente ainda eh considera que eles podem ser linkados se ele tá mais que isso a gente não considera porque eu posso estar citando eh um artigo sozinho no começo do texto por algum motivo algum erro e depois de um parágrafo aparece um
dispositivo Poxa eh não seria legal lincar isso né Talvez seja um erro a gente abrir essa essa sensibilidade muito né voltando para aquele caso de ontem do rejects a gente tá tentando ser mais conservador nessas distâncias para não pegar qualquer caso é porque isso aí é uma questão que pro usuário é melhor que a que a informação seja assertiva se ela ela seja mais correta do que ele coloca um monte de informação que não seja Pô esse negó tá dando errado de novo tá entendendo tipo não tá me não ajuda então quando ele mostrar ele
vai é uma chance muito grande de ser correta exato certo então por isso a definição desse Delta aí ah eventualmente vocês mudando depois mesmo do nosso teste né da é o do do do projeto do comitê de ética a gente pode a gente vai fazer alguns casos com esse Delta variando para ver qual o melhor Delta por exemplo porque isso é diferente para pro lote porque o lote depende da estatística ali do dado e tudo mais o outro é muito mais uma questão de a do usuário mesmo né de uma interação com o usuário ali
né como é o fluxo de escrita mesmo de uma pessoa é é um tradeoff então a gente escolher o 10 a gente acha que é que é conservador é Ok como eu disse aqui entra um dispositivo e vários artigos Então a gente vai eh pegar todos os artigos que tem dentre 10 caracteres daquele dispositivo e v o de menor distância é importante que a gente eh preste atenção em mais um padrão de escrita né Isso é é os especialistas do do direito da nossa equipe eh nos auxiliaram porque eu posso tanto escrever artigo 1 do
Código Civil como eles podem citar código civil artigo 1 então aqui a gente checa se o artigo tá antes do dispositivo ou depois e eh ver essas distâncias para achar a distância mínima e dizer olha muito provavelmente e esse artigo aqui está linkado com esse dispositivo e aqui a gente eh sai depois de de fazer os Loops né pelos artigos a gente sai aqui com o dicionário e lembra aquele dicionário de artigos pareados aqui a partir do momento que eu digo Opa esse aqui é o artigo de distância mínima Muito provavelmente vai ser ele que
tá correlacionado ao eh ao dispositivo a gente muda aqui para um Então esse artigo aqui já foi ocupado porque a gente não queria o caso de o artigo um tá junto com mais de um dispositivo né Poderia fazer uma uma confusão no no modelo de distância então acredito que é isso por cima do modelo de distância ele é mais modelinho matemático mesmo aqui e quando ele faz a distância e encontra uma uma tupla artigo dispositivo a gente vai fazer a eh eh a consulta lá no no knowledge graph novamente novamente porque aquele a gente só
tinha consultado o dispositivo agora a gente tem um dispositivo que a gente sabe que existe e um artigo atrelado a ele Aqui tá a consulta e quando a gente faz essa consulta vamos lá é aqui que entra uma request para o serviço do do knowledge graph então a gente monta todo o o RL que precisa no momento a gente tá fazendo uma uma get então a gente passa um RL com como os dois estão rodando na mesma máquina tá local host né uma porta diferente e aqui vem o tipo desse dessa legislação se é uma
lei um decreto aqui tudo e o número dela o ano dela que a gente já tem essa informação já que já foi padronizado antes e o artigo complemento parágrafo inciso a linha ou seja a gente passa tudo que foi pareado para o serviço e ele vai retornar se se existir né ele vai retornar o perdão esse aqui é só para dispositivo né É aqui sim ele retorna à jurisprudências Como eu disse quando é uma consulta de uma legislação ele retornar à jurisprudências se é citação direta e indireta aquela Flag Zinha que a gente botou no
artigo a gente passa até aqui e é isso sempre existe só uma porque é um artigo com um dispositivo então não tem como existir mais de um a questão é se vai existir na nossa base ou não se não existir ele vai ser aquele erro de de legislação né porque não encontrou o par artigo dispositivo dentro do gcl se ele existir Ah tem o caso de tá padronizado ou não que justamente eh isso aqui a gente analisando na Flag indireta e fazendo o a padronização né se o artigo for menor que 10 ele tem o
grau isso aqui é só a padronização do texto mesmo Qual seria a melhor prática para ser escrita e aqui ele olha tá igual ao texto que a gente padronizou se não tá e ou se está a gente faz a mostra o a sugestão né o texto em si o o o texto da lei por exemplo Ah esse artigo dessa desse dispositivo dita tal tal tal e tal texto né Ele fala ah os direitos de não sei quem eh se ele não tá padronizado a gente vai sugerir exatamente como tá padronizado vamos dizer esse exemplo mesmo
aqui o cara escreveu né Eh parágrafo 7 do artigo 6 a gente diz ó olha e essa aqui seria a melhor prática parágrafo 7º do artigo 6 e se ele adotar essa padronização retorna O texto do parágrafo séo sempre a gente retorna O texto do nível mais interno ou seja se você tiver a linha de um de um parágrafo ou de um inciso de tal artigo a gente vai retornar o texto dessa a linha e eu acredito que é isso é só a citação indireta aqui são outros casos de padronização é simplesmente a padronização do
do texto e mais uma consulta legislação ou sugestão de artigo Eh caso no final das contas sobre algum artigo que não foi pareado ele retorna aquele erro de pareamento que diz olha esse artigo aqui a gente não não conseguiu linkar com nenhum dispositivo como se ele tivesse solto dentro do texto né isso aqui ó a gente itera por aquele dicionário né de artigos parados E se ele ainda for zero quer dizer que ele tá solto ele não não não faz nenhum sentido legal né legalmente não não tem um sentido um artigo sem um dispositivo atrelado
e a gente retorna todos esses tipos aqui essa lista de de tipos que foi encontrada no texto com as posições e tudo mais esse é o backend é só uma coisa é tal na realidade provavelmente quem escreveu a a não ser que a pessoa tenha deliberadamente escrito um artigo vazio que acredito que não foi a isso é uma é uma limitação do do a é do modelo da gente porque isso aí depende daquele trch do modelo de distância né então esse erro basicamente é uma é o a nossa limitação a gente olha eu não sei
com quem é que esse cara aqui está pareado quem é que esse artigo está pareado com que dispositivo porque ele tá distante de mais de 10 caracteres de qualquer coisa qualquer dispositivo que eu identifiquei certo outro caso de limitação é que eh mesmo que ele esteja dentro dos 10 se ele falar artigo 1 do Código Civil e da Constituição eh a gente vai associar o artigo 1 ao primeiro dispositivo que tem Exatamente é uma limitação a gente não não por por segurança a gente não vai atrelar esse artigo um aos dois né porque em casos
que tem vários artigos e vários dispositivos isso Poderia gerar mais dano do que perder só não conseguir parear um dispositivo com artigo [Música]