29
35

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-04-09

概要

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() すればよいようです。

29
35
0

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
29
35