Proc code - Solutions - PHONETICAL INDEX |
![]() |
$language | ![]() |
![]() |
![]() |
![]() |
Soundex estàndard.
Desenvolupat pel cens de 1880 dels EUA. Soundex és un índex fonètic i no estrictament alfabètic. Exemple de cognoms que sonen d'una manera semblant però que s'escriuen diferent són "Simth" i "Smyth" que, utilitzant aquest algorisme, obtenen el mateix codi.
Per fer servir soundex primer ha de codificar-se el cognom de la persona que ens insteressi. El codi consisteix en una lletra i tres números, com ara pot ser B-536 per representar el cognom "Bender". La lletra correspon sempre a la primera del cognom sigui una vocal o una consonant.
Per calcular el codi no es tene en compte les vocals (A,E,I,O,U) ni les consonants W, Y ni H. S'assigna el número corresponent només a les tres consonants següents segons la taula inclosa a aquest document i tenint en compte les excepcions que es citen a continuació. Si no hi ha prou consonants després de la primera lletra s'omplena el codi resultant amb zeros fins completar els tres dígits. Per tant un nom que no produeixin codificació numèrica com podria ser "Lee" resultarà L-000.
Excepcions :
Lletres repetides consecutivament Si el cognom conté la mateixa lletra repetida consecutivament es tractaran com si fos una de sola. Per tant al cognom "Gutierrez" la segona "r" es sobreira.
Codifcació repetida consecutivament Si dos consonant són codificades de la mateixa forma (com per exemple la "c" i la "k") y aquest codis resulten consecutius, també es tractaran com si fos només un. Per exemple, al cognom "Jackson" les lletres "c", "k" i "s" s'haurien de codifcar amb el número 2, però, en aquest cas, només ho serà una d'elles. Aquesta regla s'ha d'aplicar també a la primera lletra (que no es codifica) per la qual cosa el cognom "Pfister", al que tant la "P" com la "f" tenen el codi 1 es codificarà com P-236.
Alguns SGBDR (com Oracle) ja tene aquesta funció incorporada.
Consultar: http://www.tjp.washington.edu/bdm/genealogy/overviewofsoundex.html i http://www.outfitters.com/genealogy/what-soundex.html
Codificació de fonemes
Mentre que l'algorisme soundex es basa en la codificació de cada lletres aquest altre es basa en la localització de fonemes i la codificació segons el só d'aquest (la idea és poder diferenciar casos com, per exemple, "CE" i "CA" per codificar la "C" com "S" o "K"). Aquest algorisme està inspirat en el "metaphone" de Lawrence Philips però amb importants diferències basades en las característiques de les llengües llatines.
La base
de l'algorisme és la localització de les síl·labes
i per això es té compte que aquestes es formen de :
1. Un
grup inicial opcional de dos consonants com a màxim que només
poden ser uns determinats (per exemple a l'espanyol el grup NS és
impossible com a inici de síl·laba).
2. Un
grup de vocals, que poden o no formar diftong.
3. Un
grup final, també opcional, de consonants sobre el que no s'imposa
cap restricció.
L'algorisme recorre la paraula des del final fins al començament separant aquest tres grups, i igual que soundex, descartant les vocal. Una vegada es localitzen els dos grups de consonants (si existeixen) es tradueixen a uns codis alfabètics que els agrupa segons el só que tenen. Només els quatre primers fonemes de la paraula es tenen compte.
Per què de dreta a esquerra? Per que els grups inicials de les síl·labes són sempre precedits d'una vocal. L'algorisme es simplifica quan no hi ha grup de consonants finals o un grup doble a l'inici de síl·laba.
Quines són les vocals? Per suposat són A,E,I,O i U però a més es deurien d'incloure les seves variants diacrítiques (accents).
Per què hi ha una codificació diferent pel grup inicial i final? En alguns casos pot interessar fer distinció de pronúncia. (Per exemple pot interessar que la "LL" sigui convertida a "y" a començament de síl·laba i com "L" al final, o que la "Y" no es tingui en compte a final de síl·laba perque te un só vocal).
Per què majúscules i minúscules? Per que així es pot decidir si es vol una conversió més rigorosa o més relaxades. Si es fa la conversió a majúscules o minúscules la recerca serà més relaxada (es trobaran més casos).
Component
Al fitxer soundex.zip trobareu :
Soundex estándard.
Desarrollado para el censo de 1880 de los EE.UU. Soundex es un índice fonético y no estríctamente alfabético. Ejemplos apellidos que suenan "aproximadamente" pero que se escriben diferente son "Smith" y "Smyth" que utilizando este algoritmo obtienen el mismo código.
Para usar soundex primero ha de codificarse el apellido de la persona que nos interese. Un código Soundex consite en una letra y tres número, como podría ser B-536 para representar el apellido "Bender". La letra correponde siempre a la primera letra del apellido sea vocal o consonante.
Para calcular el código se descartan las vocales (A,E,I,O,U) así como las consonantes W, Y y H. Se asigna el número correspondiente sólo a las tres consonante siguientes según la tabla adjunta, teniendo en cuenta las excepciones que a continuación se citan. Si no hay suficientes consonantes a continuación de la primera letra se usarán ceros para completar los tres dígitos. Un nombre que no produzca ninguna codificación numérica podría ser "Lee" que se codificará como L-000.
Excepciones :
Letras repetidas consecutivamente Si el apellido contiene la misma letra repetida consecutivamente sólo se tratará como si fuera una. Así, en el apellido Gutierrez, la segunda "r" ha de descartarse.
Codificación contigua Cuando dos consonantes son codificadas de la misma forma (como por ejemplo "c" y "k") y estos resultan consecutivas también serán tratadas como si se tratase de una. Por ejemplo, en el apellido "Jackson" las letras "c", "k" y "s" se deberían de codificar con el número 2, en este caso, sólo una de ellas lo será. Esta regla ha de aplicarse también a la primera letra (que no se codifica), por lo que en el nombre "Pfister" en los que tanto la "P" como la "f" tendrían el código 1 el resultado será P-236.
Algunos SGBDR (como Oracle) ya tienen incorporada esta función.
Consultar: http://www.tjp.washington.edu/bdm/genealogy/overviewofsoundex.html y http://www.outfitters.com/genealogy/what-soundex.html
Codificación de fonemas
Mientras que el algoritmo soundex se basa en la codificación de cada letra, éste lo hace en la localización de fonemas y la codificación del sonido de éste (la idea es poder diferenciar entre casos como, por ejemplo, "CE" y "CA" para codificar la "C" como "S" o "K"). Este algoritmo está inspirado en el "metaphone" de Lawrence Phillips pero con importantes diferencias basadas en características de lenguas latinas.
La base
es la localización de sílabas y por esto se tiene en cuenta
que las sílabas se componen de:
1. Un
grupo inicial opcional de, como máximo, dos consonantes que sólo
pueden corresponderse con unas limitadas combinaciones (por ejemplo en
español el grupo NS es imposible como inicio de sílaba).
2. Un
grupo de vocales, que pueden o no formar diptongo.
3. Un
grupo final, también opcional, sobre el que no imponemos ninguna
restricción.
El algoritmo recorre la palabra de final al inicio separando estos tres grupos y, al igual que el soundex, descartando las vocales. Una vez localizados los dos grupos de consonantes (si existen) se traducen a los códigos alfabéticos según el sonido que producen. Sólo los cuatro primeros fonemas de la palabra se tienen en cuenta.
¿Por qué de derecha a izquierda? Porque los grupos iniciales siempre están precedidos por alguna vocal. El algoritmo se simplifica en casos en los que no hay consonantes finales o un grupo de dos consonantes iniciales.
¿Cuáles son las vocales? Además de A,E,I,O y U se deberían de incluir las variantes diacríticas (acentos).
¿Por qué hay una codificación diferente para el grupo inicial y el final? En algunos casos puede interesar hacer distinción de pronunciación (por ejemplo, puede interesar que la "LL" se convierta en "y" al inicio de sílaba o en "L" al final, o que la "Y" no se tenga en cuenta al final de sílaba (sonido vocal) pero sí al principio.
¿Por qué mayúsculas y minúsculas? Porque así se podrá decidir si se quiere hacer una conversión más riguorosa o más relajada. Si se hace la conversión a mayúsculas del código obtenido la búsqueda pueden hacerse más relajadas (se encontrarán más casos).
Componente
En el fichero soundex.zip encontrareis :
The standard soundex.
O soundex padrão
Desenvolvido originalmente para o censo de 1880 dos EUA, o soundex é um índice fonético e não alfabético. A sua característica principal é a codificação dos sobrenomes(últimos nomes) baseado “no som” do nome ao invés de como ele é escrito. Por exemplo, sobrenomes que na forma de falar soam iguais mas são escritos de forma diferente, Luiza e Luisa, tem o mesmo código e são indexados juntos. A intenção foi ajudar os censores a encontrarem os sobrenomes mais rapidamente mesmo que retornasse nomes soletrados diferentemente.
Para utilizar o Soundex, os censores tiveram primeiro que codificar o sobrenome da pessoa ou família na qual eles estivessem interessados. O código Soundex consiste de uma letra e três números, como B-536, representando um nome como Bender. A letra é sempre a primeira letra do sobrenome, independente de ser uma vogal ou consoante. Desconsidera-se o restante das vogais(A, E, I, O e U) bem como o W, Y e o H. Associa-se números a cada uma das 3 consoantes seguintes de acordo com o guia de códigos, mas note as exceções discutidas posteriormente. Se não houver 3 consoantes após a letra inicial, use zeros para completar o código de 3 dígitos. Por exemplo, um nome como Lee ficaria L-000 ou Cook seria C-200.
Exceções:
Letras Repetidas Se o sobrenome tiver letras repetidas, elas devem ser tratadas como uma letra só. Assim, no nome Lloyd, o segundo l será ignorado. O mesmo ocorre com o segundo r em Gutierrez.
Letras Lado-a-Lado Um sobrenome pode Ter várias letras lado-a-lado que recebem números diferentes no código Soundex. Por exemplo, o c, k e s em Jackson recebem todas o código 2. Essas letras com o mesmo código devem ser tratadas como uma letra só. No nome Jackson , o k e o s devem ser desconsiderados. Essa regra a primeira letra do sobrenome, mesmo que não tenha sido codificada. Exemplo: o Pf em Pfister receberia o código 1 tanto para o P quanto para o f. Então, nesse nome, o f seria descartado e o código é P-236.
Veja também: http://www.tjp.washington.edu/bdm/genealogy/overviewofsoundex.html
http://www.outfitters.com/genealogy/what-soundex.html
Código para fonemas latinos
Enquanto o Soundex se baseia na codificação de cada letra, esse o faz na localização dos fonemas e na codificação do som desses(a idéia é poder diferenciar casos como CE e CA para codificar o C como “S” ou “K”). Esse algoritmo foi baseado no “Metaphone” de Lawrence Philips mas com importantes diferenças devido as características das línguas latinas.
A base é a localização das sílabas, e para isso as mesmas se compõem de:
1. Um grupo
inicial de, no máximo, duas consoantes que se correspondem com combinações
limitadas
2. Um
conjunto de vogais (formando um ditongo ou não).
3. Um
grupo de consoantes sem restrições.
Esse algoritmo pesquisa da direita para a esquerda pelos grupos mencionados e, como no Soundex, descarta as vogais. Quando esses grupos forem encontrados(se existirem), são traduzidos em um código alfabético que depende da pronúncia. Somente 4 fonemas são incluídos no código final.
Por que da direita para a esquerda? Porque os grupos iniciais estão sempre precedidos de uma vogal. Assim o algoritmo fica mais simples quando não existem consoantes finais ou um grupo de 2 consoantes iniciais.
Quais são as vogais? A,E,I,O e U e suas variações acentuadas. Por acaso existem outras?
Por que existe uma codificação diferente para o grupo inicial e final? Em alguns casos pode haver o interesse em diferenciar a pronúncia(por exemplo: em Espanhol o “LL” pode soar como o Y na posição inicial e como o “L” na final, outro exemplo pode ser o “Y” que soa como uma vogal quando está no final da sílaba).
Por
que maiúsculas e minúsculas? Porque assim pode
se escolher entre uma pesquisa mais rígida ou mais livre. Ao converter
para maiúsculas serão achadas mais ocorrências.
Componente
No arquivo soundex.zip você encontrará :
The standard soundex.
First applied to the 1880 census, Soundex is a phonetic index, not a strictly alphabetical one. Its key feature is that it codes surnames (last names) based on the way a name sounds rather than on how it is spelled. For example, surnames that sound the same but are spelled differently, like Smith and Smyth, have the same code and are indexed together. The intent was to help researchers find a surname quickly even though it may have received different spellings. If a name like Cook, though, is spelled Koch or Faust is Phaust.
To use Soundex, researchers must first code the surname of the person or family in which they are interested. Every Soundex code consists of a letter and three numbers, such as B-536, representing names such as Bender. The letter is always the first letter of the surname, whether it is a vowel or a consonant.
Disregard the remaining vowels (A, E, I, O, and U) as well as W, Y, and H. Assign numbers to the next three consonants of the surname according to the coding guide, but note the exceptions discussed later. Disregard any remaining consonants. If there are not three consonants following the initial letter, use zeroes to complete the three-digit code. A name yielding no code number, such as Lee, would thus be L-000. A name with only one code number, such as Cook, would be C-200.
Exceptions :
Double Letters If the surname has any double letters, they should be treated as one letter. Thus, in the surname Lloyd, the second l should be crossed out. In the surname Gutierrez, the second r should be disregarded.
Side-by-Side Letters A surname may have different side-by-side letters that receive the same number on the Soundex coding guide. For example, the c, k, and s in Jackson all receive a number 2 code. These letters with the same code should be treated as only one letter. In the name Jackson, the k and s should be disregarded. This rule also applies to the first letter of a surname, even though it is not coded. For example, Pf in Pfister would receive a number 1 code for both the P and f. Thus in this name the letter f should be crossed out, and the code is P-236.
See also: http://www.tjp.washington.edu/bdm/genealogy/overviewofsoundex.html and http://www.outfitters.com/genealogy/what-soundex.html
Latin phonemes code
This algorithm
is based in searching phonemes and codified it instead soundex codified
every letter discarding the different sound of a letter depending on the
context (eg. With "CE" and "CA" has the same code but maybe "CE" sounds
like "SE" and "CA" as "KA"). This algorithm is inspired in "metaphone"
by Lawrence Philips but several modifications are introduced based in latin
languages.
A syllable is composed always by:
1. A initial
group (optional) of consonants which can be a consonant or a very limited
group of two consonants (eg. In Spanish the "NS" letters in a initial position
is not pronounceable)
2. A set
of vowels (making a diphthong or not.
3. A consonant
group (optional) with not restrictions.
This algorithm search right to left the searching the mentioned groups and, as soundex, discarding the vowels. When these groups are reached (if any) it translated into an alphabetic code depending on the pronunciation. Only four phonemes are included in the result code.
Why right to left? Because it is easier for reached the consonants groups when there are not second group of consonant or when the initial group has two letters.
Which are the vowels ? Obviously A,E,I,O and U and the their diacritic variations.
Why can be codified in a different way the initial and the final consonant group in each syllable? In some case the pronunciation of a group of consonants is different depending of the position in the syllable (eg. In Spanish "LL" can sound near "Y" in the initial position but like "L" at end, another example can be "Y" which sound as vowel at end of syllable).
Why uppercase and lowercase ? Converting the code into uppercase (or lowercase) or not you can decide if you what a relaxed search (more items found) or not.
Component.
In the soundex.zip file you can get :
After retaining the
first letter of the surname and disregarding the next
letters if they are A, E, I, O, U, W, Y, and H, then: The number Represents the letters 1 B, P, F, V 2 C, S, K, G, J, Q, X, Z 3 D, T 4 L 5 M, N 6 R |