Soundex is a phonetic algorithm for indexing names by sound, patented by Robert C. Russell and Margaret King Odell in the early 1900s. It encodes homophones to the same representation so they can be matched despite minor spelling differences. Here, a phoneme is a contrastive unit of sound in a language, and a phonetic algorithm maps orthography (spelling) to an approximation of pronunciation so that sound-alike strings collide.
Terminology. Place of articulation — where in the vocal tract the airflow is constricted (e.g. the lips, the alveolar ridge); manner of articulation — how the airflow is shaped (e.g. complete closure for a stop, turbulence for a fricative); voicing — whether the vocal folds vibrate (
bis voiced,pis voiceless). The Soundex equivalence classes below group consonants that share an approximate place/manner. See../GLOSSARY.mdfor fuller definitions.
The American Soundex algorithm:
B, F, P, V → 1 (labials)C, G, J, K, Q, S, X, Z → 2 (gutturals/sibilants)D, T → 3 (dentals)L → 4 (lateral)M, N → 5 (nasals)R → 6 (rhotic)A, E, I, O, U) and H, W, Y4 characters[id: 2100, name: "b_f soundex labial", weight: 0.25, group: soundex_labials]
b -> f;
[id: 2101, name: "f_p soundex labial", weight: 0.25, group: soundex_labials]
f -> p;
[id: 2102, name: "p_v soundex labial", weight: 0.25, group: soundex_labials]
p -> v;
[id: 2103, name: "v_b soundex labial", weight: 0.25, group: soundex_labials]
v -> b;
[id: 2110, name: "c_k soundex guttural", weight: 0.25, group: soundex_gutturals]
c -> k;
[id: 2111, name: "g_j soundex guttural", weight: 0.25, group: soundex_gutturals]
g -> j;
[id: 2112, name: "k_q soundex guttural", weight: 0.25, group: soundex_gutturals]
k -> q;
[id: 2113, name: "s_z soundex sibilant", weight: 0.25, group: soundex_gutturals]
s -> z;
[id: 2114, name: "x_s soundex sibilant", weight: 0.25, group: soundex_gutturals]
x -> ks;
[id: 2120, name: "d_t soundex dental", weight: 0.20, group: soundex_dentals]
d -> t;
[id: 2121, name: "t_d soundex dental", weight: 0.20, group: soundex_dentals]
t -> d;
[id: 2125, name: "m_n soundex nasal", weight: 0.30, group: soundex_nasals]
m -> n;
[id: 2126, name: "n_m soundex nasal", weight: 0.30, group: soundex_nasals]
n -> m;
Soundex was designed for English names and performs poorly on:
The extracted rules capture the equivalence classes without the mechanical encoding, allowing phonetic matching to benefit from Soundex insights while avoiding its limitations.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |