はじめに
MeCabをユーザーのローカル環境にインストールする必要があり、手順をまとめてみました。gccやmakeは必要になりますので、最低限のコマンドだけはroot権限でインストールしておく必要があります。もしroot権限(sudoコマンドを実行できる権限)があればホストのグローバル環境にインストールできます。グローバル環境にインストールする場合はこちらの投稿を参照してください。
MeCab と mecab-ipadic のインストール
MeCab と mecab-ipadic はどちらも同じ GitHub プロジェクトに含まれています。GitHub から clone してきたものをそれぞれ設定、インストールします。
MeCab のインストール先はユーザーのホームディレクトリ直下にディレクトリ opt/mecab を置き、この中にインストールすることにします。グローバル環境のインストール先はデフォルトで /usr/local ですが、この投稿では ${HOME}/opt/mecab になります。
$ GITHOME="${HOME}/git"
$ mkdir -p ${GITHOME}
$ cd ${GITHOME}
$ git clone https://github.com/taku910/mecab.git
MeCab インストール
デフォルトでは文字コード EUC、インストール先ディレクトリ /usr/local にインストールされます。いまどきの Linux なら文字コードは UTF8 にしておいた方が文字化けに関する懸念がなくなり便利かと思います。また、mecab-ipadic-NEologd が対応している文字コードは UTF8 のみですので、やはりここでは UTF8 を指定します。
$ cd ${GITHOME}/mecab/mecab
$ ./configure \
--enable-utf8-only \
--prefix=${HOME}/opt/mecab
$ make
$ make check
$ make install
環境変数設定と適用
この時点ではmecabコマンドやライブラリにパスが通っていないためまだ実行できません。mecabコマンドを実行できるよう、環境変数にパスを書き出して適用します。
~/.mecabenv
_PREFIX="${HOME}/opt/mecab"
LD_LIBRARY_PATH="${_PREFIX}/lib"
export LD_LIBRARY_PATH
MECABRC="${_PREFIX}/etc/mecabrc"
export MECABRC
PATH="${_PREFIX}/bin:${PATH}"
export PATH
現在作業中の端末に適用します。
source ~/.mecabenv
次回以降、ログインすると自動的に環境変数が読み込まれるよう、~/bashrc の末尾に追記します。
~/.bashrc
(前略)
. ~/.mecabenv
mecab-ipadic インストール
デフォルトでは文字コード EUC、インストール先ディレクトリ /usr/local にインストールされます。こちらも、UTF8 にしたものをインストールします。
$ cd ${GITHOME}/mecab/mecab-ipadic
$ ./configure \
--with-charset=utf8 \
--prefix=${HOME}/opt/mecab
$ make
$ make install
動作確認
この時点で、mecab コマンドによる形態素解析ができるようになります。mecab コマンドを引数なしで実行すると標準入力の入力待ち状態になりますので、目的の文章を入力してください。形態素解析結果が表示されます。終了するには「Ctrl + d」を入力してください。
$ mecab
今週末は金剛山に登りに行って、そのあと新世界かどっかで打ち上げしましょ。
今週 名詞,副詞可能,*,*,*,*,今週,コンシュウ,コンシュー
末 名詞,接尾,副詞可能,*,*,*,末,マツ,マツ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
金剛山 名詞,固有名詞,一般,*,*,*,金剛山,コンゴウザン,コンゴーザン
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
登り 名詞,一般,*,*,*,*,登り,ノボリ,ノボリ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
行っ 動詞,自立,*,*,五段・カ行促音便,連用タ接続,行く,イッ,イッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
、 記号,読点,*,*,*,*,、,、,、
その 連体詞,*,*,*,*,*,その,ソノ,ソノ
あと 名詞,一般,*,*,*,*,あと,アト,アト
新 接頭詞,名詞接続,*,*,*,*,新,シン,シン
世界 名詞,一般,*,*,*,*,世界,セカイ,セカイ
か 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ
どっか 名詞,代名詞,一般,*,*,*,どっか,ドッカ,ドッカ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
打ち上げ 動詞,自立,*,*,一段,連用形,打ち上げる,ウチアゲ,ウチアゲ
し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ましょ 助動詞,*,*,*,特殊・マス,未然ウ接続,ます,マショ,マショ
。 記号,句点,*,*,*,*,。,。,。
EOS
mecab-ipadic-NEologd のインストール
mecab-ipadic-NEologd は GitHub から clone して設定、インストールします。
$ cd ${GITHOME}
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
mecab-ipadic-NEologd インストール
デフォルトではインストーラーはsudoコマンドを使ってインストールしようとしますので、オプション –asuser を付けてユーザー権限でインストールされるようにします。
$ cd ${GITHOME}/mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd \
--asuser
動作確認
mecab コマンドを実行する際、-d オプションで mecab-ipadic-NEologd の辞書を指定します。
$ mecab -d ${HOME}/opt/mecab/lib/mecab/dic/mecab-ipadic-neologd
今週末は金剛山に登りに行って、そのあと新世界かどっかで打ち上げしましょ。
今週 名詞,副詞可能,*,*,*,*,今週,コンシュウ,コンシュー
末 名詞,接尾,副詞可能,*,*,*,末,マツ,マツ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
金剛山 名詞,固有名詞,一般,*,*,*,金剛山,コンゴウザン,コンゴーザン
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
登り 名詞,一般,*,*,*,*,登り,ノボリ,ノボリ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
行っ 動詞,自立,*,*,五段・カ行促音便,連用タ接続,行く,イッ,イッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
、 記号,読点,*,*,*,*,、,、,、
その 連体詞,*,*,*,*,*,その,ソノ,ソノ
あと 名詞,一般,*,*,*,*,あと,アト,アト
新世界 名詞,固有名詞,一般,*,*,*,新世界,シンセカイ,シンセカイ
か 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ
どっか 名詞,代名詞,一般,*,*,*,どっか,ドッカ,ドッカ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
打ち上げ 動詞,自立,*,*,一段,連用形,打ち上げる,ウチアゲ,ウチアゲ
し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ましょ 助動詞,*,*,*,特殊・マス,未然ウ接続,ます,マショ,マショ
。 記号,句点,*,*,*,*,。,。,。
EOS
Python3 で MeCab を使う
MeCab と mecab-ipadic-NEologd を Python3 で使用できるようにします。
モジュールインストール
venv環境を有効にした状態でインストールします。
(venv35)$ pip install mecab-python3
動作確認
tagger を取得する際、デフォルトの辞書(mecab-ipadic) 以外の辞書を指定するには、mecab コマンドを実行したときのように -d オプションで mecab-ipadic-NEologd の辞書を指定します。下記プログラムでは、解析結果のうち名詞だけ抽出して表示する処理も追加してみました。
import MeCab
import os
tagger = MeCab.Tagger('-d {0}/opt/mecab/lib/mecab/dic/mecab-ipadic-neologd'.format(os.environ['HOME']))
input = '今週末は金剛山に登りに行って、そのあと新世界かどっかで打ち上げしましょ。'
result = tagger.parse(input)
print(result)
node = tagger.parseToNode(input)
target_parts_of_speech = ('名詞', )
while node:
if node.feature.split(',')[0] in target_parts_of_speech:
print(node.surface)
node = node.next
今週 名詞,副詞可能,*,*,*,*,今週,コンシュウ,コンシュー
末 名詞,接尾,副詞可能,*,*,*,末,マツ,マツ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
金剛山 名詞,固有名詞,一般,*,*,*,金剛山,コンゴウザン,コンゴーザン
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
登り 名詞,一般,*,*,*,*,登り,ノボリ,ノボリ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
行っ 動詞,自立,*,*,五段・カ行促音便,連用タ接続,行く,イッ,イッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
、 記号,読点,*,*,*,*,、,、,、
その 連体詞,*,*,*,*,*,その,ソノ,ソノ
あと 名詞,一般,*,*,*,*,あと,アト,アト
新世界 名詞,固有名詞,一般,*,*,*,新世界,シンセカイ,シンセカイ
か 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ
どっか 名詞,代名詞,一般,*,*,*,どっか,ドッカ,ドッカ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
打ち上げ 動詞,自立,*,*,一段,連用形,打ち上げる,ウチアゲ,ウチアゲ
し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ましょ 助動詞,*,*,*,特殊・マス,未然ウ接続,ます,マショ,マショ
。 記号,句点,*,*,*,*,。,。,。
EOS
今週
末
金剛山
登り
あと
新世界
どっか