豪鬼メモ

一瞬千撃

Kindle用英和辞書の分詞派生語対策

Kindle用英和辞書で、現在分詞や過去分詞が独立した見出し語として登録されている場合に語幹の動詞が検索できないという問題に対処した。昨日の今日だが、従来のバージョンを使っている人はぜひ更新してほしい。和英の方は変わっていない。なお、デバイス上の辞書ファイルを上書きした際には、再起動するか、メニューで辞書を選択しなおすことが必要である。


前回の更新にて、「check out」などの副詞的句動詞の意味を調べる際に、核となる動詞「check」だけを選択しても最低限の訳語がわかるようにした。しかし、まだ問題があった。「I checked it out」という文において「checked」を選択すると、動詞「check」ではなく、それから派生した形容詞「checked」が該当して表示されてしまうのだ。動詞「check」の項目には「check out」などの句動詞を載せているが、形容詞「checked」には載せていない。容量の関係で重複して載せるのも困難だ。

そこで、「checked」で引いた場合に「check」と「checked」の両方が該当するように改良した。これでかなり使いやすくなったと思う。「checked」を長押しすると、「check」の語義が表示される。そこには「check out」の訳語も載っている。ダイアログには「1/2」との表記で別項目があることも示唆される。そこで右矢印を押すと、「checked」の語義を見ることができる。これで万事解決だ。下の写真は「unite」と「united」の例だけれども、大抵の場合には語幹動詞の方が派生語より先に表示される。もちろん、各項目で下にスクロールすれば全ての語義が見られる。

以降は実装のうんちく。Kindle用の辞書の索引にはorthographyとinflectionという二つの階層がある。orthographyは正書法という意味だ。本文中の語句を選択すると、まずはorthographyのキーを探し、それがあれば表示する。キーに該当する項目が複数ある場合には、データ上で先に現れた項目を表示するとともに、横矢印で別項目に遷移できるようになる。一方、inflectionは屈折という意味だ。orthographyに該当が一つも存在しなかった場合にはinflectionのキーを探し、そこで最初に該当した項目を表示する。inflectionで複数の項目が該当しても、横矢印で遷移することはできない。

統合英和辞書の従来の版では、各語において、原形の文字列はorthographyとして登録し、屈折形(複数形、三人称単数現在形、現在分詞、過去形、過去分詞、比較級、最上級)の文字列はinflectionとして登録していた。この方法だと、屈折形が独立した見出し語として存在してorthographyのキーとして登録されている場合、語幹の語のinflectionのキーは無視されてしまう。かくして、「checked」は「格子縞の」という形容詞の見出し語として存在しているので、本文中の「checked」を選択しても動詞「check」の語義を見ることはできなくなってしまっていた。

従来の版のHTMLデータの抜粋を見てみよう。idx:orth要素の中にorthographyの文字列を書くとともに、idx:infl要素を中に置いてinflectionの文字列を書く。inflectionはidx:iform要素の属性として書かれるので、HTMLとしてレンダリングした場合には表示されないというカラクリだ。

<idx:entry>
<div>
<span class="word">
<idx:orth>check
<idx:infl inflgrp="verb">
<idx:iform name="present 3ps" value="checks"/>
<idx:iform name="present participle" value="checking"/>
<idx:iform name="past" value="checked"/>
<idx:iform name="past participle" value="checked"/>
</idx:infl>
</idx:orth>
</span>
</div>
<div>チェック, 小切手, 検査, 調べる, 確認, 抑制する</div>
</idx:entry>

Amazon Kindle Publishing Guidelinesには書かれていないが、もしかしてidx:orth要素って複数個持てるんじゃないかと私は思ったのだ。そこで、新しい版では以下のようにidx:orth要素を追加した。idx:orth要素は子ノードのテキストに書くべき値をvalue属性としても書ける仕様なので、非表示にしたまま屈折形をorthographyとして追加できる。

