豪鬼メモ

一瞬千撃

中心語判定による英熟語の単語への付与

英和辞書の各単語の説明において、その単語を含む熟語を載せるにあたり、今までは前方一致と後方一致のみをサポートしていた。例えば、「dry」に関しては前方一致の「dry ice」などや後方一致の「make dry」などを収録していた。それだと「part」に関して「take part in」を収録できないという問題があった。今回はこれを解決した。


英和辞書で熟語や句動詞の意味を調べる際には、中心となる語を選択するのが一般的な作法である。「participate in」の中心は「participate」であり、「mind your own business」の中心は「business」である。中心となる語はだいたい先頭か末尾にあるので、それを基準にして、連接確率が高いフレーズを調べて収録していた。言い換えれば、基準となる語の前や後ろに語をつなげてもフレーズ全体の出現率が下がりにくいものを収録していた。例えば「carry」の出現率は0.418%で、「carry out」の出現率は0.210%なので、つまり「carry」の後ろに「out」が来る確率は実に50.4%もある。これはもう定型句と言って差し支えない。この場合に基準となるのは「carry」で、それに対して「carry out」を収録することになる。一方、「out」の出現率は非常に高く、それに比べると「out」の前に「carry」が来る確率はそれほど高くはないため、「out」に対して「carry out」を収録することはない。

上述の方法で多くの熟語や句動詞は拾えるのだが、中間に中心語が来るものは拾えないという問題があった。例えば、「get carried away」(調子に乗る)という表現はよく小説に出てくるけれども、従来のアルゴリズムでは「carry」あるいは「carried」に対して「get carried away」を関連付けることはできなかった。なので、もうちょい真面目にやることにした。まず、複数語からなる収録語句を発見した場合、その中で最も出現確率が低いものを中心語とみなす。出やすい語が出る事象よりは、出にくい語が出る事象の方が情報量が多いからだ。「get」は1.99%、「carried」とその原型「carry」は0.418%、「to」は34.56%なので、この場合は明らかに「carry」が中心であるとみなせる。「beat the clock」(時間に間に合う)などのようにどっちが中心か微妙な感じのものもあるが、従来の前方一致・後方一致と組み合わせれば問題ないだろう。どの語を基準にするにせよ、語の出現率とフレーズ全体の出現率の比率が一定範囲内であれば、その語とフレーズを関連付ける。

多少面倒くさいのは、「get carried away」のように中心語が屈折している場合があることだ。「carry」の分詞を調べて「carried」を探さないといけない。なお、たとえ「carried」が派生語として独立見出し語になっている場合でも、関連フレーズは原形の「carry」の方に載せる。以前に述べた、屈折派生語を調べても原形の見出し語が該当する機能が有効に働くので、熟語は原形の方に載せたほうが使いやすい。

ということで、定型句の中心語を判定して、その中心語の語義に載せるという改善を行ったところ、単語に付与しているフレーズ数が5%ほど伸び、61267フレーズになった。見出し語としての収録語数が変わっているわけではない。ただ、ポップアップ辞書としての利便性を考えると、中心語を長押しするだけで調べられる方が便利だ。複数語からなるフレーズを選択するのは面倒だし、そもそもどこからどこまでか熟語なのかわからない場合も多いからだ。

さて、この新しいデータをもとにKindle用英和辞書を書き出したわけだが、ここである問題に気づいたというか、思い出した。Kindle実機(paperwhite)のポップアップ辞書は、スクロール量に限界があるのだ。どうもこのポップアップのスクロール判定はバグっているっぽいのだが、一つの見出し語の語義が長いと、全体をポップアップウィンドウ内でスクロールして表示することができずに、途中で切れて下のほうが見られなくなってしまう。実際には、短くてもスクロールできないときもあって、具体的に何行分までスクロールできるのかはよくわからない。語を選択したときのサブメニューの「辞書を開く」から辞書本体に飛べば全ての語義が読めるのだが、これはちょっと不便だ。

となると、付与する関連フレーズの数に制限を設けたくなるのだが、いろいろ考えてそれはしないことにした。確かにポップアップで全体が読めないのは不便で、一番下にある屈折形などのメタデータが読みたい時に困ることがある。しかし、屈折形などの文法情報は英作文に必要なもので、読解に必要なものではない。読解に重要なのはむしろ句動詞の方で、それを削ってしまうのは本末転倒だ。「carry」にとって「get carried away」は23番目の頻度なので、収録数に制限を設けるとまず捨てられてしまう。本文中の「get carried away」を選択すれば意味を調べることはできるが、「be carried away」「get easily carried away」などの変化に対応するには、やはり中心語で検索できることが望ましい。

