Ubuntu 20.04 に KH Coder を、ほぼ apt-get install のみでインストールする

従来のインストール方法だと個別にインストールするものが多く大変でしたが、オフィシャルアカウント様のアドバイスのおかげで、かなり簡単にインストールできました。
併せて、mecab の辞書として mecab-ipadic-NEologd も適用しています。
(2021/10/30 時点のインストール方法になります)

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">まっさらのUbuntu 20.04なら、KH CoderのインストールはVagrantfile内のコマンドを順に実行していくだけで完了すると思います。<a href="https://t.co/wN0hdZK8wj">https://t.co/wN0hdZK8wj</a> 昔に比べればだいぶ楽に？ <a href="https://t.co/NbFv5Y8BcV">https://t.co/NbFv5Y8BcV</a></p>&mdash; KH Coder (@khcoder) <a href="https://twitter.com/khcoder/status/1454410231564226564?ref_src=twsrc%5Etfw">October 30, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

手元の環境は以下になります。

* VirtualBox 6.1.26
* メモリ 6144MB
* Ubuntu 20.04 LTS

事前にcurl・vim・gcc・make・perlとGuest Additionsをインストールします。

```
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install -y curl vim gcc make perl
```

Perlのライブラリ・mecab・MySQLサーバーとMySQLクライアント・OpenJDK・RとRのライブラリをインストールします。

```
sudo apt-get install -y \
cpanminus \
fonts-ipafont-gothic \
libalgorithm-naivebayes-perl \
libclass-accessor-lite-perl \
libcryptx-perl \
libdbd-csv-perl \
libdbd-mysql-perl \
libdbi-perl \
libexcel-writer-xlsx-perl \
libextutils-config-perl \
libextutils-helpers-perl \
libextutils-installpaths-perl \
libfile-bom-perl \
libgraphics-colorutils-perl \
libgsl-dev \
libjcode-perl \
liblingua-sentence-perl \
libmodule-build-tiny-perl \
libnet-telnet-perl \
libproc-background-perl \
libspreadsheet-parseexcel-perl \
libstatistics-distributions-perl \
libstatistics-lite-perl \
libtest-requires-perl \
libtext-diff-perl \
libunicode-escape-perl \
libxml-twig-perl \
libxml2-dev \
libyaml-perl \
perl-tk \
mecab \
mysql-server \
mysql-client \
openjdk-8-jdk \
r-base-core \
r-cran-ade4 \
r-cran-amap \
r-cran-cairo \
r-cran-cluster \
r-cran-codetools \
r-cran-colorspace \
r-cran-dichromat \
r-cran-foreign \
r-cran-ggdendro \
r-cran-ggsci \
r-cran-gtable \
r-cran-igraph \
r-cran-kernsmooth \
r-cran-lattice \
r-cran-maptools \
r-cran-mass \
r-cran-matrix \
r-cran-mgcv \
r-cran-munsell \
r-cran-nlme \
r-cran-nnet \
r-cran-permute \
r-cran-pheatmap \
r-cran-plyr \
r-cran-proto \
r-cran-rcolorbrewer \
r-cran-rcpp \
r-cran-reshape2 \
r-cran-rgl \
r-cran-rpart \
r-cran-scales \
r-cran-scatterplot3d \
r-cran-slam \
r-cran-sp \
r-cran-spatial \
r-cran-stringr \
r-cran-survival \
r-cran-tm \
r-cran-vegan \
r-cran-wordcloud
```

個別に作業が必要なライブラリをインストールします。

```
sudo cpanm Lingua::JA::Regular::Unicode Statistics::ChisqIndep
sudo cpanm DOY/Spreadsheet-ParseXLSX-0.17.tar.gz
sudo Rscript -e 'install.packages(c("ggnetwork", "som", "topicmodels"))'
sudo Rscript -e 'install.packages("http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_2.2.1.tar.gz", repos=NULL, type="source")'
```

KH Coderをインストールします。

```
KHCODER_VERSION=3.Beta.03a
curl -sLO https://github.com/ko-ichi-h/khcoder/archive/refs/tags/${KHCODER_VERSION}.tar.gz
tar xf ${KHCODER_VERSION}.tar.gz -C /home/（任意のユーザーディレクトリ）
ln -s /home/（任意のユーザーディレクトリ）/khcoder-${KHCODER_VERSION} /home/（任意のユーザーディレクトリ）/khcoder
curl -sLO https://nlp.stanford.edu/software/stanford-postagger-full-2015-04-20.zip
unzip stanford-postagger-full-2015-04-20.zip -d /home/（任意のユーザーディレクトリ）
```

