シンチャオ!中田椋介です。今回は第一回製作日記です。僕は機械工学類で、隣の稲葉貴大くんは電気電子科です。今週の月曜日からインターンシップ生として働き始めました。このブログでは、Dialogflowを用いたChatBotの作成過程についてブログに残していこうと思います。
ChatBotとは?Dialogflowとは?
今回はChatBotに関する初めてのブログなので、ChatBotの大まかな説明も交えながらブログを書いていこうと思います。ChatBotとは名前からも分かる通り、チャットのできるボットということです。Twitterのように定期的に投稿をするボットとは異なり、ユーザーが言った言葉に対して何らかの決められた反応をするというものです。ChatBotを使用することで、文字による会話だけでなく、音声を用いた会話や、スケジュールの追加などができるようになります。1番身近な例として、iPhoneのSiri等が挙げられます。次にDialogflowについて説明をしていきます。Dialogflowとは言語を解析するエンジンです。ChatBotの脳みそに相当するイメージだと分かりやすいと思います。今回はこのDialogflowを作成して言語解析を行い、ChatBotの実装を試みようと思います。
ChatBotを用いて出来たこと、出来なかったこと
今回はグミベトナムの会社について聞かれたときに答えられるようなDialogflowを作成しました。Dialogflowにはintentsという項目やEntityという項目、他にも多くの項目があります。今回はIntentsとEntityの二つの項目のみを使ったときの出来ること、出来なかったことについて気付いたことを記していきます。Entityでキーワードを設定して、それをIntentsの中でレスポンス方法や、ユーザーの言葉にどのように反応するかを決めることが出来ます。下にDialogflowの成功例を挙げます。
今回のユーザーの発言に対して、すべて上手く答えることが出来ました。Intentsの中で答え方を数種類用意しておくことで「会社名は何ですか」等の質問にも様々なバリエーションで返すことが出来ます。
では、Entityでキーワードを設定していないフレーズを発言するとどうなるのか。それは、下の画像のようになります。予測されていない発言に対しては「失礼ですが、もう一度お願いします。」や「何とおっしゃったか分かりません」のような出力が出てきます。この理解できないことによる聞き返しを防ぐためにどうすれば良いのか。
それは、Intentsでトレーニングさせるときに、Entityに含まれていない言葉を話したときにどのような返しをするか決めておけば良いのです。こうすることで、ユーザーに何と返すか指定していくことが出来ます。
これらをふまえて僕たちが気付いたこと2つを述べていきます。1つ目にIntentsとEntityの二つを組み合わせることで、キーワードに対応して言葉を返せることです。2つ目に、Entityで大量のキーワードを設定、Intentsで大量の返し方を用意することで、ChatBotの人物像を数種類も用意できることです。
次に出来なかったことを述べます。予測していないことに関しては、右のように「はじめに自己紹介をしたいから名前を入力して」とIntentsで指定することは出来るが、予測していないことに対して学習出来ない点です。会話をさせるには、何と言われてもそれに対応した答えを返したいですよね。しかし、何回ユーザーが「あなたの年齢はいくつですか」と聞いてもIntentsで決めた返ししか出来ません。つまり、いつまでたっても学習できず、IntentsやEntityで設定を追加しない限りは「OO歳です」と答えられるようにならないのです。
今回はIntentsとEntityの2つの項目のみで出来ることについて述べていきました。次回は、学習の仕方について述べていけたら良いかと思います。
ChatBotについて気になった方、このようなものづくりに携わりたいと思った方!お気軽に下のボタンよりお問い合わせください!