ALT-MEMO 0.はじめに ALT-J/Eは、バイナリのaltr3をメインエンジンにして、LISP(LUCID)と Emacs-Lispによるプログラムによって動いている。altr3は単独でバッチ処理の 形で使うこともできる。LISPで書かれているので、ブレイクポイントを指定して フックをかけることなども可能と思われるが、新しいフックをかけたい場所によっ ては、再コンパイルが必要かもしれない。ソースコードもあり、Makefile?みた いなのもあるので、できないこともなさそうではある。Sunであれば、LUCIDを hatterから持ってきて動かせたら多分便利。入力ファイルを指定しないで単独で 実行するととりあえずLUCIDが起動してaltr3をロード済みの状態のプロンプトと なる。 処理の流れ [入力(ファイル)→] altr3 on LUCID [→出力(ファイル)] [入力(LispInteraction)] altr3 on LUCID [→出力(プロンプト)] ちなみにaltr3のr3はリリース番号で、このリリース3はVAXからワークステーショ ンに移植されたものだったような気がする。VAXってのは、LISPマシンの種類の ことだったと思う。もともとLISPは負荷の大きい言語なんで、昔は専用ハードウ エアに乗ってた。今はごらんの通りパソコンでも京大のCommonLisp(kcl)やGNUの CommonLisp(gcl)とかならタダで動きます。LUCIDはLISPの種類。 入力ファイルには2種類あるのが確認されていて、514バイトファイルてのは、分 野番号などを指定して翻訳精度の低下を防ぐことができるもの。当研究室では多 分あんまり使わない。翻訳に際して分野を指定したい場合にはこれ。あとは、日 本語を一行一文にしたもの。 環境変数の設定 パスについて。 set path_tmp = ($path_tmp .../altje-97.12/sunos4/bin) set path_tmp = ($path_tmp .../altjaws-1.0.3/bin /usr/local/altlib/altjaws-1.0.3/samples) その他の環境変数 (ALT-J/E) setenv ALTJE_SYSTEM /home/asano/ALTJE_SYSTEM/altje-97.12/sunos4/ 1.DEMOのやり方 M-x,demo にてデモが起動。M-x,demoによってデモを起動すると、画面が3分割さ れる。上より、入力ファイル(デフォルトでは514バイトファイル)、タイトル、 LISPプロンプト。基本的には、上の入力ファイルの行末でC-x,sを押すことによっ て翻訳を開始する。 このデモは、基本的にはデモ用に作成された514バイトファイルを入力とするが、 C-c,C-f などによって任意の514バイトファイルに関わらず任意の日本語文ファ イル(ただし、一行一文で終わっていること)をデモの対象とできる。 ※日本文についての注意。 入力となる日本文はすべて全角文字を使用すること。アルファベット、数字など に注意。 Lispプロンプトと、Emacsのバッファ(*je*など)に出力されるが、Emacsのバッファ にされた出力は、タイトルの下とかに隠れて見えないので注意。C-c,k とかでタ イトルを切ってやると出力が出てくるので。あらかじめタイトルは消してやった 方がいいのかも。 Emacs上であれば任意のバッファからLispInteractionを通してaltr3に入力でき るので、適当なバッファを作って日本語文を書き、行末で C-x,s によって、任 意の日本語文を翻訳することができる。 2.バッチ処理について システム立ち上げに必須の引数はない。 単独で実行するとaltr3をロード済みのLISP(LUCID)プロンプトが起動。 以下はオプション -batch 入力ファイル名 文末に改行を入れてあればよい。 514バイトファイルでもいいと思うが、514バイトファイルは 使ったことないので不明。 -je 出力ファイル名 日英対照で真ン中に線があって、左右に日本語と英語が並んだものが出 てくる。指定しなかった場合、入力ファイルの拡張子を.jeに変えたも のがそれになる。 -eng 出力ファイル名。 英語だけのやつがでる。 -log ログファイル名 作業中のログを出してくれる。 sample:()内は省略可能 >altr3 -batch demo.txt -log (demo.log) -eng (demo.eng) -je (demo.je) 3.コマンド説明、プロンプトでの操作 ALTR3をロード済みのLISPプロンプトから作業を行う場合。LISPは基本的にBASIC と同じような開発環境なので、プログラムをロードして関数を呼び出して実行す るという形式を取る。Emacs上でM-x altr3 または、UNIXのプロンプトで altr3 単独で実行することでALTR3をロード済みのプロンプトになる。 プロンプト上で翻訳する場合 ALTR3の入力は、Emacs上の任意のバッファから。バッファに日本語文を入力して、 行末でC-x,sによって翻訳を開始する。出力はプロンプト上。ただし、入出力設 定することによりファイルに出力することもできる。 C-u,C-t,C-pによって、ブレイクポイントを設定することができる。 プロンプトの出ている状態での内部情報を出力することなどができる。 プロンプトコマンド 以下は、altjeをロード済みのプロンプトでのコマンドの一部。 この他、C-t から始まるコマンドも用意されている。動作は重なるものも多い。 C-u,C-t,C-m 形態素解析結果 C-u,C-t,C-b 内部情報 文節情報、構文の英語でのパターンなど。 K/A/E : k_list,anl_list,e_sent_list C-u,C-t,C-j 辞書検索 C-u,C-t,C-k 係り受け図形出力 C-u,C-t,C-l 選択情報 C-u,C-t,C-p ブレイクポイントの設定 C-u,C-t,C-s 辞書、その他、入出力ファイル指定 C-u,C-t,C-v 文節まとめ、構造解析が誤っている場合、 そこからの処理が正しくても最終結果が間違う可能性があるた め、文節情報などを書きかえることができる。 C-u,C-t,C-x 「なんや?コマンド?」 また、ロード済みの関数であれば、プロンプトから直接呼び出すことができる。 4.(tcjk1kakari)について オリジナルのバグについて ・tcjf-rule-search.lspの最後の行がコメントになっていない。 ・(tcjr1kakari-rule-load)内でtckr1bnstが定義されていない。 修正を施したけれども、オリジナルのものはそのままになっているので注意。 環境変数の設定 setenv KAKARI_INIT /home/asano/kakari/init/ setenv KAKARI_PROG /home/asano/kakari/prog/ setenv KAKARI_RULE /home/asano/kakari/rule/ setenv KAKARI_TOOL /home/asano/kakari/tool/ などを.cshrcトカに加えておく。 Tcjk1kakariは、南の従属節分類+細分類による係り受け解析を行う関数群。 (白井,池原ほか ;階層的認識構造に着目した日本語従属節間の係り受け解析の 方法とその精度 情報処理学会論文誌 Vol.36,No10,pp.2353-2361(1995)) ALTR3には実装されていない。 tcjk1kakariは、形態素解析済みデータseg_listから、係り受け解析後データ K_listを作成する。 ALT-J/Eの係り受け解析前後の処理の流れ。 形態素解析→形態素補正→係り受け解析→係り受け補正→書き換え→…       seg_list k_list M-x,r3 でALTR3をロード済みのコマンドプロンプトに入る。 >(load "...../ll.lsp") or (load "...../ll-sogo.lsp") 関数群のロード 一文を翻訳させるなり、C-u,C-t,C-pで係り受け解析直後で処理を中断するなりして、 メモリ上のseg_listに形態素解析結果を入れる。 >(tcjk1kakari) 係り受け解析実行 C-u,C-t,C-k 係り受け図形表示 Aは全て表示、Sはスコア付けされて選択された解析結果 実行の速度はLispなのでかなり遅い。基本部分はコンパイルして実行すると良い。 コンパイルは、kakari/tool/kcomp.lspを使うと良い。 ソースコードの変更をしたい場合は、オリジナルのALTが壊れるとマズいので、 まず自分のマシンにALT-9712を展開し、hatterの自分のホームの下にマウントし て使うなどの工夫が必要。 ファイルリスト プログラムの説明等、詳細はソースコード参照。 ★ドキュメント kakari/doc kakari/doc/dir.txt kakari/doc/rule-man.txt kakari/doc/sousa.txt ★初期化(プログラムのロード)のためのファイル kakari/init kakari/init/ll.lsp kakari/init/ll-sogo.sbin ★プログラム本体 kakari/prog kakari/prog/readme kakari/prog/tcj0-kakari-load.sbin kakari/prog/tcja-global.sbin kakari/prog/tcjc-check.sbin kakari/prog/tcjd-debug.sbin kakari/prog/tcje-klist.sbin kakari/prog/tcjf-rule-search.sbin kakari/prog/tcjg-get.sbin kakari/prog/tcjh-heiretu.sbin kakari/prog/tcjk-kakari.sbin kakari/prog/tcjl-henkan.sbin kakari/prog/tcjm-match.sbin kakari/prog/tcjn-tagi-num.sbin kakari/prog/tcjr-kakari-rule-load.sbin kakari/prog/tcjs-seisei.sbin kakari/prog/tcjt-sonota.sbin kakari/prog/tcjy-syokika.sbin ★係り受けルール,分類ルール kakari/rule kakari/rule/tcj-he-def-rule.dat kakari/rule/tcj-he-group.dat kakari/rule/tcj-he-kin-rule.dat kakari/rule/tcj-he-kinsi-group.dat kakari/rule/tcj-he-rule.dat kakari/rule/tcj-hins-code.dat kakari/rule/tcj-hj-rule.dat kakari/rule/tcj-kk-rule.dat kakari/rule/tcj-ky-rule.dat kakari/rule/tcj-kz-rule.dat kakari/rule/tcj-sb-rule.dat kakari/rule/tcj-sk-rule.dat kakari/rule/tcj-woni-rule.dat kakari/rule/readme ★図形表示等の追加関数 kakari/tool kakari/tool/natc-alt-util.sbin kakari/tool/readme kakari/tool/kcomp.sbin kakari/tool/kktest.sbin kakari/tool/taua-translate.sbin