#これはなに?
形態素解析のデファクトスタンダードであるMeCabと、その追加辞書mecab-ipadic-NEologdをGoogle Colaboratoryで動かすためのコードです。
かつてはmecabとipadic-NEologdを直接インストールしていましたが、いまはGinza経由で呼び出すほうが便利です。
#Ginzaのインストール
!pip install ginza==4.0.5 ja-ginza
!pip install sortedcontainers~=2.1.0
import pkg_resources, imp
imp.reload(pkg_resources)
pipを使ってginzaをインストールします。
sortedcontainersというライブラリがColabのデフォルトとGinzaの要求バージョンが違うせいでエラーが発生するので、Ginzaの指定するバージョンをインストールし直します。
また、デフォルトでは日本語辞書にパスが通っていないようなので、pkg_resourcesを再度読み込ませます。これはColabの仕様(?)によるもののようで、ランタイムを再起動しても読み込むようなのですが、ランタイムの再起動をいちいちやるのも面倒なのでpythonの方で再読み込みをさせています。
#形態素解析
import spacy
import ginza
nlp = spacy.load("ja_ginza")
ginza.set_split_mode(nlp, "C")
doc = nlp("彼女はペンパイナッポーアッポーペンと恋ダンスを踊った。")
for token in doc:
print(str(token))
#>>
#彼女
#は
#ペンパイナッポーアッポーペン
#と
#恋
#ダンス
#を
#踊っ
#た
#。
nlp = spacy.load("ja_ginza")
で形態素解析エンジンを呼び出し、ginza.set_split_mode(nlp, "C")
で分割単位をCに設定します。分割単位は3種類あり、それぞれ以下の辞書を使用します。
分割単位 | 使用する辞書 |
---|---|
A | UniDic |
B | IPADIC |
C | NEologd |
分割単位をCに設定することで、NEologdが使用できます。
お疲れさまでした。
MeCabとNEologdを直接インストールしたい方のために、かつてのやり方も記載しておきます。
かつてのやり方
#MeCabのインストール
!apt install aptitude swig
!aptitude install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file -y
!pip install mecab-python3==0.996.3
#mecab-ipadic-NEologdのインストール
!git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
!echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n -a
2つ合わせて実行すれば、形態素解析の環境構築は終了です。インストール完了まで2~3分程度かかります。
#pythonからの呼び出し
MeCab.Tagger()
を呼び出す際に、引数にmecab-ipadic-NEologdのパスを指定する必要があります。辞書のパスはecho `mecab-config --dicdir`"/mecab-ipadic-neologd"
で取得できます。
import MeCab
import subprocess
cmd = 'echo `mecab-config --dicdir`"/mecab-ipadic-neologd"'
path = (subprocess.Popen(cmd, stdout=subprocess.PIPE,
shell=True).communicate()[0]).decode('utf-8')
m = MeCab.Tagger("-d {0}".format(path))
これで呼び出し完了です。あとは使うだけ。
print(m.parse("彼女はペンパイナッポーアッポーペンと恋ダンスを踊った。"))
#>>
#彼女 名詞,代名詞,一般,*,*,*,彼女,カノジョ,カノジョ
#は 助詞,係助詞,*,*,*,*,は,ハ,ワ
#ペンパイナッポーアッポーペン 名詞,固有名詞,一般,*,*,*,Pen-Pineapple-Apple-Pen,ペンパイナッポーアッポーペン,ペンパイナッポーアッポーペン
#と 助詞,並立助詞,*,*,*,*,と,ト,ト
#恋ダンス 名詞,固有名詞,一般,*,*,*,恋ダンス,コイダンス,コイダンス
#を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
#踊っ 動詞,自立,*,*,五段・ラ行,連用タ接続,踊る,オドッ,オドッ
#た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
#。 記号,句点,*,*,*,*,。,。,。
#EOS
お疲れさまでした。
#更新履歴
2021/10/29: Ginzaについて記載
2021/1/2: mecab-python3が1.xにアップデートしたことでコードが動かなくなったので、明示的に0.996.3をインストールするように暫定的に変更。
#参考文献
https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md
https://qiita.com/inatatsu_csg/items/40b11701d256a84a0510
https://engineering.linecorp.com/ja/blog/mecab-ipadic-neologd-new-words-and-expressions/
布留川 英一『BERT/GPT-3/DALL-E 自然言語処理・画像処理・音声処理 人工知能プログラミング実践入門』