美音スコアの仕組み解説
このページでは、当サイトが使っている「美音スコア」がどう計算されているかを、実際のロジックに沿って説明します。一般的な音韻論の話ではなく、このサイト(analyze.py / tool.html)が実装しているアルゴリズムそのものの解説です。
百人一首98首の、かな表記テキスト(data/hyakunin.txt)。ここから統計を取っています。
「か」なら子音k+母音a、「あ」なら子音なし+母音a、というように1文字(1モーラ)ずつ分解します。拗音(「ゃゅょ」)は直前の音と結合、「ん」はN、「っ」はQ、長音「ー」は直前の母音を繰り返す扱いです。この変換表がサイト内ではKANA定数、Python側ではanalyze.pyのreg()関数として実装されています。
98首すべてを分解したあと、隣り合うモーラの母音ペア(例:「あ→い」)がそれぞれ何回出現したかを数えます。これがdata/stats.jsonのv_bigです。現在の集計では総モーラペア数は約2,514件、たとえば「あ→あ」は242回、「お→お」は218回など、ペアごとに出現回数が大きく異なります。
採点したい文字列を同じようにモーラへ分解し、隣り合う母音ペアそれぞれについて
そのペアの出現回数 ÷ 全ペア総数
という出現確率を求め、その対数(Math.log)を取って、ペアの数で平均します。未知のペア(百人一首に一度も出てこない組み合わせ)は出現回数0の代わりにフォールバック値0.5を使います。この平均対数尤度が「美音スコア」です。0に近い(マイナスが小さい)ほど、百人一首でよく使われる母音の並びに近いことを意味し、マイナスが大きいほど、百人一首では出てきにくい・現代的な音の並びということになります。
| スコア | 判定 |
|---|---|
| -3.0 以上 | 古典級 ✨ |
| -3.8 以上 | なかなか 🌸 |
| -4.6 以上 | 現代的 🎵 |
| それ未満 | ガチャガチャ 🌀 |
しきい値はtool.html内のgrade()関数にハードコードされているもので、実データを見ながら調整された値です。
「ちびぼーど」というフレーズについて、Python版(analyze.py)とJavaScript版(tool.html)で同じスコア -2.700674422132961 が出ることを2026年7月19日に確認済みです。両者は同じロジックの実装違いに過ぎません。