Метафон - Metaphone
Метафон это фонетический алгоритм, опубликованный Лоуренсом Филипсом в 1990 году, для индексации слов по их английскому произношению.[1] Это существенно улучшает Soundex алгоритм, используя информацию о вариациях и несоответствиях в английском написании и произношении для получения более точной кодировки, которая лучше справляется с сопоставлением слов и имен, которые звучат одинаково. Как и в случае с Soundex, похожие по звучанию слова должны иметь одинаковые ключи. Метафон доступен в качестве встроенного оператора в ряде систем.
Первоначальный автор позже создал новую версию алгоритма, которую он назвал Двойной метафон. В отличие от оригинального алгоритма, применение которого ограничено только английским языком, в этой версии учтены особенности орфографии ряда других языков. В 2009 году Лоуренс Филипс выпустил третью версию под названием Metaphone 3, которая обеспечивает точность примерно 99% для английских слов, неанглийских слов, знакомых американцам, а также имен и фамилий, обычно встречающихся в Соединенных Штатах, и была разработана в соответствии с в соответствии с современными инженерными стандартами по сравнению с тестовым набором подготовленных правильных кодировок.
Процедура
В исходных кодах Metaphone используется 16 согласный звук символы 0BFHJKLMNPRSTWXY. '0' означает "th "(как ASCII приближение Θ ), 'X' представляет "ш " или же "ch ", а остальные представляют их обычное английское произношение. гласные AEIOU также используются, но только в начале кода.[2] В этой таблице обобщено большинство правил исходной реализации:
- Отбросьте повторяющиеся соседние буквы, кроме C.
- Если слово начинается с «KN», «GN», «PN», «AE», «WR», опустите первую букву.
- Отбросьте букву «B», если после «M» в конце слова.
- «C» преобразуется в «X», если за ним следует «IA» или «H» (если в последнем случае он не является частью «-SCH-», в этом случае он преобразуется в «K»). «C» преобразуется в «S», если за ним следует «I», «E» или «Y». В противном случае «C» преобразуется в «K».
- «D» преобразуется в «J», если за ним следует «GE», «GY» или «GI». В противном случае «D» преобразуется в «T».
- Отбросьте букву «G», если за ней следует «H», а «H» не стоит в конце или перед гласной. Отбросьте букву «G», если за ней следует «N» или «NED» и стоит в конце.
- 'G' преобразуется в 'J', если перед 'I', 'E' или 'Y', и его нет в 'GG'. В противном случае «G» преобразуется в «K».
- Удалите букву «H», если она стоит после гласной, а не перед гласной.
- «CK» преобразуется в «K».
- «PH» преобразуется в «F».
- «Q» преобразуется в «K».
- «S» преобразуется в «X», если за ним следует «H», «IO» или «IA».
- «T» преобразуется в «X», если за ним следует «IA» или «IO». «TH» преобразуется в «0». Отбросьте букву «Т», если за ней следует «СН».
- «V» преобразуется в «F».
- «WH» преобразуется в «W», если находится в начале. Отбросьте букву «W», если за ней не следует гласная.
- «X» преобразуется в «S», если находится в начале. В противном случае «X» преобразуется в «KS».
- Отбросьте букву «Y», если за ней не следует гласная.
- «Z» преобразуется в «S».
- Отбросьте все гласные, если это не начало.
Эта таблица не является полным описанием исходного алгоритма Metaphone, и алгоритм не может быть правильно закодирован из нее. Оригинальный Metaphone содержал много ошибок и был заменен на Double Metaphone, а на смену Double Metaphone и оригинальный Metaphone пришел Metaphone 3, который исправляет тысячи неправильных кодировок, которые будут произведены в первых двух версиях.
Для реализации Metaphone без покупки копии Metaphone 3 (исходный код) можно использовать эталонную реализацию Double Metaphone.[3] В качестве альтернативы, версия 2.1.3 Metaphone 3, более ранняя версия 2009 года без ряда исправлений кодировки, сделанных в текущей версии, версии 2.5.4, стала доступной в соответствии с условиями Лицензия BSD через проект OpenRefine. [4]
Двойной метафон
Алгоритм фонетического кодирования Double Metaphone является вторым поколением этого алгоритма. Его реализация была описана в июньском выпуске журнала 2000 г. Журнал пользователей C / C ++.[5] По сравнению с исходным алгоритмом Metaphone он вносит ряд фундаментальных улучшений в дизайн.
Он называется «Double», потому что может возвращать как первичный, так и вторичный код для строки; это объясняет некоторые неоднозначные случаи, а также несколько вариантов фамилий с общим происхождением. Например, кодирование имени «Смит» дает первичный код SM0 и вторичный код XMT, а имя «Шмидт» дает первичный код XMT и вторичный код SMT-как есть XMT в общем.
Double Metaphone пытается объяснить множество нарушений в английский из Славянский, Германский, кельтская, Греческий, Французский, Итальянский, испанский, Китайский, и другое происхождение. Таким образом, он использует гораздо более сложный набор правил для кодирования, чем его предшественник; например, он проверяет примерно 100 различных контекстов использования одной только буквы C.
Метафон 3
В октябре 2009 года была выпущена профессиональная версия, разработанная тем же автором, Лоуренсом Филипсом. Это коммерческий продукт, который продается как исходный код. Metaphone 3 дополнительно улучшает фонетическое кодирование слов английского языка, неанглийских слов, знакомых американцам, а также имен и фамилий, обычно встречающихся в Соединенных Штатах. В частности, это значительно улучшает кодирование имен собственных.[6] Автор утверждает, что в целом он улучшает точность всех слов с примерно 89% в Double Metaphone до 98%. Разработчики также могут теперь устанавливать переключатели в коде, чтобы заставить алгоритм кодировать ключи Метафона 1) с учетом не начальных гласных, а также 2) по-разному кодировать звонкие и глухие согласные. Это позволяет более точно сфокусировать набор результатов, если разработчик обнаруживает, что результаты поиска содержат слишком много слов, которые недостаточно похожи на поисковый запрос.[7] Metaphone 3 продается как исходный код C ++, Java, C #, PHP, Perl и PL / SQL, оболочки Ruby и Python, обращающиеся к банке Java, а также Metaphone 3 для испанского и немецкого произношения, доступный как исходный код Java и C #.[8] Последней версией алгоритма Metaphone 3 является v2.5.4, выпущенная в марте 2015 года. Исходный код Java Metaphone3 для более ранней версии 2.1.3, в которой отсутствовало большое количество исправлений кодировки, внесенных в текущую версию 2.5.4, был включен как часть проекта OpenRefine и доступен для публичного просмотра[9].
Распространенные заблуждения
Есть некоторые заблуждения об алгоритмах Metaphone, которые следует устранить. Следующие утверждения верны:
- Все они предназначены для обращения к обычным "словарным" словам, а не только к именам, и
- Алгоритмы метафона делают нет производить фонетические представления вводимых слов и имен; скорее, результат - намеренно приблизительный фонетическое представление согласно этому стандарту:
- слова, начинающиеся с гласного звука, будут иметь букву «А», представляющую любую гласную, в качестве первого символа кодировки (в Double Metaphone и Metaphone 3 - оригинальный Metaphone просто сохраняет фактическую гласную),
- гласные после начального гласного звука не будут учитываться и не кодироваться, и
- Пары голосовых / невокализованных согласных будут сопоставлены с одной и той же кодировкой. (Примерами пар звонких / глухих согласных являются D / T, B / P, Z / S, G / K и т. Д.).
Эта приблизительная кодировка необходима для того, чтобы учесть то, как носители английского языка изменяют свое произношение и орфографические ошибки или иным образом меняют слова и имена, которые они пытаются написать. Гласные, как известно, очень разнообразны. Британцы часто жалуются, что американцы произносят «Т» так же, как «Д». Учтите также, что все носители английского языка часто произносят 'Z' там, где пишется 'S', почти всегда, когда существительное, оканчивающееся на звонкий согласный или жидкость, имеет множественное число, например, «времена года», «лучи», «примеры», и т.д. Отсутствие кодирования гласных после начального гласного звука поможет сгруппировать слова, в которых гласная и согласная могут быть переставлены при неправильном написании или альтернативном произношении.
Смотрите также
Рекомендации
- ^ Висящий на метафоне, Лоуренс Филипс. Компьютерный язык, Vol. 7, No. 12 (декабрь), 1990.
- ^ «Морфоэдро - Технологии». www.morfoedro.it. Получено 16 мая 2018.
- ^ http://aspell.net/metaphone/dmetaph.cpp
- ^ https://github.com/OpenRefine/OpenRefine/blob/master/main/src/com/google/refine/clustering/binning/Metaphone3.java
- ^ https://dl.acm.org/citation.cfm?id=349132
- ^ Best Face Forward: крупномасштабное исследование поиска людей на предприятии I Guy, S Ur, I Ronen, S Weber… - 2012 - http://www.research.ibm.com/haifa/dept/imt/papers/guyCHI12.pdf
- ^ Аткинсон, Кевин. «Метафонный алгоритм Лоуренса Филипса». aspell.net. Получено 16 мая 2018.
- ^ «Антропоморфное программное обеспечение». www.amorphics.com. Получено 16 мая 2018.
- ^ "Исходный код OpenRefine для Metaphone3". github.com. Получено 2 ноя 2020.
внешняя ссылка
- Алгоритм поиска двойного метафона, Лоуренс Филлипс, 1 июня 2000 г., Dr Dobb's, Оригинальная статья
Алгоритмы метафона для других языков
- Бразильский португальский на C Метафон для бразильского португальского языка на C с портом PHP и PostgreSQL.
- Бразильский португальский на Яве Метафон для бразильского португальского языка на Java.
- Испанский метафон в Python
- Алгоритм двойного метафона для Bangla
- Алгоритм двойного метафона для амхарского языка
- Русский метафон на рубине.
- Метафон 3 для испанского и немецкого языков
- Двойной метафон и Метафон в JavaScript