enjuコマンドを実行すると,文法のデータファイルを読み込み,入 力待ちになります.
% enju Enju 2.0 by Yusuke Miyao and Tsujii Lab., Tokyo Univ. Loading grammar module "enju/grammar"... done. Loading FOM module "enju/synmodel"... done. Loading parser module "up/pcky"... done. Loading application module "enju/outputdep"... done. Initializing parser... Loading stemming database: /usr/local/share/liblilfes/enju/DATA/Enju.dict Loading grammar database: /usr/local/share/liblilfes/enju/DATA/Enju.lexicon /usr/local/share/liblilfes/enju/DATA/Enju.templates Initializing external tagger: uptagger Loading Unigram FOM model: /usr/local/share/liblilfes/enju/DATA/Enju-lex.output Loading Syntax FOM model: /usr/local/share/liblilfes/enju/DATA/Enju-syn.output done. Ready
ここで文を一行で入力して下さい.すると,解析結果が標準出力に出力されま す.以下の例は,"Enju is an efficient HPSG parser." という文を入力した ときの出力結果です.
ROOT ROOT ROOT ROOT -1 ROOT is be VBZ VB 1 is be VBZ VB 1 ARG1 Enju enju NNP NNP 0 is be VBZ VB 1 ARG2 parser parser NN NN 5 an an DT DT 2 ARG1 parser parser NN NN 5 efficient efficient JJ JJ 3 ARG1 parser parser NN NN 5 HPSG hpsg NNP NNP 4 MOD parser parser NN NN 5
構文解析結果は,単語間の依存関係として出力されます.一行が一つの依存関 係,空行が文の終わりを表します.各行の各カラムは,タブで区切られ,以下 の情報を表しています.
単語の位置は,0 から始まる整数で表されます.上の例では,Enju は 0, is は 1, ... そして parser が 6 になります.ピリオドや疑問符など,品詞が "." の単語は無視されます.
述語と項の関係のラベルは,MOD, ARG1, ..., ARG5 の5つのうちの1つで 表されます.ARG1 は動詞の主語や,修飾語(形容詞や前置詞など)の修飾先を 指します.ARG2 は動詞や前置詞の目的語になります.ARG3 以降も同様に動詞 の目的語などを指します.MOD は,名詞が名詞を修飾する場合や,分詞構 文などにおいて動詞句が動詞句を修飾するときの修飾先を指します.
始めの行は,文全体の主辞(ルート)となる述語を表しています.この行では, 述語は ROOT という文字列で表され,関係のラベルも ROOT となっています. また,項が未知の場合(省略など),その単語や品詞は UNKNOWN と表示されま す.構文解析が失敗した場合は,"Parsing failure:" と表示され,その後ろ に失敗の原因が表示されます.
デフォルトでは上のような出力フォーマットになっていますが,Enju は他の出 力フォーマットもサポートしています.Enju の起動時に -s オプションを指定 すると,以下のような簡易フォーマットで出力します.簡易フォーマットでは, 助動詞や冠詞などの述語項関係は出力されません.また,前置詞句は関係のラ ベルとして出力されます.例えば "a book on the table" は "PP_on book table" と出力されます.
ARG1 be/VB(1) enju/NNP(0) ARG2 be/VB(1) parser/NN(5) ARG1 efficient/JJ(3) parser/NN(5) MOD parser/NN(5) hpsg/NNP(4)
Enju は,XML 形式や stand-off の XML 形式での出力もサポートしています. Enju の起動時に -xml オプションを指定すると XML 形式で,-so オプション を指定すると stand-off の XML 形式で出力されます.これらの形式では,単 語間の依存関係だけでなく,句構造も出力されます.
XML 形式では,単語の依存関係と句構造が XML のタグおよび属性で表されます. 一文の構造が一行に出力されます.以下の例は,"Enju is an efficient HPSG parser." を入力したときの結果です(実際は一行で出力されます).
<phrase cat="s" head="4" id="0"><phrase cat="np" head="5" id="10"><phrase cat="np" head="5" id="12"><word pos="NNP" base="enju" surf="enju" id="5">Enju</word></phrase> </phrase><phrase cat="vp" head="4" id="13"> <phrase cat="vp" head="4" id="14"><word pos="VBZ" base="be" surf="is" id="4" arg1="10" arg2="15">is</word></phrase><phrase cat="np" head="6" id="15"> <phrase cat="dt" head="7" id="18"><word pos="DT" base="an" surf="an" id="7" arg1="15">an</word></phrase><phrase cat="np" head="6" id="19"> <phrase cat="aj" head="8" id="22"><word pos="JJ" base="efficient" surf="efficient" id="8" arg1="15"> efficient</word></phrase><phrase cat="np" head="6" id="23"> <phrase cat="np" head="9" id="27"><word pos="NNP" base="hpsg" surf="hpsg" id="9" mod="15">HPSG</word></phrase> <phrase cat="np" head="6" id="28"><word pos="NN" base="parser" surf="parser" id="6">parser </word></phrase></phrase></phrase></phrase></phrase></phrase>.
句構造は,<phrase> タグで表されます.句の構成素を <phrase> タグで囲み,cat 属性でその句のシンボルを表します.たとえば,名詞句の "HPSG parser" は,<phrase cat="np">HPSG parser</phrase> と 表します.ここで使われる句のシンボルは,以下のとおりです.
s | 文(疑問文なども含む) |
vp | 動詞句 |
np | 名詞句 |
dt | 指定詞句(限定詞や数量詞など) |
aj | 形容詞句 |
av | 副詞句 |
pp | 前置詞句 |
pl | 不変化詞 |
pu | 句読点 |
cm | カンマ |
cj | 等位接続詞 |
cp | 補文標識句 |
sc | 従属接続詞 |
それぞれの単語は,<word> タグで囲んで出力されます.属性 pos, base がそれぞれ品詞と base form を表します.
phrase および word タグには,文中で一意の ID 番号が割り当てられます. ID 番号は id 属性で表示されます.phrase タグには,head 属性があり,こ れは子供の phrase または word の中で,head (主辞) になっているものの ID 番号を表します.
単語の依存関係は,word タグの中の mod, arg1, arg2, ..., arg5 属性で表 します.述語になる単語の中の各属性は,項になる句の ID 番号を表します. 上の例では,"is" を囲んでいる word タグでは,arg1="10" arg2="15" と出 力されていますが,これはそれぞれ "Enju" と "an efficient HPSG parser" を支配する句の ID 番号になっています.
Stand-off 形式では,XML の各タグが支配する領域を,元の入力文の文字位置 で出力します.一行が一つのタグに相当します.空行が文の終わりを表します. 上の例の XML 出力は,以下のような stand-off 形式で出力されます.
STDIN 0 4 word pos="NNP" base="enju" surf="enju" id="5" STDIN 0 4 phrase cat="np" head="5" id="12" STDIN 0 4 phrase cat="np" head="5" id="10" STDIN 5 7 word pos="VBZ" base="be" surf="is" id="4" arg1="10" arg2="15" STDIN 5 7 phrase cat="vp" head="4" id="14" STDIN 8 10 word pos="DT" base="an" surf="an" id="7" arg1="15" STDIN 8 10 phrase cat="dt" head="7" id="18" STDIN 11 20 word pos="JJ" base="efficient" surf="efficient" id="8" arg1="15" STDIN 11 20 phrase cat="aj" head="8" id="22" STDIN 21 25 word pos="NNP" base="hpsg" surf="hpsg" id="9" mod="15" STDIN 21 25 phrase cat="np" head="9" id="27" STDIN 26 32 word pos="NN" base="parser" surf="parser" id="6" STDIN 26 32 phrase cat="np" head="6" id="28" STDIN 21 32 phrase cat="np" head="6" id="23" STDIN 11 32 phrase cat="np" head="6" id="19" STDIN 8 32 phrase cat="np" head="6" id="15" STDIN 5 32 phrase cat="vp" head="4" id="13" STDIN 0 32 phrase cat="s" head="4" id="0"
行中の要素はタブで区切られています.はじめの要素は入力ファイルの名前で す.今は標準入力を使っているので STDIN になります.2つめはタグの開始位 置,3つめは終了位置です.4つめがタグの内容を表します.始めにタグのラ ベル (phrase か word) が出力され,その後に属性が出力されます.
また,構文解析結果を GUI でブラウズすることもできます.詳しくは, 「便利な LiLFeS モジュール」の「構文解 析結果をGUIでブラウズする」を見て下さい.
自分で lilfes プログラムを書くことによって,Enju が出力する構文解析結 果の詳細な情報を利用して,自分なりの出力を得ることができます.例えば, 上で説明した依存関係や XML 出力は,実際は LiLFeS プログラム (outputdep.lil, outputxml.lil) によって計算されています.構文解析結果 にアクセスする詳しい方法については,発展的 な使い方を参照して下さい.
Enju の起動時に,以下のようなオプションやコマンドライン引数を指定するこ とができます.
enju [オプション] [-a 引数] | |
"-a" オプションより後ろの引数は,コマンドライン引数とし て LiLFeS プログラムに渡されます. | |
オプション | |
-h | ヘルプを表示する |
-D ディレクトリ | 文法データファイルが置いてあるディレクトリ を指定する. |
-L ディレクトリ | LiLFeS モジュールのサーチパスを指定する (LILFES_PATH 環境変数の先頭に追加される). |
-t タガー | 品詞タガーを指定する. |
-d | 依存関係フォーマットで出力する. |
-s | 簡易フォーマットで出力する. |
-xml | XML 形式で出力する. |
-so | stand-off 形式で出力する. |
-cgi | CGI サーバを起動する. |
-moriv | MoriV サーバを起動する. |
-W 数 | 単語数の上限値を設定する. |
-E 数 | エッジ数の上限値を設定する. |
-l モジュール名 | LiLFeS モジュールをロードする. |
-e LiLFeSコマンド | LiLFeS プログラムを実行する. |
-i | インタラクティブモードにする(lilfes コマンドプロンプトを 表示する). |
-n | インタラクティブモードにしない. |
CGI サーバ,MoriV サーバについては, 「便利な LiLFeS モジュール」の「構文解析結果をGUIでブラウズする」を 見て下さい.
オプション "-l" で lilfes モジュールを指定した場合は,そのモジュールを 読みこみます.オプション "-e" で lilfes コマンドを指定した場合は,それ を実行します.そのコマンドの実行が終了したら,"-d" や "-xml" オプショ ンなどを指定した場合は,依存関係や XML を出力するプログラムが実行され ます.パーザの出力形式を指定しなかった場合は,何もしません.次に,イン タラクティブモードでない場合は Enju の実行も終了します.インタラクティ ブモードの場合は,lilfes のコマンドプロンプトを表示して,lilfes コマン ドの入力待ちとなります.Ctrl-D を押すとインタラクティブモードは終了し ます.
文法データや LiLFeS モジュールをデフォルトの場所以外にインストールした 場合は,以下の環境変数を設定し,インストール場所を Enju に教える必要が あります.環境変数の値は, コマンドライン引数の値で 上書きされます.
環境変数 | 説明 |
---|---|
ENJU_DIR | 文法データのディレクトリを指定する |
ENJU_TAGGER | 品詞タガーを指定する |
LILFES_PATH | LiLFeS モジュールの探索パスを指定する |