こんにちは、yutaです。

今回はDialogflowを使うための簡単な機能の説明と、基本的な応答の作り方をご紹介したいと思います。

Dialogflowに関する2つ目の記事になります。

Dialogflowは、Googleが提供するAI(人工知能)との対話の流れを構築する無償のツールです。

Dialogflowで作成した会話は、Google AssistantやGoogle Home、TwitterやLINEまで、さまざまなシステムで利用することができます。

Twitterへの連携方法は第1回で説明しているので、そちらをご覧ください。

第1回【Dialogflowの使い方】Twitterを連繋させる

ではDialogflow自体の説明はごく簡単なものにとどめて、早速説明に入りたいと思います。

スポンサーリンク

Dialogflowの機能の説明

まずはDialogflowを使うために理解したい機能として、画面左側に並んでいるメニューの説明をさせていただきます(画像をクリックするとフルサイズでの表示が可能です)。

Dialogflowには次のメニューが存在します。

  • Intents
  • Entities
  • Fulfillment
  • Integrations
  • Training
  • History
  • Analytics
  • Prebuilt Agents

これらはそれぞれ次のような機能を提供します。

Intents

直訳すると「志向」ですが、なんだか日本語的に難しく理解しづらいので、ここではユーザーの「要求」や「質問」と捉えておくと良いでしょう

「コーラをください。」

「誕生日は?」

というようなユーザーの具体的な記載内容(あるいは発言)をため込んでいくのがIntentsになります。

Entities

直訳すると「実体」という意味になりますが、これもそう言われてもわかりにくい…「単語」や「用語」と捉えておくと良いでしょう

EntitiesにはIntentsに出てくる単語をカテゴリ単位で蓄積します。

飲み物「コーラ、ジンジャーエール、カルピス、烏龍茶…」

DialogflowはIntentsの内容をEntitiesで判断して答えを返します。

ユーザー「コーラをください」

AI(飲み物Entitiesが含まれている!)

AI「かしこまりました。グラスでよろしいですか?ビンでお出ししましょうか?」

という具合です。

Fulfilment

Fulfilmentは、Webhookという仕組みを利用して他のシステムから情報を取得して返す仕組みを作ることができる機能です。

例えば次のようなことができます。

ユーザー「今日の滋賀県の天気を教えて」

AI(滋賀県の天気をYahoo!天気で検索・・・)

AI「今日の滋賀県の天気は雨(検索結果)です。」

スクリプトを編集してFirebaseと呼ばれるリアルタイムデータベースを利用することで、より高度な連携が可能になります。

【2018/09/01 追記】

第4回でFulfilmentの超基礎編をアップしています。よければご覧ください。

第4回:【Dialogflowの使い方】Fulfilmentを使ってみる(超基礎編)

Integrations

Integrationsは自分が作ったAIの応答を外部に公開するための機能で、Integrationsを使って公開するアプリと連携することで、対象のアプリへの質問などに対してDialogflowで登録した応答ができるようになります。

冒頭にも書いたとおり、連携できる対象には、Google Asistant、Google Home、TwitterやLine、Slackなどがあります。

Training

過去にユーザーからインプットされた一連の内容を参照して、AIに再学習させることができる機能です。

解釈できなかったインプットにEntityを紐付けることによって、ユーザーの入力をAIがより正確に理解できるようになります。

History

単純なユーザーとAIの対話のログです。

ユーザーがどのようにAIと対話しているかを見ることができます。

Analytics

Analyticsでは、ユーザーのセッション数や、どのIntentがどれだけ使われているかなどの情報を期間を絞って確認することができる分析用の機能です。

スクショのセッション数の少なさは気になさらず・・・

Prebuilt Agents

最後のPrebuilt Agentsは、Googleが用意しているカスタマイズ可能なAgentを取り込むことができる機能です。

日本語を含めた19の言語分で、用意されたシーンに合わせた会話が組み込まれているため、目的に合ったPrebuilt Agentがあるのであれば、利用することで新たなアプリ作りがよりスムーズになることでしょう。

機能の説明は以上です。

では続いて、簡単な応答を作ってみましょう。

スポンサーリンク


基本的な応答作り

今回は次のようなやり取りができるように作ってみましょう。

ユーザーこんにちは!

AIこんにちは!」または「うっす!

この応答を作るにはEntitiesIntentsの登録が必要です。

手順に従って要素を登録して行ってください。

1.Entitiesに単語を登録する

まずはEntitiesに単語を登録しましょう。

左側メニューの「Entities」をクリックしてください。

右側のメニューが変わるので、右上の「Create Entity」をクリックしましょう。

最初にEntityに名前をつけます。

Entity nameの記入欄に名前を入力しましょう。

ここでは「good-afternoon」とでもしておきましょう。

名前を入力したら下部の「Click here to edit entry」の部分に単語を登録していきます。

この枠に最初に入力した単語が「Value(値)」となり、同じ行に連ねた単語が「Synonym(類義語)」となります。

つまり、1つの行にはValueと同じ意味を示す違う単語を登録することになります。

まず最初に「こんにちは」と入力しましょう。ValueとSynonymに1つずつこんにちはが登録されました。

さて、私たちは「こんにちは」の挨拶に、他にどんな言葉を使うでしょうか?

やぁ」「こんちは」「Good Afternoon」…

思いつく単語を連ねていきましょう。

これで、これらの単語はすべて「こんにちは」と同義とされて、AIはこれらを「こんにちは」と捉えるようになります。

Entityの入力はこれで完了です。

SAVE」ボタンをクリックして保存しましょう。

2.Intentsを作成する

続いてIntentを作成します。

左側メニューの「Intents」をクリックしてください。

右側の画面が変わるので、右上の「CREATE INTENT」をクリックしましょう。

まずはIntentに名前を付けます。

Intent nameの記入欄に名前を入力しましょう。

ここではEntityと同じく「good-afternoon」としておきましょう。

名前が入力できたら次は「Training phrases」の「Add user expression」にユーザーからの言葉を入力します。

こんにちは!」と打ち込んでみましょう。

Enterキーを押して入力を確定すると、文字の背景色が変わってEntityと自動で紐付きます。

もし自動で紐付かない場合は「こんにちは」の文字をドラッグして選択し、出現したリストから「@good-afternoon」を選択してください。

続いて「Responses」の部分に「Enter a text response」に記入した内容への応答を記入しましょう。

こんにちは!」と「うっす!」を入力しましょう。

これでIntentの設定も完了です。

SAVEボタンをクリックして記入した内容を保存してください。

SAVEボタンをクリックするとAIによる学習が当時にスタートします。

3.確認

学習が完了したら画面右側のテストようフォームで言葉を入力してみましょう。

「こんにちは!」

と入力してみてください。

「こんにちは」または「うっす!」

と返事が返ってくるはずです。

また、同じEntityに登録された単語のSynonymを使ってみましょう。

「やぁ」

と入力してみてください。

AIは先程と同様に

「こんにちは」または「うっす!」

と返すはずです。

簡単ですが、以上が基本的な応答の作り方になります。

最後に

いかがでしたでしょうか?

基本的なことであれば、そんなに難しくなかったと思います。

EntitiesとIntentsを増やしていけば、様々な会話が可能になります。

また後日、AIからの確認などを含んだ2往復以上の会話の作り方もご紹介したいと思います。

【追記】
聞き返しの作り方を関連リンクに追加しました。

関連リンク

第1回【Dialogflowの使い方】Twitterを連繋させる

第3回【Dialogflowの使い方】聞き返しの作り方

第4回【Dialogflowの使い方】Fulfilmentを使ってみる(超基礎編)