MacOS (Big Sur)へのKH Coderのインストール

テキストマイニングで有名なKH coderですが、macOSでのインストール手順はなかなか複雑なのでまとめておきます。

ダウンロード

GitHubのKH coderリポジトリより、リリース版 の最新バージョンをダウンロードするのが良いと思います。Macの場合、Source code(tar.gz)が良いでしょう。

展開すると、以下のようなフォルダ構造になっていると思います。

ビルド環境

これだけではKH coderは動かないので、MySQLや各種Perlモジュールをビルドしてインストールする必要があります。なにはともあれ、XCode command line toolsは必須なので、インストールしておきましょう。ターミナルから以下のコマンドでインストールができます。

$ xcode-select --install

mecab, mecab-ipadic のインストール

何はともあれ形態素解析器が必要なので、mecabとmecab-ipadicもインストールしましょう。

$ brew install mecab mecab-ipadic

MySQLのインストール

KH coderでは文書をデータベースマネージャーのMySQLに保存しますから、MySQLもインストールします。

$ brew install mysql

Homebrewでインストールした場合、MySQLはlocalhostからの接続のみを受け付けるようになっていますが、rootユーザーのパスワードは空になっています。このままだと、KH coderからはアクセスできないため、パスワードを付加しておきましょう。

$ mysql_secure_installation

また、MySQL 8.0以降では、MySQLのLoad data local infile 機能がデフォルトで無効となっています。このままだとKH Coderからの形態素解析が実行できないので、MySQLに一度rootユーザでログインし、この機能を有効にします。

$ mysql -u root -p
Enter password:
mysql> SET PERSIST local_infile= 1;
Query OK, 0 rows affected (0.03 sec)

XQuartz, Tcl/Tkのインストール

懐かしいひびきですが、KH coderは、GUIにTcl/Tkを使っています。余談ですが, Rの中でパッケージレベルでGUIを構築するのにも、長年Tcl/Tkが使われていますね。そのため、Rをインストールすると、最新版でもその一部としてTcl/Tkのライブラリがインストールされます。
Tcl/Tkと、Tkが依存するX11のライブラリのために、xquartzもインストールしておきます。

$ brew install xquartz
$ brew install tcl-tk

perl, cpanm, 必要モジュールのインストール

KH coderの本体は、Perlで書かれています。
MacOS には結構新しめのperlが入っているのですが、どうもオリジナルから少し改変が加えられているようで、一部のモジュールのインストールで問題が発生します。そこで、perlはHomeBrewを使って/usr/local/binにオリジナルバージョンをインストールしてしまい、それを使います。HomeBrewのインストールはできていて、/usr/local/bin/ にあるコマンドが優先して実行されるようになっていることを前提とします。

$ brew install cpanm
$ brew install perl
$ cpanm Jcode Tk DBD::CSV DBD::mysql Encode::Locale Text::Diff File::BOM Lingua::JA::Regular::Unicode Net::Telnet YAML Spreadsheet::ParseExcel::FmtJapan Spreadsheet::ParseXLSX Excel::Writer::XLSX Statistics::ChisqIndep Statistics::Lite Unicode::Escape Algorithm::NaiveBayes Text::Iconv

Perl/Tkモジュールのインストールに失敗する場合

Big Sur以降とHomebrewの組み合わせでの問題のような気がしますが、上記の手順でcpanmを使ってTkモジュールをインストールしようとしても失敗する場合があります。ビルドログを見ると、uint32_tとかが未定義という謎のエラーが出ていますが、どうやらこれは、長くHomebrewを使っている場合に古いファイルが残存していることが影響しているようです。参考: Cannot compile any C++ programs; error: unknown type name 'uint8_t'

これが起こってしまった場合は、上記の回答にあるように、

$ mv /usr/local/include /usr/local/include.old
$ brew install llvm

とすることで、解決できるかもしれません。

gfortranのインストール

この後のRのパッケージをコンパイルするために、一部gfortranが必要です。R toolsのサイトにあるようにオリジナルのgfortranをインストールしても良いと思いますが、ここまでですでにHomeBrewの環境ができていると思うので、ここではHomeBrew版を使ってみます。

$ brew install gfortran

Rのインストールと必要パッケージのインストール

Rは普通にCRANからダウンロードしてインストールすればOKです。パッケージがいくつか必要なので、インストールしておきましょう。

> install.packages(c("ade4","amap","Cairo","cluster","codetools","colorspace","dichromat","foreign","ggdendro","ggplot2","ggnetwork","ggsci","gtable","igraph","KernSmooth","lattice","maptools","MASS","Matrix","mgcv","munsell","nlme","nnet","permute","pheatmap","plyr","proto","RColorBrewer","Rcpp","reshape2","rgl","rpart","scales","scatterplot3d","slam","som","sp","spatial","stringr","survival","vegan","wordcloud"), dep=TRUE)

データベース接続設定の変更

この段階でKH coderの起動自体はできるようになっているはずですが、MySQLデータベースとKH coderの接続情報をまだ設定していないので、文書の読み込みや処理はできません。実行しようとすると、以下のようなエラーが発生します。

これを解決するため、KH coderの本体フォルダ以下、config/coder.ini ファイルを編集します。
少なくとも、sql_username, sql_password は変更する必要があります。

KH Coderの起動

これで準備は完了です。perlを使って、kh_coder.pl を実行すると、KH Coderが起動します。

$ perl kh_coder.pl