PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português...

57
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

Transcript of PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português...

Page 1: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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

Page 2: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

2

Roteiro Motivação; Recuperação de informações; Contrib Fuzzystrmatch; Algorimos Fonéticos e de Distância; Soundex; Metaphone;

Page 3: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

3

Roteiro

Levenshtein; Fonemas; Adaptação para o Português; Testes; Métricas; Conclusões.

Page 4: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

4

Google

Você quis dizer PostgreSQL?

Page 5: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

5

Motivação

Comunidade do PostgreSQL; Índice para Levenshtein; Função Soundex(); Contrib fuzzystrmach.

Page 6: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

6

Motivação

Qual a relação com Inteligência Artificial?

Porque não é uma função nativa? Qual função é a melhor?

Page 7: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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%’);

Page 8: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

8

Recuperação de Informações

Falha humana:

PORTO ALEGRE – PSRTO ALEGRE JOÃO – JOAO THIAGO – TIAGO LUIZ – LUIS

Page 9: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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;

Page 10: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

10

Recuperação de Informações

Exemplos de aplicabilidades: Segurança; Hospitais; Universidades; ...

Page 11: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

11

Recuperação de Informações

Como resolver este problema?

Page 12: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 13: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 14: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 15: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 16: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 17: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 18: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 19: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 20: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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

Page 21: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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’);

Page 22: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 23: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

23

Problema E quando a mesma letra tem um som

diferente?

Page 24: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 25: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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’.

...

Page 26: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 27: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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’);

Page 28: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 29: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

29

Problema

E se ocorreram erros de digitação que mudaram a forma que uma

palavra é pronunciada?

Page 30: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

30

Problema Qual a distância entre as palavras a

seguir?

Diogo – Diego Diogo – Tiago Diogo – Luís

Page 31: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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;

Page 32: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 33: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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;

Page 34: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 35: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

35

Problema

As funções fonéticas da contrib fuzzystrmatch não são usuais

para idiomas diferentes do inglês.

Page 36: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 37: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

37

Fonemas

Page 38: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 39: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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 -

Page 40: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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;

Page 41: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 42: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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)

... ...

Page 43: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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;

Page 45: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

45

Testes

Tudo pronto! Hora de testar.

Page 46: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 47: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 48: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 49: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 50: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 51: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 52: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 53: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 54: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

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.

Page 55: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

55

Problemas e Oportunidades A adaptação destas funções

para ambientes multi-idioma; Stein; Przyczynski; Kaufmann; Petković; Müeller; …

Page 56: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

56

Dúvidas

Page 57: PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro

Diogo Luis Von Grafen [email protected]

OBRIGADO!