Python

【これ1本でOK】MeCabをインストールしてPythonで形態素解析する方法【Mac】

MeCab インストール Mac Python
Pythonで形態素解析したい人
Pythonで形態素解析したい人
Pythonで形態素解析したいな…。

どうやらMeCabを導入すれば良いらしいから、インストールしていきたいな…。

この記事では、上記のような悩みを解決していきます。

 

この記事の想定読者

  • Pythonで形態素解析したい人
  • MeCabのインストール方法を知りたい人
  • Macを使っている人

想定している読者は、上記のとおりです。

 

この記事では、「MeCabをインストールして、pythonで形態素解析する方法」について書いていきます。

 

MeCabはPython専用のライブラリとかではなく、一般的に日本語を形態素解析するためのツールです。

なので、MeCab本体を導入したあとで、Pythonでも使えるようにしていきます。

 

MeCabのインストール手順

  • 「MeCab本体」と「単語辞書」をインストール
  • Pythonで使えるようにする

 

MeCabとは?

 

そもそもMeCabってなんだろうって話ですが、Googleの日本語入力の開発者の1人である工藤拓さんによって開発された形態素解析ツールです。

参考ページ >> MeCab: Yet Another Part-of-Speech and Morphological Analyzer

 

“MeCab”という名前は、開発者の好物である和布蕪(めかぶ)からきているそうで、、、

MeCabはパラメーター推定に、CRF(Conditional Random Fields)を用いており、解析精度が高く、実行速度も速いのが特徴です。

 

今回紹介するのは、MeCabをPythonで利用する方法ですが、JavaやC#でも使えます。

 

なぜ形態素解析ツールを使うのか?

理由としては、「日本語は形態素解析するのが難しいから」です。

 

たとえば、英語を形態素解析にかけるのは、さして難しいことではありません。

なぜなら、ほとんどの箇所で単語と単語の区切りが明確だからですね。

たまに例外で”it’s”や”don’t”が出てきますが、「特定の単語をit isやdo notに変化させるという簡単なルール」に従って変換すれば、カンタンに形態素解析できます。

 

でも日本語の場合だと、単語と単語の区切りが明確ではないです。

そのため形態素解析が難しく、色々な研究がされてオープンソースの形態素解析ライブラリが公開されるようなったって感じです。

 

今回使うMeCabは、代表的な日本語の形態素解析でして、”mecab-ipadic-NEologd”という単語辞書を使って形態素解析していきます。

 

MeCabをインストールして、Pythonで使えるようにする【for Mac】

 

それでは、MeCabをインストールして、Pythonで形態素解析できるようにしていきます。

やることは、ぶっちゃけそんなないです。

 

homebrewのインストール

まずは、homebrewをインストールしていきます。

homebrewは、Macのパッケージ管理システムです。

Pythonで例えるならば、pipみたいな感じですね。

インストール方法については、「macOSにHomebrewをインストール」が参考になります。

 

MeCabと単語辞書をインストール

次に、MeCab本体と単語辞書をインストールしていきます。

MeCab本体のインストールは、下記のコマンド。

brew install mecab

 

MeCabで使う単語辞書については、下記のコマンド。

brew install mecab-ipadic

 

これだけでOKです。

 

Pythonで使えるようにする

MeCabとMeCabで使う単語辞書を導入できたので、Pythonで使えるようにしていきます。

とは言っても、下記のコマンドで一発です。

pip install mecab-python3

これだけですね。

ここまでの手順で、MeCabをPythonで使えるようになっています。

 

MeCabの使い方【形態素解析してみる】

 

それでは、Pythonで形態素解析していきましょう。

方法はとてもカンタンで、下記の3行で形態素解析できます。

import MeCab
tagger = MeCab.Tagger("-Ochasen")
print(tagger.parse("僕はブロガーです。"))

※MeCabの”C”は大文字ですm(_ _)m

 

やっていることとしては、下記のとおり。

  • MeCabをimportして
  • Taggerメソッドを呼び出し
  • 自分で決めた文章を形態素解析する

上記のとおりです。

 

ちなみに”-Ochasen”の部分は、色々と変更できます。

  • mecabrc: (デフォルト)
  • -Ochasen: (ChaSen 互換形式)
  • -Owakati: (分かち書きのみを出力)
  • -Oyomi: (読みのみを出力)

上記の4つがあり、何も選択肢なかったらデフォルトの”mecabrc”になる感じです。

名詞だけ取り出すなど、品詞で判定していきたいことが多いので、”-Ochasen“をよく使う気がしますね。

 

