Pergunta

Eu tenho várias fontes de tabelas com dados pessoais, como este:

SOURCE 1
ID, FIRST_NAME, LAST_NAME, FIELD1, ...
1, jhon, gates ...

SOURCE 2
ID, FIRST_NAME, LAST_NAME, ANOTHER_FIELD1, ...
1, jon, gate ...

SOURCE 3
ID, FIRST_NAME, LAST_NAME, ANOTHER_FIELD1, ...
2, jhon, ballmer ...

Assim, assumindo que registros com ID 1, a partir de fontes 1 e 2, são a mesma pessoa, o meu problema é como determinar se um registro em cada fonte, representa a mesma pessoa . Além disso, com certeza nem todos os registros existe em todas as fontes. Todos os nomes, estão escritos em espanhol, principalmente.

Neste caso, as necessidades correspondência exata a ser relaxado porque assumimos as fontes de dados não foi rigurously verificados contra o bureau oficial de identificação do país. Também precisamos assumir erros são comuns , porque a natureza dos processos para coletar os dados. O que é mais, a quantidade de registros é de cerca de 2 ou 3 milhões de pessoas em todas as fontes ...

A nossa equipa tinha pensado em algo assim: primeiro, forçar correspondência exata em áreas seleccionadas, como o número de identificação e nomes de saber o quão duro o problema pode ser. Em segundo lugar, relaxar os critérios de correspondência, e contar quanto mais registros podem ser combinados, mas é aqui que surge o problema:? como fazer para relaxar os critérios de correspondência sem gerar muito barulho nem restringir demasiado

Que ferramenta pode ser mais eficaz para lidar com isso ?, por exemplo, que você sabe sobre alguma extensão especifico em algum mecanismo de banco de dados para apoiar esta correspondência? Você sabe sobre algoritmos inteligentes como soundex para lidar com essa correspondência aproximada, mas para textos em espanhol?

Qualquer ajuda seria apreciada!

Graças.

Foi útil?

Solução

O cerne do problema é calcular uma ou mais medidas de distância entre cada par de entradas e, em seguida, considerá-los a ser o mesmo quando uma das distâncias é inferior a um determinado limite aceitável. A chave é a configuração de análise e, em seguida, variar a distância aceitável até chegar o que você considera ser o melhor trade-off entre o falso-positivos e falso-negativos.

Uma medida de distância pode ser fonética. Outro que você pode considerar é o Levenshtein ou editar distância entre os entires, que tentam medir erros de digitação .

Se você tem uma idéia razoável de quantas pessoas você deve ter, em seguida, seu objetivo é encontrar o ponto ideal onde você está recebendo sobre o número certo de pessoas. Faça a sua harmonização demasiado confuso e você terá muito poucos. Torná-lo para restritiva e você vai ter demasiados.

Se você sabe mais ou menos quantas entradas uma pessoa deve ter, então você pode usar isso como a métrica para ver quando você está chegando perto. Ou você pode dividir o número de registros no número médio de registros para cada pessoa e obter um número bruto de pessoas que você está atirando para.

Se você não tem nenhum números para uso, então você fica escolhendo grupos de registros de sua análise e verificar manualmente se eles se parecem a mesma pessoa ou não. Por isso é suposição e verificação.

Espero que ajuda.

Outras dicas

Isso soa como problema de integração de dados a Cliente . Pesquisar em que prazo e que você pode encontrar mais algumas informações. Além disso, têm um puxão ao redor dentro O Data Warehousing Institude , e você pode encontrar algumas respostas lá também.

Editar: Além disso, aqui de um artigo que lhe possam interessar em correspondência fonética espanhola.

Eu tive que fazer algo semelhante antes e que eu fiz foi usar um dupla metaphone fonética pesquisa sobre os nomes.

Antes de eu comparei os nomes, porém, eu tentava normalizar afastado quaisquer diferenças nome / apelido, observando-se o nome de uma tabela nome nick que eu criei. (I povoada a tabela com os dados do censo I encontrados on-line) Então, as pessoas chamado Bob tornou-se Robert, Alex tornou-se Alexander, Bill se tornou William, etc.

Editar :. Duplo Metaphone foi projetado especificamente para ser melhor do que Soundex e trabalhar em outros idiomas além do Inglês

SSIS, tente usar a transformação Pesquisa Difusa

Só para acrescentar alguns detalhes para resolver este problema, eu encontrei este módulos para o PostgreSQL 8.3

Você pode tentar canonicalise os nomes, comparando-os com um dicionário. Isso permitiria que você a detectar alguns erros de digitação comuns e corrigi-los.

Parece-me que você tem um href="http://www.answers.com/topic/record-linkage" rel="nofollow noreferrer"> registro de problema ligação

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top