Soundex je fonetický algoritmus pro indexování slov podle anglické výslovnosti. Cílem je kódování homofonů pomocí stejné reprezentace tak, aby mohly být považovány za shodné i v případě malých rozdílů v pravopisu.[1] Algoritmus kóduje především souhlásky. Samohlásky jsou kódovány pouze v případě, že jsou prvním písmenem slova. Soundex je standardní součástí mnoha databázových systémů jako například PostgreSQL,[2] MySQL,[3] SQLite,[4] MS SQL Server[5] nebo Oracle[6]. Vylepšení Soundexu jsou základem mnoha moderních fonetických algoritmů.[7]
Soundex byl vyvinut Margaretou K. Odellovou a Robertem C. Russelem[8] a patentován v letech 1918[9] a 1922[10]. Jeho variace, americký Soundex, byla využívána ve třicátých letech dvacátého století ke zpětné analýze amerického sčítání lidu z let 1890 až 1920. Známějším se Soundex stal v šedesátých letech dvacátého století, kdy o něm bylo vydáno několik článků v časopisech Communications a Journal of the Association for Computing Machinery a byl popsán v knize Umění programování od Donalda Knutha.
Reprezentace slova pomocí amerického Soundexu se skládá z písmene následovaného třemi číslicemi. Toto písmeno je první písmeno slova a číslice reprezentují zbylé souhlásky. Souhlásky s podobnou výslovností jsou reprezentovány stejnou číslicí.
Algoritmus je následující:
- První písmeno je zachováno a všechny výskyty písmen A, E, I, O, U, Y, H, W jsou vynechány.
- Souhlásky (mimo prvního písmene slova) jsou nahrazovány číslicemi následovně:
- B, F, P, V → 1
- C, G, J, K, Q, S, X, Z → 2
- D, T → 3
- L → 4
- M, N → 5
- R → 6
- Pokud spolu v původním slovu (před krokem 1) sousedí dvě nebo více písmen se stejnou číselnou reprezentací, je zachováno pouze první. Stejně tak pokud jsou dvě písmena se stejnou číselnou reprezentací odděleny písmeny H nebo W, jsou také kódovány pouze jednou číslicí. Oproti tomu dvě písmena se stejnou číselnou reprezentací oddělené samohláskou jsou kódována dvěma číslicemi. Toto pravidlo se vztahuje také na první písmeno slova.
- Pokud je původní slovo příliš krátké a algoritmus mu nepřiřadí alespoň tři číslice, je číselný kód do celkové délky tří doplněny nulami. Pokud má kód více než tři číslice, jsou zachovány pouze první tři.
V tomto článku byl použit překlad textu z článku Soundex na anglické Wikipedii.
- ↑ Soundex System [online]. National Archives and Records Administration, 2016-08-15, rev. 2007-05-30 [cit. 2019-06-09]. Dostupné online. (anglicky)
- ↑ PostgreSQL: Documentation: 9.1: fuzzystrmatch [online]. postgresql.com [cit. 2019-06-09]. Dostupné online. (anglicky)
- ↑ MySQL :: MySQL 5.5 Reference Manual :: 12.5 String Functions [online]. dev.mysql.com [cit. 2019-06-09]. Dostupné online. (anglicky)
- ↑ SQL As Understood By SQLite: Core Functions [online]. sqlite.org [cit. 2019-06-09]. Dostupné online. (anglicky)
- ↑ SOUNDEX (Transact-SQL) [online]. msdn.microsoft.com, 2010-01-10 [cit. 2019-06-09]. Dostupné online. (anglicky)
- ↑ SOUNDEX [online]. [cit. 2019-06-09]. Dostupné online. (anglicky)
- ↑ BEIDER, Alexander; MORSE, Stephen P. Phonetic Matching: A Better Soundex [online]. [cit. 2019-06-09]. Dostupné online. (anglicky)
- ↑ The Soundex Rules [online]. bitmap.us [cit. 2019-06-09]. Dostupné online. (anglicky)
- ↑ Bibliographic data: US1261167 (A) ― 1918-04-02 [online]. Espacenet [cit. 2019-06-09]. Dostupné online. (anglicky)
- ↑ Bibliographic data: US1435663 (A) ― 1922-11-14 [online]. Espacenet [cit. 2019-06-09]. Dostupné online. (anglicky)