ColabでKNPを使うための仁義なき戦い

2019/08/30

GoogleColab 自然言語処理

t f B! P L

まぁ、勝ったけどな。


問題点


  1. KNPをインストールするにはJUMAN(JUMAN++ではない)が必要
  2. JUMANをビルドする際に、ビルドするファイル群がスペースを含むPATHにあるとmakeが途中で固まる。
  3. 毎回ビルドする必要がある??


まず、1ですがJUMAN++だけでなくJUMANが必要なようです。
KNPの実行時にはJUMAN++を指定できるのですが…。


2についてはColabのPATHの問題です。
マイドライブ直下までのPATHに/My Drive/という文字列が入るため必然的にスペースが入っていまします。


ちなみにJUMAN自体はaptからでもインストールできるのですが、aptからインストールしたJUMANだけではKNPをインストールできない(ソースからビルドしたJUMANが必要)という辛い仕様でした。


しかし、もとはと言えば、マイドライブまでのPATHに余計なスペースが入っていることが原因なのでこれさえなければすべて解決なのですが。


解決法


あの手この手を試しましたが、現時点だと毎回ソースからビルドするのがスマートのようです。


この場合、JUMAN/KNPを毎回ダウンロードするのは時間の無駄なので、少なくとも圧縮ファイル形式でマイドライブに置いておきたいです。


これをスペースを含まないPATH(例えば/home/など)にコピーます。

解凍後のファイルをコピーするか、解凍前のファイルをコピーして毎回解凍するかという選択肢がありますが、私は解凍後のファイルをマイドライブにおいておき、ディレクトリごとコピーするようにしています。

解凍前であればファイルサイズは小さいですが、解凍時間込みだと、解凍後のディレクトリをコピーするほうが速いです。
ただし、これだけでもKNPは3.5GBあるので5分程度かかります(ここが1番長い)。


あとはコピー先に移動して普通にビルド&インストールになります。
JUMANが30秒位、KNPが3分くらいかかります。
全体のコマンドは以下になります。



やっぱりコピーがボトルネックですね…。
cpコマンドの高速化とかないんでしょうか。
!./configureが失敗する場合は、パーミッションを確認しましょう。


今日のベストプラクティス


JUMAN/KNPはマイドライブに保存しておいて、/My Drive/が含まれないPATHでビルド&インストールしよう。

QooQ