Metaphone
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. Эта разработка не является разработкой с открытым исходным кодом.
См. также[править | править код]
Литература[править | править код]
- Binstock, A. and Rex, J. Practical Algorithms for Programmers. — Addison-Wesley, 1995. — 577 p. — ISBN 9780201632088.
Ссылки[править | править код]
- 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 (англ.)
- Реализация от Stephen Woodbridge на PHP (англ.)
- PECL::DoubleMetaphone PECL-пакет для PHP, реализующий Double Metaphone
- Реализация для Ruby входит в пакет Text (англ.)
- Реализация Double Metaphone на OCaml (англ.)
- Реализация от Robert Minter на 4GL (англ.)
Варианты реализаций для русского языка[править | править код]
- Реализация Петра Каньковски (в архиве) на Visual Basic (рус.)
- Алгоритм Петра Каньковски. Ruby реализация от CleverUA — ссылка на GitHub
![]() | В статье не хватает ссылок на источники (см. рекомендации по поиску). |