[機械学習] 日本語形態素解析ツール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をフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!