仕事で自然言語処理を行うシステム構築の必要性が出てきたので、取り急ぎ、形態素解析エンジンのMeCabを勉強してみた。環境は次の通り。
- AWSのEC2に構築
- 利用言語はPython3.7
- MeCabのバージョンはサイトの最新バージョン(MeCabサイト)
色々触ってみたので、備忘として残しています。
MeCab構築でやったこと

MeCabを構築した時のステップは大きく3つです。今回は、2つ目のEC2へMeCabのインストール手順です。 EC2へのインストール手順は色々なページで紹介していますが、少しずつやり方が異なっていて自分のやり方でインストールしているサイトが無かったので、ここに記録しておきます。
MeCabのインストール
まずここでつまづく人がいると思いましたので、ちょっと細かく記載すると、まずMeCabのダウンロードサイトからインストールパッケージのダウンロードをするのですが、自分のPCにダウンロードしてからAWSのEC2にアップロードするのではなく、AWS上のWgetコマンドを使って直接AWS上にダウンロードします。

wgetって何ですか?

Linuxの基本的なコマンドです。wgetはWeb上のデータをダウンロードする時のコマンドで「wget <URL>」で、指定したURLのファイルを取得する事が出来ます。
MeCabパッケージダウンロード
ダウンロードするパッケージのURLを確認
まずは、Web上のMeCabをダウンロードできるサイトのURLを確認します。こちらのMeCabのページにアクセスして、ダウンロードリンクをクリックします。

ダウンロードパッケージのURLを取得
ダウンロードのページに遷移するので、MeCab本体のSource欄にあるダウンロードを右クリックして、「リンクのアドレスをコピー」を選択します。

右クリックではなく左クリックだと、自分のPCへダウンロードが始まってしまいます。AWS上に直接ダウンロードするので、自分のPCへのダウロードは不要です。

パッケージの取得
Teratarmを使って、先ほど取得したURLのデータを取得します。

EC2の停止を行っていた人は、EC2のインスタンス起動をまずしてください。起動するとパブリックIPアドレスも前回使用時と異なるものが割り振られるので、TeraTarm起動時に指定するIPアドレスも変更となりますので、注意しましょう。
$ mkdir mecab
$ mkdir mecab/download
$ cd ~/mecab/download
$ wget -O mecab-0.996.tar.gz “https://drive.google.com/uc? export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE”
- mkdir:ディレクトリの作成コマンド。1つ目のコマンドはホームディレクトリにMeCabディレクトリを作成しています。2つ目のコマンドでは、作成したmecabディレクトリの下にdownloadディレクトリを作成しています。
- cd:ディレクトリの移動コマンド。ここでは、mecabディレクトリ下のあdownloadディレクトリへ移動しています。
- wget:ウェブ上のファイルをダウンロードするコマンド。後ろに指定したURLのファイルをダウンロードします。ここでは、mecab/download内に「mecab-0.996.tar.gz」ファイルをダウンロードします。

mecabのダウンロードは、-O パラメータでダウンロード後のファイル名を指定しないと正しくダウンロードできません。今回は、-Oパラメータで「mecab-0.996.tar.gz」 と指定して実行しています。
$ ls
mecab-0.996.tar.gz
ls:ディレクトリの中のファイル一覧を出力するコマンドです。パラーメタを指定しないと今いるディレクトリ内にあるファイルとディレクトリの一覧を出力します。
MeCabのインストール
パッケージの解凍
$ cd ~/mecab
$ tar xvf download/mecab-0.996.tar.gz
$ ls
mecab-0.996
tar:複数のファイルを1つのアーカイブにまとめたり、アーカイブファイルを展開するコマンド。
パラメータについて
x:アーカイブファイルの展開する時のパラメータ
v:処理状況を表示する場合に指定
f:対象のファイルを指定する時に使用するパラメータ。続けてファイル名を記載する
インストール
$ cd ~/mecab/mecab-0.996/
$ ./configure
$ make
$ make check
$ sudo make install
一般的なプログラムのコンパイルの流れです。
- configure:解凍したパッケージ内にあるプログラムで、パッケージをコンパイルするための環境設定やmakefileを作成します。
- make:makefileに従ってパッケージのコンパイルをします。
- make check:コンパイルしたプログラムのチェックを行います。
- sudo make install:
make installは、プログラムやデータファイルやドキュメントをインストールするコマンドです。今回は、ルートユーザの権限で、パッケージのインストールを行っています。
インストール確認
$ ls /usr/local/lib
libmecab.a libmecab.la libmecab.so libmecab.so.2 libmecab.so.2.0.0
インストールが成功すると、/usr/local/libディレクトリにファイルが作成されるので、それを確認します。実際の動作確認は、辞書をインストールしてから実施します。
MeCab辞書のインストール
MeCabの動作を確認するには辞書をインストールする必要があります。(なくても動作するのかもしれませんが未確認です)今回はMeCabサイトにあるIPA辞書をインストールしてみます。
辞書のダウンロード
ダウンロードする辞書のURLを確認
先ほどのMeCabダウンロードサイトに戻り、IPA辞書のダウンロードリンクからURLを取得します。

辞書パッケージのダウンロード
MeCabパッケージのダウンロードと同じコマンドを使います。こちらも -O オプションを使って、ダウンロードしたファイルの名称を指定しています。
$ cd ~/mecab/download
$ wget -O mecab-ipadic-2.7.0-20070801.tar.gz "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM"
辞書インストール
辞書ファイルの解凍
こちらもパッケージの解凍と同じコマンドを使います。
$ cd ~/mecab/
$ tar xvf download/mecab-ipadic-2.7.0-20070801.tar.gz
$ ls
download mecab-0.996 mecab-ipadic-2.7.0-20070801
辞書のインストール
辞書のインストールもMeCabと流れは同じです。基本的にLinuxのインストール手順はどれも同じですね。
$ cd ~/mecab/mecab-ipadic-2.7.0-20070801
$ ./configure --with-charset=utf8 make
$ make
$ make install

