Soundex, Metaphone: come funzionano

Ho più volte parlato di queste due funzioni, oramai sappiamo che sono dei codifici fonetici che permettono di indicizzare le stringhe in base alloro suono. Un pò per curiosità, un pò perchè voglio avere sempre tutto sotto controllo mi sono chiesto come realizzano l’hash sonoro di una stringa, anche per capire se e come sono vincolati da una lingua, così dopo un pò di ricerche in rete ho capito le cose che vado a scrivere di seguito.

Iniziamo con il soundex, sappiamo che produce un codice formato da una lettere (la prima della paroloa) e da 3 cifre, ogni cifra rappresenta uno dei sei codici consonantici. La procedura per ottenere il soundex è la seguente:

  • prendiamo la prima lettera, essa come detto rappresenta la prima posizione del soundex
  • quando incontriamo uno dei seguenti caratteri los ostituiamo con il rispettivo valore

B, F, P, V => 1

C, G, J, K, Q, S, X, Z => 2

D, T => 3

L => 4

M, N => 5

R => 6

  • Eliminiamo le lettere adiacenti con lo stesso codice
  • Eliminiamo le lettere A, E, I, O, U, Y, W e H se non sono iniziali
  • Prendiamo i primi 3 numeri ottenuti riempendo eventualmente le posizioni rimanenti con degli zeri

i pro dell’utilizzo del soundex li ho già evidenziati negli altri post, vorreim sottolineare i contro. Il primo inconveniente è che il soundex è stato sviluppato per la lingua inglese (in particolare il contesto è quello statunitense), nella quale il rapporto di corrispondenza tra i suoni ed i simboli scritti è piutosto libero e la fonetica ricopre un ruolo molto importante (lo vedremo con il metaphone). Possiamo però dire che per sua natura o meglio, per la procedura che utilizzare per ottenere l’hash è l’agoritmo che meglio si presta nell’utilizzo con le lingue latine. Il secondo inconveniente è rappresentato dal rapporto stringa estesa caratteri del sounex, ipotizziamo di trattare un indirizzo, per sua natura sarà sicuramente composto da un prefisso (via, viale, piazza ecc), dal nome della via e spesso dal civico (ipotizziamo di non voler separare quest’ultimo dalla stringa). Se decidiamo di non dare peso al prefisso perchè il contenuto informativo più importante è rappresentato dal nome, potremmo trovarci in un caso del tipo

via alessandro volta 3

via volta 3

nel primo caso la parola alesandro ci permette di ottenere un soundex e di conseguenza di non avere traccia della parola volta nello stesso. Nel secondo caso il soundex si forma proprio sulla parola volta, in questo modo il match non avverrà e non potrebbe avvenire neanche utilizzando il metaphone.

Con il metaphone abbiamo 16 suoni consonantici:

B, X (rappresenta il suono Sh), S, K, J, T, F, H, L, M, N, P, R, 0 (inteso come zero e rappresenta il suono Th), W, Y

e segue le seguenti regole:

  • Eliminiamo le doppie cancellando una delle due lettere in tutti i casi tranne che con la C
  • Eliminiamo la prima lettere delle parole che iniziano per KN, GN, PN, AE e WR
  • Eliminiamo la B alla fine della parola dopo la M.
  • Cambiamo le lettere C => X in CIA o CH; C => S in CI, CE o CY; C => K neglia ltri casi
  • Cambiamo le lettere D => J in DGE, DGY o DGI; D => T negli altri casi
  • Eliminiamo la G in GH e se non si trova alla fine della parola o prima di una vocale in GN o GNED; G => J prima di I o E o Y se non doppia GG; G → K negli altri casi
  • Eliminiamo H dopo una vocale e se non seguita da una vocale
  • Eliminiamo K dopo C
  • Cambiamo:

P => F in PH

Q => K.

S => X in SH o SIO o SIA

T => X in TIA o TIO; T => 0 in TH; T viene eliminata in TCH

V => F

  • Se la parola comincia con WH eliminiamo H; eliminiamo W se non èseguita da una vocale
  • Se la parola comincia con X, X => S; X => KS negli altri casi
  • Eliminiamo Y se non è seguita da una vocale
  • Z => S
  • Le vocali restano solo quando si trovano nella prima posizione

come possiamo notare è estremamente legato alla fonetica della lingua inglese e ciò rende meno duttile. Risulta inoltre sensibile al problema evidenziato per il soundex (“eccesso” di caratteri…) nel suo caso a causa del numero variabile di caratteri che formano l’hash.

Annunci

One thought on “Soundex, Metaphone: come funzionano

  1. kryptosfan ha detto:

    Ciao! Sto lavorando ad una cifra nella statua Kryptos al CIA ed ho avuto l’grande idea che potrebbe essere in una lingua differente. Ho avuto un pò di francese e Spagnolo in High School ma non abbastanza provare una cifra di sostituzione e sperare che potessi interferire le giuste parole. Conoscete dei buoni programmi in linea o avete di suggerimenti di che cosa potrei provare? Sto andando cercare i blog di WordPress che discuto i codici e cifre (eventualmente) così se visitassi casualmente il vostro luogo ed ha niente a che fare con i codici/cifre/puzzle, sono realmente spiacente. I ringraziamenti per tutto l’aiuto chiunque possono darli!

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...