ポップアップにてスクロール範囲の限られた状況でできるだけ有用な情報を提示するには、重要なものほど上の方に置くことが望ましい。最初の1行に見出し語と発音、その次に訳語リスト、それに続いて最大8件の基本語義を置くのは鉄板だ。その次に派生語や句動詞などの関連フレーズが来て、最後に屈折などの文法情報が来る。読解のための辞書としてはこれが最適だと、自分の経験から強く思う。さて、最近の一連の改良で句動詞がやたら充実してしまったので、できるだけ重要な関連フレーズから順に並べるのが望ましい。アルファベット順ではなく、重要度順になっているのは表示欄の制限が理由だ。いつかKindle実機のバグが修正されたとしても、やはり重要度順で掲載している方がスクロール操作の数が減って使いやすいだろう。

関連フレーズを出現確率順に並べるアルゴリズムは従来から実装していたのだが、それに中心語の選別からなる候補を加えるとどうなるかを考えてみる。中心語の屈折に対応していなかった従来のアルゴリズムでは、単にフレーズの出現率の降順で並べれば良かった。今回は屈折語を起点とする場合もあるので、評価関数を変更して、中心語の出現率とフレーズ全体の出現率の比率の降順で並べることにした。屈折形の場合には出現率に補正が入るので、屈折形を含むフレーズの不利はこれで解消される。かくして、「get carried away」の比率は0.12%ということになり、23位に落ち着いた。というか、表示数ではなく容量の制限で出現確率が低いものは捨てていたので、こうしないと「get carried away」は拾えなかった。

関連フレーズを多く付けた結果、各語が使うデータ量が肥大したので、容量の制限から、収録語数を減らさざるを得なくなってしまった。以前は16万語を収録していたが、15万語に削減した。カバレッジは減ったが、句動詞が調べやすくなる方が重要だ。15万位付近の「Mars probe」(火星探索)とかの複合語は、収録されていなくても別に「Mars」と「probe」を引けば意味はわかるし、「Passaic」(ニュージャージー州の街パセーイク)とかの固有名詞も、知らなくて全く問題ない。

関連フレーズは例文のようにも機能し、語の理解を補う上でも有用だ。「mind」の関連フレーズは以下のものだが、これだけ読めば、たとえ直接の語義説明がなかったとしても、「mind」が「心」「精神」という意味の名詞であり、「気に留める」という意味の動詞としても使うということが推測できるだろう。

minding 看視, 観視
minded 志向の, 傾向の, する気があって, 心の
in mind 念頭に置いて, 記憶する, 念頭に置く, 念頭に置くよう
keep in mind 念頭におく, 念頭に置く, 念頭に置いておく
never mind 気にするな, 非ず, 心配するな, 気にしない
in the mind 脳内
mind out 注意する, 気をつける, 気を付ける, 気を付けて
bear in mind 念頭におく, 念頭に置く, 心に留める, 記憶している
come to mind 思い浮かぶ, 頭に浮かぶ, 思いつく, 思い浮ぶ
mind reading 読心術
have in mind 思いつく, 思いやる, 思いおよぶ, いう
open mind 心を開いて, 心を開いていること, 偏見のない心
state of mind 精神状態, 気持ち, 心理状態, 心境

なお、容量を減らす努力の一環として、語義が一つで、かつ中心語の関連フレーズとしてその語義が収録されたフレーズは、見出し語としての収録語から削除することにした。しかし、そうすると、本文中でそのフレーズを選択した場合に検索できなくなって困る。よって、中心語の関連フレーズで、見出し語になっていないものは、中心語の屈折索引として登録した。これによって、例えば本文中の「bear in mind」を選択したとして、そのフレーズが見出し語になっていなかったとしても、「mind」の結果が表示されて、その中にある「bear in mind」を発見できるようになった。索引のレコード数は増えるが、収録語が減る分だけ、全体的なデータ量は減る。

まとめ。頻度による中心語の判定を行うことで、単語に対するそれを含む関連フレーズの付与のカバレッジがより向上した。前方一致、後方一致だけではなく、中間一致も拾えるし、屈折していても拾えるようになった。ポップアップ辞書だと、中心語を調べるだけでそれを含むフレーズが調べられるのはマジで便利だ。「"Don't get carried away", said the girl.」なんて文が本文に出てきたら、「get carried away」の意味を知らないとまず適切に理解できないだろう。考えてみると、日本語の「調子に乗る」という言い回しも熟語的なのだが、知らないとまず理解できないので、そういった砕けた言い回しの意味も辞書で調べられるようにするのは非常に重要だ。最強への旅はまだ続く。