ことばの音ラボ

美音スコアの仕組み解説

← 今日の一語(トップ)へ採点ツールへ

美音スコアの仕組み

このページでは、当サイトが使っている「美音スコア」がどう計算されているかを、実際のロジックに沿って説明します。一般的な音韻論の話ではなく、このサイト(analyze.py / tool.html)が実装しているアルゴリズムそのものの解説です。

1. 元データ

百人一首98首の、かな表記テキスト(data/hyakunin.txt)。ここから統計を取っています。

2. かな→(子音,母音)への分解

「か」なら子音k+母音a、「あ」なら子音なし+母音a、というように1文字(1モーラ)ずつ分解します。拗音(「ゃゅょ」)は直前の音と結合、「ん」はN、「っ」はQ、長音「ー」は直前の母音を繰り返す扱いです。この変換表がサイト内ではKANA定数、Python側ではanalyze.pyreg()関数として実装されています。

3. 母音の遷移統計(v_big)

98首すべてを分解したあと、隣り合うモーラの母音ペア(例:「あ→い」)がそれぞれ何回出現したかを数えます。これがdata/stats.jsonv_bigです。現在の集計では総モーラペア数は約2,514件、たとえば「あ→あ」は242回、「お→お」は218回など、ペアごとに出現回数が大きく異なります。

4. スコア計算

採点したい文字列を同じようにモーラへ分解し、隣り合う母音ペアそれぞれについて
そのペアの出現回数 ÷ 全ペア総数
という出現確率を求め、その対数(Math.log)を取って、ペアの数で平均します。未知のペア(百人一首に一度も出てこない組み合わせ)は出現回数0の代わりにフォールバック値0.5を使います。この平均対数尤度が「美音スコア」です。0に近い(マイナスが小さい)ほど、百人一首でよく使われる母音の並びに近いことを意味し、マイナスが大きいほど、百人一首では出てきにくい・現代的な音の並びということになります。

5. 4段階判定

スコア判定
-3.0 以上古典級 ✨
-3.8 以上なかなか 🌸
-4.6 以上現代的 🎵
それ未満ガチャガチャ 🌀

しきい値はtool.html内のgrade()関数にハードコードされているもので、実データを見ながら調整された値です。

6. 検算

「ちびぼーど」というフレーズについて、Python版(analyze.py)とJavaScript版(tool.html)で同じスコア -2.700674422132961 が出ることを2026年7月19日に確認済みです。両者は同じロジックの実装違いに過ぎません。

※このページには広告(アフィリエイト)を含みます

関連するもの