MeCab+NEologdをGoogleColab上で使うときに毎回インストールしないで済む環境を作る

## 動機
形態素解析ツールである __mecab-ipadic-neologd__ を Google Colabratory 上で使うときに，リロードするたびに毎回`git clone`してなんやらかんやら...の手続きがしんどい...

そこで「辞書情報の更新はしない」という犠牲のもとで，Google Driveに辞書を突っ込んでそこから毎回インポートすることにしました

## 1. GoogleColabの仮想環境上にMeCab+NEologdをインストール

[この記事](https://qiita.com/jun40vn/items/78e33e29dce3d50c2df1)を参考にmecab-ipadic-neologdがGoogle Colab上で使えるようにします．

Driveの構成ですが，`MyDrive/Colab Notebooks/Demo`内に「demo.ipynb」を展開することを仮定します．

```python:demo.ipynb
! apt-get -q -y install sudo file mecab libmecab-dev mecab-ipadic-utf8 git curl python-mecab > /dev/null
! git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git > /dev/null 
! echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n > /dev/null 2>&1
! pip install mecab-python3 > /dev/null
```

## 2. 仮想環境上でインストールした辞書データをDrive上に移す

辞書データは`MyDrive/Colab Notebooks/Demo/pylibs`から参照させるようにします．

- ドライブをマウント

```python:demo.ipynb
from google.colab import drive
drive.mount('/content/drive', force_remount = True)
```

- 辞書のパスを確認

```python:demo.ipynb
! echo `mecab-config --dicdir`"/mecab-ipadic-neologd"
# /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd
```
- 確認した位置にある辞書データをコピー

```python:demo.ipynb
# 「Colab Notebooks」の間にある空白は\ (backslash)でエスケープ
! cp -r /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd /content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs
# /etc/mecabrcが辞書データ参照時に必要なのでetcフォルダごとコピー↓
! cp -r /etc /content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs/etc 
```

## 3. 環境変数に辞書データ読み込み先パスを設定して，MeCab+NEologdを使う

- 環境変数設定

```python:demo.ipynb
# こちらは空白はそのままでok
import os
os.environ["MECABRC"] = '/content/drive/MyDrive/Colab Notebooks/Demo/pylibs/etc/mecabrc'
```
- MeCab+NEologdによる形態素解析

```python:demo.ipynb
import MeCab
# Taggerに渡す文字列中の空白は\ (backslash)でエスケープ
path2dic = "/content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs/mecab-ipadic-neologd"
m = MeCab.Tagger("-d {0}".format(path2dic))
print(m.parse("c++はc言語から派生したプログラミング言語だよ"))
```
- 出力
```
c++	名詞,固有名詞,一般,*,*,*,C++,シープラスプラス,シープラスプラス
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
c言語	名詞,固有名詞,一般,*,*,*,C言語,シーゲンゴ,シーゲンゴ
から	助詞,格助詞,一般,*,*,*,から,カラ,カラ
派生	名詞,サ変接続,*,*,*,*,派生,ハセイ,ハセイ
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
プログラミング言語	名詞,固有名詞,一般,*,*,*,プログラミング言語,プログラミングゲンゴ,プログラミングゲンゴ
だ	助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ
よ	助詞,終助詞,*,*,*,*,よ,ヨ,ヨ
。	記号,句点,*,*,*,*,。,。,。
```

##  <font color="blue"> 初回以降のインポート方法 </font>

上記1~3のセットアップが済んだら，それ以降は同一ディレクトリ(`MyDrive/Colab Notebooks/Demo/`)内に**別の**  Google Colabファイルを開き，ステップ3を実行すると辞書データの再インストールなく使えます．

(※`! pip install mecab-python3`は必要です．それも省略したい場合は下記リンク参照)

```python:
import os
import MeCab
from google.colab import drive
# 1.ドライブマウント
drive.mount('/content/drive', force_remount = True)
# 2. 環境変数設定
os.environ["MECABRC"] = '/content/drive/MyDrive/Colab Notebooks/Demo/pylibs/etc/mecabrc'
# 3. 辞書参照先設定
path2dic = "/content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs/mecab-ipadic-neologd"
m = MeCab.Tagger("-d {0}".format(path2dic))
```

## 参照

- [pip installした内容を消えないようにする](https://ggcs.io/2020/06/22/google-colab-pip-install/)
- [Google ColabにMeCabとipadic-NEologdをインストールする](https://qiita.com/jun40vn/items/78e33e29dce3d50c2df1)
- [github:mecab-ipadic-neologd](https://github.com/neologd/mecab-ipadic-neologd)