odaemon.com - Yusuke Oda

Ckylark - An Latent Annotated PCFG Parser

概要

Ckylark (すかいらーく) は自然言語のための構文解析器です。

Latent Annotated PCFG (LAPCFG) というモデルを使用して高精度に文の構造を推定します。

インストール方法

必要なツール・ライブラリ

Ckylark のインストールには以下のツール・ライブラリが必要です。

  • GCC-C++ 4.7 かそれ以降
  • Boost C++ Libraries 1.49 かそれ以降
  • autotools (configure の生成に使用)
  • Python 3.2 かそれ以降

手順

  1. Github 上の最新版 を入手します。
  2. 以下のコマンドを実行します。
    $ cd /path/to/Ckylark
    $ autoreconf -i
    $ ./configure
    $ make
    $ (sudo) make install

完全な文の構文解析

Ckylark が解析できるのは 句構造 と呼ばれる構文規則です。

入力テキストを 1 行ずつ解析し、Penn Treebank 準拠の S 式 の形式で構文木を出力します。

英語の文を解析する場合、次のように使用します。

$ src/bin/ckylark --model wsj < (corpus) > (output)

(簡単な解析例)

$ echo "This is a pen ." | src/bin/ckylark --model wsj
( (S (NP (DT This)) (VP (VBZ is) (NP (DT a) (NN pen))) (. .)) )

コーパスは予め半角スペース文字で単語分割されている必要があります。また、コーパスの内容は UTF-8 でエンコーディングされている必要があります (他エンコーディングへの対応は今のところ未定)

解析結果を視覚的に分かりやすく表示するには、 script/show_parse.py を使用します。

$ echo "This is a pen ." | src/bin/ckylark --model wsj | script/show_parse.py
(
    (S
        (NP
            (DT This))
        (VP
            (VBZ is)
            (NP
                (DT a)
                (NN pen)))
        (. .)))

不完全な文の構文解析 (--partial)

文中の一部の単語が分からない場合、例えば「ここに名詞句が入るが、それが何か分からない・限定したくない」ような場合でも、文法タグを指定して解析することができます。

これによって、途中で分断されてしまったような不完全な文でも、分断箇所の文法タグさえ分かっていれば正しい解析を行うことができます。

文法タグは [FOO] のように記述します。

$ echo "[NP] is a pen ." | src/bin/ckylark --model wsj --partial
( (S (NP [NP]) (VP (VBZ is) (NP (DT a) (NN pen))) (. .)) )
$ echo "[NP] [VBZ] [IN] [NP]" | src/bin/ckylark --model wsj --partial
( (S (NP [NP]) (VP (VBZ [VBZ]) (PP (IN [IN]) (NP [NP])))) )

品詞推定 (--output-format postag)

単語分割済みのコーパスに対する品詞推定だけ行うこともできます。

$ echo "This is a pen ." | src/bin/ckylark --model wsj --output-format postag
This/DT is/VBZ a/DT pen/NN ./.

文法モデル・単語分割について

構文解析には言語・ドメインごとに適切な文法モデルを使用する必要があります。

デフォルトでは英語と日本語の文法モデル (WSJ 及び JDC) が付属しています。その他の言語・ドメインについては下記リンク先で公開しているものを使用可能です。また、ユーザが独自に文法モデルを作成することも可能です。

英語の単語分割には Stanford Tokenizer などを使用することができます。日本語の単語分割には KyTea を使用して下さい (JDC モデルが KyTea 準拠になっています)。

開発者

関連論文

更新履歴