トップサービス導入事例強み開発ブログよくある質問会社案内 お問い合わせ
Dev Blog

BERTでチャットボット

■経緯 自然言語の機械学習のデモを作る必要があり、何かブラウザで見せられるものを作りたい。 ChatGPTは従量課金なので、できれば無料で動かせるものがよい。 BERTをJavascriptで動かすのが一番早そう。

■デモ作成の流れ (仮説) tensorflow.jsで出来そう。

(実際) BERT用の事前学習モデルはpytorch形式が多く、tensorflow形式が少ない。

PyTorch -> ONNX -> OpenVINO -> TensorFlow / Tensorflow Lite の流れでモデルを変換する方法もあったが、バージョンの兼ね合いなどでなかなか変換がうまくいかない。

(対策) tensorflowへの変換は諦め、transformers.js を使う → https://github.com/xenova/transformers.jshttps://xenova.github.io/transformers.js/

(1)transformers.js が用意してくれているconvert.pyを使って Question-Answering用の日本語事前学習モデルをmodel_quantized.onnx に変換 (2)transformer.js でmodel_quantized.onnxを読み込む (3)推論を行う

■デモサイト https://booster-test.com/qa/

BERTを使った質問応答チャットボットのデモ画面

■所感 ・BERTはオープンソースで、日本語の事前学習モデルも多く公開されているので使いやすい。 transformers.jsを使えばWebシステムに組み込める。

・ChatGPTだと従量課金なので、どうしても月額費用が気になってしまう。 よってカスタムで作れる方が望ましい。

・会社の製品紹介やFAQなどで使えると思う。

(2024.05.25 改修) → model_quantized.onnx の初期ロードに時間がかかり過ぎるので、Flaskで予測用のAPIサーバを立ててAjaxでレスポンスを返すように改修。 transformer.js で実現できることがわかっただけでも収穫。