2011-11-21 7 views
12

Piszę interfejs użytkownika pulpitu (.Net WinForms), aby pomóc fotografowi w oczyszczeniu jego metadanych obrazu. Jest lista 66k + fraz. Czy ktoś może zaproponować dobry open source/bezpłatny składnik .NET, który mogę wykorzystać, który wykorzystuje jakiś algorytm do identyfikacji potencjalnych kandydatów do konsolidacji? Na przykład mogą istnieć dwie lub więcej pozycji, które w rzeczywistości są tym samym słowem lub frazą, które różnią się jedynie odstępami, interpunkcją lub nawet niewielką błędną pisownią. Aplikacja ostatecznie będzie polegać na tym, że użytkownik będzie działał na rzecz konsolidacji fraz, ale posiadanie skutecznego sposobu automatycznego wyszukiwania potencjalnych kandydatów okaże się nieocenione.Rozmazany dopasowywanie tekstu C#

+0

Zobacz tutaj, aby uzyskać więcej informacji na temat dopasowania tekstu rozmytego: http://stackoverflow.com/questions/5859561/getting-the-closest-string-match – jordanhill123

Odpowiedz

16

Pozwolę sobie przedstawić Państwu formułę odległości Levenshtein. To jest niesamowite:

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

W teorii informacji i informatyki, odległość Levenshteina jest ciągiem metryki do pomiaru wysokości różnicy pomiędzy dwiema sekwencjami. Określenie odległość edycji jest często używane w odniesieniu do odległości Levenshteina.

Osobiście używałem tego w placówce służby zdrowia, w której nazwy dostawców zostały sprawdzone pod kątem duplikatów. Korzystając z procesu Levenshtein, daliśmy im ocenę wiarygodności i pozwoliliśmy im ustalić, czy był to prawdziwy duplikat czy coś wyjątkowego.

+1

Oto implementacja w C#: http://blogs.msdn.com /b/toub/archive/2006/05/05/590814.aspx –

+0

Zaproponowałem użycie soundex ([http://www.techrepublic.com/blog/programming-and-development/how-do-i- implement-the-soundex-function-in-c/656] (http://www.techrepublic.com/blog/programming-and-development/how-do-i-implement-the-soundex-function-incc/656)). Po zastosowaniu soundexu można sortować ciągi znaków za pomocą wygenerowanych kodów dźwiękowych i opatrzyć odpowiednimi kodami do sprawdzenia przez użytkownika. Myślę, że wynik końcowy może być podobny do tego, jaki jest dystans dzielący nas od levenshteina? – hmqcnoesy

+0

Jedną z rzeczy z soundex jest to, że jest bezużyteczne podczas sprawdzania ciągów zawierających tylko cyfry. – jamiebarrow