自然言語処理をテストする環境を整えるまでの手順①


自然言語処理関係を行なっていくことになりましたので、まずは環境からと色々やっていったことをまとめた備忘録的なものです。

```環境
macOS High Sierra 10.13
Python 3.6.5
```


#基本的な環境構築
<b>HomebrewとWgetのインストール</b>

```
#Homebrew インストール
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
#確認
brew --version
#最新版に更新
brew update
#Wget インストール
brew install wget
#確認
wget --version
```

#mecab環境構築

<b>mecabのインストール</b>


```
cd /tmp
wget -O mecab-0.996.tar.gz "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE"
tar xzf mecab-0.996.tar.gz
cd mecab-0.996
./configure
make
sudo make install
```

<b>ipa辞書のインストール</b>

```
cd /tmp
wget -O mecab-ipadic-2.7.0-20070801.tar.gz "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM"
tar xzf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8
make
sudo make install
#ダウンロードしたファイルを削除
rm -rf /tmp/mecab-*
```

<b>NEologd辞書のインストール</b>
gitから。

```
cd /tmp
sudo git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd -n -a
[install-mecab-ipadic-NEologd] : Start..
[install-mecab-ipadic-NEologd] : Check the existance of libraries
[install-mecab-ipadic-NEologd] : find => ok
ーーー
[install-mecab-ipadic-NEologd] : tar => ok
[install-mecab-ipadic-NEologd] : unxz is not found.
```

エラー。。。
どうも必要なライブラリがなかったようでしたので、インストールしたら無事インストール出来ました。

```
brew install xz
```

NEologd辞書を使いたい場合は、-dオプションを付けてパスを付ければOKです。

```
mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/
ピコ太朗
ピコ太郎
ピコ太郎	名詞,固有名詞,人名,一般,*,*,ピコ太郎,ピコタロウ,ピコタロー
```

ちなみにNEologdのパスの確認は下記コマンドでできます。

```
echo `mecab-config --dicdir`"/mecab-ipadic-neologd"
```

<b>自分で作成した辞書のインストール</b>
mecabは自身で辞書を作ることもできます。

ユーザ辞書はcsv形式で作成。utf-8で作る。

```user.csv
大和D太朗,1223,1223,5000,名詞,固有名詞,人名,*,*,*,だいわDたろう,ダイワDタロウ,ダイワDタロウ
```

そしてコンパイル。user.csvからuser.dicが出来上がります。

```
sudo /usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic/ -u user.dic -f utf-8 -t utf-8 user.csv
```

ユーザ辞書のパスをmecabの設定ファイルに追記
```vi /usr/local/etc/mecabrc```

```mecabrc
;
; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
dicdir =  /usr/local/lib/mecab/dic/ipadic

;追記部
userdic = /usr/local/lib/mecab/dic/userdic/user.dic
```

確認。ちゃんと反映されてることを確認できました。

```
$ mecab
大和D太朗
大和D太朗	名詞,固有名詞,人名,*,*,*,だいわDたろう,ダイワDタロウ,ダイワDタロウ
```

■参考サイト
https://qiita.com/spiderx_jp/items/7f8cbfd762c9abab660b
https://qiita.com/spiderx_jp/items/6bb3fe74eed9d197c86a
https://qiita.com/hiro0217/items/cfcf801023c0b5e8b1c6
https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md



#pythonでmecabを使えるようにする
下記サイトからmecab-python-xxxxをダウンロード（curlコマンドではうまく取得できなかったので直接ダウンロード）

https://drive.google.com/a/n1n9.jp/folderview?id=0B4y35FiV1wh7fjQ5SkJETEJEYzlqcUY4WUlpZmR4dDlJMWI5ZUlXN2xZN2s2b0pqT3hMbTQ&usp=drive_web#list

解凍してインストール。エラー発生。。。

```
tar zxf mecab-python-0.996.tar.gz
cd mecab-python-0.996
python setup.py build

AttributeError: module 'string' has no attribute 'split'
```

どうもpython3.x以降はコマンドが変わったらしいので、下記のサイトに従ってsetup.pyを書き換えたら無事インストールまで行けました。

```setup.py
def cmd2(str):
    #return string.split (cmd1(str)) ←コメント化
    return cmd1(str).split() 
```
```
python setup.py build
python setup.py install
```


■参考サイト
https://qiita.com/yuichy/items/5c8178e5cc3711386b77
https://anond.hatelabo.jp/20121113070853


