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
で確認してください。
公式では
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 です)。
ccg2lambdaでサポートしている英語のCCGパーザは現時点で4つあります。全部入れる必要はありません。
https://github.com/masashi-y/depccg を参照。
pip install cython numpy depccg
depccg_en download
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
に置く。
https://github.com/mikelewis0/easyccgを参照。
git clone https://github.com/mikelewis0/easyccg.git
モデルは
Pre-trained models are available from: ...
にある url からダウンロードし、easyccg/model
以下に置く。
https://github.com/uwnlp/EasySRL を参照。
https://github.com/uwnlp/EasySRL.git
モデルは
A pretrained model is available here: ...
にある url からダウンロードし、EasySRL/model
以下に置く。
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:
パーザは後から付け加えられます。もし candc
とeasyccg
だけ使う場合は、最初の2行だけで書いてください。
depccgについては、pathの指定は不要です。ただし、depccgはcandcに依存しているため、最低限
candc:/path/to/candc-1.00
depccg:
という2行が必要です。
ccg2lambdaで使える日本語のCCGパーザは、現時点では、Jigg と depccg の二つです。
ccg2lambda のディレクトリで、
./ja/download_dependencies.sh
を実行すればインストールされます。
https://github.com/masashi-y/depccgを参照。
pip install cython numpy depccg
depccg_ja download
pip install janome
日本語でも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.yaml
と en/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/
以下に入ります。