koyori (Bilingual KWIC)

koyori は word alignmentと呼ばれる技術を可視化するツールです.文対応の取れた対訳コーパスを利用して,入力されたキーワードの対訳語を自動的に決定します.そして,原言語は入力されたキーワード,対象言語を対訳語を基に KWIC(KeyWord In Context)形式で表示します.二ケ国語を同時に KWIC 表示するので,この表示方法を Bilingual KWIC と我々は名付けました.

動作環境

Ruby 1.8以上が必要です.Vine Linux と cygwin 上での動作を確認しています. ただし,Sary 1.2.0 以上及び sary-rubyが必要です.

インストール

あらかじめ,Sary 及び sary-ruby をインストールしておいて下さい.

koyori-1.2.tar.gz

koyori 自体のインストールには,setup.rb を利用しています.上記のファイルをダウンロード後,解凍し,作成されたディレクトリに移動して下さい.コマンドラインで以下のように打ち込んで下さい.UNIX 系 OS ではおそらく root 権限が必要になります.

ruby setup.rb

インストール先を変更したりすることもできます.その場合は ruby setup.rb --help を実行してみてください.

なお,インストールしたファイルとは別に,~/.koyorirc(設定ファイル),~/.koyoridic_je,~/.koyoridic_ej(辞書ファイル)を作成します.

対訳コーパスの準備

koyori を利用する場合には,あらかじめ対訳コーパスを準備する必要があります.対訳コーパスは,原理上はどのような言語同士でも可能ですが,現在は日本語と英語を想定しています(それ以外の言語については後述).

対訳コーパスは単なるテキスト・ファイルで,各言語ごとに1ファイルです。1つのファイルに複数の言語が書かれているものではありません.そして,各コーパス・ファイル中で,行単位でお互いに対応が取れている必要があります.英語の1文を日本語で2文に翻訳しているような場合は,日本語の2文を同じ行に続けて記述して下さい.

そのファイルを,make_koyori_index filename とすると,filename.kyr と filename.kyr.ary というファイルが出来ます. filename.kyr は filename の先頭に行番号を付加したもの,filename.kyr.ary は sary が利用するファイルです.また,日本語のファイルか英語のファイルかでオプションが異なります.デフォルトとは英語用ファイルですが,オプションを明確に示すなら,-e, --english, -w, -word です.これで単語単位でインデックスを付加します.

一方,日本語の場合は,文字単位でインデックスを付けますから,-c, --character, -j, --japanese を付けて下さい.さらに,漢字コードの指定も必要です.filename の中の文字コードが EUC なら --euc, SJISなら -s, --sjis, UTF8なら -u, --utf8 を付加して下さい.デフォルトは UTF8 です.なお,元のファイルの漢字コードが何であれ,作成された filename.kyr の文字コードは UTF8 になります.

なお,日本語ファイルについては,いわゆる全角文字だけを使用して下さい.ascii 文字などが入っていても,word alignment は正常に動作しますが,その後の KWIC 表示がずれて見にくいものになります.

サンプル・ファイルとして,以下の三つのファイルを用意してあります.

なお,オリジナルは,それぞれ以下のページにあります

これらをダウンロードした後,以下のようにしてインデックス・ファイルを作成して下さい.

make_koyori_index -e the_rights_of_the_child.en.txt
make_koyori_index -j the_rights_of_the_child.ja.txt

その後,koyori を実行して,日本語ファイルとして the_rights_of_the_child.jp.txt.kyr を,英語ファイルとして the_rights_of_the_child.en.txt.kyr を読み込んで下さい.

使用方法

準備

最初に対訳コーパスの記述されたファイルを,メニューの[File]から言語ごとに読み込んで下さい.読み込むファイルは,上記の方法で作成した拡張子が .kyr のファイルです.

検索

[Keyword]欄に検索したい文字列を入力して,[Search]ボタンを押すか,リターン・キーを押して下さい.なお,現在は日本語と英語のキーワードを自動判別します.原言語,対象言語の検索結果が左右のウィンドウに KWIC形式で表示されます.対訳語は koyori が自動的に推定します.複数の対訳語がある場合は,一番出現回数が多い対訳語を含む文を表示した後,その下にその他の対訳語を含む文が順次表示されます.灰色で表示される文は,原言語がキーワードを含むが,対象言語中に対訳語を推定できなかった文です(但し,現在は対象言語のみ灰色になり,原言語の方は黒色のままです).

[Equivalent]欄には koyori が自動判定した対訳語が表示されます.対訳語が違う場合などには,ユーザが自分で対訳語を指定できます.また,この欄でカーソルキーの下を押すと,koyori が推定した第2候補以下が順次表示されます.カーソルキーの上を押せば,前の候補に戻ります.

対訳語を指定したら,[Align]ボタンを押すか,リターン・キーを押して下さい.指定した対訳語を赤色で表示します.指定した対訳語を含まない翻訳文については,その文だけを集めて対訳語を自動推定し青色で表示します.

