LINE、Heroku、Salesforceを利用したChatbotのアーキテクチャ
最初に、SalesforceやHerokuを活用しモバイルアプリやWebサービスの開発を行っている株式会社タンバリンの白石尚也氏が登壇。同社で開発した、携帯料金を教えてくれるLINE Botを題材に、デモを交えながらChatbotの技術について概説した。
多くの企業がLINE Botを活用したコンシューマ向けサービスを展開しており、ヤマト運輸やドミノ・ピザジャパンがビジネスで目覚ましい成果を上げていることから、LINEというプラットフォームの高い浸透度がわかる。同社がLINEを採用したのも、より多くのユーザに使ってもらいたいからだ。
同社のLINE Botは、友達登録をしたユーザが質問をテキスト入力すると、Herokuで文章解析を行い、Salesforce上の顧客情報やナレッジ情報を活用して応答を返す。応答内容はSalesforceに蓄積し、Chatbotをさらに育成することが可能だ。Chatbotでは対応しきれない場合は、SalesforceのLive Agent機能を使い、オペレータによる有人チャットに切り替えることができる。
LINE Chatbotは、LINE、Heroku、Salesforceを利用している。LINEではMessaging API、LINE Loginを使い、HerokuのWeb DynoがLINE側からのHTTPリクエストを捌く。一般的なLINE Botと違い、Salesforce上のナレッジ、Bot応答、Bot応答不可、Bot辞書などのデータベースを活用して応答を返す点が特徴的と言える。HerokuではHeroku Connectを使ってこれらのデータベースと相互に接続している。
Chatbotに活用できるSalesforce、Herokuの技術
続いて、株式会社タンバリン 安部草麻生氏が、Chatbotでどのような技術を使い、実装しているかを解説した。
自然言語解析を行い、ログDB型の対話を実現
Chatbotの対話の仕組みには一般に、質問に対して辞書内の応答をオウム返しにする辞書型、Bot自体が応答を生成するBot型などがある。今回採用したのは、想定パターンをあらかじめ用意し、質問とのマッチ率が高い応答を返すログDB型だ。Bot応答データベースはSalesforce上に用意されているが、GUI画面での保守が可能であり、利便性が高いという側面がある。
対話を実現するには自然言語解析が必要だ。ChatbotではHerokuのWeb Dynoで形態素解析エンジンMecabを使い、文章を単語に分解し、辞書をベースに単語の品詞を判別する。その結果から名詞を取り出し、Salesforce上のBot応答データベースの質問から抽出した名詞をマッチングし、最も類似度の高い質問に対する応答を返す。その際に応答をどんどん蓄積していくことで、対話の精度の向上を図っている。
当然ながらChatbotでは応答できない質問が送られてくる場合もあるが、そのたびに有人対応に切り替えるのは現実的ではない。そこで、応答できない質問についてもSalesforce上に蓄積することで、Chatbotによる応答率を高めている。
HerokuのWorker DynoとSalesforceのLive Agentで有人チャット
有人チャットを行うLive Agentへの接続には、Web DynoではなくWorker Dynoを使用している。Live AgentはREST APIに対応しており、ロングポーリングを使用するが、Web Dynoは最大30秒でタイムアウトする。何よりもWeb Dynoに時間のかかる処理を行わせると、キューがたまってHTTPリクエストを捌けなくなり、HTTPレスポンスが遅れ、ユーザを待たせることになってしまう。そこで、Web DynoにはHTTPリクエストを捌くことに専念させ、Live Agentとの仲介役にWorker Dynoを採用した。時間のかかる処理はキューイングしておき、バックグランドで処理する、バックグランドワーカーという仕組みである。Worker Dynoは、Web Dynoと同様にスケールが容易で、1日に1回リスタートするという特徴がある。
Einstein Visionを使った画像認識
安部氏は、Chatbotを進化させるために画像認識が必要と述べた。HerokuはアドオンとしてEinstein Visionという画像認識機能を提供している。Einstein Visionは、独自にモデルを作成してトレーニングを実施でき、APIベースで容易に組み込むことが可能だ。たとえば、自社ロゴの識別や、画像による製品の判別などの用途が考えられる。