辞書は、文字を扱っているのでインストールするシステムに合わせた文字コードを指定しないと、文字化けを起こしてしまいます。
今回はAWS Linux2で実装するのでutf8 を用います。configureを実行する時にutf8を指定しています。
MeCab動作確認
これでMeCabと辞書のインストールが完了したので動作確認をしてみます。mecabと入力すると、プログラムが実行されるので、続けて文章を入力します。
$ mecab
今日は片頭痛と腹痛で視力が悪いので、仕事は休むことにした。
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
片 接頭詞,名詞接続,*,*,*,*,片,カタ,カタ
頭痛 名詞,一般,*,*,*,*,頭痛,ズツウ,ズツー
と 助詞,並立助詞,*,*,*,*,と,ト,ト
腹痛 名詞,一般,*,*,*,*,腹痛,ハライタ,ハライタ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
視力 名詞,一般,*,*,*,*,視力,シリョク,シリョク
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
悪い 形容詞,自立,*,*,形容詞・アウオ段,基本形,悪い,ワルイ,ワルイ
ので 助詞,接続助詞,*,*,*,*,ので,ノデ,ノデ
、 記号,読点,*,*,*,*,、,、,、
仕事 名詞,サ変接続,*,*,*,*,仕事,シゴト,シゴト
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
休む 動詞,自立,*,*,五段・マ行,基本形,休む,ヤスム,ヤスム
こと 名詞,非自立,一般,*,*,*,こと,コト,コト
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
EOS
入力した文章を品詞ごとに区切って一覧表示されます。これで、正しくMeCabが動いていることを確認できました。では続いて、このMeCabをPythonで使えるように設定をします。ちなみに出力は次の情報が出力されています。
表層形、品詞、品詞細分類1、品詞細分類2、品詞細分類3、活用型、活用形、原形、読み、発音
MecabをPythonで使えるようにする
ここまでの実装だと、MeCabを実行してコマンドでの実行しかできていません。それをPythonの処理の中で使えるようにします。
pythonにMeCabのパッケージをインストール
Pythonへのインストールはpip3を用います。インストールするパッケージは、mecab-python3 です。
$ pip3 install mecab-python3
pip3 install:パッケージのインストールコマンド。後ろにインストールするパッケージ名が続きます。

pipはPythonのパッケージを管理するためのツールです。Python2とPython3は構造が異なっていて、今回AWSではPython3を使っているpop3に変更となっています。

インストールしたいパッケージはどこで検索できるんですか?

インストール元のサイトは、The Python Package Index (PyPI)です。ここのパッケージ名を指定すると、対象のパッケージをインストールする事が出来ます。
Pythonにmecab-python3のパッケージのインストールはたったこれだけです。では、実際にPythonでmecabを呼び出して実行する簡単なプログラムを書いてみます。
動作確認用プログラムの作成
動作確認は、簡単なPythonコードを作成して動かしてみることにします。テスト用のディレクトリを作成して、そこの下に「test.py」ファイルを作成します。
$ cd ~/mecab
$ mkdir test
$ cd test
$ vi test.py

viはテキストエディタです。test.pyというファイルを開いてファイルの編集を行います。ファイルが存在しない場合は、新規作成ファイルとして表示します。
viの使い方は別途ご案内予定です。ググってみれば色々わかると思います。
ここでは次のようなtest.pyを作成します。
# MeCabモジュールのインポート
import MeCab
# MeCab::Taggerクラスのインスタンスを作成(ここではデフォルト設定)
mec = MeCab.Tagger(' ‘)
#検証対象文章作成
sentence = '今日は片頭痛と腹痛で視力が悪いので、仕事は休むことにした。’
#文章の解析実施
result = mec.parse(sentence)
#解析結果出力
print(result)
pythonでの動作確認
それでは、作成したプログラムを実行してみます。
$ python3 test.py
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
片 接頭詞,名詞接続,*,*,*,*,片,カタ,カタ
頭痛 名詞,一般,*,*,*,*,頭痛,ズツウ,ズツー
と 助詞,並立助詞,*,*,*,*,と,ト,ト
腹痛 名詞,一般,*,*,*,*,腹痛,ハライタ,ハライタ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
視力 名詞,一般,*,*,*,*,視力,シリョク,シリョク
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
悪い 形容詞,自立,*,*,形容詞・アウオ段,基本形,悪い,ワルイ,ワルイ
ので 助詞,接続助詞,*,*,*,*,ので,ノデ,ノデ
、 記号,読点,*,*,*,*,、,、,、
仕事 名詞,サ変接続,*,*,*,*,仕事,シゴト,シゴト
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
休む 動詞,自立,*,*,五段・マ行,基本形,休む,ヤスム,ヤスム
こと 名詞,非自立,一般,*,*,*,こと,コト,コト
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
EOS
$
コマンドプロンプトで実行した結果と同じ結果が得られました。これでPythonにMeCabがインストールされたことが確認できました。
まとめ
MecabのインストールとPythonでの動作検証まで進めました。次は、分かち書きするパラメータをセットして、辞書の変更も行ってみようと思います。

分かち書きってなんですか?

んー、文章を品詞ごとに分解してスペースで区切るってイメージかな。
詳細は次回話しましょう。