Конкорданс к тексту А. С. Пушкина

プーシキン・コンコーダンス・プロトタイプを Web に搭載してみた。Wt C++ Web Toolkit に基づく C++ Ajax Web アプリケーションである。連休に入って,Wt を勉強しつつプログラムを書いた。Wt の使い方がまだよくわかっておらず,とりあえず動くものができた程度である。

Динамический Конкорданс к сочинениям А. С. Пушкина からこの Web プロトタイプをお試しいただける。もっともまだ動作をきちんと検証していないし,不安定であるかも知れず,もとより «Евгений Онегин» のコーパスしかロードしていない。そのあたりご了承いただきたい。(5.6 付記:その後,プーシキン全集コーパスを搭載し,URL も 8080 ポート番号を使用せずに済むよう変更した)

プロトページにアクセスすると,テキストボックスとボタンがある。テキストボックスに単語式(求める単語の形を表現する条件)を入力し,поиск をクリックすると,式に合致する単語について,見出語形式で KWIC コンコーダンス表が生成される。見出語は Lemmatizer ロシア語形態素解析ライブラリで機械的に生成したものである。

単語式はそのものズバリの単語を書いてもよいし,メタ文字を組み合わせた正規表現でもよい。メタ文字が含まれないと完全一致探索で単語二分木を探索する。この場合,見出語形式で入力しないと単語がヒットしない。例えば,люблю と入力しても,この語の見出語は любить なのでヒットしない。^люб.* のように正規表現なら,語頭が люб の任意の単語 любить, любоваться, любовница 等々がヒットする。ユーザの入力内容は大文字変換される。case の区別はない。ラテンアルファベット文字はプロトタイプではまだ未調整なので使えない。正規表現の概念については,正規表現 - Wikipedia を参照のこと。

二つの単語式の間に空白を置かず <W12> などと書くと,近接隣接演算ができる。<W数値><L数値> は,それぞれ,単語,行について,数値の範囲内で共起する条件を表現している。これは後置式単項演算子であって,単語式A<Wn>単語式B は,n 語の範囲内で単語式Bと共起する単語式Aの KWIC を求める動作を規定している。単語式Bでは KWIC を生成しないので注意。指定できる数値の最大は 1000 としてある。ここで「行」は,詩の場合は詩行,散文の場合は概ねパラグラフと考えていただきたい。

探索・KWIC 出力例を図 1. に示す。

20120501-concwin.png
図 1. KWIC 出力例

これは,.*блед.*<W5>татьян.* ^П[ЕЁ]СТР.* という 2 式を指定したものである。空白文字で区切って一度に複数の条件を指定することが可能である。式ごとに Выражение: と青地のヘッダが表示され KWIC 表が生成される。一つ目は татьян.* に合致する語の 5 語以内に出現する .*блед.* 適合語の近接隣接演算探索指定である。二つ目は,語頭が П で,Е もしくは Ё がこれに続き,СТР が現われる正規表現探索である。二つの式がそれぞれ 3 件,12 件ヒットしたことがわかる。

KWIC 表はヒットした語を中央に配置し,その前後テクストを含むコンテクストを表示する。赤のボールドイタリックはヒットした語,薄紅背景テクストはヒット行を示す。コーパスの前後行を合わせて 3 行分出力するので,テクストが多いとヒット語を境に複数行になって少し視にくいかも知れない。

KWIC 表の右端には語の位置情報が表示される。例えば 03:0836:000345 という表示は,03 (ジャンル=韻文小説),0836(作品ID=«Евгений Онегин»『エヴゲーニイ・オネーギン』),345(行)である。ジャンル,作品IDの数値は利用者からすれば何の意味も喚起しないわけだけれども,この位置情報には作品の Web ページ(図 2.)へのリンクが埋め込まれており,ここから当該作品のヒット行に直接ジャンプすることができる。また,リンクにカーソルを合わせると,作品名(作品データベース情報)がポップアップで確認できる(図 3.)。

20120501-conceo1.png
図 2. 作品ページ
20120501-concpos.png
図 3. 位置情報リンク

きちんとした版の公開まではもう少し時間がかかりそうである。すべての作品コーパスをロードし,ジャンルを選択できるようにしなければならない。ロシア語キーボードが使えないユーザのために疑似キーボードも用意しなければならない。