Python
mecab
mecab-ipadic-neologd
colaboratory
GoogleColaboratory

Google Colaboratory で、NEologd 辞書 で、MeCab を 使う(Python)


Google Colaboratory で、NEologd 辞書 で、MeCab を 使う(Python)

以下の環境でやりました。


  • GoogleColaboratory

  • Python3のノートブック

  • GPUのやつ


MeCabのインストール


MeCabをインストールする

参考にした記事

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

!apt-get -q -y install sudo file mecab libmecab-dev mecab-ipadic-utf8 git curl python-mecab

mecabをコマンドラインから実行してみます。

%%bash

mecab
メカブって神ってる

メカブ   名詞,固有名詞,組織,*,*,*,*

って 助詞,格助詞,連語,*,*,*,って,ッテ,ッテ
神 名詞,一般,*,*,*,*,神,カミ,カミ
って 助詞,格助詞,連語,*,*,*,って,ッテ,ッテ
る 助動詞,*,*,*,文語・ル,基本形,る,ル,ル
EOS

「神ってる」が、「神」「って」「る」とわかれてしまします。

なので、新語に対応した辞書「mecab-ipadic-NEologd」を使うようにします。


mecab-ipadic-NEologdをダウンロード

mecab-ipadic-NEologdについて

参考にした記事

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


辞書が新しくなったか確認する1

mecabをコマンドラインから実行してみます。

%%bash

mecab
メカブって神ってる

メカブ   名詞,固有名詞,組織,*,*,*,*

って 助詞,格助詞,連語,*,*,*,って,ッテ,ッテ
神 名詞,一般,*,*,*,*,神,カミ,カミ
って 助詞,格助詞,連語,*,*,*,って,ッテ,ッテ
る 助動詞,*,*,*,文語・ル,基本形,る,ル,ル
EOS

前回と変わらないようなので、辞書は新しくなっていません。

設定ファイル?「mecabrc」を変更し、新しい辞書のパスを見るようにする必要があるようです。


設定ファイルを変更する

「/etc/mecabrc」ファイルの「dicdir = /var/lib/mecab/dic/debian」を、

「mecab-ipadic-NEologd」の辞書のパス「/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd」に変更します。


/etc/mecabrcの中身を確認する

catコマンドを使って、ファイルの中身を確認します。

!cat /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

; 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


設定ファイルを変更する


  1. sedコマンドを使て、ファイルを変更、ファイル名を「mecabrc.new」として保存する。

  2. 「mecabrc.new」の中身を確認

  3. 「mecabrc」のバックアップの保存(mecabrc.orgとする)

  4. 「mecabrc.new」を「mecabrc」に上書き

  5. 「mecabrc」の中身を確認

ファイルの「dicdir = /var/lib/mecab/dic/debian」を、「mecab-ipadic-NEologd」の辞書のパス「/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd」に変更します。

!sed -e "s!/var/lib/mecab/dic/debian!/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd!g" /etc/mecabrc > /etc/mecabrc.new

変わったか確認します。

!cat /etc/mecabrc.new

;

; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
dicdir = /usr/lib/x86_64-linux-gnu/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

変更出来ているので、「/etc/mecabrc.new」を「/etc/mecabrc」にします。

!cp /etc/mecabrc /etc/mecabrc.org

!cp /etc/mecabrc.new /etc/mecabrc

確認します。

!cat /etc/mecabrc 

;

; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
dicdir = /usr/lib/x86_64-linux-gnu/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


辞書が新しくなったか確認する2

%%bash

mecab
メカブって神ってる

メカブ   名詞,固有名詞,一般,*,*,*,MeCab,メカブ,メカブ

って 助詞,格助詞,連語,*,*,*,って,ッテ,ッテ
神ってる 名詞,固有名詞,一般,*,*,*,神ってる,カミッテル,カミッテル
EOS


PYTHONで実行

mecab-python3をインストールする前に、swig を入れます。

インストールしないと、mecab-python3をインストール時に失敗します。

!apt-get -q -y install swig 

mecab-python3をインストールします。

!pip install mecab-python3

Collecting mecab-python3

[?25l Downloading https://files.pythonhosted.org/packages/25/e9/bbf5fc790a2bedd96fbaf47a84afa060bfb0b3e0217e5f64b32bd4bbad69/mecab-python3-0.7.tar.gz (41kB)
[K 100% |████████████████████████████████| 51kB 4.3MB/s
[?25hBuilding wheels for collected packages: mecab-python3
Running setup.py bdist_wheel for mecab-python3 ... [?25l- \ | / - done
[?25h Stored in directory: /content/.cache/pip/wheels/4c/07/3a/5f22ccc9f381f3bc01fa023202061cd1e0e9af855292f005dd
Successfully built mecab-python3
Installing collected packages: mecab-python3
Successfully installed mecab-python3-0.7

Pythonで、MeCabを使います。

import MeCab

mecab = MeCab.Tagger('-Ochasen')
res = mecab.parse('メカブって神ってる')
print(res)

メカブ   メカブ   MeCab   名詞-固有名詞-一般      

って ッテ って 助詞-格助詞-連語
神ってる カミッテル 神ってる 名詞-固有名詞-一般
EOS