Copyright (C) 2001-2002, SATO Lab.
このチュートリアルは、 gemini 1.3 を対象にしたドキュメントです。他のバージョンでは使用できないので、注意してください。 |
UNIX 環境 (Linux や FreeBSD) をお使いの方は、ここをスキップして次の「Rubyのインストール」に進んでください。ここで説明されていることは Windows を使っている方にのみ関係があります。 gemini は基本的に UNIX 環境を前提としていますので、Microsoft Windows で gemini を扱う際は Windows 上に UNIX 環境を作り上げなければなりません。そのためのソフトウェアが Cygwin です。 Cygwin は Cygwin のサイトからダウンロードすることができます。(参考: Cygwin) まず、setup.exe をダウンロードし、実行します。すると、右の図のようなインストーラが起動します。インターネットに接続されている場合、順に「次へ(N)」をクリックしていれば、普通はまったく問題ありません。 ただし、インストール先のディレクトリなどは必要に応じて変更するようにしてください。 うまくいけば、インストール後、スタートメニューに「Cygnus Solutions」というグループが作成され、その中に bash へのショートカットが入っているのを確認できるはずです。 これで Cygwin のセットアップは完了です。 以下では、この bash を使って作業を進めていってください。 |
gemini を扱うためには、オブジェクト指向スクリプト言語 Ruby をインストールしなければなりません。ここではソースコードからコンパイルしてインストールする、という方法を示しますが、Linux
を使っているのならば RPM で、FreeBSD ならば package を使うという方法もあります。(参考:
Ruby Home Page) しかし、それらの方法は最新版が提供されているとは限りませんので、以下に示すソースコードからのコンパイルの方をお勧めします。 まず、Ruby のソースコード (1.6.7) をダウンロードします。 (とくに、最新版の gemini を動作させる場合は Ruby 1.6.7 が必須になります。) ftp コマンドや、ブラウザなどからダウンロードしてください。ここでは、/usr/local/src にアーカイブをダウンロードしたと仮定します。
ftp のメッセージは、お使いの ftp クライアントソフトによって異なるかもしれません。このダウンロードしたアーカイブ ruby-1.6.7.tar.gz を展開すると、ソースコードが展開されます。 (gunzip が必要です。インストールされていない場合はコンピュータの管理者に相談してください。)
展開されたソースコードをコンパイルします。
root になり、make install でインストールします。configure 時に指定しなければ、/usr/local 以下にインストールされます。(/usr/local/bin/ruby など)
これで Ruby がインストールされました。念のため、動作していることを確認しておきましょう。
時期と環境により、アーキテクチャ名や日付が変わるかもしれません。また、hash コマンドは bash を使っているときのコマンドです。tcsh では rehash になります。適宜、使っているシェルに合わせたコマンドを入力してください。 |
Ruby のインストールが終わったならば、次は本題の gemini をインストールします。 まず、gemini のアーカイブをダウンロードします。PCFG のパラメータ推定を行いたいだけならばバージョン 1.3.1 を、Stolcke のアルゴリズムを使いたいのならば、バージョン 1.2.1 をダウンロードします。(このリンクは UNIX 環境用のものに張られています。改行コードに CR/LF を使う環境 (Windows など) では、Windows 用のアーカイブをダウンロードしてください。) ここでは、/usr/local/src にダウンロードし、/usr/local/gemini にインストールすると仮定します。
まずはアーカイブを展開します。bzip2 を使って圧縮されていますので、展開には bunzip2 が必要になります。最近の OS ならば標準でインストールされていますが、古い OS や FreeBSD などには標準でインストールされていないので、導入する必要があります。たとえば、FreeBSD では package を使って簡単に導入することができます。
bzip2 をインストールできない場合のために、gzip 版も用意しました。その場合は、bunzip2 を gunzip に、.tar.bz2 を .tar.gz に読みかえてください。 必要なファイルをコンパイルします。このとき、Ruby がインストールされていなければなりません。
これですべてのセットアップが完了しました。 |
PCFG のパラメータ推定を行う場合、次のデータが必要になります。
まず、以下のような文法を使用するとします。
なお、終端記号 (末端記号) として「自動詞」「他動詞」「名詞」「連体修飾子」を使うとします。 gemini では、SGML 風の形式でデータを記述します。文法は pGrammar ブロックの dRules ブロックに記述します。その文法は、非終端記号を < と > で囲って表現します。逆に、終端記号は < と > で囲まれていないものになります。また、生成規則の左辺と右辺を --> で区切ります。 上の文法を書けば、以下のようなテキストファイルになります。
デフォルトでは開始記号が <start> になっていますので、<start> を導入するか、元の文法における開始記号 (この例では <文>) を <start> に置き換えるか、コマンドラインオプションを指定するか、という方法で対処します。ここでは <start> を導入しました。 このファイルを sample.grm とします。作成は emacs やメモ帳など、どんなエディタでも構いません。 次に、訓練文となるデータを作成します。 以下のような訓練文があるとします。
この訓練文も、文法と同様な形式で次のように記述します。
このファイルを sample.corpus とします。 では、sample.corpus を構文解析してみましょう。 先に紹介したインストール手順を進めたとして、gemini が /usr/local/gemini にインストールされている状況であるとします。もし可能であれば、環境変数の PATH に /usr/local/gemini を加えておくと便利でしょう。ここでは、パスを通していないとして話を進めます。
構文解析には eparser.rb を使用します。-g オプションで文法を指定し、一般の引数としてコーパスファイルを指定します。すると、構文解析の結果が標準出力に書き出されますので、適当なファイルにリダイレクトします。 gemini ではグラフィカル EM を用いて PCFG のパラメータ推定を行っています。そのため、この構文解析結果を支持グラフという形式に変換しなければなりません。これには mksg.rb を使用します。
支持グラフが生成されたならば、これで PCFG のパラメータ推定を行うことができるようになります。グラフィカル EM には gem.rb を使用します。
sample.grm には初期パラメータの情報が書き込まれていないので、自動的にランダムな値が割り振られます。初期パラメータを設定したい場合は、sample.result の内容を参考にして記述してください。 なお、今回の例においては sample.result の内容は次のようになります。
これで PCFG のパラメータ推定を行うことができました。 |
推定したパラメータを使って、構文木を推定することができます。ここでもパラメータ推定を行ったときと同じ状況であると仮定します。 構文木の推定には、構文解析の結果が必要になります。上の例では sample.items に相当します。 次の文の構文木を推定するとします。
構文解析の時と同様に、次のようなファイル sent.corpus を作成します。
これを構文解析し、sent.items を作成します。
構文木の推定には viterbi.rb を使います。
ここで指定した sample.result は PCFG パラメータの推定時に生成されたファイルです。この操作によって sent.est に推定された構文木が出力されます。内容は以下のようになります。(dLog ブロックを削除し、適当な場所に改行を挿入しています。)
0.0466472 などの数値がその構文木の生成確率を表しており、その下の行が構文木を表しています。
これで、平文からその構文木を PCFG パラメータに基づいて推定することができました。 |