Подтвердить что ты не робот

Фонетический поиск индийских языков

Я хочу сравнить строки фонетически в приложении для Android. Но здесь особый случай, я хочу сравнить слова индийского языка, написанные на английском языке. Например, я хочу проверить, являются ли "Эджу" "Адху" "Йету" фонетически равными, все они означают одинаково на тамильском языке. Но люди, которые используют английский script для написания индийских языков, используют разные варианты написания слова. Как сравнить слова в этом случае?

Я опробовал Левенштейна. Но я не уверен, как преобразовать число, которое оно возвращает к равенству.

Я опробовал Soundex, коды Soundex не совпадают при изменении первой буквы слова. Но он может найти похожие звучащие части. Я не понимаю, как это работает.

 soundex.encode("Yethu")  (soundex.encode("Edhu"))  (soundex.encode("adhu")) 
 Y300                       E300                       A300
4b9b3361

Ответ 1

Как я понимаю, вы хотите взять слова, написанные на английском языке, разложить их фонетически, а затем объединить слова, которые написаны по-разному, но иметь те же фонетические представления.

Для этого SoundEx является 90% -м решением, при условии, что люди, которые написали слова на английском языке, фактически используют правильные согласные, когда переводят слова с тамильского на английский.

Вы должны просто оставить первое значение из представления SoundEx и использовать его как свою кодировку, когда первая буква является гласным.

Причина в том, что SoundEx (https://en.wikipedia.org/wiki/Soundex) выполняет свои кодировки только на согласных в словах, которые он представляет. Он отбрасывает все гласные плюс h и w. Если только гласная не является первой буквой в слове - это объясняет, почему ваши значения немного отличаются друг от друга, но только в первой буквенной кодировке.

Что касается ваших нулей, кодировки SoundEx по определению являются 1 буквой и 3 цифрами (только с 1 по 6), у вас есть только 1 согласный в каждом слове (d или t), а SoundEx отображает их оба на номер 3. поскольку больше нет согласных, я считаю, что он добавляет 2 нули для соответствия. таким образом, вы получаете Letter300

Если вы собираетесь использовать SoundEx для своего приложения, вы должны иметь в виду, что он может дать вам только 26 * 6 * 6 * 6 = 5616 уникальных кодировок на основе его номера письма (1-6) Номер (1) -6) Номер (1-6). Это означает, что фонетические кодировки не будут уникальными, а некоторые слова, радикально отличающиеся, будут иметь кодировки SoundEx, которые сталкиваются.