[機械学習] 日本語形態素解析ツールMecabをPython3から利用する
こんにちは、@yoheiMuneです。
本日は日本語の形態素解析ツールであるMecabをPython3系から利用する方法をブログに書きたいと思います。
 
Mecab本家のサイト(日本語)
例えば、コマンドラインからは以下のように利用することができます。
Mecabのソース入手先は、Mecab downloads | Google Driveに変わったみたいなので、そちらよりゲットします。今回は
本ブログでは、フロントエンド・Python・機械学習を中心に発信していきます。気になった方はぜひ、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!
本日は日本語の形態素解析ツールである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・機械学習を中心に発信していきます。気になった方はぜひ、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!
 
  
