LoginSignup
11
11

More than 5 years have passed since last update.

docker上のUbuntu16.04 LTSコンテナへのMeCabのインストール

Last updated at Posted at 2018-03-15

はじめに

python3でMeCabが使いたくてインストールしようとしたらエラーが発生したのでその対処法について。
自分がハマったことをメモ。

祝!初投稿☆

実行環境

Ubuntu 16.04 LTS
docker 18.03-ce
NVIDIA docker 1.0.1
python 3.6.3

Ubuntu上にdocker(NVIDIA docker)を入れ、コンテナ上の環境で作業しています。

事象

フツーにpipでmecab-python3をインストールしようとしたら

pip install mecab-python3

Collecting mecab-python3
Downloading mecab-python3-0.7.tar.gz (41kB)
100% |################################| 51kB 5.7MB/s
Complete output from command python setup.py egg_info:
/bin/sh: 1: mecab-config: not found
Traceback (most recent call last):
File "", line 1, in
File "/tmp/pip-build-toa0xj3z/mecab-python3/setup.py", line 41, in
include_dirs=cmd2("mecab-config --inc-dir"),
File "/tmp/pip-build-toa0xj3z/mecab-python3/setup.py", line 21, in cmd2
return cmd1(strings).split()
File "/tmp/pip-build-toa0xj3z/mecab-python3/setup.py", line 18, in cmd1
return os.popen(strings).readlines()[0][:-1]
IndexError: list index out of range

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-toa0xj3z/mecab-python3/

こんな風に「list index out of range」が出た。

対処法

apt-get install libmecab-dev

してから

pip install mecab-python3

これでインストールは完了。

確認

import MeCab

↑問題なし

mecab = MeCab.Tagger('-Ochasen')

Traceback (most recent call last):
File "", line 1, in
File "/root/miniconda3/envs/linebot/lib/python3.6/site-packages/MeCab.py", line >307, in init
this = _MeCab.new_Tagger(*args)
RuntimeError

あれ??動かない。。。
どうやら以下も必要みたい。

apt-get install -y mecab mecab-ipadic

。。。その後もうまくいかず。。。

ギャー、やり直し!!
コンテナ破棄!こういうときにコンテナの良さがでますね。

最終的に

もう一度コンテナを作成し直してから

apt-get install -y mecab libmecab-dev mecab-ipadic-utf8

現在の状態を確認

mecab -D

filename: /var/lib/mecab/dic/debian/sys.dic
version: 102
charset: UTF-8
type: 0
size: 392126
left size: 1316
right size: 1316

インストール場所を「/var/lib/mecab/dic/」配下にすることを確認できたので

git clone https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
bin/install-mecab-ipadic-neologd -n -p /var/lib/mecab/dic/mecab-ipadic-neologd

「/var/lib/mecab/dic」に移動して

ll

drwxr-xr-x 6 root root 4096 Mar 14 13:26 ./
drwxr-xr-x 3 root root 4096 Mar 14 13:16 ../
lrwxrwxrwx 1 root root 34 Mar 14 13:16 debian -> /etc/alternatives/mecab-dictionary/
drwxr-xr-x 2 root root 4096 Mar 14 13:16 ipadic/
drwxr-xr-x 2 root root 4096 Mar 14 13:16 ipadic-utf8/
drwxr-xr-x 2 root root 4096 Mar 14 13:16 juman/
drwxr-xr-x 2 root root 4096 Mar 14 13:26 mecab-ipadic-neologd/

ちゃんと入っています。
次は辞書切り替えのために「/etc/mecabrc」のdicdirを上述のものに変更します。

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

現在の状態を確認

mecab -D

filename: /var/lib/mecab/dic/mecab-ipadic-neologd/sys.dic
version: 102
charset: UTF8
type: 0
size: 4549446
left size: 1316
right size: 1316

ちゃんと切り替わってます。

mecab

ドナルド・トランプ
ドナルド・トランプ 名詞,固有名詞,人名,一般,,,ドナルド・トランプ,ドナルドトランプ,ドナルドトランプ
EOS

良さげです。
最後にpython3に対応させます。

pip install mecab-python3

では試してみます。pythonを起動してから以下を実行します。

import MeCab
mecab = MeCab.Tagger('mecabrc')
text = 'ドナルド・トランプ'
mecab.parse(text)

'ドナルド・トランプ\t名詞,固有名詞,人名,一般,,,ドナルド・トランプ,ドナルドトランプ,ドナルドトランプ\nEOS\n'

ふー、やっと出来た!

参考

以下のサイトを参考にさせて頂きました。
MecabをインストールしてPythonから使ってみた
64bitのWindowsにMeCabをインストールする
buntu 17.04 に mecab をインストール

11
11
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
11
11