Palestra Diogo Rubert - PGDAY Campinas 2015

806 visualizações

Publicada em

O USO DE FUNÇÕES DE SIMILARIDADE E DISTÂNCIA ENTRE STRINGS ADAPTADAS AO PORTUGUÊS BRASILEIRO

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
806
No SlideShare
0
A partir de incorporações
0
Número de incorporações
11
Ações
Compartilhamentos
0
Downloads
15
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Agradecimentos (evento importante), Apresentação (tempo com postgresql). Modelagem, Armazenamento, Performance, SQL
    Área desconhecida, mas muito importante. Armazenar é importante, mas recuperar é tão importante quanto
    Apresentar o roteiro
  • Alguém conhece a contrib fuzzystrmatch?
    Alguém já trabalhou com algoritmos ou funções fonéticas?
  • Sou professor. Robusto e confiável, Gratuito, Documentação,
    Listas, fóruns, eventos! – PGBR Novembro
    Fuzzy = Inteligência Artificial
  • de 9,9oC é considerado frio, mas se ocorresse uma variação de 0,3oC e a temperatura passasse para 10,1oC estaria agradável
    Performance é um objetivo computacional. Eficiência e eficácia também.
    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
  • Limitados com erros de digitação, falha humana, inconsistência dos dados, redundância, ambiguidade
  • Em um sistema de vendas on-line o produto não pode deixar de ser enviado para a cidade correta porque o comprador digitou “Pajuçara” quando o correto seria “Pejuçara”.
    Corretores ortográficos;
    Buscadores modernos – google – você quis dizer;
    Bases dificilmente permanecem intactas na medida que são acrescentadas informações.
  • VANDERGLEIDSON
    Quem precisa soletrar o nome? Operadora de Telefone, Assinatura de uma revista.
  • 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
  • Agora não se te a preocupação humana, somente computacional
  • utilizada para sinalizar erros na transmissão de 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. Para ente
  • , 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
  • Hibridos – Calcular o código, e medir a distancia entre eles
  • 5500 Cidades; 310.000 palavras
  • Limitados com erros de digitação, buscas fonéticas, falha humana
  • Agradecer novamente a oportunidade
  • Palestra Diogo Rubert - PGDAY Campinas 2015

    1. 1. Diogo LuisVon Grafen Rubert O USO DE FUNÇÕES DE SIMILARIDADE E DISTÂNCIA ENTRE STRINGS ADAPTADAS AO PORTUGUÊS BRASILEIRO Agosto de 2015
    2. 2. Roteiro de Apresentação Motivação; Recuperação de informações; Contrib Fuzzystrmatch; Algorimos Fonéticos e de Distância; Soundex; Metaphone; 2
    3. 3. Roteiro de Apresentação Levenshtein; Fonemas; Adaptação para o Português; Testes; Métricas; Conclusões. 3
    4. 4. Motivação Comunidade do PostgreSQL; Índice para Levenshtein; Função Soundex(); Contrib fuzzystrmach. 4
    5. 5. Motivação Qual a relação com Inteligência Artificial? Porque não é uma função nativa? Qual função é a melhor? 5
    6. 6. 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%’); 6
    7. 7. Recuperação de Informações Falha humana:  CAMPINAS – CSMPINAS  JOÃO – JOAO  THIAGO –TIAGO  JOÃO – JOAO 7
    8. 8. 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; 8
    9. 9. Recuperação de Informações Exemplos de aplicabilidades: Segurança; Hospitais; Universidades; ... 9
    10. 10. Recuperação de Informações Como resolver este problema? 10
    11. 11. 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. 11
    12. 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. 13. Algoritmos Fonéticos 13 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.
    14. 14. Algoritmos de Distância 14 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.
    15. 15. Algoritmos Fonéticos e de Distância 15 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.
    16. 16. 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. 16
    17. 17. 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. 17
    18. 18. 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. 18
    19. 19. 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 19
    20. 20. Soundex Nomes Código Soundex Diogo D200 Christopher, Christofer, Cristopher C623 Russell, Rusel R240 Wellington, Wellingtom, Welington W452 20 select * from pessoas p where soundex(p.nome) = soundex(‘nome’);
    21. 21. 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. 21
    22. 22. Problema  E quando a mesma letra tem um som diferente? 22
    23. 23. 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. 23
    24. 24. 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’); 24
    25. 25. 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. 25
    26. 26. Problema E se ocorreram erros de digitação que mudaram a forma que uma palavra é pronunciada? 26
    27. 27. Problema 27  Qual a distância entre as palavras a seguir? Diogo – Diego Diogo –Tiago Diogo – Luís
    28. 28. 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; 28
    29. 29. 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.29
    30. 30. Levenshtein String1 String2 Distância Diogo Diogo 0 Diogo Diego 1 Diogo Tiago 2 Diogo Luis 5 select * from pessoas p where levenshtein(p.nome, ‘nome’) <= 1; 30
    31. 31. 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. 31
    32. 32. Problema As funções fonéticas da contrib fuzzystrmatch não são usuais para idiomas diferentes do inglês. 32
    33. 33. 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. 33
    34. 34. Fonemas 34
    35. 35. 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. 35
    36. 36. Adaptação do Soundex 36 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 -
    37. 37. Adaptação do Metaphone 37 Exige conhecimento de fonologia e língua portuguesa; Metaphone para inglês: 22 regras; Metaphone para português: 49 regras;
    38. 38. 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; 38
    39. 39. Adaptação do Metaphone Licença BSD; Link: http://sourceforge.net/projects/metaphoneptbr/ 39
    40. 40. Testes 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. 40
    41. 41. 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. 41
    42. 42. Métricas Utilizadas  Precisão: deve medir a taxa de acerto da função, isto é, quantos registros foram retornados corretamente em relação a todos os registros retornados;  Revocação: deve medir a taxa de registros relevantes retornados, ou seja, quantos registros foram retornados corretamente em relação ao total de registros que a função deveria de fato retornar;  Medida F Balanceada: é a média harmônica ponderada da precisão e da revocação. Utilizada para medir a relação entre as duas métricas utilizadas; 42
    43. 43. 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. 43
    44. 44. 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. 44
    45. 45. Conclusões  Quanto a performance, comprovou-se 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. 45
    46. 46. 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. 46
    47. 47. Problemas e Oportunidades Comparar a utilização de outras técnicas de detecção de similaridade entre strings: Baseadas em caracteres; Baseadas em token; Baseadas em fonética; Baseadas em trigramas. 47
    48. 48. Dúvidas 48
    49. 49. Diogo LuisVon Grafen Rubert OBRIGADO! diogo.rubert@gmail.com

    ×