#JUMANとJUMAN++のインストール
ちなみにJUMAN++とはこのようなものです。
[引用元]http://nlp.ist.i.kyoto-u.ac.jp/index.php?JUMAN++
>
JUMAN++は言語モデルを利用した高性能な形態素解析システムです．言語モデルとして Recurrent Neural Network Language Model(RNNLM) を用いることにより，単語の並びの意味的な自然さを考慮した解析を行います．それにより JUMAN，MeCab に比べ大きく性能が向上しています．文法・辞書・出力フォーマット等は JUMAN から引き継いだものを利用しています．本システムは CREST「知識に基づく構造的言語処理の確立と知識インフラの構築」の支援により開発されました．

<b>JUMANとJUMAN++のインストール</b>
JUMANやJUMAN++をインストールするにはHomebrewで簡単にできます。

```
brew install juman
brew install jumanpp

$ jumanpp
ピコ太郎
ピコ ピコ ピコ 名詞 6 地名 4 * 0 * 0 "自動獲得:Wikipedia Wikipedia複合地名 Wikipedia多義"
太郎 たろう 太郎 名詞 6 地名 4 * 0 * 0 "自動獲得:Wikipedia Wikipedia複合地名"
```


<b>neologd2jumanのインストール</b>
上記のように新しい言葉には対応できていません。そこで、新しい言葉も使いたい場合は、NEologd辞書を利用します。この過程でmecabで使用していたユーザ辞書も使えますので合わせて行なってみます。

まず下記のサイトからneologd2jumanをダウンロードします。
https://github.com/fumankaitori/neologd2juman


解凍後のneologd2juman-masterディレクトリに入っているMakefileを下記の通りに修正します。
（追記部と書いている部分がユーザ辞書の部分です。mecab-user-dic.csvがユーザ辞書名です。自身で作成したファイル名に変更してください。）

```Makefile
install:
	wget --no-check-certificate https://github.com/neologd/mecab-ipadic-neologd/tarball/master -O mecab-ipadic-neologd.tar
	tar -xvf mecab-ipadic-neologd.tar
	xz -dc ./neologd-mecab-ipadic-neologd-*/seed/mecab-user-dict-seed.*.csv.xz > ./mecab-user-dict-seed.csv
	bash neologd2juman.sh mecab-user-dict-seed.csv
	bash install-dictionary.sh
	mv mecab-user-dict-seed.csv.dic neologd-user-dict.dic
	bash neologd2juman.sh mecab-user-dic.csv #追記部
	mv mecab-user-dic.csv.dic mecab-user-dic.dic #追記部
clean:
	rm mecab-ipadic-neologd.tar
	rm -r neologd-mecab-ipadic-neologd-*
	rm -r mecab-user-dict-seed.csv*
	rm -r mecab-user-dic.csv* #追記部
```
このMakefileと同じ場所にmecabで使用していたユーザ辞書のcsvファイルをコピーしておきます。

```
cp /usr/local/lib/mecab/dic/userdic/user.csv ./mecab-user-dic.csv
```

その他必要なものをダウンロード＆インストールした後makeします。

```
pip install mojimoji
pip install jaconv

make
```

Makeするとユーザ辞書```mecab-user-dic.dic```とNEologd辞書```neologd-user-dict.dic```ができますので、それらをJUMAN++のダウンロード＆解凍した中にある```jumanpp-1.02/dict-build/userdic```にコピーします。

JUMAN++のダウンロードはこちらから
http://nlp.ist.i.kyoto-u.ac.jp/index.php?JUMAN++


```
#作成した辞書をコピー
cd jumanpp-1.02/dict-build/userdic
cp neologd-user-dict.dic ./
cp mecab-user-dic.dic ./

#コピー後makeしてインストールします。
make
sudo ./install.sh
```

確認したら反映されていました。

```
$jumanpp
ピコ太郎
ピコ太郎 ぴこたろう ピコ太郎 名詞 6 固有名詞 3 * 0 * 0 "代表表記:ピコ太郎/ぴこたろう"
```
      
■参考サイト
https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md
https://qiita.com/yuichy/items/5c8178e5cc3711386b77
https://qiita.com/Kensuke-Mitsuzawa/items/403256129e812b09c461



以上。自然言語処理の環境ができました。
ここまでで個人的な達成感はありますが、何も始まってもないので、これから色々と解析することを頑張ろうと思います。