Саундекс

Алгоритм саундекс[1] (англ. Soundex) — фонетичний алгоритм для індексації назв за вимовою в англійській мові. Він встановлює однакове представлення омофонів, що спрощує їх пошук, попри неточності в написанні. Алгоритм переважно кодує приголосні звуки, голосні опускаються, крім першої букви. Саундекс — найвідоміший з усіх фонетичних алгоритмів (частково через те, що доступний у популярних СКБД, таких як DB2, PostgreSQL,[2] MySQL,[3] Ingres, MS SQL[4] і Oracle[5]), та часто використовується (неправильно) як синонім до «фонетичного алгоритму». Удосконалення саундексу є основою для багатьох сучасних фонетичних алгоритмів.

Історія

Саундекс розробили Роберт Рассел (англ. Robert C. Russell) і Маргарет Оделл (англ. Margaret King Odell)[6] і запатентували у 1918 і 1922.[7] Так званий американський саундекс, використовувався в 1930-х для ретроспективного аналізу переписів населення США від 1890 до 1920 року. Саундекс став відомим у 60-х роках XX століття, коли він став темою кількох статей в журналах Асоціації обчислювальних машин Communications of the ACM і Journal of the ACM[en], а особливо, коли був описаний Дональдом Кнутом в монографії «Мистецтво програмування».

Сучасні правила саундексу, які застосовує уряд США, розробляє та підтримує Національне управління архівів та документації (англ. NARA).[8]

Опис алгоритму

Нижче продемонстрований американський саундекс.

Саудекс-код складається з букви й трьох числових розрядів: першу літеру імені й цифри кодування наступних приголосних. Подібні приголосні мають одні й ті ж цифри, так, наприклад, губні приголосні B, F, P, V кодуються номером 1. Голосні можуть вплинути на кодування, але не кодуються, окрім першої літери.

Правильне значення може бути знайдено так чином:
1. Перша літера імені вводиться безпосередньо;
2. Кожна приголосна має свій код:
  • B, F, P, V → 1;
  • C, G, J, K, Q, S, X, Z → 2;
  • D, T → 3;
  • L → 4;
  • M, N → 5;
  • R → 6;
  • H, W не кодуються.
3. Дві сусідні літери з однаковим числом кодуються як одне. Літери з тим же числом, розділених h або w також
кодуються як одне число;
4. Продовжуєте поки не має одної букви і трьох цифр.

Використання цього алгоритму з «Robert» і «Rupert» поверне рядок «R163», а «Rubin» дає «R150». «Ashcraft» і «Ashcroft» дає на виході «A261».

Варіанти саундекс

Аналогічний алгоритм, званий «зворотним саундексом» має як префікс останню літеру замість першої.

NYSIIS алгоритм був введений у Ідентифікаційній та інформаційній системі штату Нью-Йорк у 1970 році, як поліпшення алгоритму саундекс. NYSIIS підтримує, на відміну від саундексу, відносну позицію голосних.

Саундекс Дейча-Мокотоффа (Д-М-Саундекс) було розроблено в 1985 році генеологістом Gary Mokotoff, а потім поліпшено Randy Daitch через проблеми з якими зіткнулися при спробі застосувати саундес Рассела для євреїв з німецькими або слов'янськими прізвищами. Д-M-Саундекс іноді називають «єврейської саундексом» або «саундексом Східної Європи», хоча автори й перешкоджали використанню цих назв. Алгоритм Д-M-Саундекс може повернути до 32 окремих фонетичних кодувань для одного імені. Результати Д-M-Саундекс повертає в числовому форматі між 100000 і 999999. Цей алгоритм є набагато складнішим, ніж саундекс Рассела.

Як відповідь на недоліки в алгоритмі саундекс, Лоуренс Філіпс розробив алгоритм метафон в 1990 році. Філіпс розробив поліпшений метафон в 2000 році, який він назвав подвійним метафоном. Подвійний метафон включає в себе набагато більший набір правил кодування, ніж його попередник, і повертає первинний і вторинний код для обліку різних вимов одного слова англійською мовою.

Див. також

Примітки

  1. Глосарій термінів національної моделі статистичного виробництва в органах державної статистики : затв. наказом Держ. служби статистки України від 30 грудня 2020 р. № 367 / Державна служба статистики України. — К. : 2020. — С. 8.
  2. Documentation: 9.1: fuzzystrmatch. PostgreSQL. Архів оригіналу за 23 липня 2020. Процитовано 3 листопада 2012.
  3. MySQL 5.5 Reference Manual :: 12.5 String Functions. MySQL. SOUNDEX(str). Архів оригіналу за 15 вересня 2016.
  4. Built-In Scaler SQL Functions. SQLite. 16 липня 2022. soundex(X). Архів оригіналу за 20 грудня 2022. Процитовано 24 грудня 2022.
  5. SOUNDEX. Database SQL Reference. Архів оригіналу за 21 жовтня 2017. Процитовано 20 жовтня 2017.
  6. Odell, Margaret King (1956). The profit in records management. Systems. New York. 20: 20.
  7. US patent 1261167, R. C. Russell, "(untitled)", issued 1918-04-02  (Archived)
  8. The Soundex Indexing System. National Archives. National Archives and Records Administration. 30 травня 2007. Архів оригіналу за 12 березня 2020. Процитовано 24 грудня 2010.

Посилання