<idx:entry>
<div>
<span class="word">
<idx:orth>check
<idx:infl inflgrp="verb">
<idx:iform name="present 3ps" value="checks"/>
<idx:iform name="present participle" value="checking"/>
<idx:iform name="past" value="checked"/>
<idx:iform name="past participle" value="checked"/>
</idx:infl>
</idx:orth>
<idx:orth value="checking"></idx:orth>
<idx:orth value="checked"></idx:orth>
</span>
</div>
<div>チェック, 小切手, 検査, 調べる, 確認, 抑制する</div>
</idx:entry>

実際にやってみたら、所望の挙動が実現できた。現状では、容量の関係で、頻度で判定して重要な動詞の約5000語のみに対象を絞り、さらにその現在分詞と過去分詞のみをorthographyとして登録している。見出し語として独立する語はたいてい現在分詞か過去分詞だからだ。例えば、「underlie」の現在分詞「underlying」(基礎的な)とか、「figure」の過去分詞「figured」(模様付きの)とかだ。というか、重要な動詞の多くは分詞が派生語になっているので、動詞の屈折形を選択して動詞の意味を調べたいのに派生語の語義が表示されて苛つく問題には困っていた。そして、句動詞は「make」「check」「figure」などの重要な動詞で形成されることが多いので、屈折した句動詞が本文中に現れた場合には困る場合も多かった。今回の更新で、その問題は見事に解決された。めちゃ便利。

改めて考えてみるに、「checked」を調べた時に「格子縞の」という派生語の意味が表示されるのと、「調べる」という語幹動詞の意味が表示されるののどちらが嬉しいだろうか。もちろんそれは場合によりけりで、語句の難易度や本文の文脈や利用者の語彙力に依存する。とはいえ、今回の新バージョンを自分で使ってみた限りでは、語幹動詞が表示される方が嬉しいことが多い。なぜなら、「I'm checking it out」や「I've checked it out」のように、現在進行系や過去形・過去分詞形として本文に現れることの方が多いからだ。特に小説は地の文が過去時制や過去完了時制で語られるのが普通なので、動詞を調べて過去分詞の派生語の意味が表示されるのはもどかしい。今回の更新によって、両方表示できるようになったのは嬉しい。加えて、図らずも、語幹動詞の方が先に表示されることが多くなっている。というのも、アルファベット順で辞書に収録しているので、「ing」や「ed」が付加されている語より、付加されていない語の方が先に来るからだ。とはいえ、「made」の方が「make」よりも先に来たり、「studied」の方が「study」よりも先に来たりするなど、例外も多い。まあ矢印で切り替えられるから順番はどっちでもいいのだけれど。

余談だが、Kindleの辞書で任意の見出し語を検索する方法を知らない人は多いと思う。私もちょっと前まで知らなかった。やりかたは簡単で、辞書データを書籍として普通にKindle上で表示してから、画面右上の虫眼鏡アイコンで検索すればよい。索引データを持っている書籍の場合、最初の何文字かを検索窓に入力すると、前方一致する見出し語の候補を提示してくれる。候補の一つ選べば、その語義にジャンプする。


この方法を使えば、Kindleの辞書を、ボップアップ辞書としてではなく、普通に電子辞書として利用することができる。紙の本を読む際にも利用できて便利だ。スマホで各所の辞書サイトを使ってもいいし、我らが統合英和辞書オンライン検索を使ってもよいのだが、スマホをいじると気が散るし、電池の減りも気になるだろう。Kindleだけ持って缶詰になる場合にはこの方法を知っておくとよい。

ところで、Kindle実機のポップアップ辞書のダイアログのスクロール判定にはバグがある。たまに、語義に続きがあるのにも関わらず、上下のスクロールバーが出ないで、スワイプしてもスクロールできない状態になるのだ。下の写真の「seriously」の語義にはまだ続きがあるけど、このままだと読めない。

そういう時は、選択した語の近くにある小さいダイアログの三点リーダを押してから「Open Dictionary」を選択するとよい。そうすれば、辞書に飛んで、全ての語義を読むことができる。

このバグはたまにしか起こらないんだけど、いつまで経っても直してもらえない。発生する条件もよくわからない。該当の語の辞書データの語義の分量を変えても、同じ語では起こるっぽい。でも、他の語のデータを削除したり追加すると起こらなくなったりもするので、謎だ。根が深い問題なのか、単にテスト漏れなのか知らないけれども、頼むよAmazonさん。