Питання Нечіткі текстове співпадіння C #


Я пишу користувальницький інтерфейс (.Net WinForms), щоб допомогти фотографу очистити його мета даних. Є список 66k + фраз. Чи може хто-небудь запропонувати гарний компонент з відкритим вихідним кодом / безкоштовним .NET, який я можу використати, використовуючи якийсь алгоритм для ідентифікації потенційних кандидатів для консолідації? Наприклад, може бути два або більше записів, які насправді є одним і тим самим словом або фразою, які відрізняються лише пробілами або знаками пунктуації або навіть незначними неправильними написаннями. Програма, в кінцевому підсумку, буде покладатися на користувача, щоб задіяти консолідацію фраз, але мати ефективний спосіб автоматичного пошуку потенційних кандидатів виявиться неоціненним.


14
2017-11-21 21:08


походження


Дивіться тут, щоб отримати додаткову інформацію про відповідність нечіткого тексту: stackoverflow.com/questions/5859561/... - jordanhill123


Відповіді:


Дозвольте представити вам формулу відстані Левенштейна. Це чудово:

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

У теорії інформації та інформатиці відстань Левенштейна - це рядна метрика для вимірювання різниці між двома послідовностями. Термін "відредагування" часто використовується для посилання на відстань Левенштейна.

Особисто я використовував це в медичній установі, де імена постачальників були перевірені на дублікати. Використовуючи процес Левенштейна, ми надали їм довірчий рейтинг і дозволили їм визначити, чи це справжній дубльований чи щось унікальне.


19
2017-11-21 21:10



Ось реалізація в C #: blogs.msdn.com/b/toub/archive/2006/05/05/590814.aspx - Paul Kearney - pk
Я збираюся запропонувати використовувати soundex (http://www.techrepublic.com/blog/programming-and-development/how-do-i-implement-the-soundex-function-in-c/656) Після застосування soundex ви можете сортувати ваші рядки за звукові коди, які вони виробляють, і позначати еквівалентні коди для перегляду користувачем. Я думаю, що кінцевий результат може бути схожий на використання відстані Левенштейна? - hmqcnoesy
Одна справа з soundex - це марно, коли перевіряти рядки, що містять лише цифри. - jamiebarrow
Хто-небудь знає чистої SQL-реалізації, я хочу використовувати SQL Azure, який не використовує збірки C #. - jamiebarrow
@jamiebarrow Швидкий пошук google виявився таким: blog.sendreallybigfiles.com/2009/06/... - Fosco