豪鬼メモ

一瞬千撃

ChatGPTに発音記号と語義毎の例文を作らせる

統合英和辞書にて発音記号がない見出し語や例文がない語義が結構あったので、ChatGPTに生成させて、それらを収録した。Kindle用の英和辞書にも反映させてある。(追記:発音記号クイズも作った)


統合英和辞書はWiktionaryWordNetやその他のオープンなデータを統合して作られているが、発音記号は主にWiktionary英語版とWiktionary日本語版から抽出している。それらによって主要な語はカバーできているのだが、派生語やマイナーな語は発音記号がないことの方が多い。例えば「related」「donate」くらいならカバーされているが、「relatedly」「donative」などの派生語は発音記号がないし、「klatch」「dulce」とかのマイナー語にも発音記号がない。そこで、ChatGPTに生成させた。プロンプトは非常に単純だ。

出力から正規表現で発音記号を抽出すれば完成だ。全部の収録語でこれを流すと金がかかりすぎるので、主要収録語の上位3万語の中でWiktionaryの発音を持っていないものに絞って生成させた。「Genghis Khan」/ˈdʒɛŋ.ɡɪs ˈkɑːn/ とかの有名な固有名詞もある程度はカバーされている。Wiktionaryでは意外に簡単な語でも発音記号が漏れていることがあるので、主要語の発音記号のカバー率がほぼ完全になるのは素晴らしい。例えば「margarin」はWiktionaryに項目がないので発音記号がなかったのだが、読み方が /ˈmɑɹdʒərɪn/ (≒まーじゃりん)であることは知っておきたいところだ。そこそこ英語に慣れてくるとスペルから発音がだいたい予測できるので、発音記号を確認することを怠りがちだが、簡単な語ほどローマ字的な読み方をすると伝わらないので、未知語を引いたら発音を確認する癖はつけていた方が良い。英文読解をするにあたって発音なんて知らなくても全く問題ないが、わざわざ未知語を辞書で引いたのなら、一度は発音を練習してみて損はない。その方が記憶にも残るし。あと、「warrior」と「worrier」の発音って違うのかとか、気になった時に調べられないと気持ち悪いというのもある。

Kindle用辞書にも発音記号が載っていて、元の辞書と同様に主要3万語のカバー率はほぼ100%になった。Kindle用辞書の場合、容量制限の関係で、マイナーな派生語は語感の語に同梱する処置が取られている。例えば「draconinanly」は出現頻度が低くて収録基準に満たないが、「draconinaly」を調べると「draconinan」が代わりに表示されるように索引を作っている。その際には /dɹeɪˈkoʊ.ni.ən/ が表示されるので、常識的に考えて「draconinanly」は /dɹeɪˈkoʊ.ni.ənli/ と読むことは類推できるだろう。紙の辞書だったり自分で検索する辞書なら二度引きして「draconian」の方を引けばいいのだが、ポップアップ辞書だとそうはいかないので、自明な派生語は語幹と統合してしまう方が使いやすい。

発音記号の精度に関してだが、まあまあってところだ。ChatGPTに生成させた発音記号とWiktionary経由の発音記号を比較すると、半分以上は同じだが、微妙に異なることも多い。ストレス記号の有無だったり、rの発音の有無だったり、母音がシュワ音 /ə/ になったりならなかったり、長母音と短母音だったり、いろんな種類の差異がある。とはいえ、完全一致はしなくても、どちらの発音をしてもその語であると認識されそうなものがほとんどだ。Wiktionaryも所詮は素人が書いたものなので、ChatGPTの方がむしろ実勢に即しているものもあるだろうし、そうでないものもあるだろう。時代や地方によっても違うだろう。そもそもIPA発音記号で完全な発音の再現ができるわけでもない。なので、少なくとも非英語話者である私はどちらがマシなのかは判断できない。ChatGPTのデータを私が見る限りは、「絶対これ間違いだろ」ってのは見かけなかったのだが、ネイティブが見ればいろいろ粗はあるだろう。とはいえ、だいたい合っていると言って差し支えはないと思う。


「run」には「走る」という意味があるが、「(プログラムなどを)実行する」「(会社などを)経営する」とかいった意味もある。WordNetにはそれぞれの語義が英文で説明されているが、それぞれの語義の例文をChatGPTで作らせてみた。

何度か書いたことだが、WordNetはSynsetという名前のレコードを収録したデータベースだ。Synset毎に、それに属する英語のフレーズと、英文での語義説明と、例文が含まれている。例えば、「01104852-v」というIDのSynsetには、以下のデータが紐づけられる。「v」は品詞が動詞だという意味だ。

  • 所属するフレーズ:beat, beat out, crush, shell, trounce, vanquish
  • 語義: come out better in a competition, race, or conflict
  • 例文: Agassi beat Becker in the tennis championship ; We beat the competition

ここで問題が発生する。所属するフレーズにはたくさんの語句があるのに、例文には「beat」のものしかない。「shell」の例文はない。例文の「beat」の部分を単に「shell」に置き換えて「Agassi shelled Becker in the tennis championship」とかいう文を生成することも考えられるが、大意が同じでも語を入れ替えるとニュアンスが違ってくるので、最適な例文とは言い難い。それに、同一語義の語句の中からどれを使うべきか検討するときに、例文が同じだと参考にならない。ならば、LLMに情報を与えて例文を生成させてみようと思ったのだ。より自然な文を生成してくれることが期待される。

ChatGPTに各語句の例文を作らせてみた。語句と品詞と語義と類語を使って以下のようなプロンプトと応答を得る。

Generate three 12-word example usages of an English verb "shell" which means "come out better in a competition, race, or conflict" whose synonyms are "beat", "beat out", "trounce", "shell", "vanquish".
1. Despite being the underdog, the young boxer managed to shell his opponent in the final round.
2. The talented athlete managed to shell her opponents in every single race of the tournament.
3. The veteran chess player was able to shell his opponent in just 20 moves, leaving him stunned.

同じことをBardにもやらせてみた。プロンプトは全く同じだ。

Generate three 12-word example usages of an English verb "shell" which means "come out better in a competition, race, or conflict" whose synonyms are "beat", "beat out", "trounce", "shell", "vanquish".
1. The boxer shelled his opponent in the final round to win the match.
2. The tortoise shelled the hare in the race and won by a nose.
3. The army shelled the enemy stronghold and forced them to surrender.

「12語の」と指定したのに12語以上の例文を生成してくれるのはご愛嬌だが、ChatGPTもBardも良い仕事をしている。どちらも「boxer」を題材に選んでいるのは偶然の一致とも言えるし「shell」の攻撃的な語感は「boxer」と一緒に使うのが自然だとも考えられる。いずれにせよ、どちらの場合も例文として十分に使える自然な文を生成できていると言える。文法的にも問題なさげだ。

どちらが良いかは私には判断がつかないが、とりあえずAPIで簡単に生成できるChatGPTの結果を辞書に収録した。今回も主要語に絞って生成を行い、金を節約した。これで主要語のほぼ全ての語義に例文がつくので、意味の把握が容易になるだろう。例文を読むだけで大体の意味がわかってしまうのは人間の偉大さよ。


まとめ。ChatGPTに発音記号と語義毎の例文を生成させて、辞書に収録した。精度が完璧でないのは承知だが、WiktionaryWordNetに該当のデータがある場合にはそれを使い、ない場合にだけ自動生成の結果で補完するという使い方なので、「ないよりはマシ」ということで、積極的に活用してみた。この勢いでLLMが進化していくなら、あと数年も経つと、辞書全体を生成できる時代が来るかもしれないな。