更新版
「発音可能のみ」アルゴリズムの詳細
従来の「母音3連続 / 子音3連続を除外するだけ」の簡易判定から、日本語ローマ字として読めるかをより重視した多段フィルターへ更新しました。
1. 何が強化されたか
- 単純な連続文字判定だけではなく、モーラ単位に近い切り分けで評価します。
ka shi kyo ryu など、日本語ローマ字で自然な並びを優遇します。
n を撥音 ン として扱える位置を判定します。
- 子音連続・母音比率・語頭/語尾の不自然さも併せて除外します。
- 結果表示時に、通過した候補だけ カタカナ読みに変換 して右側へ表示します。
2. 判定の流れ
Step 1: 基本条件
- 英字のみを対象にします。
- 母音比率が極端すぎる候補は除外します。
- 母音3連続、子音4連続以上は除外します。
Step 2: 語頭/語尾チェック
q 単独開始や、極端に不自然な終端パターンを排除します。
Step 3: ローマ字パース
kya / sho / ryu / chi / tsu / fu などを優先的に認識します。
- 読めない並びが含まれる候補は除外します。
Step 4: スコア評価
- 自然な音節ほど加点します。
- 促音
ッ の多発などは減点します。
- 平均スコアが基準を超えた候補だけ採用します。
3. カタカナ読み生成の考え方
通過した候補は、同じローマ字パーサーを使ってカタカナへ変換します。たとえば次のように扱います。
sakura → サクラ
shiro → シロ
ryuka → リュカ
nnska → 不採用 (不自然)
この読みは辞書ベースではなく、ローマ字規則に基づく自動推定です。そのため、人名・固有名詞・特殊表記では完全一致しない場合があります。
4. ランダム性の強化内容
- Fisher-Yates シャッフルを採用し、
sort(() => Math.random() - 0.5) より偏りを減らしました。
- 利用可能な環境では Web Crypto API を使い、より強い乱数で並べ替えます。
- 同じ候補の重複出力を避けるため、生成済み候補を記録します。
5. 注意点
これは「日本語ローマ字として、比較的読みやすいか」を見る実用的な近似判定です。
- 辞書照合ではないため、実在語かどうかは判定しません。
- 特殊な人名表記、外来語表記、古いヘボン式・訓令式の揺れには完全対応ではありません。
- 入力文字の構成によっては、発音可能候補が少ない、または見つからない場合があります。