bertでテキストembeddingをした結果を利用して、類似文書探索を行う。
あまり良い性能は示さない。gensimなどを利用して、tfi-df, lsiでモデルを作成するほうが良いと感がられる。 結果はcompare.ipynbに記載。
encodeには、2つの手法を使用してみる。
- bert-as-service Multilingual Casedの結果をそのまま利用したもの
- transformersのBertModeのラストレイヤーの平均をとったもの。日本語のトークナイザーを利用。
近似最近傍探索にはnmslibを利用する。CPU環境では一番早いらしい。source
利用するテキスト。 特に意味はない。
tensorflow2は動かなかった。server起動にメモリを食う。
worker数は8に設定。
transformersがtokenization_bert_japanese.pyを提供し始めたため、日本語の扱いが便利になった。実装にはmecabを利用しているため、mecabのインストールが必要。
bert-serving-clientの方が早い。
いずれfaissも利用してみたい。cpu環境しか使えない場合は現状ベストだと考えられる。