2009-05-12 10 views
2

Quel est le meilleur algorithme pour faire correspondre ou calculer la distance entre deux chaînes en C# lorsque l'ordre ou le nombre de fois qu'un mot apparaît n'est pas important?Meilleure correspondance entre deux chaînes lorsque l'ordre ou le nombre de fois qu'un mot apparaît n'est pas important?

meilleur moyen:

  • Est-ce que la plupart du temps d'accord avec un match humain
  • élégant
  • efficace
  • évolutive, de sorte qu'une chaîne d'entrée pourrait être adaptée à une collection potentiellement importante d'autres cordes

Questions connexes:

Quelques notes:

  • En raison de l'indépendance de l'ordre et de l'événement, les entrées peuvent être considérés comme des ensembles de mots uniques, et non pas des chaînes dans le sens de tableaux de caractères
  • Pas spécifiquement à la recherche d'une solution de base de données, bien qu'un serait intéressant
  • Je suis trop vieux pour que cela soit un problème de devoirs;)

Répondre

1

Cela ressemble à un cas canonique pour appliquer des algorithmes standards de recherche d'information. La distance cosinus est ce qui vient en premier à l'esprit, mais il pourrait y avoir de meilleures correspondances à votre cas particulier. Ceci est un bon lien pour commencer à creuser sur cette route:

http://www.miislita.com/information-retrieval-tutorial/cosine-similarity-tutorial.html

exemple de mise en œuvre:

How do I calculate the cosine similarity of two vectors?

1

Seach pour une méthode appelée "Double Metaphone" que je beleive pour mot par mot comparision C'est le meilleur disponible. Compte aussi pour différentes langues! queit incroyable.

Si vous comparez la chaîne, vous pouvez peut-être l'utiliser avec une similitude de cosinus. Fera des résultats parfaits.

+0

+1 Je vais vérifier, merci :) –