Pergunta

Aqui está um problema interessante.

Eu tenho um banco de dados Oracle com informações de nome e endereço que precisam ser mantidas atualizadas.

Recebemos feeds de dados de diversas fontes governamentais diferentes e precisamos descobrir as correspondências e se devemos ou não atualizar o banco de dados com os dados, ou se um novo registro precisa ser criado.

Não existe nenhum tipo de identificador exclusivo que possa ser usado para unir registros, e a qualidade dos dados nem sempre é tão boa - sempre haverá erros de digitação, pessoas usando nomes diferentes (ou seja,Joe vs.José), etc.

Eu estaria interessado em ouvir de alguém que já trabalhou nesse tipo de problema sobre como eles o resolveram, ou pelo menos automatizaram partes dele.

Foi útil?

Solução

Cada uma das principais empresas de software ativas neste espaço oferece conjuntos de soluções que lidam com análise de nomes e endereços, padronização de dados, desduplicação ou correspondência de registros, vinculação/mesclagem de registros, sobrevivência e assim por diante.Eles são todos um pouco caros, no entanto.

Por exemplo, a solução da própria Oracle para este problema é o produto "Oracle Data Quality (ODQ) para Oracle Data Integrator (ODI)," que faz parte de sua pilha Fusion Middleware.Como o nome indica, o ODQ requer ODI (ou seja, é um módulo complementar licenciado separadamente e dependente do ODI).

O conjunto de soluções Websphere da IBM (obtido por meio da aquisição da Ascential) inclui Estágio de Qualidade.

A Business Objects, agora uma empresa SAP, tem uma Qualidade de dados produto em seu pacote Enterprise Information Management (EIM).

Outras marcas importantes de qualidade de dados incluem Fluxo de dados (uma empresa SAS) e Software Trillium (uma empresa Harte-Hanks)

O Grupo Gartner lança anualmente um Quadrante Mágico para conjuntos de soluções de qualidade de dados.Os fornecedores com boa classificação nesses Quadrantes Mágicos geralmente disponibilizam o relatório completo on-line para usuários registrados em seu site (Exemplo 1, exemplo 2).

Outras dicas

No front de código aberto, agora existe uma biblioteca python para fazer esse tipo de desduplicação de registro/resolução de entidade: Desduplicar.

Requer habilidades de programação, mas é gratuito e pode ser executado em um laptop, em vez de em um servidor enorme.

Aqui está uma visão geral de como funciona.

Lições aprendidas com o uso do FirstLogic.(Outros produtos deveriam ser semelhantes.) Para fins de contexto, recebíamos arquivos de dezenas de fontes e cada um deles estaria em um formato diferente.Precisávamos saber quem precisava ser adicionado ao nosso banco de dados, quem precisava ser atualizado e quem precisava apenas ser marcado como “na lista”.

  1. Eu esperava que o software analisasse um arquivo inteiro e determinasse que - digamos - se a coluna A tivesse sobrenomes em 98 de 100 linhas, a coluna A deveria ser a coluna de sobrenome.Isso não é verdade;cada registro é processado individualmente.

  2. Se você souber exatamente quais dados estão em qual campo, poderá informar isso ao software e ele cuidará disso.Mas se você nem sempre tem certeza, é melhor fornecer toda a string e deixar o software descobrir.Um exemplo disso é um campo de sobrenome que contém algo como “Smith Jr MD”.Se você declarar que é a coluna do sobrenome, assumirá que o sobrenome é "Smith Jr MD".Mas se você passar "John Smith Jr MD" e deixar o software descobrir, ele identificará corretamente todos os bits.

  3. Algumas coisas que pareciam óbvias não eram.Por exemplo, o FirstLogic pronto para uso não assume que uma vírgula significa "sobrenome, nome".Na verdade, ele tem uma grande lista de sobrenomes e uma grande lista de primeiros nomes, então imagina que pode simplesmente ignorar a vírgula.Sempre tivemos problemas com pessoas como “John, Thomas”.E às vezes ficava confuso porque o que parecia um sobrenome óbvio para nós era na verdade um primeiro nome em espanhol ou algo assim.

  4. É difícil usar o sistema para adicionar dados fictícios.Se você tiver pessoas com nomes como "Conta de teste" ou "TBD", elas não serão processadas - o FirstLogic jogará o registro fora porque não encontrou nenhum dado que reconheceu.

  5. Personalizar o sistema é possível, mas não tão fácil quanto os vendedores fazem parecer.Existem um milhão de opções e arquivos e dicionários personalizados.Você precisará investir tempo para entender como funciona se quiser personalizá-lo.É como um RDBMS ou uma ferramenta ETL.Não é uma caixa preta mágica.

  6. Ele também possui vários recursos de qualidade de dados que ajudam a justificar a compra do software, mas que exigem um esforço dedicado para aprender e aplicar.

  7. As ferramentas não foram realmente projetadas para processar uma lista em um arquivo mestre;eles foram criados para operações de mesclagem e eliminação.É possível (estamos fazendo isso), mas exige que você trate seu banco de dados como uma lista (o que exige que você extraia todos os registros ativos em um arquivo simples).Além disso, quanto mais controle você deseja sobre quais registros vão para onde (ou seja,se o nome corresponder a 80% e os dois primeiros dígitos do CEP forem idênticos, provavelmente será a mesma pessoa, etc.), mais complicado será o seu processo em lote.

  8. Finalmente, percebemos que processar “John Smith” e processar “Annabelle DiGiovanni” são coisas muito diferentes quando você tenta determinar se duas pessoas em endereços diferentes são realmente iguais.Você pode ajustar o software para que nomes incomuns tenham mais peso em uma correspondência do que nomes comuns, mas quem tem tempo?Nosso processo de correspondência é cerca de 80% preciso e ficamos satisfeitos com o processamento manual dos 20% restantes.

