背景と目的
LLMが音韻の概念を理解できてるかどうかは、ダジャレなどのユーモア生成、音声認識誤りの訂正などへの応用の観点で重要です。LLMの音韻理解能力はあまり高くないとされています。
自作の音韻検索ベンチマークを用いた検証では、LLMを用いた音韻検索性能は、編集距離ベースのシンプルなルールベースに劣りました。
ただし、この検証では2025年3月時点での非推論モデルを用いて、比較的シンプルなプロンプトで検証していました。
そこで、プロンプトの工夫と推論モデルの活用により、音韻検索ベンチマークの性能をどの程度改善できるかを検証してみました。
方法
比較条件
比較条件は、プロンプト3種類と推論ありなしを組み合わせた6条件としました。
プロンプト
- simple: 発音が似ている順に並べ替える、という最低限の指示のみ
- detailed: 母音一致を優先し、モウラ数や促音・撥音・長音の扱いも明示
- step-by-step: 正規化手順を明示し、ローマ字に変換したうえで母音列を先に見てから子音を見る手続きまでより詳細に指定
推論有り無し
- 推論なし: 推論エフォートをnoneに設定
- 推論あり: 推論エフォートをmediumに設定
その他共通の設定
その他の条件は共通で、以下の設定で評価しました。
- 初期候補は 編集距離ベースの手法で上位 100 件を取得(もし正解が含まれなければ下位のものを正解と入れ替える)
- その候補を GPT-5.4 で rerank
- 評価指標は Recall@10
- ベースの rerank 入力は五十音順に整列した候補集合
結果
推論なし条件でのプロンプト比較
| Prompt | Recall@10 |
|---|---|
| simple | 0.520 |
| detailed | 0.561 |
| step-by-step | 0.524 |
推論あり条件でのプロンプト比較
| Prompt | Recall@10 |
|---|---|
| simple | 0.598 |
| detailed | 0.859 |
| step-by-step | 0.936 |
考察
プロンプトの工夫と推論の組み合わせにより音韻検索精度が大幅に改善
前回の実験で最も高精度だったのは、音響モデルに基づく重み付き編集距離を用いたルールベース検索で、Recall@10 は 0.831 でした。前回はLLMを用いるとこれに大きく劣る結果でしたが、今回の実験では、プロンプトを工夫した推論モデルを用いることで、この前回の最高精度を大きく超えることができました。
プロンプトを変える効果は推論あり条件で大きく現れる
プロンプトを変える効果は、推論なし条件では限定的でしたが、推論あり条件では大きく現れました。
推論あり条件では、プロンプトの複雑さに応じて、トークン消費量も増加していました。実測・試算された消費量は以下のとおりです。simpleとstep-by-stepでは実験中に計測し忘れたので、事後に先頭10件分から全体150件へ線形外挿した試算値となっています。
- simple: 約 56,000 トークン(10件分からの概算)
- detailed: 約 81,000 トークン(実測)
- step-by-step: 約 1,117,000 トークン(10件分からの概算)
LLMは音韻の概念を理解しているといえるのか
今回、指示を複雑(丁寧)したときに推論モデルで性能が大きく向上したものの、推論なしでは指示の複雑さによらず性能があまり変わらなかったことから、LLMは音韻の概念を「感覚的」には理解できていないのではという気がします。
事前あるいは事後の学習によって、この「感覚」が身につき、推論なしでも音韻検索ができるようになるかどうかは、興味深い問いの一つだと思います。
事例検証(ルールベースの結果との比較)
ルールベースの手法で最良だった音響モデルに基づく重みつき編集距離(kanasim)と比べて、LLMでの最高性能(step-by-step, 推論あり)の結果がどのような点で改善しているのかを、事例レベルで検証してみました。
kanasim で失敗し、LLM で成功した件数
003_KanaSim では top10 に正解が入らず、010_03 では top10 に正解が入った事例は 18 件あった。
代表例
| Query | Positive | kanaSim | llm |
|---|---|---|---|
| アウマル | タクマル | top10 圏外 | 1 位 |
| アト | カトウ | top10 圏外 | 3 位 |
| イロイロ | イトウシンゴ | top10 圏外 | 1 位 |
| コエデ | コウエイケツ | top10 圏外 | 1 位 |
| ハクチュウム | マクブルーム | top10 圏外 | 2 位 |
| ウバッテ | グラッデン | top10 圏外 | 3 位 |
各代表例での top10 候補
- アウマル → タクマル
- kanaSim top10: マル、アキマル、アオマツ、アナン、アマーン、アダム、アワツ、ハル、サコマル、ハーマン
- LLM top10: タクマル、アキマル、アニマル、サコマル、カネマル、タムラ、サムラ、マルク、ハウエル、パウエル
- アト → カトウ
- kanaSim top10: アソウ、アノ、アンドウ、アオト、サト、パットン、アイト、オト、アンロー、ウト
- LLM top10: アソウ、アノ、カトウ、サト、マント、バート、ガント、タオ、カノ、サノ
- イロイロ → イトウシンゴ
- kanaSim top10: イトイ、イヨノ、イソノ、イイオ、ティロット、ヒロノ、ロッティーノ、イノコ、イモト、イトウカイト
- LLM top10: イトウシンゴ、ヒロキ、ヒロイケ、イヒロオ、ヒロノ、ティロット、イチロー、キオリ、イリオ、ヒロシマ
- コエデ → コウエイケツ
- kanaSim top10: コウベ、コイケ、コグレ、オゼ、ホセ、ボウデン、トーベ、トベ、ポンセ、ハセベ
- LLM top10: コウエイケツ、コウベ、オコエ、オクエ、コマエ、コセキ、オオダテ、オオエ、ポレダ、ヨネダ
- ハクチュウム → マクブルーム
- kanaSim top10: ハニュウダ、カクゼン、アンシュウ、カクシュンリン、ハクムラ、ハク、カオクリュウゾウ、ハウエル、アクツ、ハンセル
- LLM top10: ハクムラ、マクブルーム、マイクシュルツ、カメイススム、カトウススム、パクチャンホ、ヤギススム、タクマル、サトウススム、ハウエル
- ウバッテ → グラッデン
- kanaSim top10: ダテ、イダテ、カセ、マエ、バーデン、カンベ、タベ、マレン、サンチェ、ヤベ
- LLM top10: ムカエ、フカエ、グラッデン、ブラント、イダテ、ウラタ、トゥサント、ソラーテ、ウカイ、ウジイエ
事例から見える傾向
kanasimよりllmのほうがプロンプトで指示した以下の内容を厳密に守れているように思われます。
- 特殊モーラ(「ン」「ッ」「ー」)を無視
- 母音列を優先して見る
- モーラ数を優先して見る
kanasimでは上記はある程度音響モデルベースの重みに反映されていますが、厳密ではなかったため、その差によってLLMが優位になったようにも見えます。
recall@10であれば、上記のルールを厳密に守るだけでもある程度クリアできてしまう可能性があり、ndcgなど正解の順位も考慮した指標をみたほうが、より論理を超えた部分での音韻理解を見やすいかもしれません。
ベンチマーク自体の精査も含め、音韻理解を計測するより適切な方法や指標を考えることは今後の課題の一つです。
まとめ
今回の実験から、次の点が分かりました。
- 推論なしでは、プロンプトを工夫しても Recall の改善は限定的だった
- 推論ありにすると、プロンプトで音韻の類似性の判断の手順を細かく指示することで、性能が大きく向上する可能性がある。
- ただしこの方法で精度が向上するのは、論理的に算出できる範囲での類似性であり、「感覚的」な音韻理解が必要なタスクもこの手法で解けるかどうかはまだわからない。
参考
実験で用いたプロンプト
プロンプトの条件に応じて、システムプロンプトの冒頭を変えています。
システムプロンプト末尾の例示とユーザプロンプトは共通です。
システムプロンプト冒頭
simple
クエリ(Query)と単語一覧(Wordlist)が与えられます。
クエリと発音が似ている順に、単語一覧を並び替えてください。
出力は上位Top N件のインデックスのみ返してください。
detailed
クエリ(Query)と単語一覧(Wordlist)が与えられます。
クエリと発音が似ている順に、単語一覧を並び替えてください。
- 子音より母音の一致を優先してください
- クエリとモウラ数が同じであることを優先してください。ただし促音(ッ)、撥音(ン)、長音(「ー」や直前のカナの母音と同じ単母音モウラ、エ段のカナの直後のイ、オ段のカナの直後のウ、など)の挿入や削除は許容されます。
出力は上位Top N件のインデックスのみ返してください。
step-by-step
クエリ(Query)と単語一覧(Wordlist)が与えられます。
クエリと発音が似ている順に、単語一覧を並び替えてください。
以下の手順で判断してください。
- 1. クエリと比較対象単語から促音(ッ)、撥音(ン)、長音(ー)を削除
- 2. クエリと比較対象単語をそれぞれ小文字ローマ字に直す
- 3. 同じ母音が連続していれば2文字目以降を削除する。例えば「k a a」は「k a」にする。「カア」は実質「カー」であるため長音の削除に相当。同様に「ei」「ou」についてはそれぞれ「e」「o」にする。これも「エイ」「オウ」は実質「エー」「オー」であるため長音の削除に対応する
- 4. 母音(aiueo)の並びが一致していることを優先し、母音の一致が同程度であればなるべく子音が似ているものを、より発音が似ているとする。
出力は上位Top N件のインデックスのみ返してください。
system prompt の末尾に付与した共通例
システムプロンプトでは前述の部分に続けて、以下の例示が書かれました。
Example:
Query: タロウ
Wordlist:
0. アオ
1. アオウヅ
2. アノウ
3. タキョウ
4. タド
5. タノ
6. タロウ
7. タンノ
Top N: 5
Reranked: 6, 4, 5, 7, 2
user prompt
各問い合わせでは、以下の形式で Query, Wordlist, Top N を与えました。
Query: {query}
Wordlist:
{wordlist}
Top N: {topn}
Reranked: