Саундекс

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

Історія[ред.ред. код]

Саундекс розробили Роберт Руссел і Маргарет Оделл і запатентували у 1918 і 1922. Так званий американський саундекс, використовувався в 1930-х для ретроспективного аналізу переписів населення США від 1890 до 1920 року. Саундекс став відомим у 60-х роках XX століття, коли він став темою кількох статей в журналах Communications of the ACM і Journal of the Association for Computing Machinery, а особливо, коли був описаний Дональдом Кнутом в монографії The Art of Computer Programming.

Сучасні правила саундекса, які використовуються урядом США, розробляє та підтримує National Archives and Records Administration (NARA).

Опис алгоритму[ред.ред. код]

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

Саудекс-код складається з букви й трьох числових розрядів: першу літеру імені й цифри кодування наступних приголосних. Подібні приголосні мають одні й ті ж цифри, так, наприклад, губні приголосні 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 році, який він назвав подвійним метафоном. Подвійний метафон включає в себе набагато більший набір правил кодування, ніж його попередник, і повертає первинний і вторинний код для обліку різних вимов одного слова англійською мовою.

Див. також[ред.ред. код]