編碼 | 語音 | 比對

> phonex | encoder <

// Phonex - 用於姓名比對的進階語音編碼

0 個字元
[EXTENDED]

延伸長度編碼

最長 8 碼編碼,更好區分相似姓名。

[CONSONANT]

智慧子音分組

依發音將相近的子音歸為同一組。

[FLEXIBLE]

彈性編碼長度

支援尾端補零的可變長度編碼。

>> 技術說明

Phonex 的運作方式

Phonex 是一種為姓名比對最佳化的語音編碼演算法。它保留首字母,對 PH→F、KN→N 等字母組合套用特殊規則,依發音將相近子音分組,並在不影響子音分隔的情況下移除母音。最終產生 4–8 碼編碼,在允許拼字差異的同時,盡可能保留姓名的語音特徵。

為什麼選擇 Phonex

  • 更佳處理不發音字母。
  • 改良的子音分組策略。
  • 針對英文姓名最佳化。
  • 能容忍常見的拼字差異。
  • 較長的編碼帶來更精確的比對結果。

Phonex 編碼範例

子音對應表:
B,P,V,F → B
C,K,Q,G,J → C
S,Z,X → S
D,T → D
L → L
M,N → M
R → R

特殊組合:
PH → F,KN → N
GH → 移除
WR → R

範例:
STEPHEN → SDBM0
  S-T[D]-[e]-PH[F→B]-[e]-N[M]

ASHCRAFT → ASCRF0
  A-S[S]-H[移除]-C[C]-R[R]-A[移除]-F[B]-T[D]

KNIGHT → NCD0
  KN[N]-I[移除]-GH[移除]-T[D]

>> 常見問題

什麼是 Phonex?

Phonex 是一種從 Soundex 等傳統方法演進而來的語音編碼演算法,用於將姓名轉換為便於比較的編碼。它在處理子音群、不發音字母以及英文姓名常見的拼字差異時表現更佳。

Phonex 與 Soundex 有何不同?

Phonex 使用更精細的子音分組,對 PH、KN、GH 等特殊字母組合有額外規則,會產生 4–8 碼(而非固定 4 碼)編碼,並更完整保留姓名的語音結構。

什麼時候適合使用 Phonex?

當你需要在多種拼字形式的英文姓名之間進行比對時,例如家譜研究、客戶資料庫去重,或任何依賴姓名語音比對的情境,Phonex 都非常實用。

Phonex 有哪些限制?

Phonex 主要針對英文姓名優化,對其他語言的姓名效果可能較差。對於非英文姓名,可以考慮 Double Metaphone 或 Daitch-Mokotoff 等演算法。

// 對比

演算法YearPreprocessingOutput
Soundex1918nonefirst letter + 3 digits
Phonex1996 (Lait & Randell)letter-combination rules (e.g. WR → R, MB → M, TCH → CH), trailing S removalfirst letter + consonant codes

// algo

Phonex = Soundex + pre-processing
1. upper-case, keep A-Z only
2. replace letter combinations (WR -> R, MB -> M, TCH -> CH ...)
3. drop a trailing S after a consonant
4. keep first letter, code the remaining consonants
5. skip vowels and repeated codes, pad / truncate

>> 更多問題

問:什麼是 Phonex?

答:Phonex 是 Lait 與 Randell 於 1996 年提出的語音演算法,先對姓名做預處理(如替換字母組合)再編碼,從而改進 Soundex。

問:何時應使用 Phonex 而不是 Soundex?

答:當姓名中存在含 WR、MB、TCH 等字母組合的拼寫變體時。預處理可減少純 Soundex 的誤比對。

問:Phonex 能取代模糊搜尋嗎?

答:不能。Phonex 只是針對讀音相近姓名的粗粒度預過濾,要精確排序通常需配合 Levenshtein 等編輯距離。