この記事の内容
本記事ではdockerを使ってゼロからUbuntu環境を構築し、Pythonのインストール方法から自然言語処理を適用するまでの基本的な環境構築方法を説明していきます。
- dockerを使ってubuntu環境の構築
- 構築した環境にpythonのインストール
- 言語処理環境の構築
なお、前提としてdockerがインストールされていることとします。
1. docker を使ってubuntu環境の構築
まずはdockerでubuntu環境を構築します。
docker run --name ml -v /Users/ユーザー名/Documents:/root -it -p 8888:8888 ubuntu bash
--nameでmlという名前をつけています。
-vでボリュームのマウントをします。:の前がローカルのパスで、後がDocker内部のパスになります。
-pでポートを設定します。後にJupyterを使う場合はデフォルトのポートが8888なので8888にしておくことをお勧めします。別のポート番号を設定しても可能ですが、後々少しめんどくさいことになります。
2. 構築した環境にpythonのインストール
次にDocker内で次の処理をします。
$ apt update
$ apt -y upgrade
$ apt install -y python3-pip
3. 言語処理環境の構築
ここからが本番です。自然言語処理環境を構築していきます。
MeCabのインストール
まずは環境構築に必要なものをインストールします。
$ apt install curl sudo git vim
次に、MeCab及びPythonでMeCabを使うためのパッケージをインストールします。
$ apt install mecab mecab-ipadic mecab-ipadic-utf8 libmecab-dev
$ pip install mecab-python3
libmecab-devはNeologdのインストールに必要になります.
ちなみにpython -m pip install --upgrade pip
でpipのアップグレードができます。
Neologdのインストール
$ git clone https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
$ sudo bin/install-mecab-ipadic-neologd
インストールが完了したら確認してみましょう。
mecab -d /usr/lib/aarch64-linux-gnu/mecab/dic/mecab-ipadic-neologd
毎回パスを指定するのは面倒ですので、パスの設定をしておきます。
$ sudo vim /etc/mecabrc
;
; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
; dicdir = /var/lib/mecab/dic/debian
dicdir = /usr/lib/aarch64-linux-gnu/mecab/dic/mecab-ipadic-neologd
; userdic = /home/foo/bar/user.dic
; output-format-type = wakati
; input-buffer-size = 8192
; node-format = %m\n
; bos-format = %S\n
; eos-format = EOS\n
Pythonパスの設定
必要なものは全てインストールすることができましたが、PythonでMeCabを実行すると
[ifs] no such file or directory: /usr/local/etc/mecabrc
というエラーが発生します。
これはpythonのパスの設定がうまくいっていないことが原因ですので、パスを通してあげる必要があります。
まずはMeCabのインストール先を確認します。
$ sudo find / -iname mecabrc
多くの方が以下の結果になると思います。
/etc/mecabarc
次に確認したインストール先をbash_profileに書き込みます。
$ sudo vim ~/.bash_profile
以下の内容を追記します。
export MECABRC='/etc/mecabrc'
書き込んだ設定を反映します。
$ source ~/.bash_profile
以上で、自然言語処理環境は構築完了です。
python3
でpythonを起動し、以下のプログラムを実行してみましょう。
import MeCab
mecab = MeCab.Tagger("")
text = "今日はとてもいい日でした。明日もいい日になるといいなぁ。"
print(mecab.parse(text))
それではハッピーな自然言語処理を!