6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-06-25

動機

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

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

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

この記事を参考にmecab-ipadic-neologdがGoogle Colab上で使えるようにします.

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

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から参照させるようにします.

  • ドライブをマウント
demo.ipynb
from google.colab import drive
drive.mount('/content/drive', force_remount = True)
  • 辞書のパスを確認
demo.ipynb
! echo `mecab-config --dicdir`"/mecab-ipadic-neologd"
# /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd
  • 確認した位置にある辞書データをコピー
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を使う

  • 環境変数設定
demo.ipynb
# こちらは空白はそのままでok
import os
os.environ["MECABRC"] = '/content/drive/MyDrive/Colab Notebooks/Demo/pylibs/etc/mecabrc'
  • MeCab+NEologdによる形態素解析
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言語,シーゲンゴ,シーゲンゴ
から	助詞,格助詞,一般,*,*,*,から,カラ,カラ
派生	名詞,サ変接続,*,*,*,*,派生,ハセイ,ハセイ
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
プログラミング言語	名詞,固有名詞,一般,*,*,*,プログラミング言語,プログラミングゲンゴ,プログラミングゲンゴ
だ	助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ
よ	助詞,終助詞,*,*,*,*,よ,ヨ,ヨ
。	記号,句点,*,*,*,*,。,。,。

初回以降のインポート方法

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

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

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))

参照

6
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?