2011-11-21 18 views
12

Sto scrivendo un'interfaccia utente desktop (.Net WinForms) per aiutare un fotografo a ripulire i suoi metadati dell'immagine. C'è una lista di 66k + frasi. Qualcuno può suggerire un buon componente open source/free. NET che posso usare che utilizza una sorta di algoritmo per identificare i potenziali candidati per il consolidamento? Per esempio ci possono essere due o più voci che sono in realtà la stessa parola o frase che differiscono solo per spazi vuoti o punteggiatura o anche lieve errore ortografico. In ultima analisi, l'applicazione si baserà sull'azione dell'utente per consolidare le frasi, ma avere un modo efficace per individuare automaticamente i potenziali candidati si rivelerà inestimabile.Corrispondenza testo fuzzy C#

+0

Vedere qui per ulteriori informazioni sulla corrispondenza del testo fuzzy: http://stackoverflow.com/questions/5859561/getting-the-closest-string-match – jordanhill123

risposta

16

Lasciate che vi presenti la formula della distanza di Levenshtein. E 'impressionante:

http://en.wikipedia.org/wiki/Levenshtein_distance

In teoria dell'informazione e informatica, la distanza Levenshtein è una stringa di metrica per misurare la quantità di differenza tra due sequenze. Il termine modifica distanza è spesso usato per riferirsi specificamente alla distanza di Levenshtein.

Personalmente l'ho utilizzato in un ambiente sanitario, dove i nomi dei provider sono stati controllati per i duplicati. Usando il processo Levenshtein, abbiamo dato loro una valutazione di confidenza e gli abbiamo permesso di determinare se si trattava di un vero duplicato o qualcosa di unico.

+1

Ecco un'implementazione in C#: http://blogs.msdn.com /b/toub/archive/2006/05/05/590814.aspx –

+0

Stavo per suggerire di usare soundex ([http://www.techrepublic.com/blog/programming-and-development/how-do-i- attuare-the-soundex-funzione-in-c/656] (http://www.techrepublic.com/blog/programming-and-development/how-do-i-implement-the-soundex-function-in-c/656)). Dopo aver applicato soundex, è possibile ordinare le stringhe in base ai codici soundex che producono e contrassegnare i codici equivalenti per la revisione da parte dell'utente. Penso che il risultato finale potrebbe essere simile all'uso della distanza di levenshtein? – hmqcnoesy

+0

Una cosa con soundex è che è inutile quando si controllano stringhe che contengono solo cifre. – jamiebarrow