ローカル環境で Wikipedia 全文検索

Hyper Estraier による索引化と検索

EPWING 形式の Wikipedia データをモバイル PC や iPhone、iPad などの携帯端末に入れてオフラインで利用している方も多いだろう。 Project Bookends の尽力で、数式・図版・表組み・クロス検索・ユニコード外字拡張表示・あいまい検索等の拡張が組み込まれた EPWING 変換済みデータが自由にダウンロードできるので、FreePWINGWikipedia-fpw を利用して各自で変換する作業さえ必要なくなった。私自身も利用させていただいている。

さて、先日より遅蒔きながら Hyper Estraier を利用した全文検索を試してきたが (ここここ)、EPWING 版によってローカルでの Wikipedia 検索が可能となるのと同様に、Hyper Estraier を利用することでも手頃に優れた Wikipedia 検索がローカルで実現できる (cf. 作者によるデモサイト: 超弩級 Wikipedia 検索)。しかも高速な全文検索が可能なので、Logophile などの辞書検索ソフトや EPWING の後継規格 ONESWING で実現される辞書データの全文検索機能のように (おそらくは同等かそれら以上に高速に)、快適な検索環境が実現するだろう。

Wikipedia のダンプデータ は XML 形式で自由にダウンロード可能であるが、Hyper Estraier の配布用アーカイブファイル (hyperestraier-1.4.13.tar.gz) にはその XML アーカイブからドラフトデータを抽出する Ruby の変換スクリプト (/hyperestraier-1.4.13/lab/wpxmltoest) が同梱されているので、これを利用させてもらう (Macports からインストールした場合はない?)。変換にはかなりの時間を要するので、実行は就寝前などに。ダンプされた文書ドラフトは全部で 5.89 GB の容量があった (2011/06/28 版)。ちなみに Bookends からインストールできる Wikipedia 日本語版の EPWING 変換済みデータの最新版 (2011/06/12 版) のカラー図版入りは 6.55GB、図版無しは 1.73GB。

あとの手順は 以前の記事 と同じだが、今回は次のように属性インデックスを張っておいた。

$ cd /Library/WebServer/Documents/wiki/jp
$ estcmd create -attr @title str -attr @mdate seq -attr @size seq casket
$ estcmd gather -pc UTF-8 -cl -fe -il ja -lf -1 -xl -sd -cm -cs 800 -um casket data
 ...
estcmd: INFO: finished successfully: elapsed time: 2h 9m 1s

869218 件の文書と 5525675 個の単語登録で 2 時間 9 分。作業環境は Mac OS X (10.6.8, 2.5GHz Intel Core 2 Duo, 4 GB 667 MHz DDR2 SDRAM), Hyper Estraier (1.4.13) である。estcmd gather のオプション -fe によって処理対象の全てのファイルを文書ドラフトとして扱う。デフォルトでは拡張子で文書形式が判断され、サポート外のものは無視される。-cs は、キャッシュメモリのサイズをメガバイト単位で指定する。デフォルトは 64 MB。-xl は 300000 件以上の文書のインデックスを作成する場合に付加する (Wikipedia ダンプデータ 2011/06/28 版 で 869218 件)。

また、内容検索だけでなくタイトルで検索することもあるだろうから estseek.cgi の設定ファイル (estseek.conf) の formtype の値は Web サイト用の入力フォーム “Web” に設定しておいた。

ブラウザ (Firefox 3.6.18) で動作を確認してみる。

https://skalldan.files.wordpress.com/2011/07/wpid-wiki_top.png

「梵我一如」の検索結果。0.033 sec!

https://skalldan.files.wordpress.com/2011/07/wpid-wiki_bonga.png

以上でローカル環境での Wikipedia 全文検索が可能となった。

Emacs で Wikipedia 全文検索

Emacs から Wikipedia を検索するには EPWING データをダウンロードして Lookup から検索することで可能となるが (「Emacs で EPWING」参照)、せっかくなので lookup 1.4 + media の Hyper Estraier のインデックス検索を行うエージェント (ndest エージェント) を利用してみる。これで Wikipedia の全文検索が Emacs からも可能となる。なお以下の作業は Emacs 22.3 (Carbon Emacs パッケージ) と Emacs 23.3 (X11 版) とで動作を確認している。Mac OS X 依存の作業は特に行っていないので、Windows や Linux でも同様に動作すると思う。