さらに : MeCabの性能をグレードアップする

 

MeCabで使っていた単語辞書のipadicには、”mecab-ipadic-NEologd“という追加辞書が存在します。

公式github >> mecab-ipadic-neologd/README.ja.md

 

MeCabの性能を上げるために、mecab-ipadic-NEologdを使えるようにしていきましょう。

 

以下のコマンドが使えることを確認

  • git
  • curl
  • xz

上記のコマンドが使えるか、確認しましょう。

と言いつつ、gitとcurlについては、Macを使っていれば利用できる状態になっているはずです。

なので、xzだけインストールしましょう。

インストールするには、下記のコマンドをターミナルに打ち込むだけです。

brew install xz

 

成功すると、下記のような表示が出てくるかと思います。

🍺  /usr/local/Cellar/xz/5.2.4: 92 files, 1MB

これで完了下準備は完了です。

 

mecab-ipadic-NEologdをインストール

mecab-ipadic-NEologd“をインストールする準備を、下記のコマンドで済ませます。

git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git

 

git cloneが成功したら、ディレクトリを移動しましょう。

cd mecab-ipadic-neologd

 

これからインストールをしていくのですが、オプションが色々とありまして、下記のコマンドで見れるようになっています。

./bin/install-mecab-ipadic-neologd -h

 

普通にインストールする場合は、下記のコマンドです。

./bin/install-mecab-ipadic-neologd -n

 

ただ、上記のコマンドだと、一部の辞書ファイルがインストールされないです。

“-a”オプションを指定すると、全て入った状態でインストールできます。

$ ./bin/install-mecab-ipadic-neologd -n -a

こちらを利用する場合は、2GBくらい消費するので、SSDに空きがない場合は標準インストールにしましょう。

 

ここまでで追加辞書のインストールが完了しました。

 

アップグレードしたMeCabの使い方

 

さっそくアップデートしたMeCabを使っていきましょう。

この記事では、比較のために普通のMeCabとアップデートしたMeCabの両方を載せています。

 

 普通のMeCab

今まで使っていたようなMeCabは、下記のコードを入力すればOKでした。

import MeCab
tagger = MeCab.Tagger()
print(tagger.parse("僕は霜降り明星が好きです。"))

 

形態素解析した結果を見てみると、こんな感じになりました。

  • ‘僕\t名詞,代名詞,一般,*,*,*,僕,ボク,ボク\n
  • は\t助詞,係助詞,*,*,*,*,は,ハ,ワ\n
  • 霜降り\t名詞,一般,*,*,*,*,霜降り,シモフリ,シモフリ\n
  • 明星\t名詞,一般,*,*,*,*,明星,ミョウジョウ,ミョージョー\n
  • が\t助詞,格助詞,一般,*,*,*,が,ガ,ガ\n
  • 好き\t名詞,形容動詞語幹,*,*,*,*,好き,スキ,スキ\n
  • です\t助動詞,*,*,*,特殊・デス,基本形,です,デス,デス\n
  • 。\t記号,句点,*,*,*,*,。,。,。\n
  • EOS\n’

霜降り明星が、「霜降り」と「明星」に分かれてしまっています。

 

アップデートしたMeCab

続いて、アップデートしたMeCabを使っていきます。

普通のMeCabとは少し違っていて、”mecab-ipadic-NEologd“を指定する形になります。

import MeCab
tagger = MeCab.Tagger("-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd")
print(tagger.parse("僕は霜降り明星が好きです。"))

上記のように、”-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd“を指定してあげます。

 

そして、結果が下記のとおり。

  • ‘僕\t名詞,代名詞,一般,*,*,*,僕,ボク,ボク\n
  • は\t助詞,係助詞,*,*,*,*,は,ハ,ワ\n
  • 霜降り明星\t名詞,固有名詞,人名,一般,*,*,霜降り明星,シモフリミョウジョウ,シモフリミョウジョー\n
  • が\t助詞,格助詞,一般,*,*,*,が,ガ,ガ\n
  • 好き\t名詞,形容動詞語幹,*,*,*,*,好き,スキ,スキ\n
  • です\t助動詞,*,*,*,特殊・デス,基本形,です,デス,デス\n
  • 。\t記号,句点,*,*,*,*,。,。,。\n
  • EOS\n’

見事に「霜降り明星」で形態素解析して、固有名詞、人名であることまで特定しました。

素晴らしいですね。

 

特に理由がない限り、アップデート後の単語辞書を使っていくのが良いかと思います(`・ω・´)

 

おしまいです。