Diante dos capítulos apresentados, este trabalho objetivou a construção de um algoritmo que é capaz de identificar registros duplicados em bases de dados por meio da busca por similaridade numérica e fonética, favorecendo a uma busca mais precisa dos resultados e contribuindo significativamente para a limpeza do banco com a melhoria da qualidade dos dados armazenados que são utilizados para tomadas de decisões.
A limpeza de dados tornou-se um objeto de grandes estudos devido a necessidade de melhoramento da qualidade dos dados armazenados para futuras projeções. A cada dia surgem novos algoritmos que vêm somar com as técnicas existentes para a limpeza de dados. Esses algoritmos devem ser estudados, a fim de que possam ser aprimorados em busca da realização perfeita na etapa de limpeza de dados. Dentre os algoritmos estudados, não se pode afirmar que há aquele que tem um melhor desempenho, já que isto depende de onde será aplicado e qual o resultado que se busca. Muitas vezes, faz-se necessário uma junção de vários desses algoritmos citados a fim de buscar uma satisfação de resultado, ou o mais próximo do resultado preciso para tomada de decisão.
Após o estudo dos algoritmos existentes e identificado os diversos problemas contidos nas bases de dados, surgiu à idéia de desenvolver um algoritmo capaz de auxiliar a etapa de limpeza de dados. Isto objetivou o rumo deste trabalho, que é a concretização de desenvolvimento de um algoritmo baseado na identificação de registros duplicados por meio da similaridade fonética e numérica. É nesse sentido que este trabalho apresenta o
algoritmo PSI para a detecção de tuplas duplicatas, com o objetivo de obter resultados mais precisos pelos sistemas de identificação por meio da similaridade. Portanto, a idéia de desenvolvimento deste algoritmo busca sanar um dos problemas levantados, a identificação de registros duplicados, de forma a contribuir com a etapa de limpeza de dados.
Para a tarefa de identificar esses registros, foram estudadas algumas das técnicas desenvolvidas e constatada a viabilidade da utilização da técnica baseada em distância, que trata cada palavra como grandes strings, não havendo a necessidade de usar dados treinados para a identificação. Para somar a utilização desta técnica, adotou-se a metodologia de identificação baseado na similaridade fonética e numérica. A importância de usar a fonética parte da idéia de identificar registros duplicados armazenados na base de dados conforme foram escritos, podendo ter a sua variação baseada numa citação ou fala. Isto não leva em consideração as características regionais que cada palavra pode sofrer ao ser pronunciada e, sim, a maneira que um digitador pode escrevê-la diante das variações de grafia existente. Já a necessidade de identificação dos registros numéricos duplicados surge diante da deficiência dos algoritmos estudados de não considerá-los como parte integrante da palavra armazenada. Vale destacar que o trabalho com dados numéricos pode auxiliar também no processo de identificação de valores fora do domínio.
Para contribuir na idéia de identificar registros duplicados na base de dados por meio da similaridade fonética, somou-se a possibilidade de trabalhar com diversos idiomas. No entanto, primeiramente foram realizadas transcrições fonéticas das vogais, consoantes, dígrafos e caracteres especiais do alfabeto da língua portuguesa, no intuito de elaboração de um estudo de caso, a fim de comprovar a viabilidade e eficiência do algoritmo PSI. Após essas transcrições, objetivou-se a transcrição fonética de uma língua européia, a citar o idioma italiano, com a finalidade de reforçar o que se pretendia com a língua portuguesa. Diante disso, testes foram realizados e bem sucedidos, o que comprova a idéia de que trabalhar com a fonética para a identificação de duplicatas é importante e de grande utilidade. A tarefa de identificação de duplicatas baseada na similaridade fonética da língua portuguesa e italiana é inovadora, não sendo encontrado nenhum material científico que caracteriza a identificação de registros duplicados por meio desses idiomas.
Contudo, o desenvolvimento do algoritmo PSI viabilizou a identificação de registros duplicados na base de dados, o que possibilitou a comparação, análise e a conclusão de resultados mais exatos se comparado aos algoritmos Soundex e Metaphone, pois favoreceu uma busca mais eficiente. Por meio da análise dos resultados adquiridos, foi
possível constatar que o algoritmo PSI foi em média 30% mais eficiente que os algoritmos
Soundex e Metaphone na busca por registros duplicados, pois os resultados obtidos por este
algoritmo apresentaram um maior grau de similaridade do que os algoritmos difundidos na literatura, tanto nos testes realizados na língua portuguesa como na língua italiana. Os algoritmos Soundex e Metaphone trabalham com uma metodologia de busca que demonstram resultados muito abrangentes, o que não contribui para uma representação precisa dos resultados. Vale ressaltar que estes algoritmos foram codificados baseados na versão descrita pelos respectivos autores.
Análises realizadas por meio do tempo total de execução e o número de bytes processados por segundo de cada algoritmo apontam que o algoritmo PSI tem o tempo processamento maior dos que os algoritmos Soundex e Metaphone. Embora o tempo de processamento do Algoritmo PSI tenha sido superior se comparado aos demais algoritmos estudados nos testes realizados, os resultados são melhores e mais precisos, o que compensa o tempo gasto para identificação. Para tanto, foram utilizadas tabelas das bases de dados com um número de registros reduzidos, ou seja, em torno de 100 registros, como, também, tabelas com números de registros expressivos, que contém cerca de 140 mil registros. Verifica-se, portanto, a importância de ter resultados mais exatos do que o tempo de processamento das informações, já que os resultados são para tomada de decisões e o tempo de processamento é relativo, conforme o tamanho das bases de dados.
A fim de agregar funcionalidades e aperfeiçoar a metodologia de funcionamento do algoritmo PSI, adotou-se a divisão de processamento entre núcleos de processadores dos computadores, funcionalidade esta chamada de multithreading, com o intuito de melhorar o desempenho do algoritmo em relação ao tempo de processamento, visto que cada etapa de transcrição fonética dos caracteres de uma palavra é altamente demorada. Por meio dessa funcionalidade, foi possível verificar uma melhora significativa no tempo de processamento do algoritmo PSI¸ fator que colaborou para uma apresentação mais rápida dos resultados obtidos. Portanto, a divisão da tarefa de processar as informações entre os núcleos de processadores contribui na velocidade de processamento e da listagem dos resultados. É importante destacar que a velocidade de processamento está ligada ao número de núcleos de processadores que o computador possui, pois quanto mais núcleos, mais rápida será a execução do algoritmo PSI.
Para concluir, vale ressaltar que o algoritmo PSI pode ser aplicado em qualquer base de dados, independente do tamanho, número de registros e domínio do atributo, podendo ser numérico ou alfanumérico. O objetivo deste trabalho foi alcançado, já que por
meio do desenvolvimento do Algoritmo PSI foi possível obter resultados satisfatórios, em um curto tempo de processamento e de listagem dos resultados.