2010-11-10 20 views
1

Supposons que vous deviez effectuer une sorte de comparaison entre 2 fichiers. Vous n'avez besoin de le faire que lorsque cela a du sens, en d'autres termes, vous ne voudriez pas comparer le fichier JSON avec le fichier .jar ou le fichier .txt avec le fichier .jarcomparer "les goûts" intelligemment

De plus, supposons que vous ayez un mécanisme en place pour trier toutes ces choses et ce qu'il en est maintenant est le nom de fichier réel. Vous voudriez comparer "myFile.txt" avec "myFile.txt", mais pas avec "somethingElse.txt". L'objectif est d'être aussi proche que possible des règles "pommes à pommes".

Alors voilà, d'un côté vous avez "myFile.txt" et d'un autre côté vous avez "_myFile.txt", "_m_y_f_i_l_e.txt" et "somethingReallyClever.txt".

La tâche consiste à choisir le nom le plus proche pour le comparer plus tard. Malheureusement, le nom identique n'est pas trouvé.

En regardant la composition des caractères, il n'est pas difficile de comprendre quelle est la relation. Mon algo dit:

 
_myFile.txt to _m_y_f_i_l_e.txt     0.312 
_myFile.txt to somethingReallyClever.txt   0.16 

Alors _m_y_f_i_l_e.txt est plus proche to_myFile.txt puis somethingReallyClever.txt. Fantastique. Mais dit aussi que ist est seulement 2 fois plus proche, où comme en réalité nous pouvons regarder les 2 fichiers et ne penserait jamais à comparer quelque chose ReallyClever.txt avec _myFile.txt.

Pourquoi? Quelle logique suggéreriez-vous que j'applique pour non seulement déterminer la probabilité en ayant des caractères sur le même endroit, mais aussi tester si le poids déterminé a du sens?

Dans mon exemple, somethingReallyClever.txt aurait eu un poids de 0,0

J'espère que je suis être clair.

Veuillez partager votre expérience et vos réflexions à ce sujet. (quelle que soit l'approche que vous proposez ne devrait pas dépendre du nombre de nom de fichier de caractères se compose de)

+0

double possible de [algorithme de comparaison Word] (http://stackoverflow.com/questions/473522/word-comparison-algorithm) – MartinodF

Répondre

2

question précédente Peut-être utile qui met en évidence plusieurs algorithmes possibles:

Word comparison algorithm

Ces algorithmes sont basés sur le nombre de changements seraient être nécessaire pour passer d'une chaîne à l'autre - où un changement consiste à ajouter un caractère, à supprimer un caractère ou à remplacer un caractère. Certainement n'importe quelle métrique sensible ici devrait avoir un score bas signifiant étroit (penser la distance entre les deux cordes) et des plus grands scores comme signifiant pas si près.

0

On dirait que vous voulez que le Levenshtein distance, peut-être modifié par preconverting les deux mots à la même affaire et des espaces normalisant (par exemple, remplacer tous les espaces et met en évidence avec une chaîne vide)