MySQLの設定を編集します。（ファイルからのインポートを許可する）

```
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
```


以下のように追記します。

```
[mysqld]
local-infile=1

[client]
loose-local-infile=1
```

MySQLを再起動します。

```
systemctl restart mysql.service
```

MySQLにユーザーを作成し、権限を付与します。

```
sudo mysql -uroot -p
CREATE USER khcoder@localhost IDENTIFIED BY 'khcoder';
GRANT ALL ON *.* TO khcoder@localhost;
```

ここで一旦KH Coderを起動し、画面を閉じてKH Coderを終了します。（config/coder.iniが生成される）

```
cd khcoder
perl kh_coder.pl
```

KH Coderの設定を編集します。

```
vi config/coder.ini
```

以下のように編集します。

```
mecab_unicode   UTF-8
mecabrc_path    /etc/mecabrc
sql_username    khcoder
sql_password    khcoder
```

KH Coderを起動します。

```
cd khcoder
perl kh_coder.pl
```

サンプル用の csv ファイルを作成します。

```
vi test1.csv
```

以下のようなデータを記述して保存します。

```
contents
8月3日に放送された「中居正広の金曜日のスマイルたちへ」(TBS系)で、1日たった5分でぽっこりおなかを解消するというダイエット方法を紹介。キンタロー。のダイエットにも密着。
```

KH Coder を起動して「プロジェクト → 新規」とし、「参照」で作成した test1.csv を指定し、「ChaSen」ではなく「MeCab」を指定して「OK」とします。
「前処理 → テキストのチェック」を実行してから、「前処理 → 前処理の実行」を実行します。
最後に、「ツール → 抽出語 → 抽出語リスト」を選択します。（表示されるウィンドウが小さくて見切れている場合があるので、マウス等で適宜広げます）

![screenshots_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233515/1c8bf3b8-4d4b-f824-7691-9ad4d798ce5b.png)

以上で KH Coder のインストールは確認できました。

続いて、mecab コマンドを実行して動作を確認します。

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

事前に mecab-ipadic-NEologd に必要なものをインストールします。（mecab はここまででインストール済み）

```
sudo apt-get install -y aptitude
sudo aptitude install libmecab-dev mecab-ipadic-utf8 git xz-utils file
```

mecab-ipadic-NEologd をインストールします。

```
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
./bin/install-mecab-ipadic-neologd -n
```

インストール中のログに以下のようにインストール場所が明記されているので控えておきます。

```
[install-mecab-ipadic-NEologd] : mecab-ipadic-NEologd will be install to /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd
```

mecab の設定を編集します。

```
sudo vi /etc/mecabrc
```

以下のように編集します。（事前に控えておいた mecab-ipadic-NEologd インストール場所を記述します）

```
; dicdir = /var/lib/mecab/dic/debian
dicdir = /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd
```

mecab コマンドを実行して、固有名詞等が解析されていることを確認します。

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

サンプル用の csv ファイルを作成します。（念のため、test2としてファイル名を変えてます）

```
vi test2.csv
```

以下のようなデータを記述して保存します。

```
contents
8月3日に放送された「中居正広の金曜日のスマイルたちへ」(TBS系)で、1日たった5分でぽっこりおなかを解消するというダイエット方法を紹介。キンタロー。のダイエットにも密着。
```

KH Coder を起動して test2.csv を指定し、前処理を実行して抽出語リストを表示します。
実際に固有名詞等が抽出されているか確認します。

![screenshots_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233515/ef841117-a2ce-92c3-bd46-998ff3376dfe.png)

以上で mecab-ipadic-NEologd の適用も確認できました。

### 参考になった記事
[khcoder/doc_contrib/Vagrantfile](https://github.com/ko-ichi-h/khcoder/blob/master/doc_contrib/Vagrantfile)
[KH Coder を Ubuntu にインストールする(2021)](https://qiita.com/ryos36/items/f90c62b2079ea86e34da)
[mecab-ipadic-neologd/README.md](https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.md)
[Ubuntu 20.04 LTSにMeCab(mecab-ipadic-neologd)/CaboChaのインストール](https://qiita.com/kado_u/items/e736600f8d295afb8bd9)