ccg2lambdaの使い方

ccg2lambdaのインストール

https://github.com/mynlp/ccg2lambda に従ってインストールします。python3が必要です。

git clone https://github.com/mynlp/ccg2lambda.git
cd ccg2lambda
virtualenv --no-site-packages --distribute -p /usr/bin/python3 py3
source py3/bin/activate
pip install lxml simplejson pyyaml -I nltk==3.0.5
python -c "import nltk; nltk.download('wordnet')"

インストールに成功していれば、

python scripts/run_tests.py

を実行すると、最終的に OK (expected failures=2) と表示されます。

/usr/bin/python3 の部分は環境によって違う可能性があるので、python3のフルパスを

which python3

 で確認してください。

Coqのインストール

公式では

sudo apt-get install coq

となっていますが、Macで apt-get がない場合、homebrew で

brew install coq

でも入ります。インストールに成功していれば、coqtop -v でバージョンを確認して

$ coqc -v
The Coq Proof Assistant, version 8.4pl6 (July 2015)

のように表示されます(最新は version 8.6 です)。

英語CCGパーザのインストール

ccg2lambdaでサポートしている英語のCCGパーザは現時点で4つあります。全部入れる必要はありません。

1. depccg

https://github.com/masashi-y/depccg を参照。

pip install cython numpy depccg
depccg_en download

2. C&C parser

http://www.cl.cam.ac.uk/~sc609/candc-1.00.html から

precompiled binaries (do not contain Boxer):
  - Linux (static linked) gzipped tar (12MB)
  - Mac OS X 10.4 (universal) gzipped tar (12MB) 

のどちらかを選び、モデル

models trained on CCGbank 02-21 and MUC 7: gzipped tar (50MB) 

をダウンロードし、candc-1.00/models に置く。

3. EasyCCG

https://github.com/mikelewis0/easyccgを参照。

git clone https://github.com/mikelewis0/easyccg.git

モデルは

Pre-trained models are available from: ...

にある url からダウンロードし、easyccg/model 以下に置く。

4. EasySRL

https://github.com/uwnlp/EasySRL を参照。

https://github.com/uwnlp/EasySRL.git

モデルは

A pretrained model is available here: ...

にある url からダウンロードし、EasySRL/model 以下に置く。

parser_location.txt の作成

ccg2lambdaに各パーザの場所を指定するため、 en/parser_location.txt というファイルを作成して、以下のように書き込みます。/path/to/candc-1.00 等々の部分は各パーザをインストールした場所を確認してください。

candc:/path/to/candc-1.00
easyccg:/path/to/easyccg
easysrl:/path/to/EasySRL
depccg:

パーザは後から付け加えられます。もし candceasyccgだけ使う場合は、最初の2行だけで書いてください。

depccgについては、pathの指定は不要です。ただし、depccgはcandcに依存しているため、最低限

candc:/path/to/candc-1.00
depccg:

という2行が必要です。

日本語のCCGパーザのインストール

ccg2lambdaで使える日本語のCCGパーザは、現時点では、Jigg と depccg の二つです。

1. Jigg

ccg2lambda のディレクトリで、

./ja/download_dependencies.sh

を実行すればインストールされます。

2. depccg

https://github.com/masashi-y/depccgを参照。

pip install cython numpy depccg
depccg_ja download
pip install janome

parser_location_ja.txt の作成

日本語でもccg2lambdaに各パーザの場所を指定するため、 ja/parser_location_ja.txt というファイルを作成して、以下のように書き込みます。

jigg:/path/to/jigg-v-0.4
depccg:

jigg は 上のやり方でインストールした場合は、ccg2lambda/ja/jigg-v-0.4/以下に入ります。

テスト

個々の文をパーズするには、

./en/rte_en_mp_any.sh <input_text> <templates>

が便利です。<input_text> は、1つ以上の文からなるテキストファイルで、例えば、英語のサンプル en/sample_en.txt は次のようになっています。

All women ordered coffee or tea.
Some woman did not order coffee.
Some woman ordered tea.

複数行に文がある場合、最後の行は結論 (Conclusion)、それ以外は前提 (Premise)とみなされます。en/sample_en.txtの場合、"All women ordered coffee or tea." と "Some woman did not order coffee." が前提で、"Some woman ordered tea." が結論です。

一般に、n個の前提 Premise_1, Premise_2, ..., Premise_n と一つの結論 Conclusion をもつ推論の場合、次のような形でファイルを作成します。

Premise_1
Premise_2
...
Premise_n
Conclusion

<templates> は、CCGの導出木を論理式に変換するためのテンプレート(CCGカテゴリから意味表示へのマッピングの方法)が入ります。英語の場合、 en/semantic_templates_en_emnlp2015.yamlen/semantic_templates_en_event.yaml の二種類が用意されています。

テストとして、以下を実行すると、次のような結果が得られます。

$ ./en/rte_en_mp_any.sh en/sample_en.txt en/semantic_templates_en_emnlp2015.yaml
semantic parsing en_parsed/sample_en.txt.candc.sem.xml
judging entailment en_parsed/sample_en.txt.candc.sem.xml yes
easyccg parsing en_plain/sample_en.txt
semantic parsing en_parsed/sample_en.txt.easyccg.sem.xml
judging entailment en_parsed/sample_en.txt.easyccg.sem.xml yes
easysrl parsing en_plain/sample_en.txt
semantic parsing en_parsed/sample_en.txt.easysrl.sem.xml
judging entailment en_parsed/sample_en.txt.easysrl.sem.xml unknown
depccg parsing en_plain/sample_en.txt
semantic parsing en_parsed/sample_en.txt.depccg.sem.xml
judging entailment en_parsed/sample_en.txt.depccg.sem.xml yes

ここで、yes は推論がじっさいに証明できたこと、つまり、前提が結論を含意することを表しています。no の場合、前提と結論は矛盾していることを表します。含意も矛盾も証明されない場合、unknown が表示されます。

CCGの解析結果は、xml 形式で en_parsed/以下に、 CCGの導出木を可視化した html ファイルは en_results/以下に入るようになっています。

日本語の場合は、

./ja/rte_ja_mp.sh <input_text> <templates>

でパーズと証明を行い、結果はそれぞれja_parsed/ja_results/以下に入ります。