Help us understand the problem. What is going on with this article?

Ubuntu 14.04 に Mecab と mecab-python3 をインストール

More than 3 years have passed since last update.

概要

Mecabはオープンソースの形態素解析エンジンです。機械学習のための前準備として、日本語の文章を分かち書きにするため利用することができます。Mecab をインストールして Python から利用できるようにするのがこの記事の目標です。

環境

  • Ubuntu 14.04 64bit
  • gcc 4.8.4
  • Python 3.5.2 :: Anaconda custom (64-bit)

インストール手順

1. Mecab

この記事を参考にしました。

$ sudo apt-get install mecab libmecab-dev mecab-ipadic mecab-ipadic-utf8

(mecab-ipadic と mecab-ipadic-utf8 の両方が必要なのかよくわかりませんが、とりあえず動いているようです)

mecabコマンドを実行して、日本語の文章を入力すると形態素解析の結果を見ることができます。たとえば「安倍晋三首相」と入力した結果は以下のとおりです。

$ mecab
安倍晋三首相
安倍  名詞,固有名詞,人名,姓,*,*,安倍,アベ,アベ
晋 名詞,固有名詞,人名,名,*,*,晋,ススム,ススム
三 名詞,数,*,*,*,*,三,サン,サン
首相  名詞,一般,*,*,*,*,首相,シュショウ,シュショー
EOS

「晋三」が正しく解析できていませんね。

2. mecab-ipadic-NEologd

デフォルトの IPA 辞書は、固有名詞の解析に弱いようなので、固有名詞やその他の新語を大幅に強化した mecab-ipadic-NEologdという辞書を入れます。

$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd -n -a

これをデフォルトの辞書に指定するため、/etc/mecabrc を編集して、

dicdir = /usr/lib/mecab/dic/mecab-ipadic-neologd

とします。

詳しいことは、公式ドキュメントを参照してください。

同じく「安倍晋三首相」を解析してみます。

$ mecab -d                              
安倍晋三首相
安倍晋三首相  名詞,固有名詞,一般,*,*,*,安倍晋三,アベシンゾウシュショウ,アベシンゾウシュショー
EOS

今度は正しく固有名詞として認識されています。

mecab-python3

Python 3 向けの Mecab バインディングを入れます。

$ pip install mecab-python3

これでOKです。

mecab-test3
import sys
import MeCab
m = MeCab.Tagger("-Ochasen")
print(m.parse("安倍晋三首相は、国会で施政方針演説を行った。"))

実行すると、

$ python mecab-test.py 
安倍晋三首相  アベシンゾウシュショウ   安倍晋三    名詞-固有名詞-一般      
は ハ は 助詞-係助詞        
、 、 、 記号-読点       
国会  コッカイ    国会  名詞-一般       
で デ で 助詞-格助詞-一般     
施政方針演説  シセイホウシンエンゼツ   施政方針演説  名詞-固有名詞-一般      
を ヲ を 助詞-格助詞-一般     
行っ  オコナッ    行う  動詞-自立   五段・ワ行促音便    連用タ接続
た タ た 助動詞   特殊・タ    基本形
。 。 。 記号-句点       
EOS

となります。

分かち書きにする場合には、

m = MeCab.Tagger("-Owakati")

とすればよいです。

mecab-wakati-test.py
import sys
import MeCab
m = MeCab.Tagger("-Owakati")
items = m.parse("安倍晋三首相は、国会で施政方針演説を行った。")
print(items)
print(type(items))

実行すると、

$ python mecab-wakati-test.py          
安倍晋三首相 は 、 国会 で 施政方針演説 を 行っ た 。 

<class 'str'>

結果は、文字列として返ってくるので、list にしたい場合は、split() すればよいようです。

elm200
ソフトウェアエンジニア。Python と機械学習。
http://elm200.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした