Eu tenho um grande conjunto de dados (2 milhões de entradas) de pessoas, mas muitas pessoas têm várias entradas no banco de dados com informações de identificação ligeiramente (ou significativamente) diferentes. Por exemplo, eu posso ter J. Doe e John Doe, ou eu posso ter John Doe com um endereço de email de acompanhamento e John Doe sem um endereço de email de acompanhamento.
Eu estive analisando diferentes algoritmos de cluster, mas nada parece adequado ao que estou fazendo, que é agregar as entradas com base em regras como as seguintes:
- adivinhe o nome e o sobrenome com base em se um dos nomes está escrito em todas as maiúsculas
- agregue "J. Doe" e "J. Doe" se os endereços de email corresponderem
- agregue "J. Doe" em "John Doe" se nenhuma outra pessoa tiver o primeiro nome começando com "J" e o sobrenome "Doe"
Com um conjunto de dados menor, isso seria uma tarefa relativamente simples, apenas com algumas regras simples, mas com o número de entradas que tenho, as tarefas de agregação podem ficar muito lentas e a lógica fica bastante complicada. Minha solução atual (baseada no uso da função de pesquisa de texto completo no meu banco de dados para encontrar entradas semelhantes, adicionando hashes com base nesses resultados e agregando com base em uma mistura de hashes e tipos de ambiguidade) funciona, mas sempre que tento executá-lo ou atualizá-lo, apenas grita que é o tipo de problema que alguém já resolveu. Mas não consegui encontrar uma solução.
Existem algoritmos que farão o que eu quero com base em regras como esta? Ou pacotes ou software específicos que podem ser úteis? Ou estou abordando esse problema completamente errado?
Obrigado!
(Observe, porém, que estou ciente de que existem muitas maneiras diferentes de agregar identidades incorretamente (por exemplo, J. Doe pode significar John Doe ou James Doe); portanto, não preciso de avisos contra a tentativa de agregar coisas.)
fonte
dictionary
será seu melhor amigo para ter uma chave e um valor correspondente no seu caso.Respostas:
Ainda não resolvi com êxito meu problema de ligação de registros, mas queria compartilhar algumas das coisas que encontrei no processo, caso sejam úteis para outras pessoas. Este é um trabalho em andamento baseado aqui no GitHub.
Gravar recursos de ligação
(também conhecido como desduplicação, correspondência de dados, resolução da entidade)
fundo
Documentos
Palestras
Livros
Software grátis
(última atualização, estrelas do github em novembro de 2017)
Pitão
Java
R
De outros
Software e soluções comerciais
Para SAS
Limpeza de Dados
Analisadores de nome
PitãoPapéis
Organizações
Diversos
fonte