【NLP入門】jetson_nano環境構築から簡単な類似度計算まで♪

今回はjetson_nanoに自然言語処理系のアプリをインストールして遊んでみた。
インストールという意味では、[前回のNanoへのインストール](https://qiita.com/MuAuan/items/9d07ce862b55a6773b54)の続きになります。
また、[前回のWindowsへの諸々のインストール](https://qiita.com/MuAuan/items/26a5dffe7e876763d6bb)と同様に進めます。
###準備

```
$ sudo apt update
$ sudo apt upgrade
```
###brewでmecabをインストールする
```
$ sudo apt install linuxbrew-wrapper
```

```
$ brew install mecab
...
==> Installation successful!
==> Next steps:
- Install the Linuxbrew dependencies if you have sudo access:
  Debian, Ubuntu, etc.
    sudo apt-get install build-essential
```

```
$ sudo apt-get install build-essential
...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
```
これで、mecabが無事にインストール出来た。
ここまでは、順調であったが、辞書が入らない。

```
$  brew install mecab-ipadic
...
configure: error: cannot guess build type; you must specify one
```
以下のようにmecab-python3関係も前回同様入りませんでした。

```
$ brew install swig
...
Makefile:174: recipe for target 'all' failed
make: *** [all] Error 2
```

```
$ pip3 install mecab-python3
...
Building wheel for mecab-python3 (setup.py) ... error
```
ここで、一度mecab-python3のインストールはあきらめてmecab辞書のインストールをすることとする。
###mecab-ipadic-NEologd をインストールする
前回と同様な手順で進める。

```
$ sudo apt install make automake autoconf autotools-dev m4 mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file
...
Setting up mecab (0.996-5) ...
Compiling IPA dictionary for Mecab.  This takes long time...
...
done!
Setting up mecab-jumandic (7.0-20130310-4) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
```

```
$ sudo sed -i -e 's%/lib/mecab/dic%/share/mecab/dic%' /usr/bin/mecab-config
```

```
$ 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] : Install completed.
[install-mecab-ipadic-NEologd] : When you use MeCab, you can set '/usr/lib/aarch64-linux-gnu/mecab/dic/mecab-ipadic-neologd' as a value of '-d' option of MeCab.
[install-mecab-ipadic-NEologd] : Usage of mecab-ipadic-NEologd is here.
Usage:
    $ mecab -d /usr/lib/aarch64-linux-gnu/mecab/dic/mecab-ipadic-neologd ...

[install-mecab-ipadic-NEologd] : Finish..
[install-mecab-ipadic-NEologd] : Finish..
```

```
$ echo `mecab-config --dicdir`"/mecab-ipadic-neologd"
/usr/lib/aarch64-linux-gnu/mecab/dic/mecab-ipadic-neologd
```
これで、無事にmecab-ipadic-neologdをインストール出来た。
###mecab-ipadic-NEologd の使用（[Copyright (C) 2015-2019 Toshinori Sato (@overlast)](https://github.com/neologd/mecab-ipadic-neologd/blob/master/COPYING)）

```
$  echo "8月3日に放送された「中居正広の金曜日のスマイルたちへ」(TBS系)で、1日たった5分でぽっこりおなかを解消するというダイエット方法を紹介。キンタロー。のダイエットにも密着。" | mecab -d /usr/lib/aarch64-linux-gnu/mecab/dic/mecab-ipadic-neologd
8月3日	名詞,固有名詞,一般,*,*,*,8月3日,ハチガツミッカ,ハチガツミッカ
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
放送	名詞,サ変接続,*,*,*,*,放送,ホウソウ,ホーソー
さ	動詞,自立,*,*,サ変・スル,未然レル接続,する,サ,サ
れ	動詞,接尾,*,*,一段,連用形,れる,レ,レ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
「	記号,括弧開,*,*,*,*,「,「,「
中居正広の金曜日のスマイルたちへ	名詞,固有名詞,一般,*,*,*,中居正広の金曜日のスマイルたちへ,ナカイマサヒロノキンヨウビノスマイルタチヘ,ナカイマサヒロノキンヨービノスマイルタチヘ
」(	記号,一般,*,*,*,*,*
TBS	名詞,固有名詞,一般,*,*,*,TBS,ティービーエス,ティービーエス
系	名詞,接尾,一般,*,*,*,系,ケイ,ケイ
)	記号,一般,*,*,*,*,*
で	助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
、	記号,読点,*,*,*,*,、,、,、
1日	名詞,固有名詞,一般,*,*,*,1日,ツイタチ,ツイタチ
たった	副詞,助詞類接続,*,*,*,*,たった,タッタ,タッタ
5分	名詞,固有名詞,一般,*,*,*,5分,ゴフン,ゴフン
で	助詞,格助詞,一般,*,*,*,で,デ,デ
ぽっこり	副詞,一般,*,*,*,*,ぽっこり,ポッコリ,ポッコリ
おなか	名詞,一般,*,*,*,*,おなか,オナカ,オナカ
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
解消	名詞,サ変接続,*,*,*,*,解消,カイショウ,カイショー
する	動詞,自立,*,*,サ変・スル,基本形,する,スル,スル
という	助詞,格助詞,連語,*,*,*,という,トイウ,トユウ
ダイエット方法	名詞,固有名詞,一般,*,*,*,ダイエット方法,ダイエットホウホウ,ダイエットホウホー
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
紹介	名詞,サ変接続,*,*,*,*,紹介,ショウカイ,ショーカイ
。	記号,句点,*,*,*,*,。,。,。
キンタロー。	名詞,固有名詞,一般,*,*,*,キンタロー。,キンタロー,キンタロー
の	助詞,連体化,*,*,*,*,の,ノ,ノ
ダイエット	名詞,サ変接続,*,*,*,*,ダイエット,ダイエット,ダイエット
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
も	助詞,係助詞,*,*,*,*,も,モ,モ
密着	名詞,サ変接続,*,*,*,*,密着,ミッチャク,ミッチャク
。	記号,句点,*,*,*,*,。,。,。
EOS
```

```
$ pip3 install --user gensim
Collecting gensim
...
Successfully installed boto-2.49.0 boto3-1.9.233 botocore-1.12.233 docutils-0.15.2 gensim-3.8.0 jmespath-0.9.4 s3transfer-0.2.1 smart-open-1.8.4
```
gensimの確認のために以下を動かしてみました。
【参考】[doc2vecのサンプル](https://qiita.com/nkmrtkhd/items/92500ba4a5979371a35f)

```
$ python3 gensim_ex.py

訓練開始
Epoch: 1
Epoch: 2
Epoch: 3
Epoch: 4
Epoch: 5
Epoch: 6
Epoch: 7
Epoch: 8
Epoch: 9
Epoch: 10
Epoch: 11
Epoch: 12
Epoch: 13
Epoch: 14
Epoch: 15
Epoch: 16
Epoch: 17
Epoch: 18
Epoch: 19
Epoch: 20
SENT_0
[('SENT_2', 0.04010644555091858), ('SENT_3', -0.023990176618099213), ('SENT_1', -0.11907359957695007)]
SENT_3
[('SENT_2', 0.06015370786190033), ('SENT_0', -0.023990172892808914), ('SENT_1', -0.07563222199678421)]
SENT_1
[('SENT_2', -0.005788261536508799), ('SENT_3', -0.07563220709562302), ('SENT_0', -0.11907359957695007)]
[('明日', 0.06268655508756638), ('今日', 0.05677594244480133), ('吠えた', 0.041425563395023346), ('海', 0.003959310241043568), ('泳ぐ', -0.004621109459549189), ('今', -0.024050038307905197), ('犬', -0.0428856685757637), ('猫', -0.05383896455168724)]
```

###まとめ
・自然言語処理に必要な環境を構築した
・一応、類似度まで計算できた

・会話アプリを試してみよう