2016/03/14更新

[機械学習] 日本語形態素解析ツールMecabをPython3から利用する

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
本日は日本語の形態素解析ツールであるMecabをPython3系から利用する方法をブログに書きたいと思います。

画像


目次




Mecabとは

自然言語処理を行うツールのうちの1つで、日本語の単語レベルに分解して、品詞の特定などをすることができます。Mecabのアウトプットを機械学習のインプットにしたりと、後続の言語処理を行うための、前処理としてMecabは利用されます。

Mecab本家のサイト(日本語)

例えば、コマンドラインからは以下のように利用することができます。
# ターミナルからの利用例
$ mecab
すもももももももものうち
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も   助詞,係助詞,*,*,*,*,も,モ,モ
もも  名詞,一般,*,*,*,*,もも,モモ,モモ
も   助詞,係助詞,*,*,*,*,も,モ,モ
もも  名詞,一般,*,*,*,*,もも,モモ,モモ
の   助詞,連体化,*,*,*,*,の,ノ,ノ
うち  名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS
上記の出力結果のように、「単語への分割」「品詞の特定」「単語の原型の特定」などができ、日本語の言語処理をする上でとても重要な役目を果たしています。



Mecabのインストール

Mecabを利用できる状態にするには、「Mecab本体」と「辞書」をそれぞれインストールする必要があります。

Mecabのソース入手先は、Mecab downloads | Google Driveに変わったみたいなので、そちらよりゲットします。今回はmecab-0.996.tar.gzを利用します。
# ファイルを解凍
$ tar zxfv mecab-0.996.tar.gz

# フォルダへ移動
$ cd mecab-0.996

# インストール
$ ./configure
$ make
$ make check
$ sudo make install

# 動作チェック
$ mecab
これでMecab本体をインストールすることができました。続いて辞書のインストールです。辞書にはIPA辞書というものを用いますが、こちらも同じくMecab downloads | Google Driveにあるのでそこからダウンロードします。今回はmecab-ipadic-2.7.0-20070801.tar.gzを利用します。
# ファイルを解凍
$ tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz

# フォルダへ移動
$ cd mecab-ipadic-2.7.0-20070801

# インストール
# Macで使う場合には、utf-8で辞書を登録します
$ ./configure --with-charset=utf8
$ make
$ sudo make install
これで辞書登録も完成です。この状態で上記に示した「すもももももももものうち」が解析できるようになります。



Python3からMecabを利用する

MecabをPythonから利用する場合には、Python2系での利用方法がブログなどで多く掲載されていますが、Python3からも利用することができます。まずはパッケージをインストールします。
$ pip install --upgrade mecab-python3
その後、以下のように利用することができます。
>>> import MeCab
>>> mecab = MeCab.Tagger("-Ochasen")
>>> ret = mecab.parse("すもももももももものうち")
>>> ret
'すもも\tスモモ\tすもも\t名詞-一般\t\t\nも\tモ\tも\t助詞-係助詞\t\t\nもも\tモモ\tもも\t名詞-一般\t\t\nも\tモ\tも\t助詞-係助詞\t\t\nもも\tモモ\tもも\t名詞-一般\t\t\nの\tノ\tの\t助詞-連体化\t\t\nうち\tウチ\tうち\t名詞-非自立-副詞可能\t\t\nEOS\n'

>>> #上記のままだと使いづらいので、綺麗に整形します。
>>> for l in ret.split("\n"):
...     o = l.split("\t")
...     if len(o) >= 6:
...         print("===========")
...         print("word= ", o[0])
...         print("yomi= ", o[1])
...         print("orgn= ", o[2])
...         print("type= ", o[3])
...         print("type1=", o[4])
...         print("type2=", o[5])
===========
word=  すもも
yomi=  スモモ
orgn=  すもも
type=  名詞-一般
===========
word=  も
yomi=  モ
orgn=  も
type=  助詞-係助詞
===========
word=  もも
yomi=  モモ
orgn=  もも
type=  名詞-一般
===========
word=  も
yomi=  モ
orgn=  も
type=  助詞-係助詞
===========
word=  もも
yomi=  モモ
orgn=  もも
type=  名詞-一般
===========
word=  の
yomi=  ノ
orgn=  の
type=  助詞-連体化
===========
word=  うち
yomi=  ウチ
orgn=  うち
type=  名詞-非自立-副詞可能



最後に

本日はMecabのインストールと、Python3からMecabを利用する方法をブログに書きました。Google Driveへのホスティングに変わってちょっと戸惑いましたが、無事に利用できるところまでをブログにかけて良かったです。Mecabはこれからどんどんと使っていきたいと思いますので、また色々とブログに書けたらと思います。

本ブログでは、フロントエンド・Python・機械学習を中心に発信していきます。気になった方はぜひ、本ブログのRSSTwitterをフォローして頂けると幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。