Soundexエンコーダー
RobertもRupertも同じR163になります。先頭の文字を残し、続く子音の音を3桁の数字にし、足りない桁は0で埋めるので、発音の近い名前が同じ4文字のコードに集まります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 名前
- Robert
- コード
- R163
- 正規化値
- ROBERT
- 長さ
- 6
アメリカ式Soundexは、米国国勢調査や家系調査で使われてきた古典的な音声索引で、人名や姓を4文字のコードに変換します。先頭の1文字を残し、子音の音のグループを表す3桁を付けます。発音は似ていても綴りが異なる名前—RobertとRupert、SmithとSmythe—は同じSoundexコードになることが多く、職員や家族史家、レコード連携スクリプトが最初のクラスタキーとして今も使います。このSoundexエンコーダーは空でない名前文字列を受け取り、ラテン文字を正規化し、標準の数字対応表と隣接規則を適用して、符号化に使った正規化形とともにコードを返します。
アメリカ式Soundexが1文字+3桁のコードを組み立てる仕組み
Soundexはまず名前を大文字化し、ラテン文字AからZだけを残します。数字・空白・ハイフン・句読点は符号化前に除去されるため、余分な空白のあるフォーム欄でも動作します。正規化後の先頭文字はそのままコードの先頭になります。
以降の各文字は数字に写すか捨てます。B・F・P・Vは1、C・G・J・K・Q・S・X・Zは2、D・Tは3、Lは4、M・Nは5、Rは6です。母音A・E・I・O・UとYは数字を出しません。
HとWも数字を出しませんが、母音と違い同じ数字コードの連続を打ち切りません。そのためAshcraftとAshcroftはHを挟んだS/C群がまとまり、どちらもA261になります。同じ数字を持つ隣接文字は一度だけ寄与するため、Jacksonは長い2の列ではなくJ250になります。
最大3桁を集めたあと不足分はゼロ埋めし、成功結果は必ず4文字になります。テストに固定できる古典例として、RobertとRupertはともにR163、RubinはR150、WashingtonはW252、KnuthはK530、EulerはE460があります。
家系調査や名簿での使いみち
家系研究者や地域史プロジェクトは、綴りが一貫しない国勢調査や乗客名簿の姓をまとめるためにSoundexエンコーダーを使います。CRMやカスタマーサポートの道具は、完全なファジー検索エンジンを立てずに似た姓を人手レビュー前に束ねられます。
歴史的索引アルゴリズムの授業デモには、教師が数字表を黒板に示しているあいだに生徒がブラウザから呼べる決定的なオラクルが必要です。データ清掃ノートブックは、エンティティ解決の特徴量を作るとき小文字やMetaphoneの隣にSoundex列を出せます。エンジンが拒否した検証失敗は残高を消費しません。
元の名前は他のKIT parse項目と同じ保持規則に従い、アルゴリズムが隔離間で完全に決定的なので結果をCIフィクスチャに固定しても安全です。本ツールは名前と短いラベル向けで、数メガバイトの文書向けではありません。
後段で別の音声・暗号方式が必要なときだけ他のテキスト用具と組み合わせ、アメリカ式Soundexは独自ランディングに置き、SEO意図を鋭く保ち、4文字コードのできること・できないことをガイドが正直に述べ続けます。
活用例
家系調査と国勢調査の姓のグループ化
歴史記録で綴りが違っても発音が似る家族名を、4文字のアメリカ式Soundexコードを比較してまとめます。
CRMでの名前ファジー事前照合
フォーム送信のたびに完全なエンティティ解決スタックを入れず、似た顧客姓を人手レビュー用にバケット化します。
よくある質問
アメリカ式Soundexで名前を符号化するには?
応答の code に4文字のSoundex値(RobertならR163)が入ります。
なぜRobertとRupertは同じコードになるのですか?
Soundexは似た子音を同じ数字に写し、先頭1文字と3桁だけを残すため、発音の似た名前はファジー照合のため意図的に衝突します。
SoundexはMetaphoneやNATOフォネティックと同じですか?
いいえ。 本ツールはアメリカ式Soundexのみ(1文字+3桁)です。Metaphone・Double Metaphone・NATO綴りアルファベットは別アルゴリズム・別ランディングです。
HとWが母音のように文字を区切らないのはなぜですか?
アメリカ式Soundexでは、同じグループの子音の間に母音があると両方が数えられますが、HとWではそうなりません。そのためAshcraftはA261になり、SとCは同じ数字で、間にHしかないので1回だけ数えます。
Soundexのコードが常に4文字なのはなぜですか?
先頭の文字と最大3桁の数字だけを残す決まりだからです。数字が足りなければ0で埋め、多ければ残りを捨てます。そのため、どのコードも同じ長さで比べられます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/soundex \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Robert"}'const res = await fetch("https://api.kit.forhosting.com/enc/soundex", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"name": "Robert"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/soundex",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"name": "Robert"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/soundex", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"name":"Robert"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"name":"Robert"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/soundex", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"name": "Robert"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.soundex",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
空入力、名前欠落、A–Zを含まない文字列は invalid_input となり、呼び出し側は偽のコードを作らず空フォームをフラグできます。無料のブラウザ経路と前払いAPIは同じ純粋なparseロジックを共有するため、授業デモと本番パイプラインでRobertとRupertの結果が食い違うことはありません。
入力契約、空フラグ、応答形、よくある誤り
Soundexを暗号化や人物の一意識別子として扱わないでください。無関係な姓が意図的に衝突し、その衝突こそファジー照合の利点であり欠陥ではありません。検索意図がsoundexエンコーダー、アメリカ式Soundex、名前の音声コードのときこのランディングを選び、NATOフォネティック綴り・Metaphone・一般的な暗号ツールは別意図として別ページに置きます。純粋なA–Z以外のアクセント付き文字は他の非文字と同様に除去されるため、ソースにダイアクリティカルがある場合でその文字を参加させたいときはASCII正規化形を渡してください。符号化したい人名または姓を、必須の文字列フィールド name に入れたJSON本体をPOSTしてください。nameの欠落、文字列以外、長さゼロ、空白のみ、ラテン文字を含まない文字列はすべて invalid_input となり、前払いAPIでは課金されません。これは製品が約束する空入力フラグ経路で、空白コード付きの成功応答ではなく厳密な検証エラーとして表現されます。成功時の応答には、4文字のSoundex値 code、形を推測せず分岐できるよう method は american_soundex、元文字列を返す name、実際に符号化した大文字A–Z列の normalized、成功時は常に false の empty、除去前の元の文字数 length が含まれます。
Soundex APIが役立つ場面と料金の仕組み
単発確認や授業には無料のブラウザツールを、バックエンド・サーバーレス関数・SDKが残高のもとで安定契約を必要とするときは前払いKIT APIを使い、成功1件あたり $0.002 です。ペイロードはWorker isolateのitem呼び出しに適した通常の名前長に保ってください。
連携の活用例
授業での音声索引デモ
RobertとRupertがR163を共有し、空フォームは明確に失敗することを、APIと同じ無料ブラウザ経路で示します。
技術的な質問
名前が空のときはどうなりますか?
リクエストは invalid_input で失敗します。欠落・空白・文字なし入力は空としてフラグされ、前払いAPIでは課金されません。
Soundexエンコーダーは無料ですか?
ブラウザツールはお使いの端末で無料です。API呼び出しは成功1件あたり $0.002 の前払いKIT残高を使い、検証失敗は課金されません。