https://www.npmjs.com/package/@energetic-ai/embeddings
あれ
tensorflow/tfjsを Lambda Layerにしてみる
ダメだったらUniversal Sentence Encoder lite以外でnodejsにてsentence embeddingできる何かを探す
EnergeticAI Embeddingsとか良さそうなんだけど、modelが”en”しかないのが気にかかる。日本語でもいけるんだろうか?
embeddingはpythonでやるのが王道なんだろうけど、AWS AmplifyのfunctionとしてPythonを動かすのは私には難しすぎて無理だった。やはりPythonが嫌いだ。
『Add support for multilingual embedding models #1』
あれ
あれ
EnergeticAI Embeddingsで使われているuniversal-sentence-encoder-liteを転移学習すれば、日本語に対応できるだろうという能天気なことを考えていたが、以下のような難題が降りかかってきた
- universal-sentence-encoder-liteがTF1となっており、転移学習が難しい
- 転移学習後のモデルをEnergeticAI Embeddingsで読み込める形式に変換する必要がある(リポジトリを見ても全くわからない)
- Tokenizerを日本語に対応させる必要がある(EnergeticAI Embeddingsをがっつり書き換えないといけない予感がする)
1.に関しては、もはや転移学習を諦めて、一から学習させた方が早い。どうせ英語しか対応していないのだから、どちらも学習速度に大した違いはない。と思われる。
2.と3.に関しては、Issueを立てるしかない。
あれ
ajinkyaT/albert-japanese-v2-finetuned-nerはEnergeticAI Embeddingsで動く可能性があるかと思われたが動かなかった
さらにさらにajinkyaT/albert-japanese-v2-finetuned-nerの良い所は、EnergeticAI Embeddingsで動かせる可能性がある。tensorflowjs_converterが出力したファイル形式に見覚えがあるので。
そう思って読み込ませてみたが動かなかった。model.jsonの中身を見ると、modelTopologyがnullになっており、そのためにエラーが発生する。
あれ
英語だとそこそこ頑張ってくれるので、明らかにembeddingを生成するモデルが問題だろう。
EnergeticAI Embeddingsの日本語用モデルを作成する必要がある。
開発者が『Add support for multilingual embedding models #1』というIssueを建ててる。望みがある。