SlideShare uma empresa Scribd logo
1 de 57
Diogo LuisVon Grafen Rubert
O uso de funções de similaridade e distância
entre strings adaptadas ao português brasileiro
Novembro de 2015
Roteiro
Motivação;
Recuperação de informações;
Contrib Fuzzystrmatch;
Algorimos Fonéticos e de Distância;
Soundex;
Metaphone;
2
Roteiro
Levenshtein;
Fonemas;
Adaptação para o Português;
Testes;
Métricas;
Conclusões.
3
Google
Você quis dizer PostgreSQL?
4
Motivação
Comunidade do PostgreSQL;
Índice para Levenshtein;
Função Soundex();
Contrib fuzzystrmach.
5
Motivação
Qual a relação com Inteligência Artificial?
Porque não é uma função nativa?
Qual função é a melhor?
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%’);
7
Recuperação de Informações
Falha humana:
 PORTO ALEGRE – PSRTO ALEGRE
 JOÃO – JOAO
 THIAGO –TIAGO
 LUIZ – LUIS
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;
9
Recuperação de Informações
Exemplos de aplicabilidades:
Segurança;
Hospitais;
Universidades;
...
10
Recuperação de Informações
Como resolver este problema?
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.
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
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.
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.
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.
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
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. 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.
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
20
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’);
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
Problema
 E quando a mesma letra tem um som diferente?
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.
24
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
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
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
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
Problema
E se ocorreram erros de digitação que
mudaram a forma que uma palavra é
pronunciada?
29
Problema
30
 Qual a distância entre as palavras a seguir?
Diogo – Diego
Diogo –Tiago
Diogo – Luís
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
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
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;
33
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
Problema
As funções fonéticas da contrib
fuzzystrmatch não são usuais para
idiomas diferentes do inglês.
35
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
Fonemas
37
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
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 -
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;
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
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
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
Adaptação do Metaphone
Licença BSD;
Link:
http://sourceforge.net/projects/metaphoneptbr/
44
Testes
Tudo pronto! Hora de testar.
45
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
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
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
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
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
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
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
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
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
Problemas e Oportunidades
A adaptação destas funções para
ambientes multi-idioma;
Stein;
Przyczynski;
Kaufmann;
Petković;
Müeller;
… 55
Dúvidas
56
Diogo LuisVon Grafen Rubert
diogo.rubert@gmail.com
OBRIGADO!

Mais conteúdo relacionado

Mais procurados

