2010-05-16 3 views
1

Je caractère identique je travaille sur l'adresse algorithme de synchronisation du livre. Je voudrais réutiliser du code s'il existe, mais je ne pourrais pas en trouver un pour le moment.algorithme pour comparer les noms des personnes pour détecter

Est-ce que quelqu'un sait au sujet d'un algorithme qui va me dire en nombre/flottant/procent combien deux noms sont identiques. la distance Levenstein est pas bon dans cette approche, que les noms et nos livres sont adddress correspondant le début de chacune des sections de nom.

John Smith doit correspondre
Smith Jon, Jonathan Smith, Johnny Smith

Répondre

1

Jetez un oeil à l'algorithme Jaro Winkler aussi. C'est bon pour les noms. http://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance

Si vous avez le prénom, les questions de nom alors vous pouvez les trier pour vous assurer que Smith John est enregistré comme John Smith

+0

Je choisis cette réponse, comme vous l'avez directement l'algorithme bien une autre réponse ont déjà soumis avec le même site de liaison. – Pentium10

2

Vous devriez regarder à des algorithmes de comparaison de chaîne tels que Levenshtein ou Smith-Waterman. Voici a great library pour vous aider à démarrer

1

Pour les noms, je suis venu avec un algorithme similaire à metaphone.

Vous devez aussi une certaine logique pour briser la chaîne en nom, prénoms, titre, etc. Il peut se compliquer.

Il y a des cas de pointe. Si quelqu'un a le titre "Professeur", vous ne voulez pas que cela soit interprété comme un prénom. Et s'ils ont "Seigneur" au début, cela pourrait être leur prénom (beaucoup de gens s'appellent Seigneur) ou leur titre. Etc. Il est préférable que vous ayez déjà leur nom sous une forme standard où vous connaissez leur nom, prénom et titre.

J'ai écrit du code PHP pour cela: voir name (voir la fonction similarityto()), textfuzzy, probability.

Questions connexes