Esta seção detalha algumas das etapas cumpridas para o desenvolvimento da ferramenta de busca proposta neste trabalho. Uma das primeiras etapas do desenvolvimento foi a da coleta de documentos. O TJSC disponibiliza no seu site da internet seus DJEs em formato PDF. São documentos extensos, na grande maioria com mais de 1000 (mil) páginas. Assim, foi desenvolvido um webcrawler para executar a tarefa de coletar esses documentos.
O webcrawler desenvolvido para este trabalho busca apenas documentos com extensão PDF e de uma URL específica http://www.tjsc.jus.br/institucional/diario/. Além disso, é limitado por intervalo de datas, ou seja, o usuário irá definir o intervalo de datas dos DJEs que deseja buscar jurisprudência e o webcrawler irá atuar nesse intervalo de datas. Esse trabalho está considerando ainda DJEs publicados a partir do 03/07/2006, quando esses documentos passaram a ser chamados de Diário da Justiça Eletrônico e receberam uma nova numeração sequencial iniciando por 1(um).
Antes desta data os documentos publicados na internet recebiam o mesmo nome e número da versão impressa, sem um padrão.
65
O nome dos DJEs segue um padrão formado pelo ano com quatro dígitos, um número sequencial de cinco dígitos seguido de dois dígitos zeros e por fim a extensão do arquivo conforme pode ser visto no nome do arquivo do DJE de três de julho de dois mil e seis a seguir:
20060000100.PDF. Foi realizada uma tentativa de desenvolver um método para gerar as URLs de busca de forma a desconsiderar datas que abrangessem finais de semana, feriados e recesso do judiciário, pois não são publicados documentos nestes dias, o método trataria ainda o sequencial iniciado no dia 03/07/2006 com base nas datas dos documentos.
O método se mostrou complexo, considerando principalmente feriados que ocorrem ou ocorreram nas terças e sextas-feiras e foi abandonado, por não ser o objetivo principal deste trabalho. Assim, optou-se por fazer um processamento prévio onde a partir do sequencial é gerada a URL e documento é recuperado e, então por meio de um método da biblioteca PDFBox, é identificada a data de criação do documento, o sequencial e a data de criação são armazenados no banco de dados para serem usados nas buscas posteriores realizadas pelo usuário da aplicação.
A partir do intervalo de datas informado pelo usuário e os dados salvos no banco de dados, o webcrawler realiza uma busca no site do TJSC coletando os documentos que são convertidos de PDF para textos simples (sem formatação) com o auxílio da biblioteca Java PDFBox, possibilitando a decomposição do documento em tokens.
O documento tratado pela biblioteca PDFBox e o assunto informado pelo usuário são repassados a um método que busca nas tabelas ontologia e tesauro do banco de dados os termos associados ao assunto. Os Apêndices 1 e 3 apresentam respectivamente a ontologia e o tesauro. Os termos são então utilizados pela API Weka como atributos na classificação e para categorizar os tokens extraídos na decomposição do texto do documento.
O processo de decomposição separa o documento, já convertido em texto simples, por página, utilizando uma funcionalidade da biblioteca PDFBox. Cada página é então decomposta em linhas o conjunto de linhas de cada página é repassado a um método que coleta a cada espaço a unidade lexical, que passam por um processo de categorização executado pela API Weka tendo como base os termos da ontologia recuperados do banco de dados.
Neste trabalho era prevista a seguinte sequência de execução dos procedimentos de pré- processamento: remoção das stopwords, lematização e, por fim, a categorização dos termos. Os algoritmos necessários foram desenvolvidos, porém, a execução das etapas de remoção de
66
stopwords e lematização tornariam inviável o uso da ontologia e do tesauro, pois, tanto a ontologia quanto o tesauro apresentam termos compostos formados por tokens considerados stopwords e a lematização reduziria o termo a um radical de um dos tokens que compõem o termo. (Ex.: Detenção de 1 a 3 anos).
O processo de remoção das stopwords, que deveria ser utilizado antes do processo de categorização, é baseado numa lista de palavras definidas por Orengo (2004) e consiste em remover do texto palavras, artigos e alguns outros termos que não impedem e nem limitam a compreensão do texto. Contudo, a remoção das stopwords inviabilizaria o uso da ontologia e do tesauro na categorização e mineração do texto.
Outro processo implementado e removido da aplicação foi o algoritmo de lematização RSLP, algoritmo escolhido por ter sido desenvolvido particularmente para a língua portuguesa. Na implementação desse algoritmo foram utilizadas regras de lematização definidas por Orengo (2004). O primeiro passo faz a remoção dos sufixos de plural, sendo consideradas as exceções da língua portuguesa, ou seja, palavras que terminam com a letra “s” mas, não representam uma palavra no plural, por exemplo, “lápis” e variações da língua.
Na sequência, as palavras são passadas do feminino para o masculino; assim como no passo anterior foi utilizada a lista de regras definida por Orengo (2004). No passo seguinte foi realizada a remoção de sufixo de adverbio “mente” das palavras, por exemplo, “felizmente” sobrando apenas
“feliz”.
O quarto passo trata da remoção dos sufixos aumentativo, superlativo ou diminutivo. Neste passo foi preciso considerar exceções como, por exemplo, a palavra “coração”. No quinto passo são tratados os substantivos e adjetivos ou também conhecido por redução nominal e remove-se até 61 sufixos possíveis para substantivos e adjetivos. Se uma palavra é alterada nesse passo, então o sexto e sétimo passo não são aplicados a essa palavra, (o sexto e o sétimo passo tratam respectivamente da redução de formas verbais e da remoção das vogais “a”, “e” e “o” de palavras não tratadas nos dois passos anteriores).
O sexto passo trata a classe de palavras que representam verbos, assim, é feita a redução das formas verbais aos seus radicais e, se a palavra é alterada neste passo, o sétimo passo não é aplicado. O sétimo passo trata as palavras não alteradas nos últimos dois passos. Neste passo a
67
vogal “a”, “e” ou “o” é removida caso seja encontrada no final desta palavra. Por fim o oitavo passo faz a remoção dos acentos.
Os oito passos da lematização descritos estão baseado no trabalho de Orengo (2004), que se utiliza de regras para realizar a remoção de sufixos. Orengo (2004) estabeleceu um total de 199 regras e ainda trata exceções com base em um dicionário de 32 mil termos, conseguindo, assim, reduzir o overstemming (quando ocorre remoção de parte do radical da palavra).
Os problemas relativos a aplicação dos algoritmos de remoção de stopwords e lematização foram detectados durante a realização dos testes de validação, quando a ferramenta já estava desenvolvida e passava pela análise do especialista que, questionou os resultados apresentados nas buscas realizadas pela ferramenta. Assim, os dois algoritmos deixaram de ser utilizados.
Na continuação do fluxo do processo definido para este trabalho, conforme apresentado na Figura 6, é realizada a categorização das palavras. Essa etapa tem como base a ontologia desenvolvida com o auxílio do especialista e o tesauro elaborado com base no tesauro do STF.
Inicialmente foram definidas cinco categorias numeradas da seguinte forma 1, 2, 4, 8 e 16, os números quando escritos em binário são apresentados assim: 00001, 00010, 00100, 01000, 10000.
Esse formato possibilitaria a categorização de termos associados a mais de uma classe. Assim, um termo associado a classe 1 e ao mesmo tempo associado a classe 4 e 16 poderia ser representado pelo binário 10101.
Contudo, o padrão definido foi abandonado, pois, estava influenciando de forma negativa a classificação dos tokens e produzindo resultados “falsos” quanto a relevância de determinado texto com relação ao assunto buscado pelo usuário. Alguns tokens de menor importância estavam sendo associados a tokens mais relevantes, levando a API Weka a classificar os tokens de forma errada.
Em substituição ao padrão abandonado, foi elaborado outro padrão, também utilizando números binários. O novo padrão consistiu em numerar cada termo e cada conjunto da ontologia de forma sequencial. O primeiro conjunto (Homicídio Doloso) recebeu o número inicial igual a
“1000000” e os termos que compõem o conjunto foram numerados sequencialmente, conforme segue: “1000001”, “1000010”, “1000011”... Cada conjunto subsequente recebeu um “0” (zero) a mais no valor inicial, ficando da seguinte forma: "10000000", "100000000", "1000000000"... e os elementos de cada conjunto numerados conforme descrito no primeiro conjunto.
68
Após a categorização dos termos utilizando o padrão definido, a API Weka analisa-os por meio de cálculos matemáticos definindo um valor para o termo, conforme a quantidade encontrada.
Conforme definido no presente trabalho, foi utilizado o algoritmo de Naïve Bayes no processo de mineração de texto. A partir desse processamento é gerado um índice invertido com os documentos, as páginas, termos e suas relevâncias.
Com o índice invertido gerado o resultado é apresentado na página utilizada pelo usuário para a realização da consulta. O resultado aponta os documentos onde ele possivelmente encontrará jurisprudência associada aos parâmetros de busca informados.