Me desculpem se eu estiver colocando esta mensagem no local errado, mas foi o que achei que mais precisamente se encaixava em minha questão.
O problema não é especificamente sobre java, mas sobre um algorítimo que preciso implementar.
É o seguinte: preciso implementar uma solução que me diga que determinados dados possam ser os mesmos e sugira isso. Acho que um exemplo pode explicar melhor:
Maria Aparecida da Silva e Maria Ap. da Silva e Maria A. Silva
podem ser a mesma pessoa ou ainda
Dr. Antonio Carlos Pedroso e Antonio C. Pedrozo
também podem ser a mesma pessoa.
Preciso de um algorítimo que resolva isso de forma inteligente - não determinando que as pessoas são as mesmas, mas SUGERINDO isso ao usuário. Ah… na verdade poderá ( ou não ) haver mais campos relacionados nessa decisão.
Identifique e remova as partes pouco interessantes da String (pontuacao, acentuacao, espacos duplicados)
Troque 's’s e 'z’s por um caractere qualquer ($, por exemplo). Faca o mesmo com 'x’s, 'ch’s, etc
Compare as duas Strings
Ou então…
Calcule um ‘score’ para a String, somando pontuacao a cada caracter igual na mesma sequencia da String original, e determine uma ‘nota de corte’ para saber quando a String passa a nao ter relacao nenhuma com a original
Ricardo Baesa, da universidade do Chile, desenvolveu papers EXATAMENTE sobre esse assunto.
Sao algoritmos bem sofisticados e complicados. Usando " primos" dos BLAST e FAST para o match de genes.
matchsimile.com.br, faz EXATAMENTE isso, usando o algoritmo chileno. ele faz das formas mais loucas possivel, igual qdo vc faz pesquisa genetica com o BLAST e tal.
tipo.
“Paulo Eduardo Silveira” ele acharaia em " Paaulo E. Silva"
Repare que Silva e Silveira sao BEM diferentes. E voce pode fazer o fine tuning.