В платформе .NET нет ничего, что могло бы помочь вам с этим "из коробки".
Наиболее частые орфографические ошибки - это те, где буквы являются достойным фонетическим представлением слова, но не правильным написанием слова.
Например, можно утверждать, что слова sword
и sord
(да, это слово) имеют одинаковые фонетические корни (они звучат одинаково, когда вы их произносите).
При этом существует ряд алгоритмов, которые вы можете использовать для перевода слов (даже неправильно написанных) в фонетические варианты.
Первый - это Soundex. Его довольно просто реализовать, и существует множество реализаций этого алгоритма в .NET а>. Это довольно просто, но дает вам реальные значения, которые вы можете сравнивать друг с другом.
Другой - Metaphone. Хотя я не могу найти родную .NET-реализацию Metaphone, в предоставленной ссылке есть ссылки на ряд других реализаций, которые можно преобразовать. Проще всего преобразовать, вероятно, Java-реализацию алгоритма Metaphone.
Следует отметить, что алгоритм Метафона претерпел доработки. Существует двойной метафон (в котором есть . Реализация .NET) и Метафон 3. Metaphone 3 - коммерческое приложение, но его точность составляет 98% по сравнению с 89% для алгоритма Double Metaphone при работе с базой данных общеупотребительных английских слов. В зависимости от ваших потребностей вы можете найти (в случае Double Metaphone) или приобрести (в случае Metaphone 3) исходный код алгоритма и преобразовать его или получить к нему доступ через уровень P / Invoke (существуют реализации C ++ в изобилии).
Metaphone и Soundex отличаются в том смысле, что Soundex создает цифровые клавиши фиксированной длины, тогда как Metaphone создает клавиши разной длины, поэтому результаты будут разными. В конце концов, оба сделают для вас одно и то же сравнение, вам просто нужно выяснить, что лучше всего соответствует вашим потребностям, учитывая ваши требования и ресурсы (и, конечно, уровни нетерпимости к орфографическим ошибкам).
person
casperOne
schedule
26.02.2010