今回、機械学習の勉強の一環として、Ubuntu(ウブントゥ)で「形態素解析」を試しました。
環境を作るだけなら意外と簡単でした。
あとはこの環境をどう活かして開発をするかという所に注力できます。
【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した【Part.1】
【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した【Part.2】
【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した(Janomeのインストール)【Part.3】
【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した(Janome&mecab-ipadic-neologd で解析)【Part.4】
mecabをインストールした EC2 インスタンス
mecabをインストールした EC2 インスタンスは「Deep Learning AMI(Ubuntu)」にしました。
理由は Ubuntu に機械学習用ライブラリ(TensorFlowなど)をインストールする手順や設定などの情報が豊富だったからです。
Amazon Linux でも調べれば何とか出来そうだったのですが、「環境構築の段階で諦めたくない」ので情報が豊富な「Ubuntu」を選択しました。
※ちなみに何度か Java に挑戦しては挫折していますが、理由はプログラムが分からないというよりは、「ライブラリエラー」や「パスのエラー」や「意味不明なエラー」などプログラミング以外の部分でどうにもならなくなって何度か Eclipse(エクリプス)をインストールしなおしたり、バージョンを変更したりして結局諦めて Ruby や Python や PHP に移ってしまっていました。
Ubuntuの環境
以下、Ubuntu の環境です。
Ubuntu バージョン : 16.04.2(2016年4月21日リリース)
※16.04.2の特徴としては「長期サポート (LTS)」、「Python 3への完全移行」、「Snappyの導入」が挙げられます。
カーネルリリース : 4.4.0-1048-aws
CPU : 1個
メモリ : 1GB
ubuntu@AWS_TEST: ~] cat /etc/ec2_version |
mecabをインストールする
まず初めに最低限 mecab を動かすために以下のパッケージをインストールします。
■mecab パッケージ群
- mecab ← mecab 本体
- libmecab-dev ← mecab のライブラリをインストールする際に必要になるヘッダーファイル
- mecab-ipadic ← 辞書ファイル(IPA辞書)
- mecab-ipadic-utf8 ← 辞書を「UTF-8」にする
ubuntu@AWS_TEST: ~] sudo apt-get install mecab libmecab-dev mecab-ipadic mecab-ipadic-utf8 done! done! done! |
mecab がインストールされない場合は「apt-get update」でレポジトリを更新する
レポジトリが更新されていないと以下のようなメッセージが出力されることがあります。
ubuntu@AWS_TEST ~] sudo apt-get install mecab libmecab-dev mecab-ipadic |
その場合は以下のように「apt-get update」コマンドを実行してレポジトリを最新にします。
(以下は ubuntu 初期状態の例)
ubuntu@AWS_TEST ~] sudo apt-get update |
アップデート後に「apt-get install mecab libmecab-dev mecab-ipadic」コマンドを実行すれば問題なくインストールできます。
mecabの動作確認
mecab コマンドを実行します。
mecab コマンドを実行すると文字の入力待ちになるので、何でもいいので文字を入力してみます。
ubuntu@AWS_TEST: ~] mecab |
確認してみた感じでは、単語(固有名詞)が現在の世相を反映していないなと思いました。
文字化けする場合
mecab コマンド実行時に以下のように文字化けする場合があります。
ubuntu@AWS_TEST ~] mecab |
■「mecab-ipadic-utf8」がインストールされていない可能性があるのでインストールする
上記のように文字化けする場合は「mecab-ipadic-utf8」パッケージがインストールされていない可能性があるためインストールします。
ubuntu@AWS_TEST ~] sudo apt-get install mecab-ipadic-utf8 done! |
以下のように文字化けしなければうまく設定ができています。
Yahoo!ニュース参考
ubuntu@AWS_TEST ~] mecab |
mecab-ipadic-NEologd をインストールするためのパッケージ群をインストールする
固有名詞を充実させるために「mecab-ipadic-NEologd」をインストールしたいのですが、そのためには「mecab-ipadic-NEologd」をインストールするためにパッケージ群が必要になります。(makeコマンドとかその他もろもろ)
すでに開発環境は全部入っている場合はスキップしていいですが、新規 Ubuntu の場合は以下のパッケージをインストールしておきます。
ubuntu@AWS_TEST ~] sudo apt-get install libc6-dev build-essential |
固有名詞を充実させるために mecab-ipadic-NEologd をインストールする
そこで固有名詞を充実させるために「mecab-ipadic-NEologd」をインストールします。
まずは git ファイルをダウンロードします。
ubuntu@AWS_TEST: ~] git clone https://github.com/neologd/mecab-ipadic-neologd.git |
mecab-ipadic-neologd をインストールする
「mecab-ipadic-neologd」をインストールします。
ubuntu@AWS_TEST: ~] cd mecab-ipadic-neologd/ [install-mecab-ipadic-NEologd] : find => ok
~ 省略 ~ |
「[install-mecab-ipadic-NEologd] : make is not found.」が出力された場合
以下のように「make is not found.」が表示された場合です。
単純に make コマンドがインストールされていないので、個別にmakeコマンドをインストールするか、上記で実行したコマンド「apt-get install libc6-dev build-essential」を実行します。
ubuntu@AWS_TEST ~] sudo apt-get install libc6-dev build-essential
~ 省略 ~ |
mecab-ipadic-neologd インストール時にエラー「terminate called after throwing an instance of ‘std::bad_alloc’」が出た場合
mecab-ipadic-neologd のインストール時に以下のように「terminate called after throwing an instance of ‘std::bad_alloc’」というエラーが出力されました。
おそらくはメモリが1GBであることが原因と思われます。
reading ./neologd-noun-sahen-conn-ortho-variant-dict-seed.20160323.csv … 26058 |
EC2インスタンスタイプを変更する
メモリ容量を増やすために一時的に EC2 のインスタンスタイプをハイスペックなものに変更します。
ただし変更すると課金されるため、後に mecab-ipadic-NEologd インストール後に再度現在の EC2 インスタンスタイプに戻します。
■どれくらいのメモリサイズが必要なのか?
「README.ja.md」を読むと、メモリに関して以下の記述があります。
### 全部入りな mecab-ipadic-NEologd を簡単にインストールする方法 オプションで個別に指定しても良いですが、-a オプションを指定すると全部入り状態でインストールできます。 $ ./bin/install-mecab-ipadic-neologd -n -a 全部入りな辞書を構築する際の最低メモリ使用量は2GByte弱です。 |
■インスタンスタイプ一覧
下図のように様々なタイプのインスタンスタイプがありますが今回は「t2.micro(無料対象枠)」→「t2.medium」に変更します。
t2.mediumはメモリが「4GiB」あるので充分要件を満たしています。
対象のインスタンスを選択し「アクション」–「インスタンスの状態」–「停止」を選択します。
「インスタンスの停止」の確認画面が表示されるので「停止する」ボタンをクリックします。
「インスタンスの状態」が「stopped」になっていることを確認します。
対象の EC2 インスタンスを選択し「アクション」–「インスタンスの設定」–「インスタンスタイプの変更」を選択します。
インスタンスタイプの変更画面が表示されたら「t2.medium」を選択して「適用」ボタンをクリックします。
下図のように「インスタンスタイプ」が変更されていることを確認します。
対象の EC2 インスタンスを選択して「アクション」–「インスタンスの状態」–「開始」を選択します。
「インスタンスの開始」確認画面で「開始する」ボタンをクリックします。
mecab-ipadic-neologd をインストールする
メモリを増量したら再度「mecab-ipadic-neologd」をインストールします。
ubuntu@AWS_TEST: ~] cd mecab-ipadic-neologd/ [install-mecab-ipadic-NEologd] : mecab-ipadic-NEologd is already up-to-date [install-mecab-ipadic-NEologd] : mecab-ipadic-NEologd will be install to /usr/lib/mecab/dic/mecab-ipadic-neologd [install-mecab-ipadic-NEologd] : Make mecab-ipadic-NEologd done! default system dictionary | mecab-ipadic-NEologd [test-mecab-ipadic-NEologd] : Finish.. [install-mecab-ipadic-NEologd] : Please check the list of differences in the upper part. [install-mecab-ipadic-NEologd] : Do you want to install mecab-ipadic-NEologd? Type yes or no. [install-mecab-ipadic-NEologd] : Install completed. [install-mecab-ipadic-NEologd] : Finish.. |
インストールが完了したらタイプを元に戻す
経費削減のため元の無料利用枠のタイプに戻しましょう。
対象のインスタンスを選択し「アクション」–「インスタンスの状態」–「停止」を選択します。
「インスタンスの停止」の確認画面が表示されるので「停止する」ボタンをクリックします。
「インスタンスの状態」が「stopped」になっていることを確認します。
対象の EC2 インスタンスを選択し「アクション」–「インスタンスの設定」–「インスタンスタイプの変更」を選択します。
インスタンスタイプの変更画面が表示されたら「t1.micro」を選択して「適用」ボタンをクリックします。
下図のように「インスタンスタイプ」が変更されていることを確認します。
対象の EC2 インスタンスを選択して「アクション」–「インスタンスの状態」–「開始」を選択します。
「インスタンスの開始」確認画面で「開始する」ボタンをクリックします。
Python 3 系で使えるようにする
今回は mecab を Python プログラムから使用したいので「Python3系」のプログラムから mecab を実行できるようにライブラリ(mecab-python3)をインストールします。
ライブラリのビルドに必要なパッケージをインストール
「mecab-python3」は pip コマンドを使ってインストールします。
現在のデフォルトの pip のバージョンを確認します。
pip のバージョンは「9.0.1」で「python 3.6」のライブラリを使っていることが分かります。
ubuntu@AWS_TEST: ~] pip –version |
■pipがインストールされていない場合は以下のコマンドでインストールする
pip –version コマンドを実行した際に以下のように pip がインストールされていないというメッセージが出た場合です。
ubuntu@AWS_TEST ~] pip –version |
「apt install python-pip」コマンドで pip をインストールします。
ubuntu@AWS_TEST ~] sudo apt install python-pip |
pip install コマンドで「mecab-python3」をインストールします。
ubuntu@AWS_TEST: ~] pip install mecab-python3 |
mecab-python3をインストール時に「MeCab_wrap.cxx:149:20: fatal error: Python.h: No such file or directory」というエラーが出る場合
pip install mecab-python3 コマンドを実行すると「MeCab_wrap.cxx:149:20: fatal error: Python.h: No such file or directory」というエラーが出力される場合があります。
ubuntu@AWS_TEST ~] pip3.6 install mecab-python3 —————————————- —————————————- |
apt-get install コマンドで python3.6-dev をインストールします。
※python-devではありません。
ubuntu@AWS_TEST ~] sudo apt-get install python3.6-dev |
動作確認
再度動作確認します。
「mecab-ipadic-NEologd」は、mecab コマンドで「-d」でディレクトリを指定する必要があります。
以下のようにかなりの固有名詞が登録されているようです。
ubuntu@AWS_TEST: ~] mecab -d /usr/lib/mecab/dic/mecab-ipadic-neologd |
参考にしたサイト
Ubuntu 14.04 に Mecab と mecab-python3 をインストール
https://qiita.com/elm200/items/2c2aa2093e670036bb30
MeCab-Pythonの導入手順(CentOS6)
http://progmemo114.hatenablog.com/entry/2016/07/02/145015
今までの記事
【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した【Part.1】
【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した【Part.2】
【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した(Janomeのインストール)【Part.3】
【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した(Janome&mecab-ipadic-neologd で解析)【Part.4】
コメント