Solução analítica de pesquisa e matching de nomes multiculturais
Nome é o meio mais importante de identificar uma pessoa e, de tão comum, nos leva a pensar que é fácil utilizar sistemas computacionais para pesquisa, análise e matching. Eles estão presentes em todas as culturas e sistemas de escrita existentes e apresentam uma série de desafios, como podemos verificar abaixo:
- Não possuem padrões consistentes;
- Possuem variações, abreviações e apelidos;
Exemplos: Sydney / Sidnei / Sydnei, Francisco / Xico / Fco / Chico; - Podem conter títulos (Prof., Dr.), afixos (da, dos) e qualificadores (Filho, Neto);
- Podem conter ruídos, erros de escrita, premeditados ou não;
Exemplos: S^idnei Moriera, Joao da Silva2342.
Tudo isso já se constituiria um grande desafio para ser enfrentado por qualquer sistema computacional. Adicione, agora, os diversos sistemas de escrita em uso ao redor do mundo, como, por exemplo: o latino, cirílico, hangul (coreano), árabe e kana (termo utilizado para hiragana e katakana).
Esses diversos sistemas de escrita nos levam ao desafio da transliteração, que é a passagem de termos, textos e nomes de um sistema para outro. Exemplo: passar um nome no sistema de escrita hiragana para o sistema latino. A passagem especificamente para o sistema latino também é conhecido como romanização.
Transliteração é diferente de tradução! Vamos observar o exemplo a seguir: にっぽん, em hiragana, quando transliterado para o alfabeto latino, vira a palavra Nippon, que, quando traduzido para o português, significa Japão.
Pesquisar e recuperar nomes é uma tarefa desafiadora para qualquer sistema computacional. Outros atributos como telefone, número de documento e endereço possuem algum padrão e, portanto, não oferecem um desafio tão grande.
Nome é um atributo que exerce um papel importante em diversos casos de uso. Dentre eles, podemos enumerar os seguintes:
- Verificação de nomes em Watch Lists para atendimento à requisitos regulatórios, combate a lavagem de dinheiro e segurança pública;
- Recuperação de informações para análise de organismos de inteligência;
- Recuperação de registros usando informação de nome, por exemplo: sistemas de reserva de passagem aérea, registros médicos e beneficiários de projetos sociais;
- Operações de qualidade de dados para tratamento de inconsistência de nomes.
Então vamos entender, através de uma visão geral, como trabalham algumas das tecnologias para pesquisa de nomes, que vão desde sistemas de matching exato a sistemas analíticos de nomes.
Atualmente, qualquer pessoa, com um computador em mãos, tem fácil acesso a sistemas de matching exato (tais como Google ou Yahoo, ou aqueles presentes em planilhas e processadores de texto). Esse tipo de pesquisa geralmente é muito rápida e sempre certeira. Você obtém exatamente o que está procurando se (1) você sabe precisamente o que está procurando, e (2) se exatamente o que está sendo procurado encontra-se na fonte pesquisada. Esta característica expõe uma desvantagem desse tipo de tecnologia de pesquisa. Então, por exemplo: se o nome a ser procurado é WALTER, e WALTER está presente na lista de dados, o registro será encontrado. Porém, se a fonte de dados possuir VALTER, em vez de WALTER, o registro não será encontrado.
Dicionários de nomes, ou listas lookup, podem ajudar a atenuar algumas das deficiências dos sistemas de matching exato. Para resolver o problema acima, basta associar WALTER a VALTER em um dicionário de nomes. Listas lookup são particularmente úteis para capturar informações não previsíveis, tais como apelidos: BETO para ROBERTO ou SASHA para ALEXANDER (em russo).
Apesar de sua utilidade, dicionários de nomes não cobrem as deficiências dos sistemas de matching exato. Se os nomes não forem exatos e não estiverem na lista lookup não serão recuperados ou encontrados.
Outro tipo de tecnologia de pesquisa de nomes diz respeito aos sistemas computacionais baseados em chave, tais como Soundex e NYSIS. Esses sistemas são ineficientes e pouco precisos, produzindo uma grande quantidade de falso positivos e falso negativos. Mesmo assim alguns deles estão presentes em diversos softwares comerciais. Diversos sistemas gerenciadores de banco de dados utilizam ou disponibilizam recursos baseados em Soundex.
O Soundex é provavelmente o sistema baseado em chaves mais comum. Ele foi desenvolvido para analisar dados do senso americano e recebeu a primeira patente em 1918. Como suas patentes encontram-se expiradas, qualquer um pode implementá-lo gratuitamente.
Esses sistemas associam códigos aos nomes e são usados para agrupar nomes similares. Procurar por um nome com um código particular resulta em trazer todos os nomes com o mesmo código.
A tabela Soundex e alguns exemplos de nomes com seus códigos correspondentes são apresentados abaixo:
|
|
O código Soundex possui 4 caracteres. Basicamente, ele é formado pela primeira letra do nome mais o código dos três próximos dígitos que representam as três consoantes restantes do nome. As vogais e as consoantes W, Y e H são ignoradas, a menos que sejam a primeira letra do nome.
Se houver menos que três letras significativas, o código Soundex é preenchido com zeros, como ilustrado no caso JONES/JAMES.
No exemplo acima, ANDERSON começa com A e as próximas três consoantes são N,D e R. Esta combinação produz o código A536. Note que S e N de ANDERSON são ignorados. Letras com sons similares normalmente recebem o mesmo código, como no caso de T/D e M/N.
Quando duas letras significativas estão juntas, somente uma prevalece para a montagem do código, pois não é permitido que o mesmo número apareça em sequência, como em SHMIDT e SCHMITZ. No primeiro, D e T recebem o número 3, portanto somente o D é mantido como letra significativa; no segundo, S e C recebem o número 2, mantendo-se somente o S como significativa para geração do código Soundex.
A grande desvantagem de Soundex é que nomes muito diferentes podem receber o mesmo código, como nos exemplos acima JONES / JAMES, SMITH / SHANDEY e SANTIAGO / SCHMITZ, caracterizando falso positivo. Segundo o artigo "An Assessment of Name Matching Algorithms" de A.J.Lait e B.Randell de 1996, em média Soundex retorna 63% de falso positivo, que são os matches indesejados e "perde" 30% dos matches desejados, que é o falso negativo.
Além disso, nomes que são variantes um do outro, mas que não possuem o mesmo código Soundex, jamais serão encontrados. Por exemplo, XIANG e HSIANG são variantes do mesmo nome Chinês, porém possuem código Soundex diferentes entre si. E, finalmente, o par GOMEZ / BOMEZ poderia não ser encontrado por um sistema baseado em chave, já que esses sistemas não sabem lidar com erros tipográficos.
O terceiro tipo de tecnologia abordado neste artigo é conhecido como sistema analítico de nomes, onde o IBM Global Name Recognition está inserido. Em um sistema analítico, o nome pesquisado é comparado a cada nome na lista de dados, e uma nota de similaridade entre eles é calculada. Aqueles que atingem um determinado grau de similaridade, definido pelo usuário, são retornados como resultado da consulta. A especificação deste nível de similaridade ou nota de corte, ocorre após a execução de um processo iterativo, onde os usuários, submetem pesquisas, avaliam o resultado, fazem seu julgamento e ajustam o sistema para que obtenham o que consideram um bom matching.
A figura abaixo ilustra, hipoteticamente, o grau de similaridade existente entre SMITH e os demais nomes, utilizando uma técnica conhecida como fuzzy matching.
Figura 1.
"Fuzzy Matches" em um Sistema Analítico de Pesquisa de Nomes
O IBM InfoSphere Global Name Recognition (GNR) é um sistema analítico de pesquisa e matching de nomes multiculturais de pessoas e organizações. Ele possui conhecimento linguístico e é apoiado por uma base de conhecimento composta por quase 1 bilhão de nomes de todo o mundo, das mais diferentes culturas, presentes em mais de 200 países.
Com sua base de conhecimento o GNR é capaz de identificar variações de nome, frequência com que determinado nome aparece em cada cultura, probabilidade de ser masculino ou feminino, efetuar transliteração e normalização.
Além disso, ele interpreta e categoriza cada elemento do nome em título, nome, sobrenome e qualificador, possibilitando separar seus elementos mais significativos dos menos significativos, calculando a nota de similaridade com maior eficiência, conforme ilustra a figura abaixo.
Figura 2.
Interface GNR para demostração das funcionalidades de análise e matching de nomes
Vizualização maior da figura 2.
A figura acima ilustra que o nome pesquisado (1) é encontrado na lista de dados (4) com o nível de similaridade de 74 % (3).
Outra informação importante é que o nome (1) é analisado e categorizado pelo GNR (2).
Nesta análise (2), GNR identifica, no nome pesquisado, a presença de um título (DR) e um qualificador (JR). Como esses elementos não são considerados nome ou sobrenome, são configurados com pouca significância no momento da comparação de nomes.
Ainda na análise (2) percebemos que o GNR categoriza automaticamente elementos de nome e sobrenome.
A indentificação e categorização completa dos nomes de pessoas e empresas efetuada pelo GNR é ilustrado nas figuras abaixo:
Figura 3.
Categorização dos elementos de nome de indivíduos
Figura 4.
Categorização dos elementos de nome de empresas
Esses elementos ou tokens possuem nível de importância distintos, e apesar da configuração padrão GNR já vir otimizada para matching de nomes em diferentes culturas, ele permite ajuste fino em seus parâmetros, dando condições ao cliente definir seu melhor nível de matching.
Cada uma das tecnologias de pesquisa de nomes abordadas neste artigo possui áreas de maior ou menor afinidade, e escolher qual delas utilizar depende das requisitos específicos de cada negócio, enquanto há situações onde a precisão em encontrar nomes é crucial, por questões de segurança ou financeira, há outras onde há algum nível de tolerância para falso positivos e negativos.
Sendo assim, não cabe dizer que uma tecnologia é melhor ou pior que outra, e sim, que tecnologia é mais adequada para atender a uma necessidade específica.
Glossário de Termos
Falso positivo: Esse é um termo utilizado em diversas situações, porém no contexto deste artigo, significa que a pesquisa encontrou e/ou recuperou registros indesejados, que não batiam com o argumento pesquisado.
Falso negativo: No contexto deste artigo, esse termo indica que a pesquisa não encontrou e/ou retornou os registros devidos, apesar desses registros estarem presentes na fonte de dados e baterem com o argumento de pesquisa.
Watch List: Nome genérico e muito utilizado para referenciar uma lista com nomes ou registros de interesse. Essas listas podem ser públicas ou privadas, gratuitas ou não. Exemplo: lista da Interpol, OFAC, WorldCheck.
Fuzzy matching: Enquanto no matching exato só o nome ou a setença exata são retornados, no fuzzy são retornados os registros que possuem um nível mínimo de similaridade, que pode ser configurada na aplicação.
Bibliografia:
http://pt.wikipedia.org/wiki/Sistema_de_escrita
http://pt.wikipedia.org/wiki/Kana_%28escrita%29
http://en.wikipedia.org/wiki/Soundex
http://resources.rootsweb.ancestry.com/cgi-bin/soundexconverter (Conversão Soundex)
http://www.censusmicrofilm.com/sndxrule.htm (Regras para conversão Soundex)
http://en.wikipedia.org/wiki/No_Fly_List
http://whatis.techtarget.com/definition/0,,sid9_gci1075268,00.html
http://www.techopedia.com/definition/24183/fuzzy-matching

Possui mais de 20 anos de experiência em TI, tendo desenvolvido skills em análise e desenvolvimento de sistemas de gerenciamento empresarial e aplicações orientadas a objeto, modelagem de dados e processos, SOA e Master Data Management. Atualmente é especialista técnico para as soluções IBM InfoSphere: Global Name Recognition, Master Data management, Identity Insight e Traceability Server.