2009-12-09 16 views
1

Je travaille actuellement sur le projet où je dois correspondre une grande quantité de noms générés par les utilisateurs avec une liste séparée des mêmes noms dans un format canonique. Le problème est que les noms générés par l'utilisateur contiennent de nombreuses fautes d'orthographe, abréviations, ainsi que de simples données invalides, ce qui rend difficile la comparaison avec les données canoniques. Des suggestions sur les méthodes pour le faire?Cross Référencer Bases de données sur les données Fuzzy

Cela ne doit pas être fait en temps réel et, dans ce cas, la précision est plus importante que la vitesse.

idées actuelles en sont:

  1. Effectuez une recherche floue pour le nom d'utilisateur est entré dans la base de données canonique en utilisant une implémentation de recherche existant comme Lucene ou Sphinx, que je présume utiliser quelque chose comme la distance Levenshtein pour cette .
  2. Référence croisée sur le hachage SOUNDEX (qui est censé être calculé sur le son du nom plutôt que sur l'orthographe) au lieu d'utiliser le nom réel.
  3. Une combinaison de ce qui précède

Quelqu'un at-il des commentaires sur l'un de ceux-ci ou leurs propres idées? L'une de mes préoccupations est qu'aucune des méthodes ci-dessus ne traitera très bien les abréviations. Quelqu'un peut-il me diriger dans une direction pour certaines méthodes d'apprentissage automatique de rechercher réellement sur les abréviations étendues (ou dites-moi que je suis fou)? Merci d'avance.

Répondre

1

D'abord, j'ajouterais à votre liste les techniques discutées au Peter Norvig's post on spelling correction. Deuxièmement, je voudrais savoir quel genre de "noms générés par l'utilisateur" dont vous parlez. Ayant traité les deux, je crois que les heuristiques que vous utiliseriez pour les noms de rues sont quelque peu différentes des heuristiques pour les noms de personnes. (Par exemple, est-ce que "Dr" se développe en "Drive" ou "Doctor"?)

Troisièmement, je regarderais une combinaison en utilisant des tests pour établir l'ensemble des coefficients pour combiner les résultats des différentes techniques. .

+0

Merci, je pense qu'il n'y a vraiment pas de réponse parfaite à cela. J'ai décidé d'aller avec l'aide Lucene comme le principal moyen de références croisées et d'utiliser différents/custom Analyzer de pour développer les abréviations et faire la recherche floue. – ghempton