[Keyword]欄の横の()内に表示されるのは,その語のコーパスにおける出現回数です.[Equivalent]欄の横の()内は,[Equivalent]欄の語の全対訳コーパス中における出現回数です.キーワードおよび対訳語は1語だけでなく,連語を入力することも可能です.

[Keyword]欄および[Equivalent]欄の両側にある[<=Sort],[Sort=>]はソート・ボタンです.キーワードもしくは対訳語を中心に,後方および前方ソートがそれぞれ可能です.なお,複数の対訳語がある場合は,ソートをしても,対訳語ごとに分かれて表示されます.

原言語および対象言語のコーパスが表示されている画面で左クリックをすれば,クリックされた部分にある文と対応する訳文が下に表示されます.また,原言語および対象言語のコーパス欄はスクロールが可能です.ただし,現時点ではマウスのホイールによるスクロールは上手く動作しません.

辞書登録

Version 1.1 より,単語の辞書登録機能を追加しました.登録したい単語が出現した文を右クリックすると,辞書登録モードになります.なお,単語だけでなく連語や句を登録すること可能です.その場合,以下の「単語」は「連語」「句」と読み替えて下さい.

Word
登録する単語です.辞書登録モードした時点では,[Keyword]欄にある語が表示されていますが,ユーザが自分で編集することも可能です.欄の左右にある[<][>]のボタンを押すと,原言語文の内容に合わせて,登録語を伸ばしたり縮めたりできます.また,[Word]欄の単語を編集した場合は,右の[Reload]ボタンを押すと,その語で辞書を引き直します.
Part of Speech
登録する単語の品詞を登録します.
Pronunciation
登録する単語の発音です.日本語なら読みを,英語なら発音記号がそれに類する物を登録して下さい.なお,現時点では,対訳語の品詞・発音を登録する欄はありません.
Equivalent
登録する対訳語です.辞書登録モードした時点では,右クリックした文にある対訳語(色が変わっている語)が表示されています.[Word]欄と同様に,左右にある[<][>]のボタンなどを使用して内容を編集できます.
Usage
単語の使用方法を記述する欄です.一つの単語に複数の対訳語がある場合,その違いを書く欄です.
Example
用例を記述する欄です.下の[Translation]欄とセットになります.
Translation
上記の用例の翻訳を記述する欄です.[Edit] ボタンを押すと,右クリックした文の内容が表示されます.また,左右に[<][>]のボタンが出現するので,[Word]欄,[Equivalent]欄と同様に,それを利用して編集できます.
Source
用例の出典を記述します.
Comment
その他のコメントを記述します.
Others
[Word]欄にある単語の訳語に他の訳語がある場合,ここに表示されます.そうした他の訳語に用例やコメントが登録されている場合,先頭に[!]ボタンが現れますので,それを押すと詳細が表示されます.

なお,これらの内容は全部を埋める必要はありません.最低限必要なのは,[Word]と[Equivalent]だけです.上記を埋めたら下にある[Add]ボタンを押すと登録されます.削除する場合は,[Delete]ボタン,もしくは[Delete All]ボタンを押します.単語に複数の対訳が登録されている場合,[Delete]ボタンは表示された対訳だけを辞書から削除します.[Delete All]ボタンを押した場合は,単語とすべての訳語が辞書から削除されます.[Cancel]ボタンを押した場合は,辞書の登録内容を何も変更せずに終了します.

オプション

メニューの[Option]欄,及び,その右にあるチェック・ボタンで koyori の動作に関する設定が可能です.

Option -> Configuration

Japanese equivalent length
日本語を対訳語とする場合の最大長を文字数で指定します.日本語の場合は文字数の指定になります.値を大きくすると,動作が遅くなります.
English equivalent length
英語を対訳語とする場合の最大長を単語数で指定します.日本語の場合は文字数の指定になります.値を大きくすると,動作が遅くなります.
Stop Word
対訳候補として含まない単語のリストです.コンマ(,)で区切って並べて下さい.なお,単語だけでなく連語や句も指定可能です.その場合,ダブルクォーテーション("")などで囲まず,そのまま記述して下さい.

チェック・ボタンによる指定