AWS Public Data Sets: How to Stage Petabytes of Data for Analysis in AWS (WPS...
AWS Public Data Sets: How to Stage Petabytes of Data for Analysis in AWS (WPS...AWS Public Data Sets: How to Stage Petabytes of Data for Analysis in AWS (WPS...
AWS Public Data Sets: How to Stage Petabytes of Data for Analysis in AWS (WPS...Amazon Web Services
 
elasticsearchソースコードを読みはじめてみた
elasticsearchソースコードを読みはじめてみたelasticsearchソースコードを読みはじめてみた
elasticsearchソースコードを読みはじめてみたfurandon_pig
 
TPC-H Column Store and MPP systems
TPC-H Column Store and MPP systemsTPC-H Column Store and MPP systems
TPC-H Column Store and MPP systemsMostafa Mokhtar
 
Beyond EXPLAIN: Query Optimization From Theory To Code
Beyond EXPLAIN: Query Optimization From Theory To CodeBeyond EXPLAIN: Query Optimization From Theory To Code
Beyond EXPLAIN: Query Optimization From Theory To CodeYuto Hayamizu
 
SQL on everything, in memory
SQL on everything, in memorySQL on everything, in memory
SQL on everything, in memoryJulian Hyde
 
Apache Spark's Built-in File Sources in Depth
Apache Spark's Built-in File Sources in DepthApache Spark's Built-in File Sources in Depth
Apache Spark's Built-in File Sources in DepthDatabricks
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender SystemsJustin Basilico
 
Spotify: Horizontal Scalability for Great Success
Spotify: Horizontal Scalability for Great SuccessSpotify: Horizontal Scalability for Great Success
Spotify: Horizontal Scalability for Great SuccessNick Barkas
 
Flutter + tensor flow lite = awesome sauce
Flutter + tensor flow lite = awesome sauceFlutter + tensor flow lite = awesome sauce
Flutter + tensor flow lite = awesome sauceAmit Sharma
 
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先Kazuho Oku
 
하이퍼커넥트 데이터 팀이 데이터 증가에 대처해온 기록
하이퍼커넥트 데이터 팀이 데이터 증가에 대처해온 기록하이퍼커넥트 데이터 팀이 데이터 증가에 대처해온 기록
하이퍼커넥트 데이터 팀이 데이터 증가에 대처해온 기록Jaehyeuk Oh
 
Escalabilidade e Resiliência de Microservices em Python
Escalabilidade e Resiliência de Microservices em PythonEscalabilidade e Resiliência de Microservices em Python
Escalabilidade e Resiliência de Microservices em PythonGuilherme Vierno
 
Backdoors with the MS Office file encryption master key and a proposal for a ...
Backdoors with the MS Office file encryption master key and a proposal for a ...Backdoors with the MS Office file encryption master key and a proposal for a ...
Backdoors with the MS Office file encryption master key and a proposal for a ...MITSUNARI Shigeo
 
Build a Recommendation Engine using Amazon Machine Learning in Real-time
Build a Recommendation Engine using Amazon Machine Learning in Real-timeBuild a Recommendation Engine using Amazon Machine Learning in Real-time
Build a Recommendation Engine using Amazon Machine Learning in Real-timeAmazon Web Services
 

Mais procurados (17)

AWS Public Data Sets: How to Stage Petabytes of Data for Analysis in AWS (WPS...
AWS Public Data Sets: How to Stage Petabytes of Data for Analysis in AWS (WPS...AWS Public Data Sets: How to Stage Petabytes of Data for Analysis in AWS (WPS...
AWS Public Data Sets: How to Stage Petabytes of Data for Analysis in AWS (WPS...
 
TensorFlow
TensorFlowTensorFlow
TensorFlow
 
elasticsearchソースコードを読みはじめてみた
elasticsearchソースコードを読みはじめてみたelasticsearchソースコードを読みはじめてみた
elasticsearchソースコードを読みはじめてみた
 
TPC-H Column Store and MPP systems
TPC-H Column Store and MPP systemsTPC-H Column Store and MPP systems
TPC-H Column Store and MPP systems
 
Beyond EXPLAIN: Query Optimization From Theory To Code
Beyond EXPLAIN: Query Optimization From Theory To CodeBeyond EXPLAIN: Query Optimization From Theory To Code
Beyond EXPLAIN: Query Optimization From Theory To Code
 
SQL on everything, in memory
SQL on everything, in memorySQL on everything, in memory
SQL on everything, in memory
 
ログについて改めて考えてみた
ログについて改めて考えてみたログについて改めて考えてみた
ログについて改めて考えてみた
 
Apache Spark's Built-in File Sources in Depth
Apache Spark's Built-in File Sources in DepthApache Spark's Built-in File Sources in Depth
Apache Spark's Built-in File Sources in Depth
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Spotify: Horizontal Scalability for Great Success
Spotify: Horizontal Scalability for Great SuccessSpotify: Horizontal Scalability for Great Success
Spotify: Horizontal Scalability for Great Success
 
Flutter + tensor flow lite = awesome sauce
Flutter + tensor flow lite = awesome sauceFlutter + tensor flow lite = awesome sauce
Flutter + tensor flow lite = awesome sauce
 
DNS, DNSSECの仕組み
DNS, DNSSECの仕組みDNS, DNSSECの仕組み
DNS, DNSSECの仕組み
 
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
 
하이퍼커넥트 데이터 팀이 데이터 증가에 대처해온 기록
하이퍼커넥트 데이터 팀이 데이터 증가에 대처해온 기록하이퍼커넥트 데이터 팀이 데이터 증가에 대처해온 기록
하이퍼커넥트 데이터 팀이 데이터 증가에 대처해온 기록
 
Escalabilidade e Resiliência de Microservices em Python
Escalabilidade e Resiliência de Microservices em PythonEscalabilidade e Resiliência de Microservices em Python
Escalabilidade e Resiliência de Microservices em Python
 
Backdoors with the MS Office file encryption master key and a proposal for a ...
Backdoors with the MS Office file encryption master key and a proposal for a ...Backdoors with the MS Office file encryption master key and a proposal for a ...
Backdoors with the MS Office file encryption master key and a proposal for a ...
 
Build a Recommendation Engine using Amazon Machine Learning in Real-time
Build a Recommendation Engine using Amazon Machine Learning in Real-timeBuild a Recommendation Engine using Amazon Machine Learning in Real-time
Build a Recommendation Engine using Amazon Machine Learning in Real-time
 

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

Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Diogo L. V. G. Rubert
 
Concebendo e construindo um corpus para a questão do acento no Português Br...
Concebendo e construindo um corpus para a questão do acento no Português Br...Concebendo e construindo um corpus para a questão do acento no Português Br...
Concebendo e construindo um corpus para a questão do acento no Português Br...Bruno Guide
 
Nova gramática do português contemporâneo .pdf
Nova gramática do português contemporâneo .pdfNova gramática do português contemporâneo .pdf
Nova gramática do português contemporâneo .pdfEdna Bezerra
 
Teste informal de Dislexia.pdf
Teste informal de Dislexia.pdfTeste informal de Dislexia.pdf
Teste informal de Dislexia.pdfsilvana938032
 
Lingua portuguesa teoria e testes
Lingua portuguesa teoria e testesLingua portuguesa teoria e testes
Lingua portuguesa teoria e testesDaniele Costa
 
Processamento Automático da Língua Portuguesa: DevInSampa 2011
Processamento Automático da Língua Portuguesa: DevInSampa 2011Processamento Automático da Língua Portuguesa: DevInSampa 2011
Processamento Automático da Língua Portuguesa: DevInSampa 2011William Colen
 
Gramaticanoensinobasico
GramaticanoensinobasicoGramaticanoensinobasico
GramaticanoensinobasicoMaria Chambel
 
Gramaticanoensinobasico
GramaticanoensinobasicoGramaticanoensinobasico
GramaticanoensinobasicoDaniela Santos
 
A gramática com o novo acordo ortográfico - Porto Editora
A gramática com o novo acordo ortográfico - Porto EditoraA gramática com o novo acordo ortográfico - Porto Editora
A gramática com o novo acordo ortográfico - Porto EditoraGijasilvelitz 2
 
www.videoaulagratisapoio.com.br - Português - Pontuação
www.videoaulagratisapoio.com.br - Português -  Pontuaçãowww.videoaulagratisapoio.com.br - Português -  Pontuação
www.videoaulagratisapoio.com.br - Português - PontuaçãoVideo Aulas Apoio
 
gramaticanoensinobasico.pdf
gramaticanoensinobasico.pdfgramaticanoensinobasico.pdf
gramaticanoensinobasico.pdfIsildaMontinho1
 

Semelhante a PGBR2015 - O uso de funções de similaridade e distância entre strings adaptadas ao português brasileiro (17)

Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015
 
Grego
GregoGrego
Grego
 
Apostila
ApostilaApostila
Apostila
 
Concebendo e construindo um corpus para a questão do acento no Português Br...
Concebendo e construindo um corpus para a questão do acento no Português Br...Concebendo e construindo um corpus para a questão do acento no Português Br...
Concebendo e construindo um corpus para a questão do acento no Português Br...
 
Nova gramática do português contemporâneo .pdf
Nova gramática do português contemporâneo .pdfNova gramática do português contemporâneo .pdf
Nova gramática do português contemporâneo .pdf
 
Teste informal de Dislexia.pdf
Teste informal de Dislexia.pdfTeste informal de Dislexia.pdf
Teste informal de Dislexia.pdf
 
Programação lógica
Programação lógicaProgramação lógica
Programação lógica
 
Lingua portuguesa teoria e testes
Lingua portuguesa teoria e testesLingua portuguesa teoria e testes
Lingua portuguesa teoria e testes
 
Processamento Automático da Língua Portuguesa: DevInSampa 2011
Processamento Automático da Língua Portuguesa: DevInSampa 2011Processamento Automático da Língua Portuguesa: DevInSampa 2011
Processamento Automático da Língua Portuguesa: DevInSampa 2011
 
Gramaticanoensinobasico
GramaticanoensinobasicoGramaticanoensinobasico
Gramaticanoensinobasico
 
Gramaticanoensinobasico
GramaticanoensinobasicoGramaticanoensinobasico
Gramaticanoensinobasico
 
A gramática com o novo acordo ortográfico - Porto Editora
A gramática com o novo acordo ortográfico - Porto EditoraA gramática com o novo acordo ortográfico - Porto Editora
A gramática com o novo acordo ortográfico - Porto Editora
 
www.videoaulagratisapoio.com.br - Português - Pontuação
www.videoaulagratisapoio.com.br - Português -  Pontuaçãowww.videoaulagratisapoio.com.br - Português -  Pontuação
www.videoaulagratisapoio.com.br - Português - Pontuação
 
gramaticanoensinobasico.pdf
gramaticanoensinobasico.pdfgramaticanoensinobasico.pdf
gramaticanoensinobasico.pdf
 
gramatica.pdf
gramatica.pdfgramatica.pdf
gramatica.pdf
 
Gramatica no ensino_basico
Gramatica no ensino_basicoGramatica no ensino_basico
Gramatica no ensino_basico
 
Biblical a02 student_pt
Biblical a02 student_ptBiblical a02 student_pt
Biblical a02 student_pt
 

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

  • 1. Diogo LuisVon 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; 2
  • 3. Roteiro Levenshtein; Fonemas; Adaptação para o Português; Testes; Métricas; Conclusões. 3
  • 4. Google Você quis dizer PostgreSQL? 4
  • 5. Motivação Comunidade do PostgreSQL; Índice para Levenshtein; Função Soundex(); Contrib fuzzystrmach. 5
  • 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
  • 8. Recuperação de Informações Falha humana:  PORTO ALEGRE – PSRTO ALEGRE  JOÃO – JOAO  THIAGO –TIAGO  LUIZ – LUIS 8
  • 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
  • 10. Recuperação de Informações Exemplos de aplicabilidades: Segurança; Hospitais; Universidades; ... 10
  • 11. Recuperação de Informações Como resolver este problema? 11
  • 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
  • 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. 18
  • 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
  • 23. Problema  E quando a mesma letra tem um som diferente? 23
  • 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
  • 33. 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; 33
  • 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
  • 35. Problema As funções fonéticas da contrib fuzzystrmatch não são usuais para idiomas diferentes do inglês. 35
  • 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
  • 44. Adaptação do Metaphone Licença BSD; Link: http://sourceforge.net/projects/metaphoneptbr/ 44
  • 45. Testes Tudo pronto! Hora de testar. 45
  • 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
  • 57. Diogo LuisVon Grafen Rubert diogo.rubert@gmail.com OBRIGADO!

Notas do Editor

  1. RS - Oportunidade Organização Meio Acadêmico.
  2. Alguém conhece a contrib fuzzystrmatch? Alguém já trabalhou com algoritmos ou funções fonéticas?
  3. Funções para auxiliar o usuário. Nunca para manutenção.
  4. Palestra Fabrízio Robusto e confiável, Gratuito, Documentação, Listas, fóruns, eventos! – PGBR Novembro Fuzzy = Inteligência Artificial
  5. Pessoa Alta e Baixa. Frio e Calor Antes de falar especificamente sobre buscas inteligentes, vamos falar sobre problemas das buscas tradicionais
  6. Limitados com erros de digitação, falha humana, inconsistência dos dados, redundância, ambiguidade
  7. VANDERGLEIDSON Limitados com erros de digitação, falha humana, inconsistência dos dados, redundância, ambiguidade.
  8. VANDERGLEIDSON Comprador digitou “Pajuçara” quando o correto seria “Pejuçara”. Corretores ortográficos;
  9. Quem precisa soletrar o nome? Operadora de Telefone, Assinatura de uma revista. Bases dificilmente permanecem intactas na medida que são acrescentadas informações.
  10. 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)
  11. Em outras palavras, permite fazer buscas fonéticas, por semelhança
  12. Difference retorna a diferença a partir do cálculo soundex. Dmetaphone é uma evolução do Metaphone
  13. O que são algoritmos fonéticos? Encontramos em linguagens como PHP e PERL Em outros SGBDs.
  14. Limitados com erros de digitação, buscas fonéticas, falha humana
  15. “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.
  16. Senso americano. De 1928 a 1920
  17. Acostumado a trabalhar com números
  18. Excluir letras adjacentes. Excluir B se estiver depois da M... C é substituído por X se seguido por IA.
  19. Agora não se te a preocupação humana, somente computacional
  20. utilizada para sinalizar erros na transmissão em telecomunicações Funciona somente em palavras binárias de comprimento fixo
  21. M x N ao quadrado comparações (edit-distance)
  22. Isso porque cada língua tem sons e pronúncias diferentes. Vamos entender?
  23. Palavra que vem do grego, onde “fono” significa “som” e “logia” significa estudo;
  24. , palavra que vem do grego, onde “fono” significa “som” e “logia” significa estudo;
  25. Dígrafos – Encontros Consonantais W e Y – Como vogais U e I
  26. 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
  27. Desktop, Servidores com diferentes sistemas operacionais.
  28. 5500 Cidades; 310.000 palavras;
  29. Hibridos – Calcular o código, e medir a distancia entre eles
  30. Ou seja, metaphone não traz bobagem.
  31. Lembrando... Apenas para consultas!! Nunca para manutenção.