Palestra ministrada na Conferência Brasileira de PostgreSQL. s buscas que utilizam operadores relacionais são limitadas quando ocorrem erros de digitação ou quando a base de dados está inconsistente. Para suprir esta deficiência, alguns sistemas possuem funções que permitem fazer buscas baseadas na similaridade das strings, por exemplo, as buscas baseadas em algoritmos fonéticos como o Soundex e o Metaphone
6. Motivação
Qual a relação com Inteligência Artificial?
Porque não é uma função nativa?
Qual função é a melhor?
6
7. Recuperação de Informações
Pode ser ineficiente por meio dos
métodos tradicionais;
select * from pessoas p
where p.nome = ‘nome’;
select * from pessoas p
where p.nome LIKE ‘nome%’;
select * from pessoas p
where upper(p.nome) LIKE upper(‘nome%’);
7
9. Recuperação de Informações
O erro humano não deve impedir que uma
busca seja bem sucedida;
Inconsistências no banco de dados
também não devem impedir;
As funções de similaridade tem inúmeras
aplicabilidades;
9
12. Fuzzystrmatch
O módulo fuzzystrmatch fornece várias funções
para determinar as semelhanças e distância
entre strings.
Disponibiliza as funções:
Soundex;
Difference;
Metaphone;
Dmetaphone;
Levenshtein.
12
13. Fuzzystrmatch
O módulo fuzzystrmatch fornece várias funções
para determinar as semelhanças e distância
entre strings.
Disponibiliza as funções:
Soundex;
Difference;
Metaphone;
Dmetaphone;
Levenshtein.
13
14. Algoritmos Fonéticos
14
Algoritmos fonéticos são aqueles
baseados na forma como as palavras são
pronunciadas;
Luiz, Luis, Luís;
Tiago,Thiago,Thyago;
Vanderson, Wanderson, Wandersom;
Marcelo, Marcello.
15. Algoritmos de Distância
15
Algoritmos de distância entre strings são
baseados em caracteres;
Luid, Lxís;
Tihgo,Txiago;
Mrcelo, Marcllo.
Ambos são baseados em lógica fuzzy.
16. Algoritmos Fonéticos e de Distância
16
Tem como objetivo tratar problemas de
erros de ortografia ou de digitação dos
dados;
A intenção destes métodos é ir além da
busca exata, aquela que utiliza
operadores relacionais.
Igualdade (=);
Like.
17. Soundex
Foi criado por Robert C. Russell e
Margaret K. Odell em 1918;
A intenção era ordenar o nome das
pessoas pela forma como eram
pronunciadas e não em ordem alfabética.
17
19. Soundex
É formado pela letra inicial mais três
números obtidos a partir de uma tabela;
Letras duplicadas ou que possuem o mesmo
valor na tabela, devem ser tradadas como
uma só;
As vogais são ignoradas.
19
20. Soundex
Letras Valor
A, E, I, O, U, H, W, Y 0
B, P, F, V 1
C, S, G, J, K, Q, X, Z 2
D, T 3
L 4
M, N 5
R 6
20
21. Soundex
Nomes Código Soundex
Diogo D200
Christopher, Christofer, Cristopher C623
Russell, Rusel R240
Wellington, Wellingtom, Welington W452
21
select * from pessoas p
where soundex(p.nome) = soundex(‘nome’);
22. Soundex
Nomes pronunciados de forma semelhante,
possuem o mesmo código;
Uma das deficiências é não conseguir tratar a
combinação de algumas letras que formam sons
diferentes (Cléber e Kléber):
Neste caso, são representadas por C416 e K416,
respectivamente.
22
24. Metaphone
Foi escrito por Lawrence Philips em 1990 com o
objetivo de suprir as deficiências do Soundex;
A ideia do Metaphone é identificar a posição onde a
letra está inserida, para assim definir a sua melhor
representação;
Não são consideradas apenas consoantes para
definir uma representação fonética;
O autor também desenvolveu os métodos Double
Metaphone e Metaphone 3.
24
25. Regras do Metaphone
1. Drop duplicate adjacent letters, except for C.
2. If the word begins with 'KN', 'GN', 'PN', 'AE', 'WR',
drop the first letter.
3. Drop 'B' if after 'M' at the end of the word.
4. 'C' transforms to 'X' if followed by 'IA' or 'H' (unless in
latter case, it is part of '-SCH-', in which case it
transforms to 'K'). 'C' transforms to 'S' if followed by 'I',
'E', or 'Y'. Otherwise, 'C' transforms to 'K’.
...
25
26. Regras do Metaphone
...
15 .'WH' transforms to 'W' if at the beginning. Drop 'W' if
not followed by a vowel.
16. 'X' transforms to 'S' if at the beginning. Otherwise,
'X' transforms to 'KS'.
17. Drop 'Y' if not followed by a vowel.
18. 'Z' transforms to 'S'.
19. Drop all vowels unless it is the beginning.
26
27. Metaphone
Nomes Códigos Metaphone
Diogo TK
Benjamin, Bengeamin BNJMN
Franklin, Franqulin FRNKLN
Willian, Wilian WLM
select * from pessoas p
where metaphone(p.nome) = metaphone (‘nome’);
27
28. Metaphone
Palavras que soam de maneira semelhante
serão representadas da mesma forma;
Faz o tratamento contextual dos caracteres;
Não existe um tamanho limite para a
representação fonética da palavra, enquanto no
Soundex o limite é de apenas quatro caracteres.
28
29. Problema
E se ocorreram erros de digitação que
mudaram a forma que uma palavra é
pronunciada?
29
30. Problema
30
Qual a distância entre as palavras a seguir?
Diogo – Diego
Diogo –Tiago
Diogo – Luís
31. Levenshtein
O conceito da distância de Levenshtein foi
escrito em 1965 pelo matemáticoVladimir
I. Levenshtein e baseado na distância de
Hamming;
O princípio de Levenshtein é definir a
distância entre duas palavras com base no
número de operações necessárias para
torná-las iguais;
31
32. Levenshtein
Operações possíveis: inserção, exclusão ou substituição
;
Wagner e Fisher (1974) desenvolveram um algoritmo
que reduziu a complexidade do cálculo para m x n.32
34. Levenshtein
Palavras semelhantes têm uma distância
menor;
O algoritmo pode ser lento para comparar
strings muito longas, pois a matriz que
precisa ser criada é diretamente
proporcional ao tamanho de cada string.
34
36. Fonemas
O ser humano é dotado do aparelho fonador,
responsável por produzir a fala;
O estudo dos sons que emitimos é denominado
fonologia;
Como cada linguagem possui sons diferentes, o
estudo das particularidades chama-se fonética;
Na fonética, pode-se dizer que a unidade que
distingue um som de outro é o fonema.
36
38. Adaptação do Soundex
A tabela de códigos Soundex criada por Russell foi
baseada na classificação do ponto de articulação
dos fonemas da língua inglesa;
Para adaptar o Soundex para o português brasileiro,
a proposta é mudar o valor da tabela de códigos
baseado na classificação fonética língua
portuguesa;
Consoantes que juntas formam um só fonema,
como “CH”, “LH” e “NH”, devem ser tratadas.
38
39. Adaptação do Soundex
39
Letra(s) Valor Pontos de Articulação
A, E, I, O, U, H, W, Y 0 -
P, B, M 1 Bilabiais
F, V 2 Labiodentais
T, D, N 3 Linguodentais
L, R 4 Línguo-Alveolares
S, Z 5 Línguo-Alveolares Convexas
J, DI, GI, TI, CH, LH, NH 6 Línguo-Palatais
K, C, G, Q 7 Velares
X 8 -
40. Adaptação do Metaphone
40
Exige conhecimento de fonologia e língua
portuguesa;
Metaphone para inglês:
22 regras;
Metaphone para português:
49 regras;
41. Adaptação do Metaphone
Símbolo Significado
^ A palavra inicia.
$ A palavra termina.
[ ] Todos os caracteres entre colchetes.
v Todas as vogais (letra v minúscula).
c Todas as consoantes (letra c minúscula).
. Todas as letras.
0 Vazio.
41
42. Adaptação do Metaphone
Letras Representação Fonética (comentários)
ˆv V (repete a vogal)
B B
C[AOU] K
Cc K
C$ K
C[EI] S
CHR K
CH X (esta regra é aplicada se outra mais específica não
corresponder primeiro)
... ... 42
43. Adaptação do Metaphone
Carlos C. Jordão e João Luís G. Rosa (2012)
escreveram um artigo sobre a importância da
fonética na busca e correção de informações
textuais;
Neste artigo, apresentaram uma proposta de
adaptação para o português brasileiro,
denominado Metaphone-pt_BR;
Alguns sons que não existem na língua inglesa
foram representados pelos números 1, 2 e 3;
43
46. Métricas Utilizadas
Conforme Silberschatz (2006), para medir a
eficácia de funções que recuperam
informações, podem ser aplicadas medidas
de precisão e de revocação.
Precisão;
Revocação ou Rechamada;
Medida F Balanceada;
Tempo.
46
47. Testes Realizados
Foram realizados a partir da coleta de
algumas amostras de cada base de dados;
Foram feitos os seguintes experimentos:
Dado inicial correto;
Dado inicial foneticamente correto;
Dado Inicial foneticamente incorreto.
47
48. Métricas Utilizadas
Precisão: deve medir a taxa de acerto da
função
Revocação: deve medir a taxa de
registros relevantes retornados;
Medida F Balanceada: é a média
harmônica ponderada da precisão e da
revocação.
48
49. Testes
Tempo: algoritmos fonéticos podem ser
pré-processados;
São preferíveis em relação as buscas por
distância;
Os melhores resultados são obtidos com
métodos híbridos.
49
50. Métodos Híbridos
Tem bons resultados quando o dado
inicial está foneticamente incorreto;
Podem retornar dados a mais;
O uso da função br_metaphone em uma
solução híbrida traz resultados superiores
a mesma solução híbrida utilizando
br_soundex.
50
51. Conclusões
Quando o dado inicial está correto, todos os
métodos atingiram 100% no quesito revocação;
No quesito precisão, as funções fonéticas
demonstraram ser bastante eficientes quando
ocorrem erros de digitação;
A função br_metaphone se sobressai em
relação as demais. Os dados retornados por
esta função foram bastante precisos e
chegaram a 99,1% de precisão.
51
52. Conclusões
Quanto a performance, comprovou-se que a função
levenshtein seria a menos performática, afinal não
pode ser pré-processada;
A função br_soundex foi superior as demais em todas
as consultas no que refere-se a performance;
Contudo, em relação performance, pode-se afirmar
que em pequenas bases de dados, o tempo foi
irrelevante;
Em grandes bases de dados este quesito pode ganhar
maior importância. 52
53. Conclusões
As funções de similaridade mostraram ser
uma alternativa interessante para suprir as
limitações dos operadores lógicos.
O uso destas técnicas tem aplicabilidades
em inúmeros tipos de sistema.
Os métodos estudados são eficientes com
palavras do dicionário.
53
54. Problemas e Oportunidades
Comparar a utilização de outras técnicas
de detecção de similaridade entre strings:
Baseadas em caracteres;
Baseadas em fonética;
Baseadas em token;
Trigramas.
54
55. Problemas e Oportunidades
A adaptação destas funções para
ambientes multi-idioma;
Stein;
Przyczynski;
Kaufmann;
Petković;
Müeller;
… 55
Alguém conhece a contrib fuzzystrmatch?
Alguém já trabalhou com algoritmos ou funções fonéticas?
Funções para auxiliar o usuário.
Nunca para manutenção.
Palestra Fabrízio
Robusto e confiável, Gratuito, Documentação,
Listas, fóruns, eventos! – PGBR Novembro
Fuzzy = Inteligência Artificial
Pessoa Alta e Baixa.
Frio e Calor
Antes de falar especificamente sobre buscas inteligentes, vamos falar sobre problemas das buscas tradicionais
Limitados com erros de digitação, falha humana, inconsistência dos dados, redundância, ambiguidade
VANDERGLEIDSON
Limitados com erros de digitação, falha humana, inconsistência dos dados, redundância, ambiguidade.
VANDERGLEIDSON
Comprador digitou “Pajuçara” quando o correto seria “Pejuçara”.
Corretores ortográficos;
Quem precisa soletrar o nome? Operadora de Telefone, Assinatura de uma revista.
Bases dificilmente permanecem intactas na medida que são acrescentadas informações.
Algumas linguagens de programação e Sistemas Gerenciadores de Banco de Dados (SGBD) disponibilizam funções nativas ou extensões que possibilitam a busca de informações com base na similaridade dos dados (DBRANKING)
Em outras palavras, permite fazer buscas fonéticas, por semelhança
Difference retorna a diferença a partir do cálculo soundex.
Dmetaphone é uma evolução do Metaphone
O que são algoritmos fonéticos?
Encontramos em linguagens como PHP e PERL
Em outros SGBDs.
Limitados com erros de digitação, buscas fonéticas, falha humana
“empresário” é assim, pois conforme as regras de ortografia da língua portuguesa, devemos utilizar a letra “m” antes de “p” e “b”, e sabe-se que a letra “a” deve ser acentuada porque a palavra citada é uma paroxítona terminada em ditongo. Baseado na lógica booleana, a mesma palavra escrita como “enpresário" ou “empresario" está totalmente errada, e a premissa somente será verdadeira se ela for escrita tal qual definido na regra. Mas baseado na Lógica Fuzzy pode-se mensurar o quanto esta palavra esta errada.
Senso americano. De 1928 a 1920
Acostumado a trabalhar com números
Excluir letras adjacentes.
Excluir B se estiver depois da M...
C é substituído por X se seguido por IA.
Agora não se te a preocupação humana, somente computacional
utilizada para sinalizar erros na transmissão em telecomunicações
Funciona somente em palavras binárias de comprimento fixo
M x N ao quadrado comparações (edit-distance)
Isso porque cada língua tem sons e pronúncias diferentes.
Vamos entender?
Palavra que vem do grego, onde “fono” significa “som” e “logia” significa estudo;
, palavra que vem do grego, onde “fono” significa “som” e “logia” significa estudo;
Dígrafos – Encontros Consonantais
W e Y – Como vogais U e I
Metaphone-pt_BR. Os autores explicam que obtiveram resultados satisfatórios com as novas regras, entretanto, mesmo com a adaptação, o algoritmo é eficiente com palavras encontradas no dicionário
Desktop, Servidores com diferentes sistemas operacionais.
5500 Cidades; 310.000 palavras;
Hibridos – Calcular o código, e medir a distancia entre eles
Ou seja, metaphone não traz bobagem.
Lembrando... Apenas para consultas!! Nunca para manutenção.