100
95

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MecabをPythonで使うまで

Last updated at Posted at 2019-01-09

Mecabとは

形態素解析エンジンです。
形態素解析については他の方の記事がすごくわかりやすいので割愛します。
なお、名前の由来は開発者が「和布蕪」好きだからだそうですハイ

mecabに必要なライブラリ

事前に必要なライブラリを入れておきましょう。mecabのサイトより抜粋しております。他に必要なライブラリがあればコメントしていただけると助かりますm(_ _)m
・ubuntu

ubuntu.
sudo apt install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file swig

コメントよりswigも必要とのことでしたのでそちらも入れておきます。これがないとインストール時にエラーが出るようです。

・Mac

Mac.
brew install mecab mecab-ipadic git curl xz

mecab導入

mecabのサイトはこちら http://taku910.github.io/mecab/
サイト通りにも導入できますが、ubuntu、Mac共にコマンド一発でいけます。
・ubuntu

ubuntu.
sudo apt-get install mecab libmecab-dev mecab-ipadic mecab-ipadic-utf8

・Mac

Mac.
brew install mecab mecab-ipadic

導入確認

ターミナルでmecabと打って何か文章を入力するとこんな感じになります。
mecabのデモ.png
mecabなのに和布蕪が辞書にないのは悲しいなぁ。。。

追加辞書(mecab-ipadic-neologd)の導入

初期の辞書ではどうしても登録語が少ないので、思った通りに出力してくれません。(和布蕪とか最たる例)
この追加辞書がmecabの強みといってもいいんじゃないでしょうか。辞書の更新が、定期的(少なくとも2週間に1回以上)しているので常に新しい単語に対応しています。しかも中の人の仕事が早いです(体感

ということで追加辞書はgit上にあるのでクローンしてきましょう。
辞書のアップデートがあるのでわかりやすい場所に置いておきましょう

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

クローンしたら、mecab-ipadic-neologdに入って以下のコマンドでインストールします。
**-aオプションで全ての追加辞書をインストールしますがある程度の空き容量が必要です。(1GB以上)**全部入れなくても良い場合は-aを外してください。
(sudoでしないと怒られたのでsudoつけてます)

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

インストール途中でyes or noを聞かれるのでyesと答えてください。
スクリーンショット 2019-01-09 1.47.03.png
2019年1/8現在の追加辞書の追加内容。西野カナが出てくるあたり仕事早いですねぇ

このコマンド終了時にこんな感じの画面になると思います。
スクリーンショット 2019-01-09 1.53.10.png
この-d以降の階層に追加されています。
追加辞書を使う際には指定してあげるのでメモっておきましょう

導入確認

先ほど同様、コマンドでmecabと打つのですが、追加辞書インストール時に表示された階層を指定してあげます。

とりあえず使ってみましょう
スクリーンショット 2019-01-09 1.58.11.png
和布蕪は正しく出力されませんでした。。。orz

一応比較
スクリーンショット 2019-01-09 2.05.07.png
しっかり、西野カナが一つの単語として分かち書きされました。

追加辞書の階層を忘れたら

追加辞書のインストール先を忘れた場合は以下を叩けば出てきます。

echo `mecab-config --dicdir`"/mecab-ipadic-neologd"

mecabの使用方法・オプション

導入確認ではオプションを指定しませんでしたが、各オプションでより快適に使えます。
詳細はこちらを参照 http://taku910.github.io/mecab/#format
割と使うやつを表にまとめてみました。

オプション 意味 実行例
-Owakati 分かち書きのみ スクリーンショット 2019-01-09 13.05.45.png
-Ochasen ChaSen互換で出力 スクリーンショット 2019-01-09 13.06.25.png
-Odump 全情報を表示 スクリーンショット 2019-01-09 13.06.56.png
--unk-feature 'unknown' 未知語をunknownとして判別 スクリーンショット 2019-01-09 13.20.24.png

コマンド上でテキストファイルを形態素解析する

以下で元ファイルと出力ファイルを指定することでサクッと形態素解析できます。

meacb -オプション < 元ファイル > < 出力ファイル >

Pythonでmecabを使う

Python上でmecabを動かせるようにします。筆者の環境はPython3.6.7です。
pip経由で入れることができます。

pip install mecab-python3

ipythonあたりでimport Mecabと打って確認しときましょう。

Pythonでの簡単な使用例として追加辞書との簡単な比較

demo_mecab.py
import MeCab

wakati = MeCab.Tagger('-Owakati')    #分かち書き
neo_wakati = MeCab.Tagger('-Owakati -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd') #追加辞書を適用
word = input("分かち書き:")

wakati = wakati.parse(word).strip()
neo_wakati = neo_wakati.parse(word).strip()

print('通常辞書:' + wakati)
print('追加辞書:' + neo_wakati)

一度に処理できる入力文字列のバッファについて(修正)

デフォルトは8192のようです。
参照先はこちら

追加辞書は自動的に反映されないよ!

上記のdemoコードにも書いてありますが・・・
追加辞書は、階層を指定してあげないと意味がありません!
筆者は最初気づいてませんでした^^;

(-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')

これをお忘れなく

参考

http://taku910.github.io/mecab/
https://runble1.com/python-mecab-morphological-analysis/
https://qiita.com/siraasagi/items/e07e0b271cb7cd679a70
http://www.mwsoft.jp/programming/munou/mecab_command.html

100
95
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
95

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?