はじめに
こんにちは。地方SIer企業三年目の若手エンジニアです。
去年の夏からチャットボットの提案から開発までほぼ一人で行ってきたので、その中で苦労したことや、気づきについて少しまとめてみようと思います。
まず何から始めたのか?
上層からは「自社でチャットボットサービスを開発して売っていきたいから頑張って」とだけ言われてスタートしました。
入社してから、COBOLでの開発と単体テストしかやってきていなかったので正直「チャットボットって何それおいしいの?」っていうレベルでした。
最初の二週間ぐらいは、とにかくググったり、セミナーや勉強会に参加して、知識をインプットすることに専念しました。
「webアプリケーションの仕組み」、「クラウドの基本的な知識」を習得し、「チャットボット=AIではない」ということに気づき始めたぐらいから、具体的にどういうチャットボットを開発していくか検討しました。
どんなチャットボットを開発したのか
ググっている中で問い合わせ対応チャットボットの事例が多く、会社でもOffice365を導入したばかりでヘルプデスクが忙しそうだったので、Office365FAQチャットボットを開発することにしました。
結果から言うと、QAの範囲が広く、FAQを抽出できるほどのQAデータが十分に用意できず精度もあまり出なかったため断念しました。。。
どのように開発したのか
AzureBotService + QnAMakerで実装しました。
watsonのNLC + R&R(現在はDiscoveryに統合)も選択肢にありましたが、決め手となったのは以下の点です。
- 会社にAzureを利用できるサブスクリプションがあった
- 問い合わせ学習ナレッジを簡単に作成することができた(当時のR&RはCLIからしか操作できずとても面倒でした)
- 様々なチャネルとの接続が簡単にできた(botconnector)
- ソースのテンプレートが用意してあり、デプロイが簡単だった
- CI/CDもポータルから簡単に設定できた
開発で苦労した点
バージョンアップの対応
SDKのバージョンアップ、ライブラリの廃止、エミュレータのバージョンアップで突然動かなくなることが多々ありました。テンプレートががらりと変わって今までのノウハウが通用しなかったりと初心者にはとても辛い部分がありました。
BEACHSIDE BLOGや技術の戯れの二つのブログには大変お世話になりました。本当にありがとうございます。
学習データの用意
結局これです。今回はOffice365FAQチャットボットなのでOffice365に関するQAデータが必要でした。ヘルプデスクの問い合わせ履歴などから、
QnAMaker用の学習データを作成する作業を行いました。学習データを作成する上では以下の点を考慮してクレンジングを行いました。
- 質問と回答のペアのデータを作成する
- ペアのデータは一問一答の形式とする
- 質問文と回答文はそれぞれ100文字か~150文字以内になるべく収める
- 抽象的な質問は入れない。一つの回答に絞れないなど
一通りデータをクレンジングすると、200件のQAデータは60件~80件ほどになりました。
Office365FAQのチャットボットの検討段階で、QAデータが200件程あるから、何とかなるだろうと思っていましたが、実際使えるデータは100件も満たないものでした。これが結構な落とし穴で、データの件数はあっても、それが使えるデータ(学習モデルに適したデータなのか)とは限らないということです。
提案での気づき
具体的な提案活動は、以下の二点を中心に活動しました。
- 既存顧客に向けてのセミナー開催
- チャットボットのデモンストレーション
セミナーに関しては、「働き方改革」という題目で、問い合わせチャットボットのメリットを紹介しました。セミナーやお話を聞いてくれる既存顧客がいることは、地方SIer企業が今まで積み上げてきた信頼のおかげだなと思いました。
これらの活動の中で、下記二点が個人的にチャットボットを成功させる上でのポイントだと思っています。
1.チャットボットの期待値を合わせること
お客様の中では、「AIが勝手に学習して何でも答えてくれるんでしょ?」という認識の方が見受けられました。提案前にチャットボットの期待値を合わせることはとても重要です。以下の点を意識してお客様には説明していました。
- チャットボットは何でも答えてくれない
- 学習データを用意する必要がある
- FAQのような一問一答などが効果的
- 複雑な質問の場合は、回答にたどり着けるような会話フローを事前に設計する必要があること。(結構大変)
人間が受け答えする部分とチャットボットに自動応答させる部分を役割分担させることが大切で最初からチャットボットにすべて答えさせようとすると失敗します。
2.ユーザーのモチベーション
問い合わせチャットボットの場合、ユーザーはQAデータを用意したり、導入後もQAを追加したり、修正したりと結構めんどくさいです。
ユーザーのモチベーションというのは、**「チャットボットを育てる」**という感覚です。
この感覚がチャットボットを長く利用していただけるポイントかなと思います。
問い合わせチャットボットの場合は、一度答えられなかったらもう使われないというケースが多いです。
しかし正答率をあげるためには、ユーザーにたくさん利用してもらい、会話データをためて、その会話データを分析し、新たなQAを追加したり、修正したりする作業が必要になります。
利用者と管理者ともにチャットボットに対する愛着が、上記のサイクルを回す手助けになると思います。(もちろんシステム上の仕組みを重要です)
チャットボットにキャラクターをつけたり、発話の個性をもたせたほうが、愛着がわきやすいです。
最後に
完全な自己満記事で申し訳ないですが、若手SIerがチャットボットに奮闘した軌跡をまとめてみました。もし同じ境遇やチャットボットに関わっている人の何かしらの手助けになればよいなと思います。
最後まで読んでいただきありがとうございました。