2019年9月21日土曜日

PythonとCaboChaで係り受け解析をする

日本語には係り受け関係があって、例えば「青い鳥」の場合は「青い」が「鳥」を修飾している。そういう係り受けの関係を解析できるのがCaboCha(CaboCha/南瓜: Yet Another Japanese Dependency Structure Analyzer)で、Pythonでも利用できる。WSL(Ubuntu 18.04)にCaboChaをインストールして、Pythonで係り受け解析をやってみる。


環境


Windows10(1903)のWSL(Ubuntu 18.04)。CaboChaを利用するためには形態素解析器も必要で、MeCab(MeCab: Yet Another Part-of-Speech and Morphological Analyzer)を使用する。MeCabはインストール済みとする。



CRF++のインストール


CaboChaの使用にはCRF++も必要なのでインストールする。まずはcrfpp downloadsから現時点の最新版(CRF++-0.58.tar.gz)をダウンロードする。curlコマンドなどでダウンロードできないので、Windows10のブラウザでダウンロードしてWSLのディレクトリにコピーした。

ダウンロードしたファイルを以下のコマンドでインストールする。



CaboChaのインストール


続いてCaboChaをインストールする。CaboCha downloadsから現時点の最新版(cabocha-0.69.tar.bz2)をダウンロードする。CRF++のときと同様にWindows10でダウンロードして、WSLのディレクトリにコピーした。

以下のコマンドでインストール。デフォルト文字コードはeucなので、MeCabに合わせてutf8に変更する。



CaboChaの実行


CaboChaのライブラリは/usr/local/libにインストールされたが、このパスが共有ライブラリ検索パスにないとCaboChaは動作しない。


CaboChaのライブラリパスを共有ライブラリ検索パスに追加。


再度CaboChaを実行すると、今度は動作した。


LD_LIBRARY_PATHへのパス追加はOSを再起動すると元に戻ってしまうので、再起動しても追加したパスが保持されるようにするには、~/.bashrcに「export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib」を追記しておく。


PythonからCaboChaを使う


ダウンロードしたcabocha-0.69.tar.bz2を解凍するとpythonというディレクトリがあり、その中にPython用ラッパーのインストールスクリプトがある。


インストールが完了したらPythonで使用してみる。まずはCaboChaでTree表示をする。


続いて、係り受け解析レイヤの出力フォーマットで表示してみる。



mecab-ipadic-NEologdを使う


mecab-ipadic-NEologdで形態素解析を新語に対応させるのように、形態素解析を行うMeCabの辞書をデフォルトのIPA辞書からmecab-ipadic-NEologdに変更できる。CaboChaからmecab-ipadic-NEologdを使用するには、以下のようにmecab-ipadic-NEologdのパスを指定する。



2 件のコメント:

  1. 参考になる記事ありがとうございます。

    Kubuntu 20.04 amd64でやってみたところ、libmecab-devが必要でした。

    具体的には、cabochaのディレクトリで
    ./configure --with-charset=utf8
    する前に、
    sudo apt install libmecab-dev
    でインストールしておかないと、次のmakeでコケるようでした。

    返信削除
    返信
    1. もしかしたら、MeCabをインストールしていない状態でCaboChaのインストールしましたでしょうか。さらっと「MeCabはインストール済み」と書いただけだったので、わかりにくかったかもしれません。libmecab-devはMeCabをaptコマンドなどでインストールするときに必要なパッケージです。

      MeCabをインストール済みだったということであれば、20.04と18.04の環境の違いが理由かもしれません。20.04の環境でインストールしたことがないので、あくまで推測ですが・・

      削除