Есть ли в iOS библиотеки для фонетически идентичного звука?

Я пытаюсь создать приложение для iOS. На одном из экранов пользователь может что-то набрать в строке поиска, и я должен предпринять одно и то же действие для разных вариантов написания одного и того же слова.

Например: пользователь может ввести "слон" или "слон" или "слон". Я должен предпринять одно и то же действие для всех этих трех слов.

Есть ли библиотека, которая идентифицирует эти слова как похожие? Я не могу использовать проверку орфографии, так как мне это нужно на других языках, кроме английского. Я провел некоторое исследование и обнаружил, что есть некоторые фонетические алгоритмы, такие как Text::soundex для достижения этого на стороне сервера. Хотите знать, есть ли библиотеки для iOS?

Заранее спасибо!!

2 ответа

Решение

Лучшей альтернативой Soundex будет Double Metaphone или, что еще лучше, Metaphone 3. Вы не говорите, какой язык вы используете, но оба эти алгоритма доступны в C++, C# и Java.

Там нет soundex, например, в NSString, но если это то, что вы хотите, это довольно легко реализовать. Вот - хотя и ужасно отформатированный - категория Soundex NSString от CocoaDev.

Вы также можете использовать алгоритм Levenstein Distance для обнаружения простых орфографических ошибок. Также прост в реализации (подробности читайте в статье Википедии), но для этого есть категория NSString.

Прежде чем использовать эти алгоритмы, нормализуйте ввод. Там удивительный CFStringTransform класс в Core Foundation (см. эту замечательную статью об этом на NSHipster - особенно в последней части о нормализации), который автоматически может преобразовывать различные языковые входные данные в нормализованные формы.

Другие вопросы по тегам