豪鬼メモ

一瞬千撃

Kindle用英和例文辞書

Kindle用の英和辞書の亜種として、英和例文辞書を作った。読書中に出会った言葉の他の用法がどうしても気になってしまった場合に便利だ。以下のMOBIファイルをダウンロードしてKindle実機にインストールしてほしい。通常の英和辞書と併用するとお得だ。


Kindle用の英和辞書は絶賛公開中であるが、そこに例文も載せたくなった。Chrome拡張のついでに強化した例文機能が意外に便利だったからだ。基本的に読解の際には本文に例文があるので辞書の例文を読む必要性はほとんどないのだが、語義説明だけでは十分に意味が把握できない時には例文を読むと理解が深まる。意味だけではなく、文法的な機能やどんな文脈で使うべきかについても理解が深まる。

なので、できれば英和辞書にも例文を記載したいのだが、いかんせん、容量の制限でそれは不可能である。既に100MB付近の制限一杯までデータを詰め込んでいるので、これ以上何も加えられない。ならば、辞書を分けてしまえばいいということになった。Kindleのポップアップ辞書は、ポップアップ内の右下のバナーをクリックして辞書を切り替えられる機能がある。なので、いつもは普通の英和辞書を使いつつ、英和辞書の語義をポップアップで調べてから用例が気になったときだけ、そこから例文辞書に切り替えればよい。

いちおう、例文辞書単体でも最低限の英和辞書として機能するように、IPA発音記号と和訳のリストだけは通常の英和辞書と同じように表示して、その下に例文のリストを載せるようにした。実際に使ってみるとわかるが、意外に例文辞書だけでも読解が進められる。「辞書なんて引かないで英語の例文だけ見て語彙を増やせ」っていうスパルタンな主義の人達も一定数いるくらいなので、それに比べれば対訳文が見られるのは甘々だとも言える。とはいえ、やはり読解には普通の英和辞書の方が便利だけども。

以下、実装のうんちく。といっても、特に難しいこともなく、英和辞書を生成するプログラムにちょっと手を加えて、語義の代わりに例文を載せるようにしただけだ。例文は辞書検索サイト用の元データに既に載せているので、それをそのまま吐き出せばよい。辞書に載せる例文の選定にこそ気を遣ったので、それについて述べる。データソースは田中コーパスをメインにして、WikipediaやCCAlignなどの対訳コーパスと、Webから適当にクロールした簡単そうな英文とその翻訳を混ぜている。読みやすさを考えて、膨大な候補の中から、以下の条件に合うものを優先して選択するようにしている。

  • 品質が比較的良いっぽい田中コーパスWikipedia対訳コーパスのデータは優先する
  • 英文の文字数がなるべく60文字に近いものを優先する
  • 和訳文の文字数がなるべく30文字に近いものを優先する
  • 見出し語が英文中の前の方に出てくるものほど優先する
  • 辞書内の訳語が和訳文に出てくるものほど優先する。ただし、同じ訳語の採用数は限定する。

例文を選択するアルゴリズムにはそれなりの試行錯誤をしたのだが、最も厄介なのは長さのジレンマであった。長い例文ほど情報量が多くて文脈をつかみやすいが、読むのに時間がかかる。短い例文ほど読みやすいが、情報量が少なくて文脈がよくわからない。その妥協点として、60文字くらいが最適であろうという経験則を導いた。

となると、それより短過ぎるものも長過ぎるものも捨ててしまいたくなるが、長さで絞り込むと訳文の品質で絞り込む余地がどんどん小さくなるのが問題となる。ネット上のオープンなデータでは、どうしても誤訳や機械翻訳の結果やエロサイトの検索用文字列などの低品質なデータが混ざってしまう。なので、適当なフィルタを書いてなるべくまともそうなものを残すようにするのだが、予め長さで絞り込んであるとそれが辛くなる。仕方ないので、長さと品質の双方のスコアを混ぜてからソートして上位を取るようにしたのだが、いかにも折衷的で美しくないものになってしまった。

