背景と目的
過去の検証「LLMによる音韻理解はプロンプトエンジニアリングで向上するか」では、LLM による音韻検索性能が、プロンプトの工夫と推論あり設定によって大きく改善することを確認しました。
ここから、LLMは音韻をカナ文字列から直感的には理解できていなくても、ローマ字に変換する、母音の一致を確かめる、などのステップを経ることで、音韻検索が可能となることが示唆されます。
そこで、カナ表記だけでなくローマ字表記も最初から併記すれば、推論不要で、精度が上がる可能性もあると考え、検証しました。
方法
比較条件
比較した条件は以下の3つです。
-
kana only
- クエリと候補を通常のカナ表記で与える
-
romaji only
- クエリと候補を
pyopenjtalkによるローマ字表記に変換して与える
- クエリと候補を
-
kana + romaji
- カナ表記と
pyopenjtalkローマ字表記の両方を与える
- カナ表記と
いずれもモデルは gpt-5.4、推論エフォートは none でした。
system prompt は下記で、Example 部分は全条件共通で固定のカナ表記を使いました。ローマ字化やカナ+ローマ字併記の違いは、system prompt ではなく user prompt 側で与えています。本来は、システムプロンプトも条件ごとに変えるべきでしたが、最近のLLMならそのくらいは察してくれるだろうということで横着しています。
クエリ(Query)と単語一覧(Wordlist)が与えられます。
クエリと発音が似ている順に、単語一覧を並び替えてください。
- 子音より母音の一致を優先してください
- クエリとモウラ数が同じであることを優先してください。ただし促音(ッ)、撥音(ン)、長音(「ー」や直前のカナの母音と同じ単母音モウラ、エ段のカナの直後のイ、オ段のカナの直後のウ、など)の挿入や削除は許容されます。
出力は上位Top N件のインデックスのみ返してください。
Example:
Query: タロウ
Wordlist:
0. アオ
1. アオウヅ
2. アノウ
3. タキョウ
4. タド
5. タノ
6. タロウ
7. タンノ
Top N: 5
Reranked: 6, 4, 5, 7, 2
user prompt は Example と同じフォーマットで、条件ごとに入力表現だけを変えて与えました。ローマ字表記はpyopenjtalkplus.g2pにより取得しました。たとえば同じ query / wordlist なら、以下のようになります。
kana only
Query: タロウ
Wordlist:
0. アオ
1. アオウヅ
2. アノウ
3. タキョウ
4. タド
5. タノ
6. タロウ
7. タンノ
...
99. ...
Top N: 5
Reranked:
romaji only
Query: t a r o o
Wordlist:
0. a o
1. a o u z u
2. a n o o
3. t a k i y o u
4. t a d o
5. t a n o
6. t a r o o
7. t a n n o
...
99. ...
Top N: 5
Reranked:
kana + romaji
Query: タロウ(t a r o o)
Wordlist:
0. アオ(a o)
1. アオウヅ(a o u z u)
2. アノウ(a n o o)
3. タキョウ(t a k i y o u)
4. タド(t a d o)
5. タノ(t a n o)
6. タロウ(t a r o o)
7. タンノ(t a n n o)
...
99. ...
Top N: 5
Reranked:
共通設定
その他の条件は前回と同様で、以下の設定を用いました。
- 初期候補は
Vowel Consonant EditDistance (vowel_ratio=0.5)で上位100件を取得 - 正解がその100件に含まれない場合は、下位候補と入れ替え
- 候補集合は五十音順に整列してから LLM に入力
- 評価指標は
Recall@10
結果
| 条件 | Recall@10 |
|---|---|
kana only (gpt-5.4, prompt 008_02 detailed) |
0.561 |
romaji only (gpt-5.4, prompt 008_02 detailed, pyopenjtalk romaji input) |
0.527 |
kana+romaji (gpt-5.4, prompt 008_02 detailed, kana+pyopenjtalk romaji input) |
0.588 |
考察
カナとローマ字の表記で精度が上がった
意外にもローマ字だけだと、カナだけを与えたよりも精度が下がりました。
理由は不明ですが、例えば、ローマ字だけだと文字数が増えるので、クエリと候補の対応関係が難しくなってしまう効果があり、母音(a, i, u, e, o)が明に書かれる効果と打ち消し合ってしまうのかもしれません。
カナとローマ字を併記すると、カナだけよりも精度が上がりました。
これは文字の対応関係についてはカナがヒントに、母音の異同についてはローマ字がヒントになり、LLM的には一番わかりやすかったのかもしれません。
推論モデルには敵わず
カナとローマ字の併記によって、カナだけの場合より精度は多少向上しましたが、一方で、推論ありの条件(0.936)には大きく劣る結果となりました。
LLMにとってローマ字化は、音韻検索のつまづきの本質ではないということなのかもしれません。