2017」が開催された。Zone」では、最新技術やソリューションに関心を寄せる来場者により盛況を呈した。Einsteinを使った分析機能などを紹介したセッションの内容をレポートする。LINE、Heroku、Salesforceを利用したChatbotのアーキテクチャ最初に、SalesforceやHerokuを活用しモバイルアプリやWebサービスの開発を行っている株式会社タンバリンの白石尚也氏が登壇。Botを題材に、デモを交えながらChatbotの技術について概説した。Botを活用したコンシューマ向けサービスを展開しており、ヤマト運輸やドミノ・ピザジャパンがビジネスで目覚ましい成果を上げていることから、LINEというプラットフォームの高い浸透度がわかる。同社がLINEを採用したのも、より多くのユーザに使ってもらいたいからだ。Botは、友達登録をしたユーザが質問をテキスト入力すると、Herokuで文章解析を行い、Salesforce上の顧客情報やナレッジ情報を活用して応答を返す。応答内容はSalesforceに蓄積し、Chatbotをさらに育成することが可能だ。Agent機能を使い、オペレータによる有人チャットに切り替えることができる。Chatbotは、LINE、Heroku、Salesforceを利用している。DynoがLINE側からのHTTPリクエストを捌く。Botと違い、Salesforce上のナレッジ、Bot応答、Bot応答不可、Bot辞書などのデータベースを活用して応答を返す点が特徴的と言える。Connectを使ってこれらのデータベースと相互に接続している。安部草麻生氏が、Chatbotでどのような技術を使い、実装しているかを解説した。行い、ログDB型の対話を実現Chatbotの対話の仕組みには一般に、質問に対して辞書内の応答をオウム返しにする辞書型、Bot自体が応答を生成するBot型などがある。今回採用したのは、想定パターンをあらかじめ用意し、質問とのマッチ率が高い応答を返すログDB型だ。Bot応答データベースはSalesforce上に用意されているが、GUI画面での保守が可能であり、利便性が高いという側面がある。対話を実現するには自然言語解析が必要だ。Dynoで形態素解析エンジンMecabを使い、文章を単語に分解し、辞書をベースに単語の品詞を判別する。その結果から名詞を取り出し、Salesforce上のBot応答データベースの質問から抽出した名詞をマッチングし、最も類似度の高い質問に対する応答を返す。その際に応答をどんどん蓄積していくことで、対話の精度の向上を図っている。当然ながらChatbotでは応答できない質問が送られてくる場合もあるが、そのたびに有人対応に切り替えるのは現実的ではない。そこで、応答できない質問についてもSalesforce上に蓄積することで、Chatbotによる応答率を高めている。Dynoを使用している。Dynoは最大30秒でタイムアウトする。Dynoに時間のかかる処理を行わせると、キューがたまってHTTPリクエストを捌けなくなり、HTTPレスポンスが遅れ、ユーザを待たせることになってしまう。時間のかかる処理はキューイングしておき、バックグランドで処理する、バックグランドワーカーという仕組みである。Dynoと同様にスケールが容易で、1日に1回リスタートするという特徴がある。安部氏は、Chatbotを進化させるために画像認識が必要と述べた。Visionという画像認識機能を提供している。Visionは、独自にモデルを作成してトレーニングを実施でき、APIベースで容易に組み込むことが可能だ。アプリケーションの開発・デプロイを容易にするHeroku株式会社セールスフォース・ドットコムの阿部崇氏は、Herokuの特長を紹介した。Service)である。アプリケーションを開発し、稼働するには、サーバを購入し、OS、ミドルウェア等をインストールして環境を構築しなければならない。Herokuでは、Salesforce社がミドルウェアの領域まで統括・管理してサービスを提供しているため、開発者はアプリ開発に集中し、迅速かつ簡単にデプロイできる。ツールやアドオンは、オープンソースとコミュニティのベストプラクティスをもとに用意されており、チューニングを考える必要がなく、開発にかかる時間とコストを抑えられる。Herokuは、3つの要素から構成される。Dynoは、作成したプログラムを動かすためのLinuxコンテナである。並行稼働するDynoの数を増やすことで容易にスケールすることが可能だ。Dataは文字どおりデータの管理・保管を行う。Redis、Kafkaなどが用意されており、アドオンとして利用できる。Elementsはサードパーティのアドオンであり、ボタンのクリックで簡単にプロビジョニングができる。Language[*]の概要を紹介した。Sentimentを提供する。Intentは意図分析である。文章を事前に設定しておいたカテゴリに分類し、文章をどのような意図で発したかを読み解く。「近くにおいしいお店は?」という文章からは「現在地周辺のレストランを検索」という意図を分析できる。AIを利用するため、トレーニング用のモデルが必要だが、提供されているもの以外に、文章とカテゴリのペアを記述したファイルをもとにカスタムモデルで作成し、利用できる。Sentimentは感情分析である。文章をポジティブ、ネガティブ、ニュートラルに分類し、文章がどのような感情のもとに発せられたかを読み解く。「今日のイベントは楽しかった。行きたい」という文章には「64%ポジティブ」。「昨日買った服が破れてしまった。あそこではもう買わない」には「59%ネガティブ」のように分析する。ラベル(ポジティブ、ネガティブ、ニュートラルの識別分類)は固定されるが、カスタムモデルを作り利用することも可能。Languageは、さまざまなシーンでの活用が考えられる。Intentを利用すれば、顧客による問い合わせに対して的確な応答を返すChatbotを開発できる。Sentimentによりネガティブと判定された場合に、有人チャットに切り替えるといった使い方も可能である。当日のセッション資料および動画は公開されているので、より詳細な内容はそちらを参照したい。Languageは公開ベータテスト中です。正式リリース時には仕様が異なる可能性があることをあらかじめご了承ください。ナオミ)SE、通信教育講座の編集、IT系出版社の書籍編集を経てフリーランスへ。IT分野で原稿を書いたり編集したり翻訳したり。圧縮・解凍UNIX基本講座@CodeZine『CodeZine(コードジン)』の公式アカウントです。【NEW】デブスト2019デブサミ2019福岡・関西デブサミ2019夏デブスト関西デブサミ2019×ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。