Metaphone — это фонетический алгоритм для индексирования слов по их звучанию с учётом основных правил английского произношения. На выходе алгоритм даёт ключи переменной длины, в отличие от алгоритма Soundex, который генерирует ключи с фиксированной длиной. Из схожих по звучанию слов получаются одинаковые ключи.

Metaphone был разработан Lawrence Philips в качестве альтернативы алгоритму Soundex, обладающему рядом недостатков. Новый алгоритм более точен, чем Soundex, потому что использует больший набор правил английского произношения. Metaphone доступен в качестве встроенной функции во многих системах, включая поздние версии PHP. Алгоритм был описан в книге «Practical Algorithms for Programmers», Binstock & Rex, Addison Wesley, 1995.

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

В 2009 году тот же Lawrence Philips создал третью версию алгоритма под называнием Metaphone 3. Эта разработка не является разработкой с открытым исходным кодом.

См. также Double Metaphone Soundex

Литература

Ссылки Survey of Phonetic Matching Open Source Spell Checker Статья о реализациях Double Metaphone в CodeProject’s

Доступные реализации Реализации Soundex, Metaphone и Double Metaphone на Java Реализации Soundex, Metaphone, Caverphone на Python Text::Metaphone CPAN-модуль для Perl Text::DoubleMetaphone CPAN-модуль для Perl [web.archive.org/web/20080404104215/http://swoodbridge.com/DoubleMetaPhone/ Реализация от Stephen Woodbridge] на PHP PECL::DoubleMetaphone PECL-пакет для PHP, реализующий Double Metaphone Реализация для Ruby входит в пакет Text Реализация Double Metaphone на OCaml Реализация от Robert Minter на 4GL

Варианты реализаций для русского языка Реализация Петра Каньковски (в архиве) на Visual Basic Алгоритм Петра Каньковски. Ruby реализация от CleverUA — ссылка на GitHub

Категория:Строковые алгоритмы