Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Palestra Diogo Rubert - PGDAY Campinas 2015

874 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

×