Hilight all keywords
KWIC表示した際に,注目しているキーワードや対訳語をすべて色付き表示するかを決定します.オフになっている場合は,1文につき1語しか色付き表示されません.オンにすると,1文に複数のキーワードや対訳語が含まれる場合,すべて色付きで表示されます.なお,オンにすると表示が遅くなります. また,下に表示される注目文は,このオプションのオン・オフに関係なく,すべてのキーワードと対訳語が色付き表示されます.
Show all combinations
1文に同じ単語が複数回現れる場合の表示方法に関するオプションです.このオプションがオフの場合,各文の先頭の出現だけが KWIC 表示されます.このオプションがオンの場合,すべての組み合わせが KWIC 表示されます.例えば,日本語文の1行にキーワードが2回,その対訳語が英語文の1行に3回出現した場合,2×3=6 で,KWIC上に6回表示されます.なお,オンにすると表示が遅くなります.
Include Articles
対訳語を自動推定するときに冠詞(英語の場合は"a","an","the")を含む句を候補にするかどうかを指定します.これがオフの場合は,冠詞を含む句(例えば "in the case of")が候補になりません.オンにすると,そうした冠詞を含む句も対訳語になります.ただし,その場合は,対訳候補に冠詞を含む物が多くなります.このオプションをオンにし,ストップ・ワードに "the" を指定した場合,"the"は対訳語になりませんが,"the car"が対訳語になる可能性があります.なお,オンにすると動作が遅くなります.
Search Hiragana
日本語の対訳語としてひらがなを含めるかどうかを指定します.オンにするとひらがなを含む語も対訳語になりますが,動作が遅くなります.

単語リストの使用

辞書登録したい単語が複数ある場合,それらの単語を記述したファイルを用意することで,いちいち[Keyword]欄に単語を入力しなくても作業ができます.

登録したい単語を1行に1単語ずつ記述したテキスト・ファイルを用意して下さい.この単語リスト・ファイルを,メニューの[File]→[Load Word List]を使用して読み込ませて下さい.そうすると,単語リスト・ファイルの先頭の単語が[Keyword]欄に表示されます.その後,[Next]ボタンか下カーソル・キー(↓)を押すと単語リストにある次の単語が表示されます.

他の言語への応用

デフォルトでは,日本語--英語間での使用を想定していますが,他の言語へ応用することが可能です.片方が日本語,もう片方が英語やフランス語のように,単語ごとに分かち書きされる言語の場合,英語のファイルの代わりにそれらの言語のファイルを読み込ませれば,そのまま動作します.なお,ファイルの文字コードは UTF-8 にして下さい.

フランス語--英語のように,ともに分かち書きする言語の場合は,一旦,koyori を終了した後,設定ファイル ~/.koyorirc を書き換えて下さい.$language[0] = 'Japanese' の部分を $language[0] = 'French' と変更後,koyori を実行すればフランス語--英語を利用した動作をします.なお,その際には,$user_dictionary_file[0] および $user_dictionary_file[1] の値を変更しておいた方が良いでしょう.この場合,キーワードの言語判定は自動では出来ませんので,[Keyword]欄の横に言語指定ボタンが出現します.また,設定ファイル koyorirc2 を別に用意し,koyori -c koyorirc2 として実行すると,~/.koyorirc を読まずに,koyorirc2 を読み込んで起動します.

なお,$language[0] の値が 'Japanese' 及び 'Thai'以外の場合,単語ごとに分かち書きされていると判断します.冠詞については,'English' と 'French' のみ設定されています.それ以外の言語の場合は,koyori/word_align.rb 内の set_noncandidate()の記述を適宜変更して下さい.

現在のところ,日本語と英語以外の言語では,フランス語,ベトナム語,タイ語での応用を確認しています.ただし,タイ語ではKWIC表示がずれてしまいます.また,アラビア語などの右から左に書かれる言語の取り扱いも試していません.

技術詳細

koyori では,辞書がなくても動作します.対訳辞書はもちろん,形態素解析をしないため,単言語の辞書も必須ではありません.よって,対訳コーパスさえ用意すれば,他の言語への応用も簡単です.その代わり,英単語の複数形や活用形に弱く,動詞をキーワードにしたときには比較的精度が落ちます.また,対訳語の推定には Dice係数を利用しています.

利用について

(C) Copyright 2005 OGAWA Yasuhiro

koyori は小川泰弘が著作権をもつフリーソフトウェアです.Ruby本体と同じ配布条件に従って再配布することができます.

連絡先

質問,バグなどがありましたら,koyori@kl.i.is.nagoya-u.ac.jp までお知らせ下さい.

既知の問題として以下があります.

  • 対訳語の推定に失敗した文を表示する際に,原言語の方が薄い色にならない.
  • マウスのホイールによるスクロールが連動しない.
  • いわゆる半角文字,全角文字が混在したファイルを使用すると,KWIC表示が崩れる.これは,等幅フォントを使った場合でも,文字の幅が違うことが原因です.UTF-8 を使用する場合,文字コードのバイト数とフォントの幅は無関係ですし,さらに,例えば,「○」は等幅フォントであっても,フォントによって幅が異なります.MS-Windowsの場合,MS 明朝の場合は,通常の漢字一文字と同じ幅ですが,Courier Newの場合は,その半分になるようです.よって,現在は日本語ファイルの場合は,すべて同じ幅を前提にして処理しています.Ruby/Tk 上で UTF-8のフォントを表示するさい,良いフォントを御存知の方はお教え下さい.