豪鬼メモ

一瞬千撃

統合英和辞書の改善

統合英和辞書システムにいくつか改善を加えた。オンライン検索で検索結果の二度引きができるようにして、特にChrome拡張ポップアップ辞書での利便性が向上した。また、オンライン検索とKindle用英和例文辞書の双方で例文の表示を改善した。さらに、オンライン検索で例文の全文検索ができるようにした。Kindle辞書の最新版は以下でダウンロードできる。


まず、Kindle用の英和例文辞書での改善点について述べる。以前はこのような表示だった。

例文辞書だと分かって使っているのだから、各文に「例」ってマークがついているのは無意味であり、その日本語を処理するのは、貴重な思考力の無駄だ。よって、三角マークに変えた。そして、例文中に含まれる見出し語を強調表示するようにした。

強調表示は、太字で表現している。文中のどこに見出し語が含まれるかを一目でわかるようにするのは重要だからだ。慣れてくると、見出し語の周辺だけをまず見て用法にあたりをつけてから、その例文を読むかどうか判断するようになる。特に長い例文の場合にはそうする傾向が強い。そうなると見出し語はかなり目立った方が使いやすい。あんまり目立ちすぎると文全体を読む際に注意力が散漫になるという危惧はあるが、モノトーンのKindleでは色を変えられないので、太字くらいでは目障りになるほどではない。

余談だが、Kindle実機(papaerwhite)の現時点のバージョンのCSS適応にはバグがあることを発見した。"b"要素のfont-styleをitalicにすると、それがその他の要素にも波及してしまい、地の文の全てがイタリック体になってしまう。同様に、"i"要素のfont-weightをboldにすると、それが他の要素にも波及してしまい、地の文の全てが太字になってしまう。本当は強調表示を太字かつイタリック体にしたかったのだが、このバグのせいでできなかった。Kindle Previewerだとこのバグは発生せず、実機だけで起こるので、原因の特定にかなり手間取った。"span"要素とクラスを代わりに使うという手もあるが、データ量の観点であんまりやりたくない。

次に、オンライン検索で二度引きできるようにした話だ。統合英和辞書は「英英和辞書」であり、和訳語リストを提示するとともに、英語による語義説明を提示している。語義説明や例文が英語なので、そこにも未知語が出てくる可能性がある。例えば、"mosquito" を調べると、「蚊」という意味であることは訳語リストからわかるが、「two-winged insect whose female has a long proboscis to pierce the skin and suck the blood of humans and animals」という語義説明も表示される。それを読むと、「proboscis」て何やねんと思うだろう。「長い皮膚を突き刺すための長いproboscis」って言っているのだから針って意味なんだろうとは推測できるが、未知語があれば調べたくなるのが人情ってものだ。検索窓にその語を入れて検索すればいいのだけれど、さすがにだるい。そこで、文中の単語を選択すると、検索アイコンが出てきて、それを押すとすぐに検索できるようにした。

辞書は気軽さが命だ。いかに少ない操作で、いかに小さい心理的負荷で、ユーザの興味を満たす情報を提示できるかが重要だ。語彙力が足りなくて二度引きを余儀なくされることが多い初学者にも、未知語があると調べずには居られない熟練者にも、二度引きが1秒でできるのは嬉しいだろう。

さて、二度引きをするとなると、元の記事に簡単に戻れないと困る。オンライン辞書検索システムを直に使っている場合には、ブラウザバックすればよいのだが、Chrome拡張のポップアップ辞書の場合、ブラウザバックは右クリック(Ctrl+クリック)のコンテキストメニューからやるしかなくて面倒だ。むしろその方法を知らない人の方が多いくらいだろう。そこで、ポップアップ上で専用の戻るボタンと進むボタンが使えるようにした。実際には辞書検索システム自体に実装されていて、検索結果のページの左下隅と右下隅にそれぞれ「戻る」「進む」ボタンが表示されるようになっている。検索結果を見るのに邪魔にならないように、非常に薄い半透明表示だが。