訳語の一致の判定にも気を使った。「run」の訳語として「走る」があるとして、それは「走った」にも一致させたいので、比較対象の文の部分文字列を全て正規化しながら比較する必要があった。さらに、辞書にないが訳語っぽいものを動的に検出する努力もした。例えば、英文に「run」が現れた場合に和文に「走る」が現れる確率と、任意の文に「走る」が現れる確率を比較して、比率が著しく高ければ、その二つの言葉は互いに訳語かもしれない。なお、和文に「走る」が現れた場合に英文に「run」が現れる確率を見る逆方向の判定もやると統計的機械翻訳と同じ仕組みになり、辞書に収録している訳語はそうして選定されている。今回の動的判定では敢えて逆方向の検査をしないで、再現率を高めた。よって、誤検出の確率がそれなりにあり、「free trial」の訳語候補として「30日間」が検出されたりする。しかし、そうして検出した訳語候補は辞書に載せるわけではなく例文の選定に使うだけなので、多少のエラーは許容できる。

とまれ、約13万個の見出し語に対して例文をつけることができた。大学受験レベルの単語ならば99%以上がカバーされていると思う。各語で最大8個の例文をつけたが、総数は約52万文なので、平均すると一語あたり4文ということになるか。しかし、実際のところ平均にはあまり意味はない。基本語には最大数の例文がつけられるが、難解語にはあまり例文がつかないというロングテール現象が起きているからだ。ここでもジレンマがある。"presume", "punish", "attend" くらいの基本語に関してはそもそも読解中に例文が読みたくなることはないにもかかわらず、それらの例文のカバレッジは高い。一方で、"irredeemable"(度し難い)とか"billet"(割り当て地)とか"scepter"(王笏)とかの難解語こそ例文が欲しくなるが、それらの例文のカバレッジは低い。ロングテールの例文数を上げるにはコーパスの規模を大きくするしかないが、そうすると低品質のものが混ざってまた新たな問題が起こる。

英英辞書だと割り切って対訳コーパスではなく単言語コーパスを使えばいくらでも例文を集められる。しかし、私の英語力では、英語の文だけ見せられても、ストレスになるだけであまり嬉しくない。特に難解語の例文に関しては、文脈も難解で共起語の語彙も難解なことが多いので、英語だけで理解するのは難しい場合が多い。よって、訳文は必須だ。となると、現状くらいのチューニングが現実的な落とし所だと思っている。実際のところ、"irredeemable"も"billet"も"scepter"もちゃんと例文がつけられているしね。重要度順位80503位の"malingerer"(仮病を使ってサボる人)とか、重要度順位230039位の"syllabicate"(音節に分ける)とかになるとさすがに例文がないけども、そんなのは読解中に出てくる確率も低いし、自分から使う合理性もないので、割り切って諦める。

今回の辞書の良い点は、単語だけではなく重要熟語にも例文がちゃんと付けられていることだ。「get away」(去る、逃げる)とか「put away」(片付ける)とかの受験必須物はもちろん、「get carried away」(調子に乗る)とか「go stedy」(男女交際する)とか「work up」(興奮する)とかの小説によく出てくるようなものも結構な確率で例文がついている。欲を言えば「chime in with」(調和する)とかの現状で扱えていないものにも対応したいのだが、今後の課題だ。というか、そこまでいくと辞書に収録するのではなく対訳コーパス全文検索をした方がいいような気もする。

まとめ。Kindle用英和例文辞書を作ったので、使ってみてね。例文を読み始めるとそっちに意識が行ってしまって元々の本の読解がなかなか進まないというのもまたジレンマだ。読解中に例文辞書を使うのは効率の面ではおすすめできない。しかし、精読が必要でどうしても例文が読みたいという場合には、Kindle以外のデバイスを取り出すよりは、Kindle上で完結する方が効率的だとも言える。とりあえず例文辞書も持っていて損はないだろう。Kindleだけを持って、喫茶店で実用書を読んだり、ソロキャンプしながら小説を読んだり、ツーリングの休憩中に新聞を読んだりしたいじゃないか。