Soundex
Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 1. maaliskuuta 2021 tarkistetusta
versiosta . tarkastukset vaativat
2 muokkausta .
Soundex - yksi algoritmeista kielten vertaamiseen niiden äänen perusteella; asettaa saman indeksin merkkijonoille, jotka kuulostavat samalta englanniksi .
Robert C. Russelin ja Margaret King Odellin kehittämä ja vuosina 1918 ja 1922 patentoitu [1] [2] , on historiallisesti ensimmäinen foneettinen algoritmi . Tuli suosituksi 1960-luvulla sen jälkeen, kun sille oli omistettu useita artikkeleita Communications of the ACM- ja Journal of the ACM -julkaisuissa ; hänestä tuli vieläkin tunnetumpi esiintyessään Knuthin teoksessa The Art of Programming [ 3] . Sitä on käytetty monien RDBMS - järjestelmien vakio - ominaisuutena 1980 - luvulta lähtien .
Aluksi keskittynyt amerikkalaisen englannin fonetiikkaan , muutosten kautta sitä voidaan soveltaa muihin muunnelmiin ja kieliin, mutta joissain tapauksissa tarvitaan merkittäviä muutoksia (kuten esimerkiksi Deutsch-Mokotoff-algoritmissa , joka tukee erisnimiä jiddish ja slaavilaiset kielet ). Myöhemmin ilmestyi myös vaihtoehtoja, jotka keskittyivät enemmän tavallisiin englanninkielisiin sanoihin kuin erisnimiin (kuten Metaphone , Caverphone ).
Algoritmin vaiheet
- Muista sanan ensimmäinen kirjain.
- Kaikki h :n ja w :n esiintymät poistetaan (lukuun ottamatta sanan ensimmäistä kirjainta).
- Konsonantit korvataan numeroilla 1-6, ja samalta kuulostavat kirjaimet vastaavat samoja numeroita:
- b, f, p, v → 1
- c, g, j, k, q, s, x, z → 2
- d, t → 3
- l → 4
- m, n → 5
- r → 6
- Mikä tahansa identtisten numeroiden sarja pelkistetään yhdeksi tällaiseksi numeroksi.
- Kaikki a , e , i , o , u , y poistetaan (paitsi sanan ensimmäinen kirjain).
- Korvaa ensimmäisen merkin vaiheessa 1 muistiin tallennetulla kirjaimella ja tekee siitä ison kirjaimen.
- Tuloksena oleva merkkijono katkaistaan neljään ensimmäiseen merkkiin. Jos merkkijono on pienempi kuin vaadittu pituus, puuttuvat merkit korvataan nollalla.
Esimerkkejä:
- ammonium → a55o5iu5 → a5o5iu5 → a555 → A555
- toteutus → i514e5e53a3io5 → i51455335 → i514 → I514
- Robert = Rupert → R163 , Rubin → R150
- Ashcraft = Ashcroft → A261 (mutta ei A226 : sanojen kirjaimet s ja c antavat yhden numeron 2 , eivät 22 , koska ne on erotettu h :lla ).
- Tymczak → T522 , ei T520 (kirjaimet z ja k korvataan kirjaimella 22 , koska ne on erotettu vokaalilla).
Muistiinpanot
- ↑ US-patentti 1 261 167
- ↑ US-patentti 1 435 663
- ↑ Donald Knuth . Osa 6. Haku // Ohjelmoinnin taito = The Art of Computer Programming. - 2012. - V. 3. Lajittelu ja haku. - S. 249.