左下隅にある「戻る」ボタンを押すと、検索履歴上の1つ前のページに遷移する。もう一度押せば、2つ前のページに遷移する。戻った状態のページでは「進む」ボタンが表示されるので、それを押すと検索履歴上を進むことになる。検索履歴はサーバ側ではなくブラウザのローカルストレージに保持されるが、最大100件まで維持される。

細かい話になるが、履歴を遡った戻ったページから「進む」以外のアクションをした場合に、履歴をどうするか、というのが悩みどころだ。一つの方法は、新しいアクションを履歴の末尾に単に加えるものだ。そうすると、閲覧した全ての情報が保持されるという利点があるが、欠点もある。例えば、"one"->"two"->"three"という履歴があって、"three"のページから一つ戻って"two"のページを見ている時に"four"を検索するとしよう。末尾に追加する方法では、履歴は"one"->"two"->"three"->"four"になる。そこから戻ると、"three"に至ることになる。"two"->"four"と進んだのに、"three"に戻るのは直感的ではない。一方、戻った状態で進む以外のアクションをした場合、その場所以降の履歴を削除した上で、新しい飛び先を加える方法もある。つまり置換するということだ。例えば、"one"->"two"->"three"の履歴で"two"に居る時に"four"を検索すると、"one"->"two"->"four"になる。その状態で戻れば"two"に至る。この方法の欠点は一部の履歴が消えることだ。UNIXのコマンド実行履歴は追加式だが、多くのWebブラウザの閲覧履歴は置換式だ。辞書検索システムの場合、完全な履歴を保持するよりも、戻ったり進んだりが簡単にできる方が嬉しいので、置換式を採用した。

例文の表示も改善した。Kindle用例文辞書と同様に、例文中にある見出し語が強調表示される。ここでは、斜体、やや太字、青字という表現をしている。Kindleでは文字の太さは二段階しかないが、一般的なブラウザでは無段階に調節できるので、標準である400に対して550というほんの少し太い設定にしている。色が変えられるので、太さだけに頼らなくて済む。色弱アクセシビリティを考えると色だけに頼るわけにもいかないので、組み合わせるのが良いだろう。色は目立たすぎない青墨色にした。

例文中の見出し語のハイライト表示のスタイルは、全体を表示する場合と例文だけを表示する場合で分けている。全体を表示する場合には、例文の部分だけ目立つと煩いので、見出し語は単に斜体にするに留めている。これも心理的負荷の軽減策の一つだ。

例文の全文検索もできるようにした。検索窓の「索引」メニューを「例文」にすると、例文コーパスの全文を対象にした検索ができる。各見出し語の記事に収録している例文は最大8個で、しかも見出し語の訳語が訳文に含まれるものに限定している。その条件に該当しない文にも有用なものがあるかもしれないので、全文検索が役立つこともあるだろう。英語で検索すれば英文から一致を探すし、日本語で検索すれば和訳文から一致を探す。

英語で検索する場合、屈折もきちんと拾ってくれる。例えば、「run」で検索すると「runs」「running」「ran」を含む文も拾ってくれる。それが嫌な場合、検索条件オプションで「完全一致」を選ぶと良い。また、単語境界もきちんと反映される。例えば、「box」で検索して「boxing」や「boxer」や「sandbox」は該当しない。そのような部分一致も拾いたい場合には、「前方一致」「後方一致」「中間一致」を選ぶと良い。

処理速度の都合で例文の全文検索の対象は全部で100万文に限定している。その選定にあたっては、できるだけ長さが丁度よいものを優先するとともに、例文が少ない収録語を多く含むものを優先した。結果として、より多様な解釈になる例文を拾えることが期待される。前回の記事に詳細は書いたが、100万件(英和併せて200万文)を対象とした逐次探索を実用的な時間で完了させるのには苦労した。結局のところ、正規表現エンジンを使っていた部分を全てCの生ポインタ操作で書き直して、1秒未満で検索処理が完了するようにした。もともとC言語やってて良かったなとこういう時だけは思う。


まとめ。統合英和辞書を改良して二度引きや例文ハイライト表示や例文全文検索を実装した。「痒いところに手が届く」作り込みができるのはオープンソースならではというか、自作ならではの利点だ。使っていて気になったところを際限なく直してしまうという欠点なのかもしれないけれど。