;; .lookup.el
(setq lookup-search-agents
      '((ndest "/Library/WebServer/Documents/wiki/jp/casket")))

ndest エージェントを複数設定している場合は辞書名がすべて “Hyper Estraier” となるので dictionary-option で適宜変更しておく。

(lookup-set-dictionary-option "ndest+/Library/WebServer/Documents/wiki/jp/casket:est" ':title "超弩級 Wikipedia 検索")

M-x lookup で起動すると、

https://skalldan.files.wordpress.com/2011/07/wpid-wiki_lookup_title.png

Lookup の辞書一覧に『超弩級 Wikipedia 検索』が追加された。先ほどと同じ単語「梵我一如」を調べてみる。

https://skalldan.files.wordpress.com/2011/07/wpid-wiki_lookup_bonga.png

ブラウザ上での検索結果同様、見出し語以外の語がヒットしているのが確認される。”ātman” など Unicode 文字を含んだ語もそのままの表記で検索可能だ。

https://skalldan.files.wordpress.com/2011/07/wpid-wiki_lookup_atman.png

大文字と小文字の違いは無視されている。ダイアクリティカルマーク付きの文字なども同様のようだ (“ātman” でも “atman” でも同様の結果が返る)。

EBdump の出力を HTML に変換する ebd2html を利用すると他の EPWING 辞書の索引も多少は楽をして作れそうだが、外字の問題もあるだろうし、意欲が湧いたらまたチャレンジしてみようと思う。しかし、今更 EPWING の話題は古すぎるのだろうか。参考にするサイトは軒並み数年前のものばかりだ…

【おまけ】岩波仏教辞典第二版 全文検索

以前の記事岩波仏教辞典第二版 を Apple の「辞書.app」のフォーマットに変換して利用してみたことについて書いたが、作業過程として StarDict 用の tabfile を作っていた。この tabfile は一行に一つずつ見出し語を置き、TAB 区切りでその説明文が続く非常に扱いやすいファイルだ。このファイルから検索語とその定義を抽出して Hyper Estraier で索引を作ることはそれほど難しくない。岩波仏教辞典の全文検索が実現するわけだが、この辞書は有名なタームに関してはサンスクリット語、パーリ語、チベット語などの原語も載せている。したがって、語彙数は限られるがインド学仏教学用語の “Sanskrit-Japanese, Pali-Japanese, Tibetan-Japanese Dictionary” のような使い方もできる。

https://skalldan.files.wordpress.com/2011/08/wpid-iwanami_lookup_brahman.png

Wikipedia の話題に比べるとはるかにマイナーだが、【おまけ】として付け加えておく。しかしこの ndest agent を含め lookup 1.4 + media は本当に素晴らしい。もしも EPWING 辞書を持て余しているなら、これを使用するためだけでも Emacs の操作方法を覚える価値は十分ある、と思う。

【追記 2011/07/05】

一体どれだけの人にこの情報が役に立つのか分からないが、自分用のメモとして岩波仏教辞典の索引化について追記しておく。

この辞書では見出し語のそれぞれの原語をあげるときに、例えば [s:dharma], [p:dukkha], [t:dGe lugs pa] 等となっており、これでは検索するときに “dharma” “dukkha” “dGe lugs pa” などは引っかからない。半角スペースを開けて対処した。i.e. “s: dharma”, “p: dukkha”, “t: dGe lugs pa”.

【おまけ 2】翻訳名義大集 全文検索

翻訳名義大集 (Mahāvyutpatti) は Glossaries for Buddhist Studies で HTML や StarDict, Babylon など各種形式で公開されているが (ライセンス: Creative Commons Attribution-ShareAlike 3.0)、岩波仏教辞典同様に Hyper Estraier と Lookup の組み合わせでテストしてみた。この辞書の内容にはサンスクリット語、チベット語、中国語を含んでいるが、サンスクリット語についてはローマナイズ表記とデーヴァナーガリー文字 (देवनागरी) の表記、チベット語についてはワイリー表記とチベット文字 (བོད་ཡིག་) の表記が、それぞれ含まれている。テストしてみたかったのは、はたしてどの程度デーヴァナーガリー文字やチベット文字で検索できるかだったが、以下のように問題なく検索できるようだ。

検索語 “स्कन्ध” で “रूपस्कन्धः” がヒットしている様子 (ヒット箇所は赤文字)。

https://skalldan.files.wordpress.com/2011/08/wpid-skandha_deva.png

検索語 “ཕུང་པོ་” で “གཟུགས་ཀྱི་ཕུང་པོ་” がヒットしている様子。

https://skalldan.files.wordpress.com/2011/08/wpid-skandha_tib.png

もちろん “rūpaskandha” や “gzugs kyi phung po” などのローマナイズ表記や、「色蘊」などの漢字表記、”1832″ などの登録ナンバー (榊エディションの番号) などでも検索できる。ただ、”rūpa*” と検索してもこの “rūpaskandha” はヒットしない。ワイルドカードによる前方一致等の検索はできないようだ。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s