豪鬼メモ

一瞬千撃

英単語の派生語の半自動抽出

英単語を覚えるにあたって、基本語と派生語をまとめて覚えるのが効率的だ。「decor=装飾」を覚えたら、その動詞化「decorate=飾る」や、それがさらに名詞化した「decoration=装飾」や、それらがさらに形容詞化した「decorational=装飾の」「decorative=装飾的な」「decorated=装飾された」などもついでに覚えたいところだ。

今回、WordNetのネットワークを基盤に手でルールを書きまくって、基本9600語の派生語33846語を抽出した。結果をざっと見た感じ、WordNetの収録語の中では精度も再現率も98%は超えているように思える。このTSVファイルをダウンロードいただきたい。各行が各々の基本語を示し、第1列に基本語、第2列以降にその派生語を並べている。派生語は重要と思われる順で並んでいる。

片言の英語を話すには4000語くらい、英語の本や新聞を読むには10000語くらいを覚えるのが必要だと私は思っているが、それは派生語を入れないで数えた場合だ。今回の調査でわかったのは、WordNetの収録語の範囲では、基本語1語に対して平均3語くらいの派生語が存在するということだ。よって、派生語を含めるなら、会話には16000語くらい、読解には40000語くらいの語彙が必要という言い方になる。ここで主張したいのは、具体的な数ではなく、派生語の割合が非常に大きいということだ。語彙力を語数で語る際には派生語の扱いをどうしているのかを明示することが重要だ。

f:id:fridaynight:20220226180901j:plain


派生語を厳密に定義するのはなかなか難しい。直系の先祖子孫関係にあるというのが派生語の定義だとすると、果たして本当に「decorate」が「decor」の派生語なのか、自信がない。語源に共通性があるのは間違いないだろうが、共通の先祖を持つ親戚なだけかもしれん。辞書によると、ラテン語「decorare」がフランス語「decor」になったのを英語に取り入れたらしいが、英語「decorate」がどちらから派生したのかは、当時の人に聞いたとしてもわからないくらい曖昧な話だ。

別の例も挙げる。「startle=驚かせる」は「start=始める」の派生語とは一般に扱われないが、実際には古英語「start=素早く動く」に反復接尾辞「lian」がついた派生語「startlian」の接尾辞が「le」に簡略化されて「startle」になったそうなので、派生語と言えそうだ。しかし、古英語の「start」と現代英語の「start」はスペルは同じでも意味は異なるので、「startle」が現代英語の「start」の直系子孫かと言われると怪しくなる。おそらく英語の母語話者に聞いても「startle」を「start」の派生語として認識しているかどうかは意見が分かれるところだろう。

合成語と派生語の区別も難しい。「policeman」が「police」と「man」の合成であることは明白だが、「police」の派生語として扱うかどうかは意見が分かれるところだろう。「man」が接尾辞なのか単語なのかがそれを決めることになる。私の感覚では「man」は単語なので「policeman」は合成語だ。合成語も広義の派生語であるとみなせば区別は必要なくなるのだが、合成語を派生語にふくめると、収録語に際限がなくなるという問題がある。「man」の派生語として「gentleman」「chairman」「fireman」「freshman」などなど全部入れていたら大変だ。一方で、「respectful」は「respect」と「full」の合成語ともみなせるかもしれないが、私の感覚では「respect」に接尾辞「ful」がついた派生語だ。同様に「meaningful」と「meaningless」は「meaning」の派生語として扱いたい。しかし、「paperless」って言われると何だか合成語として扱いたくなってしまうので、接尾辞の種類だけで一貫したルールを作るのは難しい気もしてくる。難しいお年頃なのだ。

私は言語学者ではないので、厳密な定義は放棄する。ここでは、派生語を簡易的にこう定義しよう。「スペルが似ていて、おそらく語源に共通性があって、意味も似通っていて、一緒に覚えたらお得な語」であると。「respect」を覚えたついでに「respectful」や「respectfully」は覚えるべきだ。しかし、「gentle」の項目に「gentleman」を記載する必要はない。「gentleなman」であることは馬鹿でもわかるが、単に優しいだけで紳士になれるわけじゃない。「gentleman」は「gentle」とは別個の語として覚えるべきだ。とはいえ、「gentle」の項に「gentleman」が記載されていて損があるわけでもないし、姉妹語や合成語を派生語として扱って多めに抽出することについては許容する。また、「start」と「startle」といった、現代語として意味が共通していない派生語は、抽出できなくてもやむなしとする。まとめて覚える利得が薄いからだ。


