Diogo Luis Von Grafen Rubert
O uso de funções de similaridade e distância entre strings adaptadas ao
português brasileiro
Novembro de 2015
2
Roteiro Motivação; Recuperação de informações; Contrib Fuzzystrmatch; Algorimos Fonéticos e de Distância; Soundex; Metaphone;
3
Roteiro
Levenshtein; Fonemas; Adaptação para o Português; Testes; Métricas; Conclusões.
4
Você quis dizer PostgreSQL?
5
Motivação
Comunidade do PostgreSQL; Índice para Levenshtein; Função Soundex(); Contrib fuzzystrmach.
6
Motivação
Qual a relação com Inteligência Artificial?
Porque não é uma função nativa? Qual função é a melhor?
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%’);
8
Recuperação de Informações
Falha humana:
PORTO ALEGRE – PSRTO ALEGRE JOÃO – JOAO THIAGO – TIAGO LUIZ – LUIS
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;
10
Recuperação de Informações
Exemplos de aplicabilidades: Segurança; Hospitais; Universidades; ...
11
Recuperação de Informações
Como resolver este problema?
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.
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.
14
Algoritmos Fonéticos
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
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
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.
18
Soundex Colocar em ordem alfabética:
João Carlos; João Alberto; João Albino; João Antônio; João Fernando; João Francisco; Joana.
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.
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
21
SoundexNomes Código Soundex
Diogo D200
Christopher, Christofer, Cristopher C623
Russell, Rusel R240
Wellington, Wellingtom, Welington W452
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.
23
Problema E quando a mesma letra tem um som
diferente?
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.
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’.
...
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.
27
Metaphone
Nomes Códigos MetaphoneDiogo TK
Benjamin, Bengeamin BNJMN
Franklin, Franqulin FRNKLN
Willian, Wilian WLM
select * from pessoas p where metaphone(p.nome) = metaphone (‘nome’);
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.
29
Problema
E se ocorreram erros de digitação que mudaram a forma que uma
palavra é pronunciada?
30
Problema 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ático Vladimir 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;
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.
33
Levenshtein
String1 String2 DistânciaDiogo Diogo 0
Diogo Diego 1
Diogo Tiago 2
Diogo Luis 5
select * from pessoas p where levenshtein(p.nome, ‘nome’) <= 1;
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.
35
Problema
As funções fonéticas da contrib fuzzystrmatch não são usuais
para idiomas diferentes do inglês.
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.
37
Fonemas
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.
39
Adaptação do Soundex
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
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.
42
Adaptação do MetaphoneLetras 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)
... ...
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;
44
Adaptação do Metaphone
Licença BSD; Link: http
://sourceforge.net/projects/metaphoneptbr/
45
Testes
Tudo pronto! Hora de testar.
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.
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.
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.
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.
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.
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.
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.
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.
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.
55
Problemas e Oportunidades A adaptação destas funções
para ambientes multi-idioma; Stein; Przyczynski; Kaufmann; Petković; Müeller; …
56
Dúvidas
Diogo Luis Von Grafen [email protected]
OBRIGADO!
Top Related