Escolar Documentos
Profissional Documentos
Cultura Documentos
UNIVERSIDADE DE FORTALEZA
CENTRO DE CIÊNCIAS TECNOLÓGICAS
MESTRADO EM INFORMÁTICA APLICADA
Fortaleza
2016
FUNDAÇÃO EDSON QUEIROZ
UNIVERSIDADE DE FORTALEZA
CENTRO DE CIÊNCIAS TECNOLÓGICAS
MESTRADO EM INFORMÁTICA APLICADA
Fortaleza
2016
iii
AGRADECIMENTOS
Agradeço a Deus pelo seu amor e por ter me dado força em todos os momentos,
permitindo que eu concluísse esta etapa importante da minha vida.
Agradeço aos mentores espirituais por manterem-se presentes mesmo nos momentos em
que duvidei de minha fé.
Aos meus pais, Antônia e Wilson, pelo amor incondicional, pelos ensinamentos de vida
e pelos valores que sempre transmitiram. Por terem proporcionado até mesmo o que eles não
tiveram. Por ser exemplo de luta e vida.
À minha esposa Alexsandra, pelo amor e carinho que sempre teve por mim e pelas nossas
filhas. Por ser uma pessoa especial e amada por todos. Por ter, ainda, cuidado de forma
excepcional de tudo para que eu pudesse concluir este trabalho.
Às minhas filhas, Marília e Vitória, pelos sorrisos e alegrias que alentam minha alma e
me revigoram nos momentos difíceis. Pela alegria e simplicidade de serem crianças e de
estarem presentes em minha vida.
Aos meus avós (in memoriam), pelo exemplo de amor, de família e, principalmente, de
fé.
À minha sogra Ivonete, pelo amor e carinho incondicional pelas netas e filhos, por me
tratar como filho.
Ao meu sogro Tavares, pelo incentivo e apoio em todos os momentos em que esteve
presente na minha vida e, principalmente, por carinho e respeito à minha família.
Aos meus orientadores Adriano Bessa e Ângelo Brayner, pela amizade, disponibilidade,
atenção, incentivo e pelos ensinamentos acadêmicos que muito contribuíram para o
desenvolvimento deste trabalho.
À professora Vládia Célia Monteiro Pinheiro, D.Sc., por todo ensinamento acadêmico
transmitido e por aceitarem contribuir com este trabalho, participando da banca.
Ao professor José Maria da Silva Monteito Filho, D.Sc., por aceitarem contribuir com
este trabalho, participando da banca.
vii
(Chico Xavier)
ix
Abstract of the dissertation presented to the board of faculties of the Master Program in
Applied Informatics at the University of Fortaleza, as partial fulfillment of the requirements for
the Master’s degree in Applied Informatics.
SUMÁRIO
4.1.1 HIPÓTESE................................................................................................38
LISTA DE FIGURAS
LISTA DE TABELAS
1.1 MOTIVAÇÃO
Ao longo dos últimos 50 anos, o mundo mudou da sociedade industrial para a sociedade
da informação. O desafio das grandes empresas é aumentar a capacidade de gerar e analisar
informações e não apenas melhorar a manufatura e a capacidade de distribuição de produtos.
Nesta nova era da informação, os dados são matérias-primas necessárias para o êxito
empresarial ou mesmo para sobrevivência numa economia globalizada. Por essa razão, dados
de má qualidade podem ter um impacto negativo no desempenho corporativo, contaminando os
sistemas de informação (JIN ET AL, 2003).
Entendemos que a qualidade dos dados se degenera com o tempo quando analisamos
sobre a dimensão de temporalidade. Por exemplo, os dados do consumidor podem tornar-se
obsoletos porque ele ou ela faleceu, casou-se ou mudou-se, apenas para mencionar algumas
situações. Também temos o problema de entrada de dados incorreta que afeta a dimensão de
credibilidade, isso sem mencionar os problemas quanto a manutenção de sistema que pode
1
mudar regras de validação sem reclassificação de dados já existentes na base de dados que
podem não atender a nova regra e evolução do sistema que podem produzir dados inconsistentes
ou imprecisos quando essa evolução não trabalha todas as regras anteriores e permite por
exemplo a lançamentos de serviços para um cliente não cadastrado.
A qualidade dos dados pode ser medida por meio de diferentes métricas e não apenas
precisão. Temporalidade, integridade, relevância e representação consistente são exemplos de
dimensões que podem ser utilizadas para avaliar a qualidade dos dados.
Para superar esse problema, uma nova abordagem para identificar e corrigir dados de
má qualidade em bancos de dados heterogêneos é apresentada neste trabalho.
1.2 OBJETIVOS
2
1.3 METODOLOGIA
(1) A primeira etapa consistiu em realizar uma pesquisa bibliográfica sobre qualidade
de dados.
(2) A segunda etapa consistiu em definir uma abordagem para melhorar a qualidade de
dados com identificações e correção nos casos possíveis.
Este trabalho está organizado em 5 (cinco) capítulos, além desta introdução, descritos
resumidamente a seguir.
3
2 REFERENCIAL TEÓRICO
2.1 QUALIDADE
4
conjunto de dimensões descrito seja compartilhado pela maioria das propostas, ainda não há
um padrão comum definindo quais são as dimensões do componente da qualidade dos dados e
qual é exatamente o seu significado.
Tais dimensões podem ser definidas: 1-Exatidão é a qualidade que definir a informação
como exata, 2-Completude é a qualidade que definir a informação como completa, 3-
Dimensões relacionadas ao tempo é a qualidade que definir a informação quanto a
temporalidade e 4-Consistência é a qualidade que definir a informação coerente.
Segundo Wang e Diane (1996), dados que não atendem ao conjunto de dimensões de
qualidade “dados de má qualidade” pode ter impactos sociais e econômicos substanciais.
Embora as empresas procurem a melhoria da qualidade dos dados com abordagens práticas e
ferramentas, seus esforços de melhoria tendem a concentrar-se estreitamente sobre a exatidão.
Após esta analise sobre qualidade de dados, podemos definir que dados de má qualidade
são todos aqueles que não atendem ao conjunto de dimensões de qualidade. Sendo importante
destacar que a melhoria da qualidade de dados passa por todas as dimensões e quando
trabalhamos uma determinada dimensão, estamos atingindo nosso objetivo de melhoria da
qualidade de dados.
Os dois tipos de avaliações que podem ser feitas em um banco de dados são: a avaliação
quantitativa (ou objetiva) e a avaliação qualitativa (ou subjetiva) (PINHO, 2001).
Na avaliação quantitativa são utilizados indicadores objetivos para medir a qualidade das
informações em banco de dados. Para este caso, a avaliação de qualidade depende apenas do
5
dado que está sendo analisado, e não do ponto de vista do avaliador. São observados, por
exemplo, valores do domínio, presença de valor, entre outros fatores.
De acordo com English (1999), a qualidade da informação é composta por três fatores:
definição clara ou significado dos dados, valores corretos e facilidade de entendimento do
formato apresentado para o usuário final. A baixa qualidade em algum desses três componentes
pode causar falhas nos processos de negócio e resultar em tomadas de decisão incorretas.
Segundo este mesmo autor, informação é a aplicação dos dados, e pode ser representada pela
seguinte equação:
Logo, a qualidade da informação requer que haja qualidade tanto na definição quanto no
conteúdo dos dados. A qualidade na definição dos dados aplica-se a conceitos. Ela é uma
característica e uma medida dos modelos de dados produzidos pelo processo de
desenvolvimento das aplicações. A qualidade do conteúdo dos dados é o grau no qual os valores
dos dados representam corretamente os fatos ou entidades do mundo real, e atendem às
necessidades de informação dos clientes. Ela se aplica às instâncias dos dados.
6
Segundo Batini e Scannapieco (2016), quando as pessoas pensam sobre a qualidade dos
dados, eles se concentram apenas no parâmetro de exatidão. Assim, os dados de má qualidade
são utilizados mesmo se houver erros ortográficos ou valores errados como por exemplo: uma
data de aniversário errada ou a idade absurda de uma pessoa.
De acordo com Wang e Ziad (2000) e Pipino ET AL (2002), a informação pode ser
dividida em quatro categorias e 16 dimensões de acordo com a Tabela 1.
7
2.5 COMO OBTER QUALIDADE
Uma melhora substancial na qualidade dos dados pode ser realizada a partir da
identificação de objetos similares, isso porque podemos avaliar se estes objetos tem o mesmo
significado, representem a mesma coisa ou se são iguais. A similaridade de objetos é estudada
em uma variada gama de áreas, desde o contexto da detecção de registros, documentos ou Web
sites similares, até nas áreas de plágio, identificação de spams e reconhecimento de padrões.
Um ponto importante no método de comparação é que devem existir dois objetos para ser
possível a realização da comparação. Neste caso, além dos dados que devem ser analisados é
necessário criar um dicionário que será a referencia para a comparação.
A comparação entre cadeias de string pode ser verificada usando medidas de similaridade
ou funções, que podem ser divididos em dois grupos (mas não limitados a eles):
Baseado em Caracteres: usa como evidência a localização dos caracteres para avaliar a
similaridade dos registros. Essas funções são usadas para calcular a quantidade mínima de
variações (inserção, exclusão e atualização) necessárias para transformar a primeira String em
uma segunda String. No entanto, as funções baseadas em caracteres não têm um bom
desempenho porque comparam todos os caracteres para quantificar a semelhança. Neste grupo,
existem as seguintes funções de similaridade: Levenshtein (1965), Smith Waterman (1980),
Stochastic Model (RISTAD YANILOS, 1996).
8
elementos). De forma simples, o nível de similaridade é calculado usando a correspondência
exata entre os tokens. No entanto, a coincidência exata impede a detecção de pequenas
variações, como, por exemplo, erros relacionados à tipografia, plural, abreviaturas, etc. Dados
(ROHLF, 1990), Jaccard, Cossine são exemplos de funções de similaridade deste grupo.
Para garantir a eficiência da função de similaridade, pode-se utilizar outra técnica para
fragmentar a string em unidades menores baseado na ideia de tokens a partir da decomposição
de string em termos menores. Assim será possível uma comparação entre termos com maior
grau de precisão conforme pode ser vista na Tabela 2.
A decomposição de termos será usada para montar domínio e carregar dicionário ambos
na rotina de decomposição que será responsável pela fragmentação do texto em partes menores.
Facilitando a analise de similaridade entre os termos analisados, isso porque teremos parte
menores como pode ser observado na Tabela 2. Veja que a coluna texto apresenta um conteúdo
que foi fracionado em termos (demais colunas), com isso será possível avaliar cada termo
independente. Isso porque podem existir erros apenas em partes especificas que identificadas
adequadamente dentro dos padrões de similaridade definidos, podem ser corrigidos.
Com essa técnica, os algoritmos baseados em caractere têm que fazer o processo de
comparação apenas entre termos e não mais no texto completo como por exemplo: podemos
comparar “CAMPOS BELOS” com “CAMPUS BELUS” ou podemos decompor em termos e
9
comparar separadamente “CAMPOS” com “CAMPUS” e “BELOS” com “BELUS” o que torna
o processo de comparação mais simples. Dessa forma, a técnica torna-se melhor aproveitada,
conforme pode ser demonstrado na Tabela 3, quando temos a demonstração de casos de termos
comparados ao dicionário e suas diferenças.
A comparação de string será usada para criar base classificada na atividade executar
função de similaridade que será responsável pela identificação de similaridade entre os termos
comparados.
Podemos observar na Tabela 3 que o termo de comparação deve ser alinhado com o termo
do dicionário. O campo alinhamento apresentado na Tabela 3, apresenta entre colchetes os
caracteres diferentes entre os termos comparados. Este procedimento é realizado pelos
algoritmos de comparação de string que serão descritos a seguir.
As métricas com valores no intervalo [0,1] foram utilizados como critério para escolher
a função de similaridade porque são mais adequados, pois o índice que tende ao infinito é
sensível a pequenas mudanças (CLIFFORD STEPHENSON, 1975).
É muito útil para aplicações que precisam determinar o nível de similaridade entre duas
cadeias, como o caso de verificadores ortográficos. A opção por este algoritmo também foi
10
baseada nos resultados entregues de distância que representa o número de operações realizadas
e seu coeficiente de similaridade.
O coeficiente de similaridade Dice (DSC) (ROHLF, 1990) é uma estatística utilizada para
comparar duas amostras semelhantes. Neste caso, essas amostras serão os termos que são
necessários para serem comparados. Foi desenvolvido, independentemente, pelos botânicos
Thorvald Sorensen (1948) e Lee Raymond Dice (1945) e utiliza uma fórmula matemática
descrita da seguinte forma: 2 | X Y | / | X | + | Y |, em que x e y representam o número de
caracteres de duas cadeias.
A escolha dos dois algoritmos para trabalhar em conjunto baseou-se na meta que visa
melhorar o desempenho da função de similaridade com qualquer tamanho de termo (uma
maneira de garantir a eficiência com qualquer quantidade de caracteres apresentados no termo,
já que não temos como limitar o tamanho de um termo para limite inferior ou superior quanto
a quantidade de caracteres), pois fornece um ajuste específico para cada função, possibilitando
estabelecer um maior nível de similaridade.
Grupo de variáveis utilizados para auxiliar este processo, de acordo com Tabela 5.
11
Variável Descrição
De
modo
que
duas
cadeias
possam
ser
consideradas
semelhantes
entre
si
e
possam
ser
apresentadas
ao
utilizador,
é
necessário
que
a
Semelhança
substancial
pontuação
obtida
seja
maior
ou
igual
ao
valor
definido
por
esta
variável;
Usado para facilitar a busca de informações semelhantes, mas que podem estar com
ortografia diferente por erro de escrita e mesmo assim eles possam ser correspondidos apesar
das diferenças. Consiste na criação de blocos lógicos dentro da estrutura trabalhada para criar
relacionamentos.
Usado para indexar nomes por som, como pronunciar em uma linguagem específica,
quando há palavras semelhantes, mas que podem ter ortografia diferente para que eles possam
ser correspondidos apesar das diferenças. Consiste na criação de blocos lógicos dentro da
estrutura trabalhada para criar relacionamentos.
Um recurso baste útil, mas que deve ser trabalho para língua especifica como podemos
observar na Tabela 6, quando é possível verificar na coluna termo as informações
ALAGOINHA e ALCANTARA com a coluna resultado A425 para os dois casos. Isso ocorre
devido as particularidades da língua inglesa que inviabiliza um uso geral deste algoritmo. Sendo
necessário um algoritmo para língua portuguesa.
12
Soundex (RUSSELL ODELL, 1918), baseia-se na língua inglesa e sua codificação
consiste em uma letra seguida por três números e a letra são os primeiros da sequência. Os
números são a codificação de outras consoantes de acordo com critérios do algoritmo, conforme
descrito abaixo:
1. b, f, p, v = 1
2. c, g, j, k, q, s, x, z = 2
3. d, t = 3
4. l = 4
5. m, n = 5
6. r = 6
13
• Converter todas as letras para maiúsculas;
• Substituir:
1. Y por I
2. BR por B
3. PH por F
7. LH por L
9. NH por N
13. W para V
• Substituir [R por L]
14
Tabela 7 – Resultado BuscaBR
Termo Resultado
ALAGOINHA LGM
ALCANTARA LSMTL
ICO S
TEJUSSUOCA TJS
IPAGUASSÚ PGS
MARJOLANDIA MJLM
GRACA GS
Podemos observar que os resultados apresentados pelo algoritmo Soundex têm baixa
taxa de acerto, pois existe o mesmo resultado para mais de um termo. Isso se deve ao idioma
que, para este trabalho, será o português.
O algoritmo BuscaBR foi ajustado para descartar apenas a última vogal do termo e
preservando as demais vogais, como podemos observar nos resultados conforme Tabela 9,
quando obtemos como resulta para os termos ANA o resultado AM, ANAUA o resultado
AMAU, AURORA o resultado AULOL e ARUARU o resultado ALUALU.
15
Tabela 9 – Comparativo Soundex x BuscaBR (Ajustado)
Termo Soundex BuscaBR (Ajustado)
ABAIARA A160 ABAIAL
ABREU A160 ABEU
APRAZIVEL A162 APASIVE
APUIARES A162 APUIALE
AGUAS A220 AGU
ASSIS A220 ASI
ALCANTARA A425 ALSAMTAL
ALAGOINHA A425 ALAGOIM
ANA A500 AM
ANAUA A500 AMAU
AURORA A660 AULOL
ARUARU A600 ALUALU
Um conjunto de trabalhos sobre esse tema foi selecionado, sendo avaliadas suas
características e objetivos.
16
2. Geerts e Floris (2013) desenvolveram uma proposta para avaliar e resolver o
problema da qualidade dos dados, utilizando um algoritmo para calcular
soluções mínimas e implementar um protótipo baseado em SGBD, para a
correção de integridade ou dependência.
3. Duan e Lee (2013) realizaram um estudo para identificar a complexidade e os
aspectos abordados para melhorar a gestão do conhecimento, melhorando a
qualidade dos dados, utilizando um modelo de processo. Este trabalho
desenvolveu um processo para classificar e verificar banco de dados heterogêneo
com uma execução de ferramenta que utiliza uma estratégia de comparação para
avaliar a qualidade de dados existente com base em análises já realizadas ou na
própria base em momento anterior, com foco na correção e validação do domínio
de dados gerado no período de organização do banco de dados.
4. Wang e Diane (1996) realizaram um estudo para desenvolver um quadro que
abranja os aspectos da qualidade dos dados que são importados para os
consumidores de dados.
5. Kolb e Thor (2012) demonstraram uma ferramenta de deduplicação com Hadoop
para MapReduce-based.
6. Chu e Xu (2015) apresentaram a ferramenta Katara, que trabalha com uma base
de conhecimento e um sistema de limpeza de dados atraves da interpretação
semântica de tabela para alinhá-la com base de conhecimento, assim identifica
dados corretos e incorretos e gera possíveis reparos para dados incorretos.
7. Haas e Daniel (2015) apresentaram o Wisteria, um sistema para apoiar o
desenvolvimento iterativo e otimização da limpeza de dados usando Workflows.
8. Khayyat e Zuhair (2015) apresentaram o BigDansing, um sistema Big Data
Cleansing. O sistem pode funcionar em cima da maioria dos Plataformas de
processamento de dados que vão desde DBMSs até Map Reduce. Uma
programação de fácil utilização permite que os usuários expressem regras de
qualidade de dados de forma declarativa e processual.
Apresentamos o algoritmo BuscaBr em sua forma pura, mas será necessária uma
adaptação ao seu código para atender a proposta de decomposição de string em partes menores
que denominamos de termos. Isto porque na língua portuguesa falada no Brasil, existem várias
palavras de origem indígena compostas só por vogais. O que tornaria a representação de um
fonema impossível com a retirada de todas as vogais para um termo composto exclusivamente
de vogais ou com um número mínimo de consoantes.
Com o avanço da tecnologia da informação em várias áreas, mais pessoas usam algum
tipo de aplicação de tecnologia da informação, tais como redes sociais, e-business etc. Como
há um maior volume de dados sendo armazenados em bancos de dados, a quantidade de erros
de digitação também ocorre. Tornando a análise desses dados um grande desafio para as áreas
de tecnologia da informação.
18
3 PROCESSO DE QUALIDADE DE DADOS EM BASE DE
DADOS HETEROGÊNEA
3.1 O PROCESSO
Para atingir seu objetivo, o TCTP usa uma base de conhecimento, chamada
DICIONÁRIO. O DICIONÁRIO contém os domínios de todos os dados possíveis a serem
analisados. A saída TCTP é uma lista de dados de má qualidade, que não têm nenhuma
semelhança com dados no dicionário. Além disso, TCTP recomenda a ação de correção para
melhorar a qualidade dos dados na lista de dados de má qualidade.
19
Figura 1 - Processo para identificação de dados de má qualidade
20
Figura 2 – Selecionar bases de dados
Para estabelecer uma conexão com banco de dados, será necessário configurar a
conexão que será usada. Podem ser criadas mais de uma conexão com objetivo de analisar bases
de dados heterogêneas com os parâmetros, conforme Tabela 10.
21
Tabela 11 – Selecionar tabela
Será realizada uma busca na base de dados a ser analisada, coletando informações sobre
metadados do subconjunto de tabelas que devem ser analisadas. Estas informações serão
armazenadas numa estrutura de dados que denominamos de TABELA.
Nome_schema Varchar2(10) Nome do schema de banco de dados de origem
Nome_tabela Varchar2(31) Nome da tabela que será objeto de análise
Posicao_campo Integer Posição do campo na tabela (ordenação na tabela)
Definição
da
tipo
do
campo
(qual
tipo
de
dados
por
Tipo_campo
Varchar2(30)
estar
representado)
22
Campo Tipo Descrição
Quantidade
de
registro
existem
na
tabela
para
este
Quantidade_registro
Integer
campo,
desconsiderando
os
nulos
Chave
de
negócio
criada
através
da
regra
de
checksum
MD5
dos
campos:
Bk_rach
Varchar2(50)
NOME_SCHEMA,
NOME_TABELA,
NOME_CAMPO
Chave
de
registro
criado
através
da
regra
de
checksum
MD5
dos
campos:
NOME_SCHEMA,
NOME_TABELA,
NOME_CAMPO,
DESCRICAO_CAMPO,
POSICAO_CAMPO,
Rg_rach
Varchar2(50)
RESTRICAO_NOTNULL,
TAMANHO_CAMPO,
PRECISAO_CAMPO,
ESCALA_CAMPO,
TIPO_CAMPO,
CHARSET_CAMPO
<i>Esta
informação
usada
para
saber
se
teve
mudança
de
estrutura
deste
ultima
análise>
Data
que
foi
criado
este
estrutura
na
área
de
trabalho
Data_criacao
Date
ou
stage.
Data
que
foi
modificado
estrutura
de
dados
com
base
na
identificação
do
registro
pelo
campo
pk_rach
e
Data_alteracao
Date
reg_rache,
avaliando
se
foi
modificado
qualquer
informação
na
estrutura
de
dados
desde
ultima
análise
Data
que
foi
confirmado
que
este
campo
não
existe
Data_exclusao
Date
mais
na
base
de
origem
conforme
Regra
que
identifica
se
o
campo
esta
ativo
ou
inativo
(isto
pode
ocorrer
quando
temos
várias
alteração
Campo_ativo
Varchar2(1)
identificadas
na
estrutura
a
cada
nova
análise
e
temos
vários
registro
históricos
das
versões
anteriores)
Sequencial
que
informa
em
qual
carga
de
dados
foi
Sequencia_carga
Integer
carregado
esta
informação
23
3.1.1.4 Atividade - Carregar tabelas selecionadas
Esta atividade também tem o objetivo de liberar o mais rápido possível a base de origem
através de processo simples de extração e carga de dados sem aplicação de regras de negócio
para agilizar o processo.
24
Figura 3 – Carregar domínio
25
dados verticalizada seguindo a estrutura padrão para o armazenamento desses dados no formato
definidos na Tabela 15. A Tabela 17 contem os dados de entrada e saída.
Nome_schema Varchar2(10) Nome do schema de banco de dados de origem
Nome_tabela Varchar2(31) Nome da tabela que será objeto de análise
Nome_schema Nome_schema
Nome_tabela Nome_tabela
Nome_coluna Nome_coluna
26
3.1.2.2 Atividade - Montar base nome
Rg_rach Rg_rach
Para execução desta atividade é necessária a aplicação das rotinas apresentadas abaixo:
27
3.1.2.2.1 Rotina de limpeza:
/ Caracter Barra
_ Caracter Underline
. Caracter Ponto
, Caracter Virgula
28
Nesta rotina a fragmentação dos dados em unidades menores é realizada, segmentando-
as até o nível de termos. Este processo é realizado usando como critério a presença de espaços
em branco entre os termos de uma string. Estes termos são convertidos em novas tuplas que
devem ser usadas na etapa de classificação.
A importância desta rotina está relacionada com o processo comparação de string para
avaliar similaridade entre as partes analisadas. Como nosso modelo é baseado em dicionário,
comparação entre termos presentes no dicionário e termos complexos com várias partes não
seria uma boa estratégia.
29
Figura 5 – Carregar dicionário
A origem das informações que devem fazer parte do dicionário o qual será usado no
processo de classificação pode ser obtida de vários formatos e origens. Esta flexibilidade foi
desenvolvida para viabilizar a utilização da informação como tabela de preços enviada do
fornecedor ou planilha desenvolvida com todos os termos/jargões específicos para a área de
atuação a fim de citar algumas possibilidades de criação do dicionário. A Tabela 22 contem os
dados de entrada e saída.
30
Para
casos
de
dicionário
em
banco
de
dados,
criar
conexão
se
já
não
existir.
Esta rotina deve ser reaplicada para montagem do dicionário, para evitar que tenhamos
termos complexos que dificultem o processo de classificação.
Esta rotina deve ser reaplicada para montagem do dicionário, para gerar o fonema que
será utilizado no processo de classificação.
31
3.1.4 Criar base classificada
32
Tabela 25 – Localizar termos para comparação
Após a seleção dos termos a serem comparados é aplicada a função de similaridade nos
mesmos, considerando um nível específico de similaridade, como pode ser visto na Figura 7. O
resultado desta fase será armazenado na estrutura de dados CLASSIFICADA de acordo com a
Figura 8. A Tabela 26 contem os dados de entrada e saída.
É nesta atividade que realizamos os ajustes no processo para classificar o que será
compatível e incompatível conforme critérios definidos na Tabela 27.
33
Uma característica deste trabalho é a utilização conjunta de algoritmos de função de
similaridade. O que vai permitir um melhor ajuste para classificar os dados analisados.
Após a seleção dos termos que devem ser comparados e aplicação das funções de
similaridade nos mesmos, considerando um nível específico de similaridade, obteremos o
resultado como pode ser visto na Figura 8. A Tabela 28 contem os dados de entrada e saída.
Os valores apresentados na Tabela 27, foram obtidos através de ensaios realizados com
base de teste. Quando estes parâmetros foram calibrados para atingir o maior numero de
classificação corretas possíveis.
34
No final deste processo, uma lista completa de todos os termos utilizados nas tabelas
selecionadas por análise em comparação com o dicionário estará disponível. É possível avaliar
o grau de assertividade do sistema selecionado pela análise anterior.
Neste capítulo foi apresentado o processo de classificação em sua totalidade com todas
as funções e atividades a serem executadas.
35
4 ESTUDO DE CASO EM UMA EMPRESA SANEAMENTO
BÁSICO
Para avaliar a abordagem proposta, foi realizado um estudo de caso sobre dados reais
da Companhia de Águas e Esgotos do Estado do Ceará - CAGECE, que atualmente opera em
151 de 184 municípios do Estado, com serviço de água potável e saneamento para uma
população de 5.526.441 habitantes.
A CACEGE possui vários sistemas que fazem uso de bancos de dados como Oracle,
SQLServer e PostgreSQL, em ambiente heterogêneo. Todas as bases de dados ocupam
aproximadamente 3 TB.
36
4.1 PROJETO DE ESTUDO DE CASO
O projeto do estudo de caso seguirá em 4 etapas e todos seus subitens, conforme modelo
proposto no capítulo 3:
Será detalhado cada um dos aspectos para o estudo de caso proposto, de forma que, ao
final, tenhamos o projeto completo do estudo de caso.
37
4.1.1 HIPÓTESE
1. PRAX – Oracle
2. SIC - SQLServer
3. SIG - SQLServer
4. SCO - SQLServer
5. SISCOPE - Postgresql
38
6. SEI - Oracle
7. SGR – Oracle
Durante esta atividade, observou-se que, para cada sistema, existe uma base de dados
geográfica. Vários sistemas da CAGECE são utilizados para analisar informações com base na
geografia. Então, selecionamos todas as tabelas que têm informação de geografia.
Entradas e saídas desta atividade estão descritas na Tabela 13 bem como sua estrutura
de dados na Tabela 12.
Foi possível montar uma consulta para recuperar todos os dados pertencentes às tabelas
selecionadas para análise e criar estrutura de dados compatível na área de trabalho ou stage para
receber estes dados, com base nas definições carregadas na estrutura de dados TABELA.
39
Banco de Dados Tabela Quantidade
Geramos a estrutura de dados DOMÍNIO com leitura dos dados encontrados na estrutura
de dados TABELA. Assim obtivemos o SQL necessário para carregar todas as informações
necessárias ao processo em estrutura verticalizada. Esta atividade foi importante porque
montamos todas as informações coletadas nos sistemas de origem (independente de sua
estrutura) numa estrutura padrão, quando passamos seus dados de colunas para linhas. Dessa
forma, estabeleceu-se uma estrutura única com todos os dados coletados para análise nas tabelas
e sistemas de origem.
Entradas e saídas desta atividade estão descritas na Tabela 17 bem como sua estrutura
de dados na Tabela 15.
Geramos a estrutura de dados NOME com leitura dos dados encontrados na estrutura
de dados DOMÍNIO. Nesta atividade em que o dado troca de estrutura, foram realizados os
passos limpeza, decomposição e fonema necessários ao processo.
Entradas e saídas desta atividade estão descritas na Tabela 19 bem como sua estrutura
de dados na Tabela 18.
40
4.2.2.2.1 Rotina de limpeza
/ Caracter Barra
_ Caracter Underline
. Caracter Ponto
, Caracter Virgula
41
Elemento Tipo Descrição
Esta rotina fez uso do algoritmo BuscaBR (ajustado) para a língua portuguesa. Para cada
tupla gerada no processo de decomposição foi aplicado o algoritmo de fonema gerando, assim
uma base de fonemas que usamos para definir quais termos devem ser comparados com o
dicionário.
42
O ajuste foi realizado na etapa de retirada de todas as vogais do termo. Passamos a
retirar apenas as ultimas vogais que tem a função de qualificar o gênero.
Buscamos garantir a eficiência deste processo, tal como foi apresentado, utilizando
como dicionário a lista de localidades do Ceará o que tem denominação na CAGECE como
geografia.
Também foram incluídas localidades que hoje são atendidas pela CAGECE, mas ainda
não fazem parte da lista disponibilizada pelo IBGE. Esta lista é atualizada a cada 10 anos e sua
última atualização foi em 2010.
A geração da estrutura de dados DICIONÁRIO teve início com leitura dos dados
encontrados no arquivo Excel. Neste passo em que o dado troca de estrutura, foram realizados
os passos da rotina de limpeza, decomposição e fonema necessários ao processo.
Entradas e saídas desta atividade estão descritas na Tabela 24 bem como sua estrutura
de dados na Tabela 23.
43
Reexecução da rotina e seus resultados foram evidenciados na estrutura de dados
DICIONÁRIO.
Após execução da atividade 4.2.4.1 (localizar termos para comparação) e passar estes
dados para esta atividade, gerou-se a lista que passou para rotinas de similaridade.
Executamos a rotina para todo o conjunto de dois parâmetros recebidos como saída da
atividade 4.2.4.2.
Executamos a rotina para todo o conjunto de dois parâmetros recebidos como saída da
atividade 4.2.4.2.
Executamos esta atividade mais de uma vez, pois o ajuste necessário para obter o melhor
aproveitamento do processo de classificação foi basicamente mudando os parâmetros das
variáveis de qualidade.
44
A fase de ajuste dos parâmetros para calibra a classificação dos dados é necessária para
o processo não gerar um numero de classificações erradas que podem ser identificados na fase
analise do resultado.
Após este pequeno fracasso, foi possível avaliar melhor as condições dos parâmetros e
redefinir uma nova configuração capaz de atender o ajuste fino, cuja realização teve o intuito
de conseguir extrair o melhor potencial do processo com geração de números bem melhores a
partir desta nova configuração, que podemos verificar na Tabela 32.
45
Realizados os ajustes no processo para classificar o que será compatível e incompatível,
conforme novos critérios, obtivemos o resultado conforme Tabela 33.
É possível notar que após calibrar os parâmetros (ver Tabela 32), obtivemos uma
melhorar no numero de dados para correção que esta representado na coluna corrigir da Tabela
33. Este numero representa o numero total de dados que devem ser corrigidos para melhoria da
qualidade de dados no sistema. A coluna erros representa a quantidade de dados que não foi
possível classificar como nenhum grau de similaridade. A coluna corretas representa a
totalidade de dados corretos que existem na base.
Também foi possível avaliar outro dado importante: das 37.236 tuplas, 12.280 têm um
campo com seu valor igual a espaço em branco e outras 307 tem valor nulo. Todas as demais
têm algum tipo de informação.
46
Esta abordagem se mostrou-se satisfatória no que diz respeito ao conhecimento gerado
sobre o domínio da informação presente nos sistemas avaliados. Isso torna possível o
aprimoramento do dicionário elaborado e a reaplicação deste dicionário melhorado no intuito
de elevar o número de correções possíveis.
Durante o estudo de caso, foi possível observar que quanto mais específico o assunto
classificado, melhores foram os resultados.
Para termos classificados como "sem similaridade" que fazem parte do assunto no
formato definido no dicionário chamado "jargão técnico", é possível adicionar novos dados ao
dicionário e repetir o processo de classificação até obter o resultado esperado.
Foi um teste importante para análise do processo, porque analisamos o mesmo domínio
de informação em diferentes formatos e bases de dados.
Durante a execução do teste foi possível identificar que a rotina de limpeza não estava
funcionando corretamente para tratar caracteres especiais conforme Tabela 30. A rotina de
fonemas estabelecida previamente para o modo de Língua Portuguesa usando o BuscaBR (DE
LUCENA, 2006), não obteve o resultado esperado como uma aplicação para certas palavras de
origens nativas, que foram exclusivamente escritas por vogais. Isso ocorre porque este
algoritmo tem, como regra, a remoção de todas as vogais.
48
Efeito secundário produzido durante a introdução de uma solução que atenda a uma
precisão relativa que existe em caso de múltiplas escolhas possíveis. Este efeito pode ser
evidenciado nos resultados obtidos para termo que tem grafia semelhante com diferença apenas
na gráfica ou definição de gênero. Como exemplos temos:
O item 1 pode ser resolvido com maior rigor no dicionário que será usado. No estudo
de caso aplicado à geografia, não devemos ter nomes de qualquer outro termo que não esteja
neste domínio. Quanto ao item 2, devemos definir uma lista de itens para analise, já que não
temos uma solução eminente para este caso. O melhor é identificar e separar para análise.
Estes dados estão apresentados em forma de tabelas por sistema de origem. Todos estes
resultados estão disponíveis como evidencia do processo executado no APÊNDICE B –
RESULTADOS:
49
5 CONCLUSÃO E TRABALHOS FUTUROS
O processo obteve 63,45% para a similaridade para "precisão" (base já estava correta)
ou 1937 tuplas, 24,44% para "similaridade automática" (melhoria proposta) ou 746 tuplas e
12,12% para "sem similaridade" (imprecisão ou erro) ou 370 tuplas, tomando como referência
o dicionário baseado no IBGE com inclusão de localidades operados pela CAGECE (mas não
disponibilizada pelo IBGE) sem aplicação de qualquer termo específico ou jargão. O resultado
de 24,44% para "semelhança automática" ou 746 tuplas deve ser alterado/aplicado a base de
dados para melhorar a qualidade dos dados, elevando o grau de precisão para 87,88%. O
resultado de 12,12% para "sem similaridade" ou 370 tuplas, representa o grau de imprecisão
imputado no sistema por abuso do domínio analisado.
Após apresentar o cenário e todas as proposta para correção de dados apresentado pelo
processo. Foi possível verificar sua eficiência em gerar uma melhor qualidade de dados em
ambientes corporativos e base de dados heterogenias.
50
• Execução de um estudo de caso para avaliar a abordagem definida, de forma a
comprovar efetivamente a melhoria na qualidade de dados.
5.2 LIMITAÇÕES
O estudo de caso foi realizado em apenas uma empresa, e isso pode ser limitante para
avaliar a eficácia da abordagem e gerar uma base de conhecimento consistente sobre o assunto.
Porém, um dos objetivos do trabalho é disponibilizar o conhecimento formado a partir desta
experiência.
Outra limitação foi a abordagem ter sido realizada apenas sobre o domínio especifico.
Para trabalhos futuros, alguns experimentos poderão ser realizados usando outros
algoritmos para identificar a similaridade de string.
Também poderão ser usados banco de dados NoSql ou DBF, sendo que este último para
projetos legados que podem ser avaliados antes de passar por um processo de migração.
51
REFERÊNCIAS BIBLIOGRÁFICAS
(PIPINO ET AL, PIPINO, Leo L.; LEE, Yang W.; WANG, Richard Y. Data quality
2002) assessment. Communications of the ACM, v. 45, n. 4, p. 211-218, 2002.
(RISTAD YANILOS, SVEN RISTAD, Eric; YIANILOS, Peter N. Learning string edit
1996) distance. In: eprint arXiv: cmp-lg/9610005. 1996. p. 10005.
(RUSSELL ODELL, RUSSELL, R.; ODELL, M. Soundex Patent 01 261 167, 1918.
1918)
52
SØRENSEN, Thorvald. {A method of establishing groups of equal
amplitude in plant sociology based on similarity of species and its
(SORENSEN, 1948)
application to analyses of the vegetation on Danish commons}. Biol.
Skr., v. 5, p. 1-34, 1948.
(KRISHNAN ET AL, KRISHNAN, Sanjay et al. Towards reliable interactive data cleaning: a
2016) user survey and recommendations. In: HILDA@ SIGMOD. 2016. p. 9.
53
FERREIRA, Aurélio Buarque de Holanda. Novo Aurélio XXI: o
(FERREIRA, 1999) dicionário da língua portuguesa. totalmente revista e ampliada. Rio de
Janeiro: Nova Fronteira, 1999.
54
HAAS, DANIEL, et al. "Wisteria: Nurturing scalable data cleaning
(HAAS DANIEL,
infrastructure." Proceedings of the VLDB Endowment 8.12 (2015):
2015)
2004-2007.
55
APÊNDICE A – ALGORITMOS
SOUNDEX
//Script here
var a = s.toLowerCase().split(''),
f = a.shift(),
r = '',
codes = {
b: 1, f: 1, p: 1, v: 1,
c: 2, g: 2, j: 2, k: 2, q: 2, s: 2, x: 2, z: 2,
d: 3, t: 3,
l: 4,
m: 5, n: 5,
r: 6
};
r=f+
.filter(function (v, i, a) {
})
.join('');
56
return (r + '000').slice(0, 4).toUpperCase();
};
BUSCABR
//Script here
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
57
var str = fonema.replace(/Ó/g, "O");
fonema = str;
fonema = str;
fonema = str;
// 3.Substituimos Y por I;
fonema = str;
// 4.Substituimos BR por B;
fonema = str;
// 5.Substituimos PH por F;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
58
var str = fonema.replace(/RG/g, "G");
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
//fonema = str;
//fonema = str;
//fonema = str;
// Substituimos CT por T
//fonema = str;
59
//var str = fonema.replace(/CS/g, "S");
//fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
60
var str = fonema.replace(/C/g, "K");
fonema = str;
// 9.Substituimos LH por L;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
// 11.Substituimos NH por N;
fonema = str;
// 12.Substituimos PR por P;
fonema = str;
61
// 14.Substituimos LT, TR, CT, RT, ST por T;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
fonema = str;
// 15.Substituimos W por V;
fonema = str;
// 16.Eliminamos as terminações S, Z, R, R, M, N, AO e L;
fonema = str.substring(0,tam-1);
62
var str = fonema;
fonema = str.substring(0,tam);
// Modificado terminados em A, O
fonema = str.substring(0,tam-1);
// 17.Substituimos R por L;
fonema = str;
// Modificado
/*
fonema = str;
fonema = str;
63
fonema = str;
fonema = str;
fonema = str;
*/
fonema = str;
if (str[i] == str[i+1]) {
var p1 = str.substring(0,i);
var p2 = str.substring(i+1,tam);
fonema = p1.concat(p2);
if (str[i] == str[i+1]) {
var p1 = str.substring(0,i);
var p2 = str.substring(i+1,tam);
fonema = p1.concat(p2);
64
}
if (str[i] == str[i+1]) {
var p1 = str.substring(0,i);
var p2 = str.substring(i+1,tam);
fonema = p1.concat(p2);
if (str[i] == str[i+1]) {
var p1 = str.substring(0,i);
var p2 = str.substring(i+1,tam);
fonema = p1.concat(p2);
if (tam == 0) {
fonema = "1";
65
}
LEVENSHITEIN
//Script here
var a = pricipal;
var b = secundario;
var i;
matrix[i] = [i];
var j;
matrix[0][j] = j;
matrix[i][j] = matrix[i-1][j-1];
} else {
Math.min(matrix[i][j-1] + 1, // insertion
//return matrix[b.length][a.length];
DICE
//Script here
function getCharactersPair(np)
67
return pairs;
if(pair1 ==pair2)
value++;
break;
68
APÊNDICE B – RESULTADOS
Resultados para sistema PRAX com banco de dados Oracle do tipo compatível na Tabela
34.
69
Termo Comparação Termo Dicionário Operações Levenshtein Dice
INHARIN INHARIM 1.00 0.86 0.86
INHUCU INHUÇU 1.00 0.83 0.67
IPAGUACU IPAGUAÇU 1.00 0.88 0.75
IPAGUASSU IPAGUAÇU 2.00 0.78 0.71
IRAJA IRAJÁ 1.00 0.80 0.60
IRAUCUBA IRAUÇUBA 1.00 0.88 0.75
ITAICABA ITAIÇABA 1.00 0.88 0.75
ITAPAGE ITAPAGÉ 1.00 0.86 0.71
ITAPIUNA ITAPIÚNA 1.00 0.88 0.75
JOAO JOÃO 1.00 0.75 0.50
JOSE JOSÉ 1.00 0.75 0.50
JUCAS JUCÁS 1.00 0.80 0.60
MACARAU MACARAÚ 1.00 0.86 0.71
MARACANAU MARACANAÚ 1.00 0.89 0.78
MARTINOPOLE MARTINÓPOLE 1.00 0.91 0.82
MARTINOPOLES MARTINÓPOLE 2.00 0.83 0.70
MASSAPE MASSAPÉ 1.00 0.86 0.71
MASSAPE MASSAPÊ 1.00 0.86 0.71
MAZAGAO MAZAGÃO 1.00 0.86 0.71
MILHA MILHÃ 1.00 0.80 0.60
MIRAIMA MIRAÍMA 1.00 0.86 0.71
MISSAO MISSÃO 1.00 0.83 0.67
MOMBACA MOMBAÇA 1.00 0.86 0.71
MORAUJO MORAÚJO 1.00 0.86 0.71
MUNDAU MUNDAÚ 1.00 0.83 0.67
OROS ORÓS 1.00 0.75 0.50
PACUJA PACUJÁ 1.00 0.83 0.67
PAJEU PAJEÚ 1.00 0.80 0.60
PALMACIA PALMÁCIA 1.00 0.88 0.75
PALMATORIA PALMATÓRIA 1.00 0.90 0.80
PECEM PECÉM 1.00 0.80 0.60
POCO POÇO 1.00 0.75 0.50
QUATINGUABA QUATIGUABA 1.00 0.91 0.86
QUITAIUS QUITAIÚS 1.00 0.88 0.75
QUITERIA QUITÉRIA 1.00 0.88 0.75
QUITERIANOPOLIS QUITERIANÓPOLIS 1.00 0.93 0.87
QUIXADA QUIXADÁ 1.00 0.86 0.71
QUIXERE QUIXERÉ 1.00 0.86 0.71
REDENCAO REDENÇÃO 2.00 0.75 0.62
SEBASTIAO SEBASTIÃO 1.00 0.89 0.78
SITIO SÍTIO 1.00 0.80 0.60
SITIOS SÍTIOS 1.00 0.83 0.67
SIUPE SIUPÉ 1.00 0.80 0.60
SOLONOPOLE SOLONÓPOLE 1.00 0.90 0.80
TAPUIARA TAPUIARÁ 1.00 0.88 0.75
70
Termo Comparação Termo Dicionário Operações Levenshtein Dice
TAUA TAUÁ 1.00 0.75 0.50
TEJUCUOCA TEJUÇUOCA 1.00 0.89 0.78
TEJUSSUOCA TEJUÇUOCA 2.00 0.80 0.74
TIANGUA TIANGUÁ 1.00 0.86 0.71
TIMBAUBA TIMBAÚBA 1.00 0.88 0.75
TORROES TORRÕES 1.00 0.86 0.71
TRIANGULO TRIÂNGULO 1.00 0.89 0.78
UBAUNA UBAÚNA 1.00 0.83 0.67
VARZEA VÁRZEA 1.00 0.83 0.67
VICOSA VIÇOSA 1.00 0.83 0.67
Resultados para sistema SCO com banco de dados SQLServer do tipo compatível na
Tabela 35.
71
Termo Comparação Termo Dicionário Operações Levenshtein Dice
ICAPUI ICAPUÍ 1.00 0.83 0.67
ICO ICÓ 1.00 0.67 0.33
INDEPENDENCIA INDEPENDÊNCIA 1.00 0.92 1.00
INHUCU INHUÇU 1.00 0.83 0.67
IPAGUASSU IPAGUAÇU 2.00 0.78 0.71
IRAJA IRAJÁ 1.00 0.80 0.60
IRAUCUBA IRAUÇUBA 1.00 0.88 0.75
ITAICABA ITAIÇABA 1.00 0.88 0.75
ITAPIUNA ITAPIÚNA 1.00 0.88 0.75
JOAO JOÃO 1.00 0.75 0.50
JOSE JOSÉ 1.00 0.75 0.50
JUCAS JUCÁS 1.00 0.80 0.60
MACARAU MACARAÚ 1.00 0.86 0.71
MARACANAU MARACANAÚ 1.00 0.89 0.78
MARRUAS MARRUÁS 1.00 0.86 0.71
MASSAPE MASSAPÉ 1.00 0.86 0.71
MASSAPE MASSAPÊ 1.00 0.86 0.71
MIRAIMA MIRAÍMA 1.00 0.86 0.71
MISSAO MISSÃO 1.00 0.83 0.67
MOMBACA MOMBAÇA 1.00 0.86 0.71
MORAUJO MORAÚJO 1.00 0.86 0.71
MUNDAU MUNDAÚ 1.00 0.83 0.67
OROS ORÓS 1.00 0.75 0.50
OTAVILANDIA OTAVILÂNDIA 1.00 0.91 0.82
PACUJA PACUJÁ 1.00 0.83 0.67
PAJEU PAJEÚ 1.00 0.80 0.60
PALMACIA PALMÁCIA 1.00 0.88 0.75
PALMATORIA PALMATÓRIA 1.00 0.90 0.80
PECEM PECÉM 1.00 0.80 0.60
QUATINGUABA QUATIGUABA 1.00 0.91 0.86
QUITERIA QUITÉRIA 1.00 0.88 0.75
QUIXADA QUIXADÁ 1.00 0.86 0.71
QUIXERE QUIXERÉ 1.00 0.86 0.71
REDENCAO REDENÇÃO 2.00 0.75 0.62
SEBASTIAO SEBASTIÃO 1.00 0.89 0.78
SITIO SÍTIO 1.00 0.80 0.60
SITIOS SÍTIOS 1.00 0.83 0.67
SIUPE SIUPÉ 1.00 0.80 0.60
SOLONOPOLE SOLONÓPOLE 1.00 0.90 0.80
TAPUIARA TAPUIARÁ 1.00 0.88 0.75
TAUA TAUÁ 1.00 0.75 0.50
TEJUCUOCA TEJUÇUOCA 1.00 0.89 0.78
TIANGUA TIANGUÁ 1.00 0.86 0.71
TORROES TORRÕES 1.00 0.86 0.71
UBAUNA UBAÚNA 1.00 0.83 0.67
72
Termo Comparação Termo Dicionário Operações Levenshtein Dice
VARZEA VÁRZEA 1.00 0.83 0.67
Resultados para sistema SEI com banco de dados Oracle do tipo compatível na Tabela
36.
73
Termo Comparação Termo Dicionário Operações Levenshtein Dice
ITAPAGE ITAPAGÉ 1.00 0.86 0.71
ITAPIUNA ITAPIÚNA 1.00 0.88 0.75
JOAO JOÃO 1.00 0.75 0.50
JOSE JOSÉ 1.00 0.75 0.50
MACARAU MACARAÚ 1.00 0.86 0.71
MARACANAU MARACANAÚ 1.00 0.89 0.78
MARTINOPOLE MARTINÓPOLE 1.00 0.91 0.82
MARTINOPOLES MARTINÓPOLE 2.00 0.83 0.70
MASSAPE MASSAPÉ 1.00 0.86 0.71
MASSAPE MASSAPÊ 1.00 0.86 0.71
MAZAGAO MAZAGÃO 1.00 0.86 0.71
MIRAIMA MIRAÍMA 1.00 0.86 0.71
MISSAO MISSÃO 1.00 0.83 0.67
MOMBACA MOMBAÇA 1.00 0.86 0.71
MORAUJO MORAÚJO 1.00 0.86 0.71
MUNDAU MUNDAÚ 1.00 0.83 0.67
OROS ORÓS 1.00 0.75 0.50
PACUJA PACUJÁ 1.00 0.83 0.67
PAJEU PAJEÚ 1.00 0.80 0.60
PALMACIA PALMÁCIA 1.00 0.88 0.75
PALMATORIA PALMATÓRIA 1.00 0.90 0.80
PECEM PECÉM 1.00 0.80 0.60
POCO POÇO 1.00 0.75 0.50
QUATINGUABA QUATIGUABA 1.00 0.91 0.86
QUITAIUS QUITAIÚS 1.00 0.88 0.75
QUITERIA QUITÉRIA 1.00 0.88 0.75
QUITERIANOPOLIS QUITERIANÓPOLIS 1.00 0.93 0.87
QUIXADA QUIXADÁ 1.00 0.86 0.71
QUIXERE QUIXERÉ 1.00 0.86 0.71
REDENCAO REDENÇÃO 2.00 0.75 0.62
SEBASTIAO SEBASTIÃO 1.00 0.89 0.78
SITIO SÍTIO 1.00 0.80 0.60
SITIOS SÍTIOS 1.00 0.83 0.67
SIUPE SIUPÉ 1.00 0.80 0.60
TAPUIARA TAPUIARÁ 1.00 0.88 0.75
TAUA TAUÁ 1.00 0.75 0.50
TEJUCUOCA TEJUÇUOCA 1.00 0.89 0.78
TIANGUA TIANGUÁ 1.00 0.86 0.71
TIMBAUBA TIMBAÚBA 1.00 0.88 0.75
TORROES TORRÕES 1.00 0.86 0.71
TRIANGULO TRIÂNGULO 1.00 0.89 0.78
UBAUNA UBAÚNA 1.00 0.83 0.67
VARZEA VÁRZEA 1.00 0.83 0.67
VICOSA VIÇOSA 1.00 0.83 0.67
74
Resultados para sistema SIC com banco de dados Oracle do tipo compatível na Tabela
37.
75
Termo Comparação Termo Dicionário Operações Levenshtein Dice
JOSE JOSÉ 1.00 0.75 0.50
JUCAS JUCÁS 1.00 0.80 0.60
MACARAU MACARAÚ 1.00 0.86 0.71
MARACANAU MARACANAÚ 1.00 0.89 0.78
MARTINOPOLES MARTINÓPOLE 2.00 0.83 0.70
MASSAPE MASSAPÉ 1.00 0.86 0.71
MASSAPE MASSAPÊ 1.00 0.86 0.71
MILHA MILHÃ 1.00 0.80 0.60
MIRAIMA MIRAÍMA 1.00 0.86 0.71
MISSAO MISSÃO 1.00 0.83 0.67
MOMBACA MOMBAÇA 1.00 0.86 0.71
MORAUJO MORAÚJO 1.00 0.86 0.71
MUNDAU MUNDAÚ 1.00 0.83 0.67
OROS ORÓS 1.00 0.75 0.50
PACUJA PACUJÁ 1.00 0.83 0.67
PAJEU PAJEÚ 1.00 0.80 0.60
PALMACIA PALMÁCIA 1.00 0.88 0.75
PALMATORIA PALMATÓRIA 1.00 0.90 0.80
PECEM PECÉM 1.00 0.80 0.60
QUATINGUABA QUATIGUABA 1.00 0.91 0.86
QUITAIUS QUITAIÚS 1.00 0.88 0.75
QUITERIA QUITÉRIA 1.00 0.88 0.75
QUIXADA QUIXADÁ 1.00 0.86 0.71
QUIXERE QUIXERÉ 1.00 0.86 0.71
REDENCAO REDENÇÃO 2.00 0.75 0.62
SEBASTIAO SEBASTIÃO 1.00 0.89 0.78
SITIO SÍTIO 1.00 0.80 0.60
SITIOS SÍTIOS 1.00 0.83 0.67
TAPUIARA TAPUIARÁ 1.00 0.88 0.75
TAUA TAUÁ 1.00 0.75 0.50
TEJUCUOCA TEJUÇUOCA 1.00 0.89 0.78
TIANGUA TIANGUÁ 1.00 0.86 0.71
TIMBAUBA TIMBAÚBA 1.00 0.88 0.75
TORROES TORRÕES 1.00 0.86 0.71
TRIANGULO TRIÂNGULO 1.00 0.89 0.78
UBAUNA UBAÚNA 1.00 0.83 0.67
VARZEA VÁRZEA 1.00 0.83 0.67
VICOSA VIÇOSA 1.00 0.83 0.67
Resultados para sistema SISCOPE com banco de dados PostgreSQL do tipo compatível
na Tabela 38.
76
Tabela 38 – Resultados Sistema SISCOPE
Termo Comparação Termo Dicionário Operações Levenshtein Dice
ACARAU ACARAÚ 1.00 0.83 0.67
ALCANTARA ALCÂNTARAS 2.00 0.80 0.63
ALCANTARAS ALCÂNTARAS 1.00 0.90 0.80
APRAZIVEL APRAZÍVEL 1.00 0.89 0.78
APUIARES APUIARÉS 1.00 0.88 0.75
ARARENDA ARARENDÁ 1.00 0.88 0.75
ASSARE ASSARÉ 1.00 0.83 0.67
BATURITE BATURITÉ 1.00 0.88 0.75
BITUPITA BITUPITÁ 1.00 0.88 0.75
CAMPANARIO CAMPÁNARIO 1.00 0.90 0.80
CARIRE CARIRÉ 1.00 0.83 0.67
CARIUS CARIÚS 1.00 0.83 0.67
CARUATAI CARUATAÍ 1.00 0.88 0.75
CEARA CEARÁ 1.00 0.80 0.60
COREAU COREAÚ 1.00 0.83 0.67
CRATEUS CRATEÚS 1.00 0.86 0.71
CRIOULAS CRIOULOS 1.00 0.88 0.75
CURÚ CURU 1.00 0.75 0.50
ERERE ERERÊ 1.00 0.80 0.80
ERERÉ ERERÊ 1.00 0.80 0.60
EUSEBIO EUSÉBIO 1.00 0.86 0.71
FELIX FÉLIX 1.00 0.80 0.60
GONCALO GONÇALO 1.00 0.86 0.71
GRACA GRAÇA 1.00 0.80 0.60
GROAIRAS GROAÍRAS 1.00 0.88 0.75
GUAIUBA GUAIÚBA 1.00 0.86 0.71
GUASSUSSE GUASSUSSÊ 1.00 0.89 0.78
HIDROLANDIA HIDROLÂNDIA 1.00 0.91 0.82
INDEPENDENCIA INDEPENDÊNCIA 1.00 0.92 1.00
INHARIN INHARIM 1.00 0.86 0.86
INHUCU INHUÇU 1.00 0.83 0.67
IPAGUASSU IPAGUAÇU 2.00 0.78 0.71
IRAJA IRAJÁ 1.00 0.80 0.60
IRAUCUBA IRAUÇUBA 1.00 0.88 0.75
ITAICABA ITAIÇABA 1.00 0.88 0.75
ITAPIUNA ITAPIÚNA 1.00 0.88 0.75
JATÍ JATI 1.00 0.75 0.50
JOAO JOÃO 1.00 0.75 0.50
JOSE JOSÉ 1.00 0.75 0.50
MACARAU MACARAÚ 1.00 0.86 0.71
MARACANAU MARACANAÚ 1.00 0.89 0.78
MASSAPE MASSAPÉ 1.00 0.86 0.71
MASSAPE MASSAPÊ 1.00 0.86 0.71
MIRAIMA MIRAÍMA 1.00 0.86 0.71
77
Termo Comparação Termo Dicionário Operações Levenshtein Dice
MISSAO MISSÃO 1.00 0.83 0.67
MOMBACA MOMBAÇA 1.00 0.86 0.71
MORAUJO MORAÚJO 1.00 0.86 0.71
MUNDAU MUNDAÚ 1.00 0.83 0.67
OROS ORÓS 1.00 0.75 0.50
PACAJÚS PACAJUS 1.00 0.86 0.71
PACUJA PACUJÁ 1.00 0.83 0.67
PAJEU PAJEÚ 1.00 0.80 0.60
PALMACIA PALMÁCIA 1.00 0.88 0.75
PALMATORIA PALMATÓRIA 1.00 0.90 0.80
PARAMBÚ PARAMBU 1.00 0.86 0.71
PECEM PECÉM 1.00 0.80 0.60
QUATINGUABA QUATIGUABA 1.00 0.91 0.86
QUITERIA QUITÉRIA 1.00 0.88 0.75
QUIXADA QUIXADÁ 1.00 0.86 0.71
QUIXERE QUIXERÉ 1.00 0.86 0.71
REDENCAO REDENÇÃO 2.00 0.75 0.62
SITIO SÍTIO 1.00 0.80 0.60
SITIOS SÍTIOS 1.00 0.83 0.67
SIUPE SIUPÉ 1.00 0.80 0.60
TAPUIARA TAPUIARÁ 1.00 0.88 0.75
TAUA TAUÁ 1.00 0.75 0.50
TEJUSSUOCA TEJUÇUOCA 2.00 0.80 0.74
TIANGUA TIANGUÁ 1.00 0.86 0.71
TOME TOMÉ 1.00 0.75 0.50
TORROES TORRÕES 1.00 0.86 0.71
TRAIRÍ TRAIRI 1.00 0.83 0.67
UBAUNA UBAÚNA 1.00 0.83 0.67
UMARÍ UMARI 1.00 0.80 0.60
VARZEA VÁRZEA 1.00 0.83 0.67
VICOSA VIÇOSA 1.00 0.83 0.67
Resultados para sistema SGR com banco de dados Oracle do tipo compatível na Tabela
39.
78
Termo Comparação Termo Dicionário Operações Levenshtein Dice
ANAUA ANAUÁ 1.00 0.80 0.60
ANT ANTA 1.00 0.75 0.57
APRAZIVEL APRAZÍVEL 1.00 0.89 0.78
APUIARES APUIARÉS 1.00 0.88 0.75
AQUINOPOLIS AQUINÓPOLIS 1.00 0.91 0.82
ARACATIACU ARACATIAÇU 1.00 0.90 0.90
ARANAU ARANAÚ 1.00 0.83 0.67
ARAPA ARAPÁ 1.00 0.80 0.60
ARAQUEM ARAQUÉM 1.00 0.86 0.71
ARARENDA ARARENDÁ 1.00 0.88 0.75
ARARIUS ARARIÚS 1.00 0.86 0.71
ASSARE ASSARÉ 1.00 0.83 0.67
BANABUIU BANABUIÚ 1.00 0.88 0.75
BARREIRO BARREIROS 1.00 0.89 0.82
BATURITE BATURITÉ 1.00 0.88 0.75
BAU BAÚ 1.00 0.67 0.33
BITUPITA BITUPITÁ 1.00 0.88 0.75
BIXOPA BIXOPÁ 1.00 0.83 0.67
BROTOS BROTAS 1.00 0.83 0.67
CAGADO CÁGADO 1.00 0.83 0.67
CALABACA CALABAÇA 1.00 0.88 0.88
CAMARA CAMARÁ 1.00 0.83 0.67
CAMARA CÂMARA 1.00 0.83 0.67
CAMPANARIO CAMPÁNARIO 1.00 0.90 0.80
CANAA CANAAN 1.00 0.83 0.73
CANADA CANADÁ 1.00 0.83 0.67
CANAFISTULA CANAFÍSTULA 1.00 0.91 0.82
CANDEIA CANDEIAS 1.00 0.88 0.80
CANINDE CANINDÉ 1.00 0.86 0.71
CARIRE CARIRÉ 1.00 0.83 0.67
CARIRIACU CARIRIAÇU 1.00 0.89 0.78
CARIUS CARIÚS 1.00 0.83 0.67
CARMELOPOLIS CARMELÓPOLIS 1.00 0.92 0.83
CARNAUBA CARNAUBAL 1.00 0.89 0.82
CARNAUBAS CARNAÚBAS 1.00 0.89 0.78
CARNAUBAS CARNAUBAL 1.00 0.89 0.78
CARUATAI CARUATAÍ 1.00 0.88 0.75
CATOLE CATOLÉ 1.00 0.83 0.67
CAXITORE CAXITORÉ 1.00 0.88 0.75
CEARA CEARÁ 1.00 0.80 0.60
CESARIO CESÁRIO 1.00 0.86 0.71
CICERO CÍCERO 1.00 0.83 0.67
CIPO CIPÓ 1.00 0.75 0.50
COITE COITÉ 1.00 0.80 0.60
COREAU COREAÚ 1.00 0.83 0.67
79
Termo Comparação Termo Dicionário Operações Levenshtein Dice
CORREGO CÓRREGO 1.00 0.86 0.71
CRATEUS CRATEÚS 1.00 0.86 0.71
CRIOULAS CRIOULOS 1.00 0.88 0.75
CURAIS CURRAIS 1.00 0.86 0.92
CURÚ CURU 1.00 0.75 0.50
CUSTODIO CUSTÓDIO 1.00 0.88 0.75
DAGUA DÁGUA 1.00 0.80 0.60
EBROM EBRON 1.00 0.80 0.60
ERERE ERERÊ 1.00 0.80 0.80
ERERÉ ERERÊ 1.00 0.80 0.60
EUSEBIO EUSÉBIO 1.00 0.86 0.71
FATIMA FÁTIMA 1.00 0.83 0.67
FELICIA FELÍCIA 1.00 0.86 0.71
FELIX FÉLIX 1.00 0.80 0.60
GAZEA GÁZEA 1.00 0.80 0.60
GEQUI GIQUI 1.00 0.80 0.60
GONCALO GONÇALO 1.00 0.86 0.71
GONSALO GONÇALO 1.00 0.86 0.71
GRACA GRAÇA 1.00 0.80 0.60
GREGORIO GREGÓRIO 1.00 0.88 0.75
GROAIRAS GROAÍRAS 1.00 0.88 0.75
GUAIUBA GUAIÚBA 1.00 0.86 0.71
GUANACES GUANACÉS 1.00 0.88 0.75
GUASSUSSE GUASSUSSÊ 1.00 0.89 0.78
HIDROLANDIA HIDROLÂNDIA 1.00 0.91 0.82
IBICUA IBICUÃ 1.00 0.83 0.67
IBUACU IBUAÇU 1.00 0.83 0.67
ICAPUI ICAPUÍ 1.00 0.83 0.67
ICARAI ICARAÍ 1.00 0.83 0.67
ICO ICÓ 1.00 0.67 0.33
INDEPENDENCIA INDEPENDÊNCIA 1.00 0.92 1.00
INHARIN INHARIM 1.00 0.86 0.86
INHUCU INHUÇU 1.00 0.83 0.67
IPAGUASSU IPAGUAÇU 2.00 0.78 0.71
IPAGUASSÚ IPAGUAÇU 3.00 0.67 0.59
IRAJA IRAJÁ 1.00 0.80 0.60
IRAPUÃ IRAPUÁ 1.00 0.83 0.67
IRAUCUBA IRAUÇUBA 1.00 0.88 0.75
ISIDRO IZIDRO 1.00 0.83 0.67
ITAGUA ITAGUÁ 1.00 0.83 0.67
ITAICABA ITAIÇABA 1.00 0.88 0.75
ITAPIUNA ITAPIÚNA 1.00 0.88 0.75
JACAUNA JACAÚNA 1.00 0.86 0.71
JOAO JOÃO 1.00 0.75 0.50
JORD JORDÃO 2.00 0.67 0.60
80
Termo Comparação Termo Dicionário Operações Levenshtein Dice
JOSE JOSÉ 1.00 0.75 0.50
JUCAS JUCÁS 1.00 0.80 0.60
LAMEIRO LAMEIRÃO 1.00 0.88 0.80
LINO LINDO 1.00 0.80 0.67
MACARAU MACARAÚ 1.00 0.86 0.71
MACEIO MACEIÓ 1.00 0.83 0.67
MAPUA MAPUÁ 1.00 0.80 0.60
MARACANAU MARACANAÚ 1.00 0.89 0.78
MARCOS MARCO 1.00 0.83 0.73
MARJOLANDIA MAJORLÂNDIA 3.00 0.73 0.55
MARRUAS MARRUÁS 1.00 0.86 0.71
MARTINSLANDIA MARTINSLÂNDIA 1.00 0.92 0.85
MASSAPE MASSAPÊ 1.00 0.86 0.71
MASSAPE MASSAPÉ 1.00 0.86 0.71
MAURICIO MAURÍCIO 1.00 0.88 0.75
MELANCIAS MELANCIA 1.00 0.89 0.82
MILHA MILHÃ 1.00 0.80 0.60
MINEIROLANDIA MINEIROLÂNDIA 1.00 0.92 0.85
MIRAIMA MIRAÍMA 1.00 0.86 0.71
MIRAMBE MIRAMBÉ 1.00 0.86 0.71
MISSAO MISSÃO 1.00 0.83 0.67
MOMBACA MOMBAÇA 1.00 0.86 0.71
MONTEIROS MONTEIRO 1.00 0.89 0.82
MORAUJO MORAÚJO 1.00 0.86 0.71
MUNDAU MUNDAÚ 1.00 0.83 0.67
OROS ORÓS 1.00 0.75 0.50
OTAVILANDIA OTAVILÂNDIA 1.00 0.91 0.82
PACAJÚS PACAJUS 1.00 0.86 0.71
PACUJA PACUJÁ 1.00 0.83 0.67
PAIS PAI 1.00 0.75 0.57
PAJEU PAJEÚ 1.00 0.80 0.60
PALMACIA PALMÁCIA 1.00 0.88 0.75
PALMATORIA PALMATÓRIA 1.00 0.90 0.80
PANACUI PANACUÍ 1.00 0.86 0.71
PARAMBÚ PARAMBU 1.00 0.86 0.71
PARAPUI PARAPUÍ 1.00 0.86 0.71
PAULO PAULA 1.00 0.80 0.60
PECEM PECÉM 1.00 0.80 0.60
POCO POÇO 1.00 0.75 0.50
PREA PREÁ 1.00 0.75 0.50
PRINCIPIO PRÍNCIPIO 1.00 0.89 0.78
PRINCIPIO PRINCÍPIO 1.00 0.89 0.78
QUATINGUABA QUATIGUABA 1.00 0.91 0.86
QUEIROZ QUEIRÓZ 1.00 0.86 0.71
QUINCUNCA QUINCUNCÁ 1.00 0.89 0.78
81
Termo Comparação Termo Dicionário Operações Levenshtein Dice
QUITAIUS QUITAIÚS 1.00 0.88 0.75
QUITERIA QUITÉRIA 1.00 0.88 0.75
QUIXADA QUIXADÁ 1.00 0.86 0.71
QUIXARIU QUIXARIÚ 1.00 0.88 0.75
QUIXERE QUIXERÉ 1.00 0.86 0.71
QUIXOA QUIXOÁ 1.00 0.83 0.67
REDENCAO REDENÇÃO 2.00 0.75 0.62
RINARE RINARÉ 1.00 0.83 0.67
SANT SANTA 1.00 0.80 0.67
SANT SANTO 1.00 0.80 0.67
SAPO SAPÓ 1.00 0.75 0.50
SIMPLICIO SIMPLÍCIO 1.00 0.89 0.78
SITIO SÍTIO 1.00 0.80 0.60
SITIOS SÍTIOS 1.00 0.83 0.67
SIUPE SIUPÉ 1.00 0.80 0.60
SOLONOPOLE SOLONÓPOLE 1.00 0.90 0.80
SUASSURAMA SUASSURANA 1.00 0.90 0.80
TAPUIARA TAPUIARÁ 1.00 0.88 0.75
TAUA TAUÁ 1.00 0.75 0.50
TEJUSSUOCA TEJUÇUOCA 2.00 0.80 0.74
TIANGUA TIANGUÁ 1.00 0.86 0.71
TIBURCIO TIBÚRCIO 1.00 0.88 0.75
TOME TOMÉ 1.00 0.75 0.50
TRAIRÍ TRAIRI 1.00 0.83 0.67
TRAPIA TRAPIÁ 1.00 0.83 0.67
TRIANGULO TRIÂNGULO 1.00 0.89 0.78
TROIA TRÓIA 1.00 0.80 0.60
TUINA TUÍNA 1.00 0.80 0.60
UBAUNA UBAÚNA 1.00 0.83 0.67
UMARÍ UMARI 1.00 0.80 0.60
URUQUE URUQUÊ 1.00 0.83 0.67
VARZEA VÁRZEA 1.00 0.83 0.67
VICOSA VIÇOSA 1.00 0.83 0.67
Resultados para sistema SIG com banco de dados SQLServer do tipo compatível na
Tabela 40.
82
Termo Comparação Termo Dicionário Operações Levenshtein Dice
AMERICA AMÉRICA 1.00 0.86 0.71
ANAUA ANAUÁ 1.00 0.80 0.60
ANT ANTA 1.00 0.75 0.57
APRAZIVEL APRAZÍVEL 1.00 0.89 0.78
APUIARES APUIARÉS 1.00 0.88 0.75
AQUINOPOLIS AQUINÓPOLIS 1.00 0.91 0.82
ARACATIACU ARACATIAÇU 1.00 0.90 0.90
ARAPA ARAPÁ 1.00 0.80 0.60
ARAQUEM ARAQUÉM 1.00 0.86 0.71
ARARENDA ARARENDÁ 1.00 0.88 0.75
ARARIUS ARARIÚS 1.00 0.86 0.71
ASSARE ASSARÉ 1.00 0.83 0.67
BANABUIU BANABUIÚ 1.00 0.88 0.75
BARREIRO BARREIROS 1.00 0.89 0.82
BATURITE BATURITÉ 1.00 0.88 0.75
BAU BAÚ 1.00 0.67 0.33
BITUPITA BITUPITÁ 1.00 0.88 0.75
BIXOPA BIXOPÁ 1.00 0.83 0.67
BROTOS BROTAS 1.00 0.83 0.67
CAGADO CÁGADO 1.00 0.83 0.67
CALABACA CALABAÇA 1.00 0.88 0.88
CAMARA CAMARÁ 1.00 0.83 0.67
CAMARA CÂMARA 1.00 0.83 0.67
CAMPANARIO CAMPÁNARIO 1.00 0.90 0.80
CANAA CANAAN 1.00 0.83 0.73
CANADA CANADÁ 1.00 0.83 0.67
CANAFISTULA CANAFÍSTULA 1.00 0.91 0.82
CANDEIA CANDEIAS 1.00 0.88 0.80
CANINDE CANINDÉ 1.00 0.86 0.71
CARIRE CARIRÉ 1.00 0.83 0.67
CARIRIACU CARIRIAÇU 1.00 0.89 0.78
CARIUS CARIÚS 1.00 0.83 0.67
CARMELOPOLIS CARMELÓPOLIS 1.00 0.92 0.83
CARNAUBA CARNAUBAL 1.00 0.89 0.82
CARNAUBAS CARNAUBAL 1.00 0.89 0.78
CARNAUBAS CARNAÚBAS 1.00 0.89 0.78
CARUATAI CARUATAÍ 1.00 0.88 0.75
CATOLE CATOLÉ 1.00 0.83 0.67
CAXITORE CAXITORÉ 1.00 0.88 0.75
CEARA CEARÁ 1.00 0.80 0.60
CESARIO CESÁRIO 1.00 0.86 0.71
CICERO CÍCERO 1.00 0.83 0.67
CIPO CIPÓ 1.00 0.75 0.50
COITE COITÉ 1.00 0.80 0.60
COREAU COREAÚ 1.00 0.83 0.67
83
Termo Comparação Termo Dicionário Operações Levenshtein Dice
CORREGO CÓRREGO 1.00 0.86 0.71
CRATEUS CRATEÚS 1.00 0.86 0.71
CRIOULAS CRIOULOS 1.00 0.88 0.75
CURAIS CURRAIS 1.00 0.86 0.92
CURÚ CURU 1.00 0.75 0.50
CUSTODIO CUSTÓDIO 1.00 0.88 0.75
DAGUA DÁGUA 1.00 0.80 0.60
EBROM EBRON 1.00 0.80 0.60
ERERE ERERÊ 1.00 0.80 0.80
ERERÉ ERERÊ 1.00 0.80 0.60
EUSEBIO EUSÉBIO 1.00 0.86 0.71
FATIMA FÁTIMA 1.00 0.83 0.67
FELICIA FELÍCIA 1.00 0.86 0.71
FELIX FÉLIX 1.00 0.80 0.60
GAZEA GÁZEA 1.00 0.80 0.60
GEQUI GIQUI 1.00 0.80 0.60
GONCALO GONÇALO 1.00 0.86 0.71
GONSALO GONÇALO 1.00 0.86 0.71
GRACA GRAÇA 1.00 0.80 0.60
GREGORIO GREGÓRIO 1.00 0.88 0.75
GROAIRAS GROAÍRAS 1.00 0.88 0.75
GUAIUBA GUAIÚBA 1.00 0.86 0.71
GUANACES GUANACÉS 1.00 0.88 0.75
GUASSUSSE GUASSUSSÊ 1.00 0.89 0.78
HIDROLANDIA HIDROLÂNDIA 1.00 0.91 0.82
IBICUA IBICUÃ 1.00 0.83 0.67
IBUACU IBUAÇU 1.00 0.83 0.67
ICAPUI ICAPUÍ 1.00 0.83 0.67
ICARAI ICARAÍ 1.00 0.83 0.67
ICO ICÓ 1.00 0.67 0.33
INDEPENDENCIA INDEPENDÊNCIA 1.00 0.92 1.00
INHARIN INHARIM 1.00 0.86 0.86
INHUCU INHUÇU 1.00 0.83 0.67
IPAGUASSU IPAGUAÇU 2.00 0.78 0.71
IPAGUASSÚ IPAGUAÇU 3.00 0.67 0.59
IRAJA IRAJÁ 1.00 0.80 0.60
IRAPUÃ IRAPUÁ 1.00 0.83 0.67
IRAUCUBA IRAUÇUBA 1.00 0.88 0.75
ISIDRO IZIDRO 1.00 0.83 0.67
ITAGUA ITAGUÁ 1.00 0.83 0.67
ITAICABA ITAIÇABA 1.00 0.88 0.75
ITAPIUNA ITAPIÚNA 1.00 0.88 0.75
JACAUNA JACAÚNA 1.00 0.86 0.71
JOAO JOÃO 1.00 0.75 0.50
JORD JORDÃO 2.00 0.67 0.60
84
Termo Comparação Termo Dicionário Operações Levenshtein Dice
JOSE JOSÉ 1.00 0.75 0.50
JUCAS JUCÁS 1.00 0.80 0.60
LAMEIRO LAMEIRÃO 1.00 0.88 0.80
LINO LINDO 1.00 0.80 0.67
MACARAU MACARAÚ 1.00 0.86 0.71
MACEIO MACEIÓ 1.00 0.83 0.67
MAPUA MAPUÁ 1.00 0.80 0.60
MARACANAU MARACANAÚ 1.00 0.89 0.78
MARCOS MARCO 1.00 0.83 0.73
MARJOLANDIA MAJORLÂNDIA 3.00 0.73 0.55
MARRUAS MARRUÁS 1.00 0.86 0.71
MARTINSLANDIA MARTINSLÂNDIA 1.00 0.92 0.85
MASSAPE MASSAPÊ 1.00 0.86 0.71
MASSAPE MASSAPÉ 1.00 0.86 0.71
MAURICIO MAURÍCIO 1.00 0.88 0.75
MELANCIAS MELANCIA 1.00 0.89 0.82
MILHA MILHÃ 1.00 0.80 0.60
MINEIROLANDIA MINEIROLÂNDIA 1.00 0.92 0.85
MIRAIMA MIRAÍMA 1.00 0.86 0.71
MIRAMBE MIRAMBÉ 1.00 0.86 0.71
MISSAO MISSÃO 1.00 0.83 0.67
MOMBACA MOMBAÇA 1.00 0.86 0.71
MONTEIROS MONTEIRO 1.00 0.89 0.82
MORAUJO MORAÚJO 1.00 0.86 0.71
MUNDAU MUNDAÚ 1.00 0.83 0.67
OROS ORÓS 1.00 0.75 0.50
OTAVILANDIA OTAVILÂNDIA 1.00 0.91 0.82
PACAJÚS PACAJUS 1.00 0.86 0.71
PACUJA PACUJÁ 1.00 0.83 0.67
PAIS PAI 1.00 0.75 0.57
PAJEU PAJEÚ 1.00 0.80 0.60
PALMACIA PALMÁCIA 1.00 0.88 0.75
PALMATORIA PALMATÓRIA 1.00 0.90 0.80
PANACUI PANACUÍ 1.00 0.86 0.71
PARAMBÚ PARAMBU 1.00 0.86 0.71
PARAPUI PARAPUÍ 1.00 0.86 0.71
PAULO PAULA 1.00 0.80 0.60
PECEM PECÉM 1.00 0.80 0.60
POCO POÇO 1.00 0.75 0.50
PREA PREÁ 1.00 0.75 0.50
PRINCIPIO PRÍNCIPIO 1.00 0.89 0.78
PRINCIPIO PRINCÍPIO 1.00 0.89 0.78
QUATINGUABA QUATIGUABA 1.00 0.91 0.86
QUEIROZ QUEIRÓZ 1.00 0.86 0.71
QUINCUNCA QUINCUNCÁ 1.00 0.89 0.78
85
Termo Comparação Termo Dicionário Operações Levenshtein Dice
QUITAIUS QUITAIÚS 1.00 0.88 0.75
QUITERIA QUITÉRIA 1.00 0.88 0.75
QUIXADA QUIXADÁ 1.00 0.86 0.71
QUIXARIU QUIXARIÚ 1.00 0.88 0.75
QUIXERE QUIXERÉ 1.00 0.86 0.71
QUIXOA QUIXOÁ 1.00 0.83 0.67
REDENCAO REDENÇÃO 2.00 0.75 0.62
RINARE RINARÉ 1.00 0.83 0.67
SANT SANTA 1.00 0.80 0.67
SANT SANTO 1.00 0.80 0.67
SAPO SAPÓ 1.00 0.75 0.50
SIMPLICIO SIMPLÍCIO 1.00 0.89 0.78
SITIO SÍTIO 1.00 0.80 0.60
SITIOS SÍTIOS 1.00 0.83 0.67
SIUPE SIUPÉ 1.00 0.80 0.60
SOLONOPOLE SOLONÓPOLE 1.00 0.90 0.80
SUASSURAMA SUASSURANA 1.00 0.90 0.80
TAPUIARA TAPUIARÁ 1.00 0.88 0.75
TAUA TAUÁ 1.00 0.75 0.50
TEJUCUOCA TEJUÇUOCA 1.00 0.89 0.78
TEJUSSUOCA TEJUÇUOCA 2.00 0.80 0.74
TIANGUA TIANGUÁ 1.00 0.86 0.71
TIBURCIO TIBÚRCIO 1.00 0.88 0.75
TOME TOMÉ 1.00 0.75 0.50
TORROES TORRÕES 1.00 0.86 0.71
TRAIRÍ TRAIRI 1.00 0.83 0.67
TRAPIA TRAPIÁ 1.00 0.83 0.67
TRIANGULO TRIÂNGULO 1.00 0.89 0.78
TROIA TRÓIA 1.00 0.80 0.60
TUINA TUÍNA 1.00 0.80 0.60
UBAUNA UBAÚNA 1.00 0.83 0.67
UMARÍ UMARI 1.00 0.80 0.60
URUQUE URUQUÊ 1.00 0.83 0.67
VARZEA VÁRZEA 1.00 0.83 0.67
VICOSA VIÇOSA 1.00 0.83 0.67
86