Попытка сопоставления имен с использованием алгоритмов ML

Предположим, вы создаете проект, который требует от вас сортировки слов/имен на основе их произношения. Вы можете использовать сопоставление строк, но хотите ли вы, чтобы всех звали Аакашем? Без прав. Здесь в игру вступают фонетические алгоритмы. Фонетические алгоритмы — это способ сортировки слов по их произношению. Они бывают разных видов и используются для разных целей. Однако считается, что они лучше всего работают в случае с именами людей или мест, потому что именно здесь возникает больше всего проблем с произношением.

Сопоставление строк

Сопоставление строк не подпадает под категорию фонетического алгоритма, но стоит упомянуть его здесь, чтобы получить представление о том, что мы хотим здесь сделать. При сопоставлении строк нам дается текст (искомое слово), также обозначаемый T, и шаблон (термин, который мы пытаемся найти), также обозначаемый T. На основе совпадения; алгоритм вернет оценку от 0 до 1. 1 — наивысшая оценка, а 0 — наименьшая. Есть много способов сделать это, вроде Naive String Matching, KMP и т. д., но мы не будем углубляться в это.

Саундекс

Этот алгоритм основан на произношении слова, а не на его написании, поэтому попадает в категорию фонетических алгоритмов. Soundex создает четырехсимвольный код на основе их произношения. Затем коды можно сравнить, чтобы определить, звучат ли слова одинаково. Незначительные орфографические ошибки и похожие по звучанию слова (различное написание) могут быть отсортированы более эффективно. Это настолько распространено, что продукты SQL обычно имеют алгоритмы Soundex в своих библиотечных функциях.
При поиске фамилии в базе данных, скажем «Гоял», будут найдены как «Гоэл», так и «Гоял», потому что они звучат одинаково и , следовательно, будет иметь тот же код Soundex.

Метафон

Metaphone — это усовершенствованная версия Soundex. Metaphone имеет более широкий диапазон правил произношения и разную длину клавиш по сравнению с клавишей фиксированной длины Soundex.

Double Metaphone улучшает это, возвращая первичный и вторичный ключи. Помимо английского, он пытается охватить произношения других языков, таких как греческий, французский, итальянский, испанский и китайский.

Существует также третья версия, Metaphone 3, которая возвращает точность 99% для английских слов.

NYSIIS (Информационная и разведывательная система штата Нью-Йорк)

NYSIIS основан на той же идее, что и Soundex и Metaphone, за исключением того, что он дает более точные результаты, поскольку возвращает меньше результатов под тем же кодом. Сопоставление происходит путем присвоения определенных индексов определенным звукам.

Каверфон

Этот алгоритм был создан, потому что Soundex и Metaphone оказались неподходящими для набора данных Caversham (набор данных из исследования, проведенного в Новой Зеландии). Была разработана индивидуальная модель фонетического кодирования, разработанная по аналогии с Metaphone в районе исследования (Новая Зеландия).

Функции подобия

Расстояние Левенштейна

Имея два слова, мы можем спросить, насколько они похожи. Мы также можем задать этот вопрос двум предложениям или последовательностям строк. Чтобы количественно определить сходство, нам нужна мера. Расстояние Левенштейна является такой мерой. Используя простые операции (такие как вставка, удаление и замена), мы можем определить, как преобразовать одно слово или последовательность в другое слово или последовательность. Добиться этого можно многими способами. Расстояние Левенштейна — это минимальное количество операций, необходимых для уравнивания двух входных данных. Чем меньше число, тем более похожи два сравниваемых входа.

Яро Винклер Расстояние

Джаро-Винклер вычисляет расстояние (меру сходства) между строками. Шкала измерения составляет от 0,0 до 1,0, где 0,0 — наименьшая вероятность, а 1,0 — положительное совпадение.

Косинус сходства

Подобие косинуса измеряет косинус угла между двумя многомерными векторами. Чем меньше угол, тем выше косинусное сходство.

ЗАКЛЮЧЕНИЕ

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