以上のことを踏まえて、派生語を自動抽出するアルゴリズムを考える。各単語について、その語幹となる語が発見できれば、その語を語幹の語の派生語とみなせばよい。そのためには、以下のことを行う。

  • 各単語について、特定の接尾辞で終わっているかどうかを確認する。
    • 品詞に応じて、-ful, -ness, -ly, -ate, -izeなどのルールを手で書く。
  • 接尾辞を取り去った語幹と、元の語の関連語を照合する。
  • 元の単語の日本語訳と、語幹語候補の語の日本語訳を照合する。
    • 「装飾する」を「装飾」に正規化するなどして、一致率を上げる。
  • 元の単語の出現率と、語幹語候補の語の出現率を比較する
    • 語幹語の出現率が元の語の出現率と同等かより高いかを調べる。
  • 訳語が一致するか、出現率の優位性が見られれば、その語幹語を採用する。

こんな単純かつアドホックな処理でも、精度は95%くらいで、再現率も80%くらい出る。しかし、無視できない程度の偽陽性偽陰性が含まれるので別の処理と組み合わせねばならない。機械的にやるのは限界があるので、早々に見切って、自分でエラー解析をすることにした。

偽陽性に対処するためには、派生語と語幹となる語を並べたものを一覧して、変な組み合わせがあれば、ブラックリストに入れれば良い。「number」が「numb」の派生語になっていたり、「mansion」が「man」の派生語になっていたりするので、それを消していく。基本的に擬陽性が出るのは語幹が短い場合なので、語幹が7文字以下のものを集中して調べた。それ以上のものでも、頻度が高いものは調べた。

偽陰性に対処するためには、前回までで述べたk-means法のクラスタリング結果を用いた。意味や用法が似通った語は同じクラスタに属するので、派生語も同じクラスタに属することが期待される。そこで、同一クラスタの中で単語間の編集距離を測定し、スペルが似た語があれば、それを目視で確認する。派生語と認められれば、ホワイトリストに入れる。派生語と語幹は同一のレコードとしてマージして、さらにクラスタリングを行うというイテレーションを続ける。乱数種を変えながら20回くらいは行っただろうか。結果として、私が派生語だと思うものはほぼ全て採り尽くした。

手でホワイトリストを作る際に悩ましいのは、派生関係が検出された二つの語のどっちを語幹にするかだ。「respectfully」の語幹は「respectful」であり、「respectful」の語幹は「respect」である。基本的には、短いものを語幹として扱うことになる。しかし、「identity」と「identify」は同じ長さなのでそうもいかない。辞書で調べればラテン語「identias」を親とする姉妹であることがわかるので、どちらが語幹というわけではないというのが答えになる。しかし、一般的には「identity」を覚えたついでに「identify」を覚えるだろうから、前者を語幹ということにしてもよさそうだ。語幹というと語弊があるので、見出し語と呼ぶほうがよいか。そう考えると、頻度が高いものを見出し語にするのが妥当だろう。ということで、目視で派生語を抽出した際に、どちらが語幹か明らかに判断がつかないものに関しては、辞書を引いたり頻度を比較したりして適当に決着をつけた。この作業が最も大変だった。

派生関係はツリー状またはグラフ状のデータ構造として表されるが、冒頭に上げたTSVデータにおいては、単純なkey-value構造に直している。語幹をたどって到達可能な語の中で最も重要なものを先祖とし、共通の先祖を持つ派生語を全て同一の行にまとめてある。このような単純化を経ていないデータが欲しい場合、k-means法で使ったこのTSVデータを参照されたい。各行は各単語のデータでその語自身が1列目で、3列目が語幹のCSVデータになっている。


まとめ。基本的な英単語の派生語を半自動化した手法で抽出した。34000語近くも扱ったのは非常に大変だった割に、自作の単語集の派生語欄を充実させるというくらいしか用法がないのが悲しいところだ。というか抽出する作業過程でやたらたくさん単語を覚えてしまったので、もう単語集いらないんじゃないかと思ったりもする。ともかく、連想単語集を派生語マシマシに更新してあるので、ご興味があればお試しいただきたい。CHECKモードで派生語の一覧が出るビューも実装してある。

繰り返しになるが、「何単語知っていれば十分か」という議論の際には、派生語の扱いを明白にすることが重要だ。単語集を作る際にも、診断テストを作る際にもだ。何せ基本語より派生語の方が圧倒的に多く、その割合は1:3にもなるのだから。そもそも語数だけで語彙力を測るのには無理があるし、必要な語彙は状況に合わせて変わるので数値化することの意義が怪しいという向きもあるだろう。しかし、現実的に学習量や学習成果を見積もるには語数が有力な指標になるのは間違いない。今回の抽出データがその考察の一助になれば幸いである。