Введение
Фонетический алгоритм индексации имен по звучанию. Soundex — это фонетический алгоритм для индексации имен по звучанию, как они произносятся в английском языке. Его цель — кодировать омонимы одним и тем же образом, чтобы обеспечить их сопоставление, несмотря на незначительные различия в написании. Soundex используется в MySQL, SQLite, Ingres, MS SQL Server, Oracle, ClickHouse, Snowflake и SAP ASE. Усовершенствования Soundex легли в основу многих современных фонетических алгоритмов.
Soundex is a phonetic algorithm for indexing names by sound, as pronounced in English. The goal is for homophones to be encoded to the same representation so that they can be matched despite minor differences in spelling. MySQL, SQLite, Ingres, MS SQL Server, Oracle, ClickHouse, Snowflake and SAP ASE.) Improvements to Soundex are the basis for many modern phonetic algorithms.
История
Soundex был разработан Робертом К. Расселом и Маргарет Кинг Оделл и запатентован в 1918 и 1922 годах. Вариант, американский Soundex, использовался в 1930-х годах для ретроспективного анализа переписей населения США за период с 1890 по 1920 год. Код Soundex получил широкое распространение в 1960-х годах, когда он стал темой нескольких статей в журналах Communications и Journal of the Association for Computing Machinery, и особенно благодаря описанию в книге Дональда Кнута «Искусство программирования». Национальное управление архивами и документацией (NARA) поддерживает действующий набор правил для официальной реализации Soundex, используемой правительством США. Эти правила кодирования доступны в NARA по запросу в виде Общей информационной брошюры № 55 «Использование Soundex переписи населения».
Варианты
Аналогичный алгоритм под названием "Reverse Soundex" добавляет к имени последнюю букву вместо первой. Алгоритм Нью-Йоркской системы идентификации и разведки (NYSIIS) был представлен в 1970 году как усовершенствование алгоритма Soundex. NYSIIS обрабатывает некоторые многосимвольные n-граммы и сохраняет относительное положение гласных, в то время как Soundex этого не делает. Daitch–Mokotoff Soundex (D–M Soundex) был разработан в 1985 году генеалогом Гэри Мокотоффом и позднее улучшен генеалогом Рэнди Дейтчем из-за проблем, с которыми они столкнулись при попытке применить Russell Soundex к евреям с германскими или славянскими фамилиями (например, Moskowitz против Moskovitz или Levine против Lewin). D–M Soundex иногда называют "еврейским Soundex" или "восточноевропейским Soundex", хотя авторы не рекомендуют использовать эти названия. Алгоритм D–M Soundex может возвращать до 32 различных фонетических кодировок для одного имени. Результаты D–M Soundex возвращаются в полностью числовом формате в диапазоне от 100000 до 999999. Этот алгоритм значительно сложнее, чем Russell Soundex. В ответ на недостатки алгоритма Soundex, Лоуренс Филипс разработал алгоритм Metaphone в 1990 году. В 2000 году Филипс разработал усовершенствование Metaphone, которое он назвал Double Metaphone. Double Metaphone включает в себя гораздо более обширный набор правил кодирования, чем его предшественник, обрабатывает подмножество нелатинских символов и возвращает основную и вторичную кодировку для учета различных произношений одного и того же слова в английском языке. В 2009 году Филипс создал Metaphone 3 как дальнейшую редакцию, чтобы предоставить профессиональную версию, обеспечивающую значительно более высокий процент правильных кодировок для английских слов, неанглийских слов, знакомых американцам, а также для имен и фамилий, встречающихся в Соединенных Штатах. Он также предоставляет настройки, позволяющие более точно сопоставлять согласные и внутренние гласные, чтобы программист мог более точно настроить точность совпадений.