Soundex

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Soundex is een fonetisch algoritme voor het indexeren van namen of woorden naar hun uitspraak in de Engelse taal. Namen die gelijk klinken, maar mogelijk niet gelijk geschreven worden, krijgen eenzelfde soundexcode. Het woord "soundex" is een samentrekking van "sound" en "index".

Het algoritme werd rond 1917 ontwikkeld om het mogelijk te maken te zoeken naar familienamen in steekkaartenbestanden, zonder dat men de exacte spelling van de namen hoeft te kennen. Door te selecteren op de soundexcode verkrijgt men alle namen die hetzelfde klinken maar daarom niet hetzelfde geschreven worden; bijvoorbeeld Peters, Pieters, Peeters, Petersen enz.

Het gebruik van soundex voor het indexeren van en het zoeken in computerbestanden en databases kwam in de jaren 1960 en 1970 naar voor, vooral nadat Donald Knuth het algoritme beschreef in zijn standaardwerk The Art of Computer Programming, Volume 3 (1973).

Oorspronkelijk algoritme[bewerken]

Het originele soundex-algoritme werd geoctrooieerd door Robert C. Russell in 1918[1] (de naam soundex werd pas later bedacht). De code bestond uit de eerste letter van de naam en een getal van één tot vier cijfers dat bekomen werd door de tweede, derde en volgende letters te vervangen door cijfers volgens dit schema:

  • 1: a,e,i,o,u,y
  • 2: b,f,p,v
  • 3: c,g,k,q,s,x,z
  • 4: d,t
  • 5: l
  • 6: m
  • 7: n
  • 8: r
  • De "h" wordt overgeslagen, alsook een eind-s of eind-z ("j" en "w" worden in het originele octrooidocument niet vermeld.). Deze codering groepeert klinkers en gelijksoortige medeklinkers volgens hun fonetische uitspraak in het Engels.

Opeenvolgende gelijke cijfers worden door één cijfer vervangen. De code bestaat uit de eerste vier overblijvende cijfers. Die code kan dan op steekkaarten aangebracht worden. Als die volgens hun soundexcode gesorteerd worden staan namen met gelijke uitspraak bijeen.

Modern algoritme[bewerken]

Het moderne Amerikaanse soundex-algoritme is enigszins aangepast ten opzichte van het origineel. De soundexcode bestaat uit een letter gevolgd door drie cijfers.

  • de eerste letter van de naam is de letter van de soundexcode
  • de cijfers worden bekomen door de daaropvolgende letters te vervangen door cijfers als volgt:
    • 1: b,f,p,v
    • 2: c,g,j,k,q,s,x,z
    • 3: d,t
    • 4: l
    • 5: m,n
    • 6: r
    • h,w en de klinkers worden overgeslagen.
  • Opeenvolgende gelijke cijfers worden vervangen door een enkel cijfer
  • De cijfercode bestaat uit de eerste drie resterende cijfers. Als er minder dan drie cijfers zijn wordt de code aangevuld met nullen tot er drie cijfers zijn.

Voorbeeld: met dit algoritme geeft "Smits" de code "S532"

SMITS → SMTS → S532

"Smids", "Smidts" en "Smeets" hebben diezelfde soundexcode; maar bijvoorbeeld ook "Smoutesmijter". Dit fenomeen dat namen die toch duidelijk verschillen in uitspraak, eenzelfde soundexcode hebben is een van de grootste kritieken op het soundexalgoritme. Zoeken met behulp van soundex zal daarom vaak een hoop irrelevante resultaten opleveren. Een andere is dat het gestoeld is op de Engelse uitspraak en niet zomaar toepasbaar is op andere talen; het houdt bijvoorbeeld geen rekening met de "lange-ij" uit het Nederlands.

Bronnen, noten en/of referenties