NGTってご存知ですか?
Yahooが出している高次元ベクトルデータ検索技術のことです.
詳しくはHP(英語)と紹介記事をどうぞ.
対象はUbuntu14.04です.
Cmakeのインストール
ビルドにCMake3.2以上が必要なのですが,Ubuntu14.04のデフォルトのリポジトリだとapt-getで入りません.
自分はこれに気付かず,ビルドエラーに暫く悩まされました…
リポジトリを追加してインストールします.(既に入っている場合は更新)
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:george-edison55/cmake-3.x
$ sudo apt-get update
$ sudo apt-get install cmake
or
$ sudo apt-get upgrade
NGTのインストール
ソースからインストールします.
$ wget https://github.com/yahoojapan/NGT/archive/v1.2.0.zip
(バージョンは2017年10月13日時点での最新を使用)
$ unzip v1.2.0.zip
$ cd NGT-1.2.0
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
$ sudo vim ~/.bashrc
(以下追記,NGTのサイトではlib64になっているが,libにインストールされるのでlib指定)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
$ source ~/.bashrc
確認
以下コマンドで確認.(ヘルプオプションとか無いので…)
$ ngt
Usage : ngt command database data
command : create search remove append export import
使ってみた感想
使い方はまた別に記事を書こうと思っていますが,先に使ってみた感想だけ.
コマンドの選択肢が少ないのでシンプルに使いやすいです.
ngtコマンドを実行した結果(↑の確認のやつ)にも書いてある通りのコマンドだけです.
公式のサイトも割と親切なので,使い方で困ったことはないですね.
あとは,公式が言っている通り検索が早いです.びっくりするぐらい早いです.
1000次元とか2000次元なら.0X秒くらいで結果が返ってきます.
不満を言うとしたらPythonから使うのに自前で書かないといけないってことくらいですかね.
便利にするためにもっと色々と付加できそうですが,最低限のシンプルさで良いです.
doc2vecだったりの特徴ベクトルを検索するのにもってこいだと思います.
ぜひ使ってみてください~