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