Кіріспе
Сөздерді индекстеуге арналған фонетикалық алгоритм. Метафон – Лоуренс Филипс 1990 жылы жариялаған, сөздерді ағылшын тіліндегі айтылуына сәйкес индекстеу үшін қолданылатын фонетикалық алгоритм. Ол негізінен Soundex алгоритмін жақсартып, ағылшын тіліндегі әр түрлі жазылымдар мен айтылу ерекшеліктері туралы ақпаратты пайдаланып, дәлірек кодтау жасау арқылы бірдей дыбысталатын сөздер мен есімдерді жақсырақ анықтайды. Soundex сияқты, ұқсас естілетін сөздер бірдей кілттерді бөлісуі тиіс. Метафон көптеген жүйелерде енгізілген оператор ретінде қолжетімді. Кейіннен Филипс алгоритмнің жаңа нұсқасын жасады, оған Double Metaphone деп ат қойды. Алғашқы алгоритм тек ағылшын тіліне ғана қолданылса, бұл нұсқа басқа көптеген тілдердің жазылым ерекшеліктерін де ескереді. 2009 жылы Филипс үшінші нұсқасын – Metaphone 3-ті шығарды. Бұл нұсқа ағылшын тіліндегі сөздерге, американдықтарға таныс басқа тілдердегі сөздерге, сондай-ақ Америка Құрама Штаттарында көп кездесетін есімдер мен тегістерге қатысты шамамен 99% дәлдікке қол жеткізді. Ол заманауи инженерлік стандарттарға сәйкес, дайындалған дұрыс кодтаулар жинағы бойынша сынақтан өткізіліп әзірленді.
Metaphone is a phonetic algorithm, published by Lawrence Philips in 1990, for indexing words by their English pronunciation. It fundamentally improves on the Soundex algorithm by using information about variations and inconsistencies in English spelling and pronunciation to produce a more accurate encoding, which does a better job of matching words and names which sound similar. As with Soundex, similar sounding words should share the same keys. Metaphone is available as a built in operator in a number of systems. Philips later produced a new version of the algorithm, which he named Double Metaphone. Contrary to the original algorithm whose application is limited to English only, this version takes into account spelling peculiarities of a number of other languages. In 2009 Philips released a third version, called Metaphone 3, which achieves an accuracy of approximately 99% for English words, non English words familiar to Americans, and first names and family names commonly found in the United States, having been developed according to modern engineering standards against a test harness of prepared correct encodings.
Процедура
Түпнұсқа Metaphone кодтары 16 дауыссыз символ 0BFHJKLMNPRSTWXY қолданады. '0' – "th" (ASCII-де Θ символының жуықтамасы), 'X' – "sh" немесе "ch", ал қалғандары әдеттегі ағылшын тіліндегі айтылуын көрсетеді. AEIOU дауыстылары да қолданылады, бірақ тек кодтың басында. Бұл кесте бастапқы іске асырылымдағы көптеген ережелерді қамтиды: C-ден басқа, қатар тұрған бірдей әріптерді жойыңыз. Егер сөз 'KN', 'GN', 'PN', 'AE', 'WR' әріптерімен басталса, бірінші әріпті жойыңыз. Сөздің соңында 'M' әрпінен кейін 'B' әрпін жойыңыз. 'C' әрпі 'IA' немесе 'H' әрпінен кейін келсе 'X' әрпіне айналады (бірақ соңғы жағдайда, егер ол 'SCH' бөлігі болса, 'K' әрпіне айналады). 'C' әрпі 'I', 'E' немесе 'Y' әрпінен кейін келсе 'S' әрпіне айналады. Әйтпесе, 'C' әрпі 'K' әрпіне айналады. 'D' әрпі 'GE', 'GY' немесе 'GI' әрпінен кейін келсе 'J' әрпіне айналады. Әйтпесе, 'D' әрпі 'T' әрпіне айналады. Егер 'H' әрпі дауыстыдан кейін келсе және дауыстының алдында болмаса, 'G' әрпін жойыңыз. Егер 'N' немесе 'NED' әрпінен кейін келсе және сөздің соңында болса, 'G' әрпін жойыңыз. 'G' әрпі 'I', 'E' немесе 'Y' әрпінен бұрын келсе 'J' әрпіне айналады, бірақ 'GG' түрінде болмаса. Әйтпесе, 'G' әрпі 'K' әрпіне айналады. Дауыстыдан кейінгі 'H' әрпін, ал дауыстыдан бұрынғы 'H' әрпін жойыңыз. 'CK' әрпі 'K' әрпіне айналады. 'PH' әрпі 'F' әрпіне айналады. 'Q' әрпі 'K' әрпіне айналады. 'S' әрпі 'H', 'IO' немесе 'IA' әрпінен кейін келсе 'X' әрпіне айналады. 'T' әрпі 'IA' немесе 'IO' әрпінен кейін келсе 'X' әрпіне айналады. 'TH' әрпі '0' әрпіне айналады. 'CH' әрпінен кейін келсе, 'T' әрпін жойыңыз. 'V' әрпі 'F' әрпіне айналады. 'WH' әрпі сөздің басында келсе 'W' әрпіне айналады. Егер соңынан дауысты әріп келмесе, 'W' әрпін жойыңыз. 'X' әрпі сөздің басында 'S' әрпіне айналады. Әйтпесе, 'X' әрпі 'KS' әрпіне айналады. Егер соңынан дауысты әріп келмесе, 'Y' әрпін жойыңыз. 'Z' әрпі 'S' әрпіне айналады. Бастапқы әріп болмаса, барлық дауысты әріптерді жойыңыз. Бұл кесте түпнұсқа Metaphone алгоритмінің толық сипаттамасы емес және одан алгоритмді дұрыс кодтау мүмкін емес. Түпнұсқа Metaphone көптеген қателерді қамтыды және оның орнына Double Metaphone пайда болды, ал Double Metaphone мен түпнұсқа Metaphone Metaphone 3 арқылы алмастырылды, ол алғашқы екі нұсқада туындаған мыңдаған қате кодтауларды түзетті. Metaphone 3-тің (көз коды) көшірмесін сатып алмай Metaphone-ды іске асыру үшін Double Metaphone-ның эталондық іске асырылуын пайдалануға болады. Балама ретінде, Metaphone 3-тің 2.1.3 нұсқасы, 2009 жылғы нұсқасы, қазіргі нұсқадағы (2.5.4) кодтау түзетулері жоқ, OpenRefine жобасы арқылы BSD лицензиясының шарттары бойынша қолжетімді.
Drop duplicate adjacent letters, except for C.
If the word begins with 'KN', 'GN', 'PN', 'AE', 'WR', drop the first letter. Drop 'B' if after 'M' at the end of the word. 'C' transforms to 'X' if followed by 'IA' or 'H' (unless in latter case, it is part of ' SCH ', in which case it transforms to 'K'). 'C' transforms to 'S' if followed by 'I', 'E', or 'Y'. Otherwise, 'C' transforms to 'K'. 'D' transforms to 'J' if followed by 'GE', 'GY', or 'GI'. Otherwise, 'D' transforms to 'T'. Drop 'G' if followed by 'H' and 'H' is not at the end or before a vowel. Drop 'G' if followed by 'N' or 'NED' and is at the end. 'G' transforms to 'J' if before 'I', 'E', or 'Y', and it is not in 'GG'. Otherwise, 'G' transforms to 'K'. Drop 'H' if after vowel and not before a vowel. 'CK' transforms to 'K'. 'PH' transforms to 'F'. 'Q' transforms to 'K'. 'S' transforms to 'X' if followed by 'H', 'IO', or 'IA'. 'T' transforms to 'X' if followed by 'IA' or 'IO'. 'TH' transforms to '0'. Drop 'T' if followed by 'CH'. 'V' transforms to 'F'. 'WH' transforms to 'W' if at the beginning. Drop 'W' if not followed by a vowel. 'X' transforms to 'S' if at the beginning. Otherwise, 'X' transforms to 'KS'. Drop 'Y' if not followed by a vowel. 'Z' transforms to 'S'. Drop all vowels unless it is the beginning. This table does not constitute a complete description of the original Metaphone algorithm, and the algorithm cannot be coded correctly from it. Original Metaphone contained many errors and was superseded by Double Metaphone, and in turn Double Metaphone and original Metaphone were superseded by Metaphone 3, which corrects thousands of miscodings that will be produced by the first two versions. To implement Metaphone without purchasing a (source code) copy of Metaphone 3, the reference implementation of Double Metaphone can be used. Alternatively, version 2.1.3 of Metaphone 3, an earlier 2009 version without a number of encoding corrections made in the current version, version 2.5.4, has been made available under the terms of the BSD License via the OpenRefine project.
Қос метафора
Double Metaphone фонетикалық кодтау алгоритмі – бұл алгоритмнің екінші буыны. Оның іске асырылуы C/C++ Users Journal журналының 2000 жылғы маусымдық санында сипатталған. Ол бастапқы Metaphone алгоритміне қарағанда маңызды дизайндық жақсартуларға ие. Ол "Double" деп аталады, себебі ол бір тізбе үшін негізгі және қосымша кодты қайтара алады; бұл кейбір күмәнді жағдайларды, сондай-ақ ортақ түбі бар тегтердің әртүрлі нұсқаларын ескереді. Мысалы, "Smith" есімін кодтау SM0 негізгі кодын және XMT қосымша кодын береді, ал "Schmidt" есімін кодтау XMT негізгі кодын және SMT қосымша кодын береді – екеуі де XMT кодымен ортақ. Double Metaphone славян, герман, кельт, грек, француз, итальян, испан, қытай және басқа да тілдерден келген ағылшын тіліндегі көптеген ерекшеліктерді ескеруге тырысады. Осылайша, ол алдыңғы нұсқасына қарағанда кодтау үшін әлдеқайда күрделі ережелер жиынтығын қолданады; мысалы, ол тек C әрпінің қолданылуының шамамен 100 түрлі контекстін тексереді.
Метафон 3
2009 жылдың қазан айында сол автор, Лоренс Филипс әзірлеген кәсіби нұсқасы жарық көрді. Бұл бастапқы код түрінде сатылатын коммерциялық өнім. Metaphone 3 ағылшын тіліндегі сөздердің, американдықтарға таныс ағылшын емес сөздердің, сондай-ақ АҚШ-та кең таралған есімдер мен тегістердің фонетикалық кодталуын одан әрі жақсартады. Бұл, әсіресе, жеке есімдерді кодтауды едәуір жақсартады. Автордың мәлімдемесіне сәйкес, бұл алгоритм барлық сөздердің дәлдігін Double Metaphone-ның шамамен 89%-дан 98%-ға дейін арттырады. Әзірлеушілер кодтағы параметрлерді өзгерту арқылы алгоритмге 1) әуелгі буын емес дауысты әріптерді ескеруге және 2) дауысты және дауыссыз дыбыстарды әртүрлі кодтауға мүмкіндік алады. Бұл іздеу нәтижелерін қажеттілікке қарай нақтылауға көмектеседі, егер іздеу сұрағымен толық сәйкес келмейтін сөздер көп болса. Metaphone 3 C++, Java, C#, PHP, Perl және PL/SQL түрінде, Java банкасына қол жеткізетін Ruby және Python орамалары түрінде, сондай-ақ испан және неміс тілдеріне арналған Metaphone 3 Java және C# кодтары түрінде сатылады. Metaphone 3 алгоритмінің ең соңғы нұсқасы v2.5.4, ол 2015 жылдың наурызында шығарылды. Алдыңғы нұсқасы 2.1.3 болған Metaphone3 Java бастапқы коды, қазіргі 2.5.4 нұсқасында жасалған көптеген түзетулерден мүлдем құрыла қоймағандықтан, OpenRefine жобасының бір бөлігі ретінде қосылып, қазірде жалпыға қолжетімді.
Басқа тілдердің метафоны
Метафон ағылшын тілінің нұсқалары мен басқа тілдер үшін пайдалы, бірнеше үнді-еуропа тілдерінде Soundex-ке қарағанда артықшылық танылған. Екінші жағынан, жуан фонетикалық кодтау тілдік тәуелділікті тудырады – немесе тілдің бір түрінде, негізінен ағылшын тілінен өзге нұсқаларында, орташа тіл сөйлеушісіне тәуелділікті тудырады. Ағылшын тілінен өзге тілдерде метафонды тұрақтандырудың алғашқы мысалы, болжам бойынша, бразилиялық португал тілі болды: ол 2008 жыл шамасында Бразилияның Варзеа Паулиста қаласында дерекқорлық шешім ретінде пайда болды және қазіргі метафон ptbr алгоритміне дейін жетілді.