豪鬼メモ

一瞬千撃

ChatGPTで英語の基本動詞と句動詞を自動抽出する

英和辞書における句動詞のカバレッジを上げるべく、基本動詞を自動的に抽出し、基本動詞を含む句動詞の一覧とそれぞれの語義をChatGPTに生成させた。


統合英和辞書における単語のカバレッジはもう十分過ぎるのだが、複数語からなるフレーズのカバレッジにはまだ改善の余地がある。特に、英文読解に重要な、基本動詞から構成される句動詞のカバレッジを上げたい。例えば、基本動詞「make」は「make for」(≒bring)、「make up」(≒compose)、「make out」(≒understand)などなどの句動詞を構成する。現状でも「make」を含むフレーズは100個以上収録していて、大学入試や留学に必要な語彙を遥かに上回るカバレッジに達している。しかし、母語話者が知っているものを全て網羅しているわけではないだろうし、英語の雑誌や小説で出てくるものを全て網羅しているわけでもない。なので、もうちょっとだけ欲を出して、句動詞を集めたい。最近導入した、Chrome拡張のポップアップ辞書で英熟語を先読み検索する機能により、埋もれがちな句動詞の見出し語でも日の目を見る機会が増えたというのも理由としてある。

LLMは、大量のリストを生成するタスクは得意ではない。例えば、「フルーツの名前を全て挙げろ」みたないタスクは不得意だ。一方で、一問一答は得意だ。例えば、「bで始まってaで終わるフルーツの名前は何か」みたいなタスクであれば、「banana」と得意げに答えるだろう。その折衷案として、「aで始まるフルーツの名前を全て挙げろ」「bで始まるフルーツの名前を全て挙げろ」・・・「zで始まるフルーツの名前を全て挙げろ」などのような適当にドメインを区切るpagenation的な技法が有効なこともある。

「句動詞の一覧を全て挙げろ」もLLMが不得意なタスクだ。よって、基本動詞をドメインとして指定して、「makeを含む句動詞を挙げろ」「setを含む句動詞を挙げろ」などなどのプロンプトを発行することにした。そうなると、今度は基本動詞の一覧が必要になる。それをLLMに生成させることは可能ではあるが、やはり大量のリストを作るのは不得意であり、カバレッジが期待できない。なので、既存の統合英和辞書から抽出することにした。ここで、基本動詞とは何かということを再定義する。基本動詞から句動詞を生成するというのが目的なのだから、それに見合う基本動詞は句動詞を持っているはずだ。つまり、多数の句動詞を構成しうる動詞が基本動詞であると定義してもいい。なので、頻度が上位の単語の中から、動詞であり、かつ1つ以上の句動詞を構成するものを抽出した。以下に例を示す。

be, get, go, have, do, come, make, take, look, run, set, work, see, give, play,
keep, put, think, call, show, use, hold, move, back, talk, turn, bring, fall,
stand, live, bear, step, can, start, file, read, tell, send, lead, want, walk,
ask, let, win, write, leave, feel, one, build, power, change, hand, draw, sit,
close, check, base, break, light, cut, drive, sign, stay, page, end, carry, link,
name, find, add, pay, part, time, stop, follow, order, line, lie, know, even,
pull, face, level, grow, buy, sell, throw, push, point, may, die, happen, round,
key, mean, pick, type, team, help, drop, top, stock, pass, try, hit, well, open,
wear, wait, rule, speak, vote, lay, hang, white, clear, switch, hear, become,
black, stick, act, serve, while, measure, roll, eat, reach, price, charge, free,
mark, finish, cast, block, love, size, account, head, figure, beat, force, count

このリストがあれば、あとはプロンプトを発行するだけで句動詞の辞書が生成できる。見出し語と、語義説明と、日本語訳を一気に生成させよう。既存の句動詞をfew-shotの例として使えば、精度を上げることができる。

精度は完璧とは言えないが、そこそこまともな結果を生成してくれそうだ。なので、基本動詞1000語を対象に上記を実行して、合計約14000フレーズの句動詞とその語義と和訳を自動生成させてみた。結果はこちらのファイルに置いておく。見ていただくとわかるが、実際の精度はそんなに良くない。「start a family」みたいな、明らかに句動詞でない慣用句が含まれている。各基本動詞に対して「15個の句動詞を生成せよ」と指示したのだが、そもそもそんなにたくさんの句動詞がない場合、数合わせのために無理やり足したっぽいフレーズが多くなっている。とはいえ、「all」とか「several」とか「a few」とかの指示だと生成数が少なくなってしまうので、精度が下がるにしても「15個」とか多めに指定するのは常套手段だ。後処理でフィルタをかけて怪しいものは捨てれば良い。

正解例を見ると、まともで価値のあるデータもそれなりに多い。従来の辞書データでは「lay about」(To hit somebody or something with a weapon etc)とか「size at」(to determine the size or extent of something)とかは拾えていなかったが、今回のデータでそれを補うことができる。では、どんな後処理を入れれば、ゴミデータと正解データを分けることができるか。いろいろ考えた末、以下の3つのフィルタをかけることにした。

  • 語義が「to」で始まっているものは動詞の語義であるとみなして、それ以外は捨てる
  • to/at/on/from/againstなどの不変化詞を伴うものは句動詞であるとみなして、それ以外は捨てる
  • 自前の言語モデルで出現確率を調べて、低いものは捨てる。その際、「see him off」などの代名詞が挟まるパターンも計上する。

それらを適用したところ、約7000フレーズが生き残ったので、それを英和辞書に加えた。訳語に関しては何ら精査していないが、語義さえあっていれば訳語に一定確率でエラーが有ってもそんなに困りはしないので、よしとする。公開している辞書データには今回の改良は既に反映されているので、基本動詞を含む句動詞やその他英熟語のカバレッジが上がったことを感じてもらえるかもしれない。

基本動詞とは呼ばれないような全ての動詞も句動詞を構成し得るが、基本動詞に着目したのには理由がある。基本動詞の句動詞は意味を大きく変えるが、基本動詞ではない語が構成する句動詞は、元の語の意味をあまり変えない。よって、基本動詞ではない動詞の句動詞は元来の意味と前置詞の意味を考慮すれば解釈できるからだ。例えば、基本動詞「look」の「look after」の場合、「追従して、見る」から「〜の世話をする」を想起するのは難しいので、句動詞としての意味を知っていないと読解に差し障る。一方で、基本動詞ではない「mingle」の「mingle with」の場合、「ともに、混ざる」から「〜と交際する」を想起するのはたやすい。しかも、そもそも「mingle」の第三語義に「交際する」と書いてある。つまるところ、本質的に多義語である基本動詞の句動詞を優先して学習することが大事になる。母語話者が日常的に使うのも基本語を組み合わせた句動詞や慣用句が多い。日本語でも「調子に乗る」は日常会話で使うが、「有頂天になる」とか「横柄な態度をとる」とかは使わないだろう。そして、もし「調子に乗る」の意味を知らないとしたら、「調子って健康状態?メロディ?」となり、「それ乗れるの?」となり、当惑してしまうだろう。

まとめ。基本動詞を抽出してから、それを含む句動詞のリストをChatGPTに生成させた。後処理のフィルタを組み合わせると、そこそこまともな辞書データが作れることがわかった。