Não pense nisso como uma ferramenta para fazer a correspondência automaticamente.Pense nisso como uma ferramenta que permite que seus processadores de dados humanos sejam mais produtivos.Dessa forma, você o configurou de forma que, se atingir 80% de precisão, seja um sucesso retumbante, e não abaixo do esperado.

No meu trabalho atual, temos muitos problemas de integridade de dados.Tentamos "limpar" os dados antes de carregá-los para garantir a qualidade.Atualmente usamos Melissa Data para limpar nomes, endereços e e-mails.Ele faz um bom trabalho padronizando as coisas antes de carregá-lo.Dessa forma, podemos evitar dados duplicados.

Além disso, o SQL Server Integration Services (eu sei que você está usando Oracle) possui um componente que faz correspondência "difusa" em strings, permitindo encontrar uma correspondência próxima em vez de uma correspondência direta um-para-um.É chamado de pesquisa difusa.Basicamente, ele fornece uma pontuação, informando o quão próximas as duas entradas estão da correspondência...Você pode então definir limites para informar o quão próximo deve estar para considerá-lo uma correspondência (ou seja,dentro de 80% ou qualquer outra coisa).

No passado, também usei SOUNDEX para determinar se os nomes eram semelhantes na determinação de duplicatas.Existem muitas implementações de SOUNDEX.

Boa sorte.

O termo para o problema que você deseja resolver é "Vinculação de registros".

Não posso recomendar uma ferramenta específica.Faça uma pesquisa por "software de vinculação de registros" ou "software de purga de mesclagem" e com um pouco de pesquisa você poderá encontrar algo que atenda às suas necessidades.

Consegui encontrar uma solução de código aberto, chamada Fevereiro.Essa ferramenta foi originalmente desenvolvida para o campo da pesquisa biomédica, que explica o nome "Ligação de registro biomédico livremente extensível". Você pode ler mais sobre isso aqui: "Técnicas paralelas de grande escala para vinculação de registros de alto desempenho"

Para uma boa visão geral dos problemas/soluções envolvidos na vinculação de registros, leia sobre "Mesclar/Purgar e Detecção de Duplicados".

Cada grande fornecedor tem sua própria solução.Oracle, IBM, SAS Dataflux, etc e cada um afirma ser o melhor.

Avaliação verificada independente:

Houve um estudo realizado no Curtin University Center for Data Linkage, na Austrália, que simulou a correspondência de 4,4 milhões de registros.Identificou o que os provedores tinham em termos de precisão (número de correspondências encontradas versus disponíveis.Número de correspondências falsas)

  1. DataMatch Enterprise, Maior precisão (>95%), Muito rápido, baixo custo
  2. Estágio de Qualidade IBM , alta precisão (> 90%), muito rápido, alto custo (> US$ 100 mil)
  3. Fluxo de dados SAS, precisão média (>85%), rápido e alto custo (>100K)

Essa foi a melhor avaliação independente que pudemos encontrar, foi muito completa.

Fiz algo assim nas listas de inscrição de membros de uma seguradora.Felizmente, tínhamos SSNs para determinar o membro principal, mas tive que decidir se os dependentes eram novos ou existentes (apenas pelo nome).Tentei um algoritmo soundex como parte de uma solução, mas não pareceu adequado, porque parecia mapear muitos nomes diferentes para a mesma coisa (e muitas famílias tendem a nomear seus filhos com nomes com sons semelhantes).Acabei usando o (eu acho) as quatro primeiras letras do primeiro nome de dependentes como um identificador único e chamando -o de "bom o suficiente". Não sei como lidaria com a família de George Foreman :-)

Eu vi o Dataflux em ação e, de acordo com nosso analista de dados “estrela”, é a ferramenta mais precisa de “clustering” (como o Dataflux o chama) que ele encontrou para vincular nomes de pessoas e empresas.É muito caro, no entanto.

É um problema clássico de ligação de registros.Erros de digitação, letras perdidas, etc.pode ser tratado com abordagem probabilística, definindo um conjunto de regras para bloqueio.

Um software que pode fazer isso muito bem para você é FRIL.Em Java, gratuito e muito amigável.Existem links para tutoriais e vídeos no site.Ele suporta conectividade de banco de dados, embora eu não tenha certeza sobre o oráculo.

RecLink poderia ser outro caminho a percorrer, embora você provavelmente teria que trabalhar mais para colocá-lo em funcionamento, já que não há manuais/tutoriais (que eu saiba).

Das opções gratuitas, também há RELAIS.

eu usei dataladder. com para um grande conjunto de dados de nomes.Eles fizeram um trabalho fantástico combinando diferentes bancos de dados com grafias muito diferentes e eliminando muitas duplicatas.

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