アイソモカ

知の遊牧民の開発記録

開発記録 191013 Sun (CaboChaが文節を区切ってくれない件、一応解決)

昨日は CaboCha を Mac にインストールしたが、文節の切れ目がなんかおかしかった。いろいろトライした結果、Python3 と curl xz、crf++ 、MeCab、CaboCha を再インストールして解決した。結局どれが悪かったのかは分からず(再インストールしなくても済む方法もあるのかも知れない)。

追記(191124):形態素解析用の辞書による。 ipadic を使用すると公式サンプルと同じ結果になり、unidic を使用すると僕の結果になる。

今日やったこと

CaboChaのインストール方法をいろいろ試した

curl xz、crf++、MeCabMeCab用の辞書はインストール済み。昨日は Homebrew を使ってインストールした。

参考:MeCabとCaboChaをMacに導入してPythonから使ってみる - Qiita @musaprg

brew install cabocha

1回目のトライ make してインストール

Homebrew を使わないでインストールしてみようということで、ソース一式をダウンロードして make した。

公式GitHubCaboCha/南瓜: Yet Another Japanese Dependency Structure Analyzer - GitHub

参考:[Python] CaboCha(MeCab)をMacにインストールして動かしてみた - MAYTRY

結果:アカン、昨日とおんなじや。

2回目のトライ PATH を追加

crf++, mecab, cabochaをローカルにインストールするときの注意点 - technote @keiskS を参考に、 .bash_profile に PATH を4行追加、それから1回目同様にソースを make してインストール。

結果:アカン、昨日とおんなじや。

3回目のトライ cabocharc を削除

日本語係り受け解析器cabochaのインストールエラー - stackoverflow 一番下に usr/local/etc/cabocharcを削除してインストールしたと書いてある。cabocharc を削除して、ソースを make してインストール。

結果:アカン、昨日とおんなじや。

そこでなんか気づいた

Terminal の表示内容を 素人の言語処理100本ノック:40 - Qiita @segavvy と見比べる。大体合っているように見えるけど……。

Python バインディングのインストール」の部分使われている Python のバージョンが、僕の実行結果では 2.7 になっていて、その下に warning がいっぱい出ている。

Mac のデフォルトで入っていたやつが Python2 だったので、Python3 を入れてエイリアス設定して機嫌よく使ってたが、エイリアスが有効なのはTerminal から実行するときだけなのだろうか? なんかマズイっぽい?

これは CaboCha が文節を区切ってくれない件とはまた別かも、とは思いつつ、気持ち悪いので Python のバージョンをどうにかすることにした。

どこからでも Python3 が使えるようにする

Homebrew から、Python のバージョンを管理してくれるやつを召喚する。

$ brew install pyenv

.bash_profile に export PATH="$HOME/.pyenv/shims:$PATH" を追加する。それから最新の Python をインストールする。

$ pyenv install 3.7.4
$ pyenv global 3.7.4
$ python --version
Python 3.7.4

ちなみに、 $ brew list と入力すると、これまでに Homebrew で召喚したやつの一覧が見れる。

怒涛の再インストール

curl xz と crf++

$ brew reinstall git curl xz
$ brew reinstall crf++

MeCab、CaboCha

$ brew uninstall mecab とかで、Homebrew でインストールしたやつをアンインストールする。アンインストールしてもファイルは消えないので、探し出して rm で消した。/usr/local/bin/、/usr/local/include/、/usr/local/share/ の中とかにも config とかあって、インストール中に Error で出てくるので、全部 rm しちゃった。

$ brew install mecab
$ brew link --overwrite mecab
$ brew link --overwrite --dry-run mecab

$ brew install mecab-ipadic
$ brew link --overwrite mecab-ipadic
$ brew link --overwrite --dry-run mecab-ipadic

$ brew install cabocha

それから、Pythonバインディングも。

参考:MeCabとCaboChaをMacに導入してPythonから使ってみる - Qiita @musaprg

CaboCha のバインディングは上のサイトでは2種類紹介されているが、両方入れた。

$ pip list で、これまでに入れた Python ライブラリの一覧が見られる。アー? matplotlib とかがなくなってしまった(Python3 を入れ直したせい)また使うときに召喚しよう。

CaboCha の動作確認

ちゃんと文節が区切れるようになった。

$ cabocha
太郎は花子が読んでいる本を次郎に渡した
    太郎は---------D
      花子が-D     |
    読んでいる-D   |
            本を---D
            次郎に-D
              渡した
EOS
$ cabocha
警官は自転車で逃げる泥棒を追いかけた。
      警官は-------D
      自転車で-D   |
          逃げる-D |
            泥棒を-D
        追いかけた。
EOS

警官は、自転車で逃げる泥棒を追いかけた。
    警官は、-------D
      自転車で-D   |
          逃げる-D |
            泥棒を-D
        追いかけた。
EOS

警官は自転車で、逃げる泥棒を追いかけた。
      警官は-D      
    自転車で、-----D
          逃げる-D |
            泥棒を-D
        追いかけた。
EOS

なるほど。

これで自然言語処理100本ノックに取りかかれる。