metafon
Metaphone to algorytm fonetyczny , opublikowany przez Lawrence'a Philipsa w 1990 roku, służący do indeksowania słów według ich angielskiej wymowy. Zasadniczo ulepsza Soundex , wykorzystując informacje o odmianach i niespójnościach w angielskiej pisowni i wymowie, aby uzyskać dokładniejsze kodowanie, które lepiej dopasowuje słowa i nazwy, które brzmią podobnie. Podobnie jak w przypadku Soundex, podobnie brzmiące słowa powinny mieć te same klucze. Metaphone jest dostępny jako wbudowany operator w wielu systemach.
Philips stworzył później nową wersję algorytmu, którą nazwał Double Metaphone . W przeciwieństwie do oryginalnego algorytmu, którego zastosowanie ogranicza się tylko do języka angielskiego, ta wersja uwzględnia specyfikę pisowni wielu innych języków. W 2009 roku firma Philips wypuściła trzecią wersję, nazwaną Metaphone 3, która osiąga dokładność około 99% dla słów angielskich, słów innych niż angielski znanych Amerykanom oraz imion i nazwisk powszechnie spotykanych w Stanach Zjednoczonych. nowoczesne standardy inżynierskie w zestawieniu z zestawem testowym przygotowanych poprawnych kodowań.
Procedura
Oryginalne kody Metaphone wykorzystują 16 symboli spółgłosek 0BFHJKLMNPRSTWXY. „0” oznacza „ th ” (jako przybliżenie Θ w kodzie ASCII ), „X” reprezentuje „ sh ” lub „ ch ”, a pozostałe oznaczają ich zwykłą angielską wymowę. Samogłoski tylko na początku kodu. Ta tabela podsumowuje większość reguł w oryginalnej implementacji:
- Upuść zduplikowane sąsiednie litery, z wyjątkiem C.
- Jeśli słowo zaczyna się na „KN”, „GN”, „PN”, „AE”, „WR”, usuń pierwszą literę.
- Usuń „B”, jeśli po „M” na końcu słowa.
- „C” przekształca się w „X”, jeśli następuje po nim „IA” lub „H” (chyba że w tym drugim przypadku jest częścią „-SCH-”, w którym to przypadku przekształca się w „K”). „C” przekształca się w „S”, jeśli następuje po nim „I”, „E” lub „Y”. W przeciwnym razie „C” przekształca się w „K”.
- „D” przekształca się w „J”, jeśli następuje po nim „GE”, „GY” lub „GI”. W przeciwnym razie „D” przekształca się w „T”.
- Usuń „G”, jeśli następuje po nim „H”, a „H” nie znajduje się na końcu ani przed samogłoską. Usuń „G”, jeśli następuje po nim „N” lub „NED” i znajduje się na końcu.
- „G” przekształca się w „J”, jeśli przed „I”, „E” lub „Y” i nie ma go w „GG”. W przeciwnym razie „G” przekształca się w „K”.
- Upuść „H”, jeśli po samogłosce, a nie przed samogłoską.
- „CK” przekształca się w „K”.
- „PH” przekształca się w „F”.
- „Q” przekształca się w „K”.
- „S” przekształca się w „X”, jeśli następuje po nim „H”, „IO” lub „IA”.
- „T” przekształca się w „X”, jeśli następuje po nim „IA” lub „IO”. „TH” przekształca się w „0”. Usuń „T”, jeśli następuje po nim „CH”.
- „V” przekształca się w „F”.
- „WH” przekształca się w „W”, jeśli na początku. Upuść „W”, jeśli nie następuje po nim samogłoska.
- „X” przekształca się w „S”, jeśli na początku. W przeciwnym razie „X” przekształca się w „KS”.
- Usuń „Y”, jeśli nie następuje po nim samogłoska.
- „Z” przekształca się w „S”.
- Porzuć wszystkie samogłoski, chyba że jest to początek.
Ta tabela nie stanowi pełnego opisu oryginalnego algorytmu Metaphone i nie można z niego poprawnie zakodować algorytmu. Oryginalny Metaphone zawierał wiele błędów i został zastąpiony przez Double Metaphone, a z kolei Double Metaphone i oryginalny Metaphone zostały zastąpione przez Metaphone 3, który koryguje tysiące błędnych kodowań, które będą generowane przez dwie pierwsze wersje.
Aby zaimplementować Metaphone bez kupowania kopii (kodu źródłowego) Metaphone 3, można użyć referencyjnej implementacji Double Metaphone. Alternatywnie, wersja 2.1.3 Metaphone 3, wcześniejsza wersja 2009 bez szeregu poprawek kodowania wprowadzonych w obecnej wersji, wersji 2.5.4, została udostępniona na warunkach licencji BSD za pośrednictwem projektu OpenRefine .
Podwójny metafon
Algorytm kodowania fonetycznego Double Metaphone jest drugą generacją tego algorytmu. Jego implementacja została opisana w wydaniu C/C++ Users Journal z czerwca 2000 roku . Wprowadza szereg fundamentalnych ulepszeń projektowych w stosunku do oryginalnego algorytmu Metaphone.
Nazywa się „Double”, ponieważ może zwrócić zarówno kod podstawowy, jak i dodatkowy dla ciągu znaków; wyjaśnia to niektóre niejednoznaczne przypadki, a także wiele wariantów nazwisk o wspólnym pochodzeniu. Na przykład zakodowanie nazwiska „Smith” daje kod główny SM0 i kod wtórny XMT , podczas gdy nazwisko „Schmidt” daje kod główny XMT i kod wtórny SMT — oba mają wspólne XMT .
Double Metaphone próbuje wyjaśnić niezliczone nieprawidłowości w języku angielskim pochodzenia słowiańskiego , germańskiego , celtyckiego , greckiego , francuskiego , włoskiego , hiszpańskiego , chińskiego i innych. Dlatego używa znacznie bardziej złożonego zestawu reguł do kodowania niż jego poprzednik; na przykład testuje około 100 różnych kontekstów użycia samej litery C.
Metafon 3
Profesjonalna wersja została wydana w październiku 2009 roku, opracowana przez tego samego autora, Lawrence'a Philipsa. Jest to produkt komercyjny sprzedawany jako kod źródłowy. Metaphone 3 dodatkowo poprawia kodowanie fonetyczne słów w języku angielskim, słów w języku innym niż angielski znanych Amerykanom oraz imion i nazwisk powszechnie występujących w Stanach Zjednoczonych. W szczególności w znacznym stopniu poprawia kodowanie nazw własnych. Autor twierdzi, że generalnie poprawia to trafność wszystkich słów od około 89% podwójnego metafonu do 98%. Deweloperzy mogą teraz również ustawić przełączniki w kodzie, aby algorytm kodował klucze Metaphone 1) biorąc pod uwagę samogłoski inne niż początkowe, a także 2) różnie kodował spółgłoski dźwięczne i bezdźwięczne. Dzięki temu zestaw wyników może być bardziej skoncentrowany, jeśli programista stwierdzi, że wyniki wyszukiwania zawierają zbyt wiele słów, które nie są wystarczająco podobne do wyszukiwanego terminu. Metaphone 3 jest sprzedawany jako źródło C++, Java, C#, PHP, Perl i PL/SQL, opakowania Ruby i Python uzyskujące dostęp do słoika Java, a także Metaphone 3 do wymowy hiszpańskiej i niemieckiej, dostępny jako źródło Java i C#. Najnowsza wersja algorytmu Metaphone 3 to wersja 2.5.4, wydana w marcu 2015 r. Kod źródłowy Metaphone3 Java dla wcześniejszej wersji, 2.1.3, pozbawionej dużej liczby poprawek kodowania wprowadzonych w obecnej wersji, wersji 2.5.4, został włączone jako część projektu OpenRefine i jest publicznie widoczne.
Wspólne nieporozumienia
Istnieje kilka błędnych przekonań na temat algorytmów Metaphone, którymi należy się zająć. Następujące zdania są prawdziwe:
- Wszystkie z nich są zaprojektowane tak, aby odnosić się do zwykłych, „słownikowych” słów, a nie tylko nazw, i
- Algorytmy metafoniczne nie tworzą fonetycznych reprezentacji słów i nazw wejściowych; raczej wynik jest celowo przybliżoną reprezentacją fonetyczną, zgodnie z tym standardem:
- słowa zaczynające się na dźwięk samogłoski będą miały „A”, reprezentujące dowolną samogłoskę, jako pierwszy znak kodowania (w Double Metaphone i Metaphone 3 - oryginalny Metaphone zachowuje tylko rzeczywistą samogłoskę),
- samogłoski po początkowym dźwięku samogłoski będą ignorowane i nie będą kodowane, oraz
- pary spółgłosek dźwięcznych/bezdźwięcznych zostaną odwzorowane na to samo kodowanie. (Przykłady par spółgłosek dźwięcznych i bezdźwięcznych to D/T, B/P, Z/S, G/K itd.).
To przybliżone kodowanie jest konieczne, aby uwzględnić sposób, w jaki anglojęzyczni zmieniają swoją wymowę i błędnie piszą lub w inny sposób zmieniają słowa i nazwy, które próbują przeliterować. Samogłoski są oczywiście bardzo zmienne. Brytyjscy użytkownicy często narzekają, że Amerykanie wydają się wymawiać „T” tak samo jak „D”. Weźmy również pod uwagę, że wszyscy anglojęzyczni często wymawiają „Z” tam, gdzie pisze się „S”, prawie zawsze, gdy rzeczownik kończący się na dźwięczną spółgłoskę lub płyn jest w liczbie mnogiej, na przykład „seasons”, „beams”, „examples”, itp. Niekodowanie samogłosek po początkowym dźwięku samogłoski pomoże pogrupować słowa, w których samogłoska i spółgłoska mogą zostać transponowane w błędnej pisowni lub alternatywnej wymowie.
Metafon innych języków
Metaphone jest przydatny w wariantach angielskich i innych językach, będąc preferowanym w kilku językach indoeuropejskich zamiast Soundex . Z drugiej strony, zgrubne kodowanie fonetyczne powoduje zależność językową — lub, w wariancie językowym, zależność przeciętnego języka od mówiącego — głównie w przypadku wariantów innych niż angielski.
Być może pierwszym przykładem stabilnej adaptacji metafonu innego niż angielski był brazylijski portugalski : powstał około 2008 roku jako rozwiązanie bazodanowe w gminie Várzea Paulista w Brazylii i ewoluował do obecnego algorytmu metaphone-ptbr
.
Zobacz też
- Jaskiniowiec
- System identyfikacji i wywiadu stanu Nowy Jork
- Metoda oceny dopasowania
- Przybliżone dopasowanie ciągów
- ^ Wiszące na metafonie, Lawrence Philips. Język komputerowy, tom. 7, nr 12 (grudzień), 1990.
- ^ „Morfoedro - technologia” . www.morfoedro.it . Źródło 16 maja 2018 r .
- ^ http://aspell.net/metaphone/dmetaph.cpp [ bez adresu URL zwykły plik tekstowy ]
- Bibliografia _ _ GitHub . 19 maja 2022 r.
- ^ Philips, Lawrence (czerwiec 2000). „Algorytm wyszukiwania podwójnego metafonu” . Dziennik użytkowników C/C++ . 18 (6): 38–43.
- ^ Best Faces Forward: A Large-scale Study of People Search in the Enterprise I Guy, S Ur, I Ronen, S Weber... - 2012 - http://www.research.ibm.com/haifa/dept/imt /artykuły/guyCHI12.pdf
- Bibliografia _ „Algorytm metafonu Lawrence'a Philipsa” . aspell.net . Źródło 16 maja 2018 r .
- ^ „Oprogramowanie antropomorficzne” . www.amorphics.com . Źródło 16 maja 2018 r .
- ^ „Źródło OpenRefine dla Metaphone3” . github.com . Źródło 2 listopada 2020 r .
Linki zewnętrzne
- The Double Metaphone Search Algorithm , Lawrence Phillips, 1 czerwca 2000, dr Dobb's, oryginalny artykuł
Algorytmy metafonu dla innych języków
- Brazylijski portugalski w C Metaphone dla brazylijskiego portugalskiego, w C z PHP i portem PostgreSQL.
- Brazylijski portugalski w Javie Metaphone dla brazylijskiego portugalskiego w Javie.
- Hiszpański metafon w Pythonie
- Algorytm podwójnego metafonu dla Bangla
- Algorytm podwójnego metafonu dla języka amharskiego
- Rosyjski metafon w rubinie .
- Podwójny metafon i metafon w JavaScript