Ubuntu 20.04 LTSにMeCab(mecab-ipadic-neologd)/CaboChaのインストール

## 前提
この記事は、Ubuntu 20.04LTSにMeCab(mecab-ipadic-neologd)とCaboChaをインストールし、pythonで使用できるようにするまでをまとめた記事です。

※本記事は以下の記事を大いに参考にさせて頂き、インストール場所など補足で記述しております。

* [ubuntu 18.10 に mecab をインストール](https://qiita.com/ekzemplaro/items/c98c7f6698f130b55d53)
* [CabochaのUbuntuへのインストール(Pythonでテスト)](https://azwoo.hatenablog.com/entry/2015/10/01/234434)
* [curlやwgetで公開済みGoogle Driveデータをダウンロードする](https://qiita.com/namakemono/items/c963e75e0af3f7eed732)

## MeCab(mecab-ipadic-neologd)のインストール

### MeCabのインストール

まずMeCabをインストールします

```terminal:mecabのインストール
$ sudo apt install mecab
$ sudo apt install libmecab-dev
$ sudo apt install mecab-ipadic-utf8
```

入力を求められた場合は、全てy(yes)で大丈夫です。
インストールできているか確認します。

```terminal:mecabの確認
$ mecab
特急はくたか
特急    名詞,一般,*,*,*,*,特急,トッキュウ,トッキュー
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
く      動詞,自立,*,*,カ変・クル,体言接続特殊２,くる,ク,ク
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
か      助詞,副助詞／並立助詞／終助詞,*,*,*,*,か,カ,カ
EOS
```

上記のように出力されたら、インストール成功です。
辞書はipadicを使用しているので、また正しく分割されません。

### mecab-ipadic-neologdのインストール

次に、固有表現に強い辞書のmecab-ipadic-neologdをインストールしていきます。

```terminal:mecab-ipadic-neologのインストール
$ git clone https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
$ sudo bin/install-mecab-ipadic-neologd
```

上記を実行したときに、make is not foundのエラーが出る場合があります。

```terminal:mecab-ipadic-neologdのインストールエラー
[install-mecab-ipadic-NEologd] : Start..
[install-mecab-ipadic-NEologd] : Check the existance of libraries
[install-mecab-ipadic-NEologd] :     find => ok
[install-mecab-ipadic-NEologd] :     sort => ok
[install-mecab-ipadic-NEologd] :     head => ok
[install-mecab-ipadic-NEologd] :     cut => ok
[install-mecab-ipadic-NEologd] :     egrep => ok
[install-mecab-ipadic-NEologd] :     mecab => ok
[install-mecab-ipadic-NEologd] :     mecab-config => ok
[install-mecab-ipadic-NEologd] :     make is not found.
```
エラーが出た場合は、build-essentialを再インストールし、もう一度mecab-ipadic-neologdをインストールします。

```terminal:build-essentialの再インストール
$ sudo apt install --reinstall build-essential
$ sudo bin/install-mecab-ipadic-neologd
```

上手くいくと`/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd`にインストールされます。
mecab-ipadic-neologdのインストール場所が、ipadicの場所と異なるため、移動させます。

```terminal:mecab-ipadic-neologdの移動
$ sudo mv /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd /var/lib/mecab/dic
```

次にMeCabの辞書の設定がまだipadicになっているので、変更します。MeCabの設定ファイルは、`/etc/mecabrc`にあります。

```terminal:mecabrcの編集
$ sudo vim /etc/mecabrc

;
; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
; dicdir = /var/lib/mecab/dic/debian ⇐ 最初にセミコロン追加
dicdir = /var/lib/mecab/dic/mecab-ipadic-neologd ⇐ 一行追加
; userdic = /home/foo/bar/user.dic
; output-format-type = wakati
; input-buffer-size = 8192
; node-format = %m\n
; bos-format = %S\n
; eos-format = EOS\n
```

もう一度、mecabの動作確認をすると、先ほど分割されていた単語が分割されないようになっています。

```terminal:mecabの再確認
$ mecab
特急はくたか
特急はくたか
特急    名詞,一般,*,*,*,*,特急,トッキュウ,トッキュー
はくたか        名詞,固有名詞,一般,*,*,*,はくたか,ハクタカ,ハクタカ
EOS
```

### pythonへのバインディング

最後に、python3で使用できるようにします。

```terminal:pipが入っていない場合
$ sudo apt install swig
$ sudo apt install python3-pip
$ sudo pip3 install mecab-python3
```
```terminal:pipが入っている場合
$ pip install mecab-python3
```

pythonから使用するときは、下記のように入力すれば実行できます。

```python:MeCabの実行
import MeCab
tokenizer = MeCab.Tagger()
print(tokenizer.parse('形態素解析したい文章を入力します'))
```

python実行時に、下記のようなエラーがでたらmecabrcを指定された場所にコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187186/4aa6a058-0f0b-f4b5-d921-42286c19588d.png)

```terminal:mecabrcのコピー
$ sudo cp /etc/mecabrc /usr/local/etc/
```

## Cabochaのインストール

###CRF++のインストール
Cabochaを使用するために、[CRF++](https://taku910.github.io/crfpp/)が必要となりますので、wgetでダウンロードし、インストールしていきます。

```terminal:CRF++のインストール
$ wget "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7QVR6VXJ5dWExSTQ" -O CRF++-0.58.tar.gz
$ tar zxvf CRF++-0.58.tar.gz
$ cd CRF++-0.58
$ ./configure
$ make
$ sudo make install 
$ sudo ldconfig
```

### cabochaのインストール

次に、cabochaをインストールしていきます。
[cabochaのインストーラー](https://drive.google.com/drive/folders/0B4y35FiV1wh7cGRCUUJHVTNJRnM?usp=sharing#list)はgoogle driveにあり、CUIでの取得が難しいですが、以下の方法で取得が可能です。

```terminal:cabochaのダウンロード
$ cd ~
$ FILE_ID=0B4y35FiV1wh7SDd1Q1dUQkZQaUU
$ FILE_NAME=cabocha-0.69.tar.bz2
$ curl -sc /tmp/cookie "https://drive.google.com/uc?export=download&id=${FILE_ID}" > /dev/null
$ CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)"  
$ curl -Lb /tmp/cookie "https://drive.google.com/uc?export=download&confirm=${CODE}&id=${FILE_ID}" -o ${FILE_NAME}
```
ダウンロードが成功したら、インストールしてきます。

```terminal:cabochaのインストール
$ bzip2 -dc cabocha-0.69.tar.bz2 | tar xvf -
$ cd cabocha-0.69
$ ./configure --with-mecab-config=`which mecab-config` --with-charset=UTF8
$ make
$ make check
$ sudo make install
$ sudo ldconfig
```

インストールが成功していれば、cabochaの実行が可能となります。

```terminal:cabochaの実行
$ cabocha
これはカボチャのテストです
    これは---D
  カボチャの-D
    テストです
EOS
```

### pythonへのバインディング
最後にCabochaをpythonから使用できるように、バインディングをしていきます。

```pythonのバインディング
$ cd python
$ python setup.py install
```

pythonから使用するときは、下記のように入力すれば実行できます。

```python:CaboChaの実行
import CaboCha
c = CaboCha.Parser()
sentence = "これはカボチャのテストです"
print(c.parseToString(sentence))
```

以上で完了です！