多くの英単語は複数の意味を持つが、辞書では重要なものから順に表示することが望ましい。その選択をChatGPTにやらせてみた。
統合英和辞書において最重要のデータソースはWordNetである。WordNetは、同じ意味の単語のグループ(synset)に対して複数の語義を結びつけたデータベースである。残念ながら、その語義は順不同なので、各語にとってどの語義が最も重要かはわからない。そこで、日本語WordNetによって各語義に与えられる和訳が各単語の和訳と一致するものを典型的な語とみなして上位に表示するようにしていた。ただし、この方法だと翻訳精度に影響を受けるし、訳語のちょっとした表記揺れにも影響を受けてしまう。類義語を使って重みづけをする努力などもしたが、どれも間接的なアプローチにすぎず、全ての語でうまくいくというわけにはいかないのが現状だ。
LLMを使うのであれば、もっと直接的に、「どの語義が最も典型的なのか」と聞いた方が確実だと思う。具体的なプロンプトを編み出すにはそれなりの試行錯誤を要したが、例を提示するfew-shotの書式にした上で、その例の順番を変えながら何回か試行して結果を集計してスコアリングすると、そこそこ安定した結果が得られることを見出した。冒頭に挙げたスクショのように、「Select the most typical meaning of the given phrase.」と聞いた上で、例をいくつか示す。試行は5回行うが、その際に例として並べる語の順番と、その語の語義の並び順を毎回変えるようにした。確証はないが、temperatureをやたら上げて複数回実行するよりは、temperatureはほどほどにしてfew-shotの例を変えて複数回実行する方が精度が安定するっぽい。
例えば、「flower」という語は、日本語だと「花」に訳せる。「flower」も「花」も、植物の部位としての花という意味と、花を咲かせる植物という意味と、美しい物という意味があり、訳語の一致から優劣を判断することはできない。人間に選ばせたとしても、部位なのか種類なのかは迷うところだ。「花を贈る」際には花弁だけを意味するわけではないが、「桜の花が咲いた」際には花弁だけについて言及している。とはいえ、原義としては部位としての花弁のことを指すだろうから、私がどれか選ぶならそれだ。ChatGPTに聞いたとしても、few-shotの並び方で答えがころころと変わる。ころころ変わるなら、どれを選んでも正解なので、回答を全て記録しておいて、その割合を重みとしてスコアリングに使えば良い。
実際のところ、9割方の例では5回の試行で全会一致の結果になるっぽい。例えば「cabin」の結果はこうなる。妥当な語義が複数ある場合でも、ちゃんと原義っぽいものを選んでくれるのが素晴らしい。
- small room on a ship or boat where people sleep
- the enclosed compartment of an aircraft or spacecraft where passengers are carried
- a small house built of wood; usually in a wooded area
- confine to a small space, such as a cabin
- 結果: 3, 3, 3, 3, 3
「Lincoln」の例も全会一致でちゃんと大統領を選んでくれる。Lincolnって車もあるけど、WordNetには載っていなかった。
- "long-wooled mutton sheep originally from Lincolnshire
- 16th President of the United States; saved the Union during the American Civil War and emancipated the slaves; was assassinated by Booth (1809-1865)
- capital of the state of Nebraska; located in southeastern Nebraska; site of the University of Nebraska"
- 結果: 2, 2, 2, 2, 2
「juicy」もすこぶるうまくいく例だ。スラング的な用法を避けて、原義をきちんと捉えてくれる。翻訳確率だけで見ると、ネット上にはスラング的な用法の方が多いので、1が第一義になってしまうのだ。
- having strong sexual appeal
- full of juice
- lucrative
- suggestive of sexual impropriety"
- 結果: 2, 2, 2, 2, 2
複数回の実行で評価が分かれる例も挙げておこう。「chest」の結果はこうなる。語義1でも語義2でも良さそうな気がするが、胸部があるのはヒトだけじゃないから、どちらかと言えば語義2の方が適切かな。人間が迷う例ではAIも迷うみたいだ。
- the part of the human torso between the neck and the diaphragm or the corresponding part in other vertebrates
- the front of the trunk from the neck to the abdomen
- box with a lid; used for storage; usually large and sturdy
- furniture with drawers for keeping clothes
- 結果: 1, 2, 2, 1, 2
「victimization」は、加害者になることと被害者になることの両方の意味で使えるらしいが、この場合でもちゃんと評価が分かれている。
- an act that exploits or victimizes someone (treats them unfairly)
- adversity resulting from being made a victim
- 結果: 1, 2, 2, 1, 2
「gay」は、原義としては陽キャという意味だが、1970年代に男性同性愛者を表すスラングとして使われ始め、現在ではその用法の方が多くを占めている。LLMの解釈は揺れたが、結果は原義が多数となった。さすがにここまでスラングの用法が広がるとそちらが典型的とみなされると予想していたが、意外な結果だ。1970年以前の学習データもそれなりにあるのかもしれない。
- full of or showing high-spirited merriment
- bright and pleasant; promoting a feeling of cheer
- someone who practices homosexuality; having a sexual attraction to persons of the same sex
- offering fun and gaiety
- homosexual or arousing homosexual desires
- brightly colored and showy
- given to social pleasures often including dissipation
- 結果: 1, 1, 5, 3, 1
せっかくなので、語義が3個以上あるものは、第二義も選択させてみた。「Select the most typical meaning and the second most typica meaning of the given phrase.」と最初に聞いて、few-shotの例では「Answer: The meaning 3 is most typical and the meaning 5 is second most typical.」てな感じで書いておくと、LLMはそれに倣って回答してくれるようだ。集計の際には、第一義として回答されたら1を足し、第二義として回答されたら0.5を足し、全ての回答でそれらを合計したスコアを出した。その上で、各語において最大のスコアの最大値を100に正規化し、それ以外は最大値に対する割合に100を掛けた整数にした。実際のところ、スコアの具体的な値にはあんまり意味がなく、第一義と第二義以降が順位づけできることと、第一義や第二義の解釈に揺れが生じた際にその度合いがどれほどなのかが分かれば良い。第三義以降もLLMに聞く案はあったが、下位になるほど精度が悪くなるので、第二義までくらいが関の山だろう。第一義と第二義が妥当ならば辞書の利便性としては問題ない気もするし。
結果はこちらのファイルとして置いておく。語、synsetのID、語義、正規化スコアをTSVにしたものだ。利便性のため、語に対して語義が一つしかないから評価しなかったものも、得票数を-1にして追記しておいた。得票数が同じもの同士は従来の統合英和辞書の中での順序を維持しているので、だいたい重要度順に並んでいるとみなせるだろう。このファイルがあれば、簡単な英英辞書ならすぐ作れる。なお、synsetのIDが-nで終わっているものは名詞で、-vで終わっているものは動詞で、-aで終わっているものは形容詞で、-rで終わっているものは副詞だ。
各語において第一義や第二義を選択させる手法の美点は、LLMの精度に影響を受けるとはいえ、全ての語において確実に何らかの判定が行われるということだ。語の和訳と語義の和訳の一致から判断する手法は、一致が全く無かった場合には語義が完全に無作為に並べられてしまう。和訳が一致する場合にはかなりの確率で第一義とみなせるのだが、そのカバレッジは高くない。一方で、LLMの判定はカバレッジが完全だが、精度は劣る。両者は相補的な関係なので、組み合わせることで総合的な品質が向上すると考えられる。
統合英和辞書の検索結果で最初に表示されるのはWordNetの語義であるため、その並び順は非常に重要だ。所望の語義が最初に表示されていれば辞書を閲覧する時間は3秒で済むが、多数の語義の中から所望のものを探すとなると1分かかるかもしれない。もちろん、文脈によってどの語義が当てはまるかは変わるのだが、最も典型的なものが上にある方が検索にかかる時間の期待値は下げられるだろう。また、和訳語のリストを作る際には語義に結びつけられた和訳語を重みづけに使うのだが、典型的な語義が上にあれば典型的な訳語が先に来る確率が上がるので、その意味でも語義の並びは重要だ。地味な改善のようだが、カバレッジを上げる工夫よりもむしろ利便性に直結する改善だと思う。もっと早くこれに取り組んでいればと思うが、LLMの安定性に懸念があったので手をつけていなかった。few-shotを入れ替えて複数回実行して多数決を取ることでかなり安定性が増すことがわかったのが今回の改良に踏み切った理由だ。
今回の変更はKindle用の英和辞書と和英辞書にも多大な影響を与えている。英和辞書ではポップアップのファーストビューに重要語義が表示される確率が格段に上がって利便性が向上しているはずだ。和英辞書では重要語義の和訳語が見出し語に含まれる確率が格段に上がって利便性が向上しているはずだ。以前から最強のKindle用辞書だと自負しているが、さらに良くなったと思う。
まとめ。WordNetの語義の中で、各単語にとって最も典型的なものをChatGPTに選ばせた。few-shotの例を入れ替えながら複数回実行することで、かなり安定した結果が得られた。語義の表示順は辞書の使い勝手に直結するので、これがうまくいったことは喜ばしい。