Кіріспе

Сөздерді индекстеуге арналған фонетикалық алгоритм. Метафон – Лоуренс Филипс 1990 жылы жариялаған, сөздерді ағылшын тіліндегі айтылуына сәйкес индекстеу үшін қолданылатын фонетикалық алгоритм. Ол негізінен Soundex алгоритмін жақсартып, ағылшын тіліндегі әр түрлі жазылымдар мен айтылу ерекшеліктері туралы ақпаратты пайдаланып, дәлірек кодтау жасау арқылы бірдей дыбысталатын сөздер мен есімдерді жақсырақ анықтайды. Soundex сияқты, ұқсас естілетін сөздер бірдей кілттерді бөлісуі тиіс. Метафон көптеген жүйелерде енгізілген оператор ретінде қолжетімді. Кейіннен Филипс алгоритмнің жаңа нұсқасын жасады, оған Double Metaphone деп ат қойды. Алғашқы алгоритм тек ағылшын тіліне ғана қолданылса, бұл нұсқа басқа көптеген тілдердің жазылым ерекшеліктерін де ескереді. 2009 жылы Филипс үшінші нұсқасын – Metaphone 3-ті шығарды. Бұл нұсқа ағылшын тіліндегі сөздерге, американдықтарға таныс басқа тілдердегі сөздерге, сондай-ақ Америка Құрама Штаттарында көп кездесетін есімдер мен тегістерге қатысты шамамен 99% дәлдікке қол жеткізді. Ол заманауи инженерлік стандарттарға сәйкес, дайындалған дұрыс кодтаулар жинағы бойынша сынақтан өткізіліп әзірленді.

Процедура

Түпнұсқа 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 лицензиясының шарттары бойынша қолжетімді.

Қос метафора

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 алгоритміне дейін жетілді.