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

CentOSにmecab-pythonをインストールする

More than 5 years have passed since last update.

検証環境

CentOS release 6.5 (Final)
Python 2.7.6

インストール

mecab 0.996
ipadic 2.7.0

meacbのインストール

$ cd /var/tmp
$ curl -O https://mecab.googlecode.com/files/mecab-0.996.tar.gz
$ tar zxfv mecab-0.996.tar.gz
$ cd mecab-0.996
$ ./configure
$ make
$ sudo make install

ipadicのインストール

$ cd /var/tmp
$ curl -O https://mecab.googlecode.com/files/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
$ ./configure --with-charset=utf8
$ make
$ sudo make install

mecab-pythonのインストール

$ cd /var/tmp
$ curl -O https://mecab.googlecode.com/files/mecab-python-0.996.tar.gz
$ tar zxfv mecab-python-0.996.tar.gz
$ cd mecab-python-0.996

トラブルシューティング1のための以下のファイルを修正する

$ vi setup.py

修正前

mecab-config

修正後

/var/tmp/mecab-0.996/mecab-config

以下、修正前ファイル

#!/usr/bin/env python

from distutils.core import setup,Extension,os
import string

def cmd1(str):
    return os.popen(str).readlines()[0][:-1]

def cmd2(str):
    return string.split (cmd1(str))

setup(name = "mecab-python",
        version = cmd1("mecab-config --version"),
        py_modules=["MeCab"],
        ext_modules = [
                Extension("_MeCab",
                        ["MeCab_wrap.cxx",],
                        include_dirs=cmd2("mecab-config --inc-dir"),
                        library_dirs=cmd2("mecab-config --libs-only-L"),
                        libraries=cmd2("mecab-config --libs-only-l"))
                        ])

修正後ファイル

#!/usr/bin/env python

from distutils.core import setup,Extension,os
import string

def cmd1(str):
    return os.popen(str).readlines()[0][:-1]

def cmd2(str):
    return string.split (cmd1(str))

setup(name = "mecab-python",
        version = cmd1("/var/tmp/mecab-0.996/mecab-config --version"),
        py_modules=["MeCab"],
        ext_modules = [
                Extension("_MeCab",
                        ["MeCab_wrap.cxx",],
                        include_dirs=cmd2("/var/tmp/mecab-0.996/mecab-config --inc-dir"),
                        library_dirs=cmd2("/var/tmp/mecab-0.996/mecab-config --libs-only-L"),
                        libraries=cmd2("/var/tmp/mecab-0.996/mecab-config --libs-only-l"))
                        ])

python-mecabを構築

$ python setup.py build

python-mecabをインストールする

$ python setup.py install

テスト

トラブルシューティング2のための修正する

libmecab.so.2があることを確認する

$ ls /usr/local/lib/libmecab.so.2
/usr/local/lib/libmecab.so.2

ld.so.conf/usr/local/libを追記する

$ vi /etc/ld.so.conf

修正後ファイル

ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib

ld.so.confの設定を反映する

$ sudo ldconfig

mecab-pythonのテストを実行する

$ cd /var/tmp/mecab-python-0.996
$ python test.py 

実行結果

0.996
太郎  名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
この  連体詞,*,*,*,*,*,この,コノ,コノ
本 名詞,一般,*,*,*,*,本,ホン,ホン
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二 名詞,数,*,*,*,*,二,ニ,ニ
郎 名詞,一般,*,*,*,*,郎,ロウ,ロー
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性  名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し  動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
EOS

    BOS/EOS,*,*,*,*,*,*,*,*
太郎  名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は     助詞,係助詞,*,*,*,*,は,ハ,ワ
この  連体詞,*,*,*,*,*,この,コノ,コノ
本     名詞,一般,*,*,*,*,本,ホン,ホン
を     助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二     名詞,数,*,*,*,*,二,ニ,ニ
郎     名詞,一般,*,*,*,*,郎,ロウ,ロー
を     助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見     動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た     助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性  名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に     助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し  動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た     助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。     記号,句点,*,*,*,*,。,。,。
    BOS/EOS,*,*,*,*,*,*,*,*
EOS
EOS
filename: /usr/local/lib/mecab/dic/ipadic/sys.dic
charset: utf8
size: 392126
type: 0
lsize: 1316
rsize: 1316
version: 102

トラブルシューティング

トラブルシューティング1

$ python setup.py build

結果

$ python setup.py build
sh: mecab-config: command not found
Traceback (most recent call last):
  File "setup.py", line 13, in <module>
    version = cmd1("mecab-config --version"),
  File "setup.py", line 7, in cmd1
    return os.popen(str).readlines()[0][:-1]
IndexError: list index out of range

参考ページ: MeCab&mecab-pythonをインストール その1

トラブルシューティング2

$ python test.py 

結果

ImportError: libmecab.so.2: cannot open shared object file: No such file or directory

参考ページ:Mecab Pythonを使ったTF・IDFによるWikipediaの重要単語抽出

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
ユーザーは見つかりませんでした