Нечеткое соответствие текста С#

Я пишу UI рабочего стола (.Net WinForms), чтобы помочь фотографу очистить свои метаданные изображения. Существует список 66k + фраз. Может ли кто-нибудь предложить хороший компонент с открытым исходным кодом/бесплатно .NET, который я могу использовать, который использует какой-то алгоритм для определения потенциальных кандидатов для консолидации? Например, могут быть две или более записи, которые на самом деле являются тем же самым словом или фразой, которые отличаются только пробелом или пунктуацией или даже незначительным неправильным написанием. В конечном итоге приложение будет полагаться на пользователя для консолидации фраз, но эффективный способ автоматического поиска потенциальных кандидатов окажется неоценимым.

Ответ 1

Позвольте представить вам формулу расстояния Левенштейна. Это потрясающе:

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

В теории информации и информатике расстояние Левенштейна является строковой метрикой для измерения величины разницы между двумя последовательностями. Термин "расстояние редактирования" часто используется для обозначения конкретного расстояния Левенштейна.

Лично я использовал это в настройке здравоохранения, где имена поставщиков были проверены на наличие дубликатов. Используя процесс Левенштейна, мы дали им рейтинг доверия и позволили им определить, был ли он настоящим дубликатом или чем-то уникальным.