T
THINK Watson

IBM Watson でコーディングのできないド素人がチャットボットを作ってみた

post_thumb

文:鳥羽 恒彰(トバログ)

 
IBM Watson を用いたチャットボットが、ある程度無料で構築できるとのことで早速作ってみた。

筆者はこれまでチャットボットはおろか、プログラミングのイロハも知らない全くの素人だが、短時間でそれなりに会話ができるチャットボットできたので紹介しよう。

 

コーディングのできないド素人が IBM Watson でチャットボットを作るまで

chatbot-conversation-1-ibm-think-watson20

画像は筆者がつくったチャットボットの原型。筆者は趣味で個人ブログ「トバログ」を運営しており、ブログ内の読みたい記事のカテゴリを入力すると、オススメの記事を紹介してくれるというものが作りたかった。

 

なぜブログでチャットボットなのか

チャットボットをブログで活用する理由は以下の2つ。

 

  • 過去記事を探しやすくする
  • 他ブログとの差別化

 

記事数が増えると、何の記事がどこにあるのかが分かりにくく、読者も本当に読みたい記事が探せないという問題を多くのブログが抱えている。

これを解決しているブログは筆者の知る限りほとんどないので、実装できれば他ブログとの差別化も図れるはず。
以上の理由からブログにおけるチャットボットの可能性を考えたのであった。

 

IBM Watson を用いたチャットボットのつくりかた

最終的にはブログやチャットアプリなどに直接導入したいが、さすがに事前知識がない状態では時間がかるため、今回は導入編ということで簡単な会話ができるところまでを目指す。

簡単に流れを紹介すると

 

  1. 「IBM Bluemix」のアカウントを作成(30日間無料)
  2. サービス群から 「Watson Conversation API」を選択
  3. 「Workspace」 をつくり実際に会話させたい内容を手入力する

 

といったところ。少々複雑そうに感じるが、やってみると(ここまでは)意外に簡単。以下の記事を参考にし、ある程度のところまで形にすることができた。

Watsonに博多弁をしゃべらせてみた
BluemixのWatson Conversation(beta)を触ってみた

 

実際にチャットボットを作ってみた

chatbot-conversation-1-ibm-think-watson6

Watson Conversation API を利用するには IBM が提供するクラウド上でアプリケーションが構築できるプラットフォームサービス「Bluemix」に登録する。30日間は無料ですべてのサービスが利用可能、その後はサービスによって従量課金となる(30日間が過ぎても Watson Conversation API は1,000回まで API の呼び出しができる。詳しくはこちら。)

 

chatbot-conversation-1-ibm-think-watson7

Bluemix に登録したらチャットボットの基となるサービスを選択する。「カタログ」➞「サービス」➞「Watson」で画像赤枠の「Conversation」を開く。

 

chatbot-conversation-1-ibm-think-watson17

Conversation を開くとこのような画面になるので、早速「作成ボタン」をクリックし、チャットボットの基を作っていく。

 

chatbot-conversation-1-ibm-think-watson18

Conversation を開いたら新規のワークスペースを用意する。ワークスペースは簡単に言えばチャットボットの中身を設定するための場所だ。

最低限の会話ができるチャットボットを作るためには「Intents」「Entities」「Dialog」の3つが必要となる。それぞれ

 

  • Intents:問いかけの分類(挨拶なのか質問なのかなど)
  • Entities:質問における目的語の中身(柴犬やシベリアンハスキーを「犬」と分類するための用語)
  • Dialog:会話の流れ

 

といった役割だ。

 

Intents

chatbot-conversation-1-ibm-think-watson10

「Intents」には問いかけの分類を行うための例文を入力。最低5つの例文を入れると Watson が例文を解析し、定型文以外の質問でも柔軟に分類できる

例えば「#スマートフォン記事」だったら「スマートフォンの記事が見たい」や「スマホ記事が読みたい」などを例文として入れると、「今日はスマートフォンの記事が読みたいな」という問いかけでも Watson が「『#スマートフォン記事』に関する問いかけだな」と自動で認識する。

 

Entities

chatbot-conversation-1-ibm-think-watson22

「Entities」は目的語に相当する。例えば人間だったら「スマホ = iPhone」であると認識できるが、Watson にはそれが分からない。なのでスマホとはどんなものを指すかを教えるためのものがこの Entities だ。

@スマートフォン という項目を作成し「iPhone, スマホ, Xperia, Galaxy, スマートフォン」と入力すれば Watson が「iPhone はスマ―トフォンの分類だな」と認識できる。

 

Dialog

chatbot-conversation-1-ibm-think-watson14

ある程度会話の軸となる情報を入力したところで「Dialog」で実際に会話の形式を作っていく。自然な会話形式にするためにはここの構成がしっかりしている必要がある。

例えば「こんにちは。なんの記事が読みたいですか? トバログはガジェットの記事やカバンの中身の記事が人気です。」とチャットボットがユーザーに問いかけ、ユーザーが「じゃあガジェットの記事が読みたい」と投げ返す。事前に入力している「Intents」を基に Watson がガジェットに関する問いかけの可能性が高いと判断する。

このやりとりを数回行うことで、最終的に読者が読みたい記事までたどり着けるようになる。

 

コーディングができない素人でもある程度会話のできるチャットボットができました

chatbot-conversation-1-ibm-think-watson20

上の画像のようにそれなりに自然な応答ができるまでになった。実際に組み上げるのにかかった時間は2時間程度だが、情報収集の時間も含めると10時間ほどかかった。もちろんまだ初期段階なのでイレギュラーな対応は難しいが、時間をかければある程度違和感のないチャットボットも実現できそうだ。

このように Watson Conversation API ならば、コーディングを必要とせずにチャットボットがつくれる。チャットボットは気になるけど難しそうだとためらっている人は、Watson を用いたチャットボットを作ってみてはいかがだろうか。

2017年11月1日、BluemixはIBM Cloudにブランドを変更しました。詳細はこちら

IBM Alert Notification
スタッフがすべての重大な IT アラートの通知を受け取ることができます
無料評価版はこちら