機械学習型エンジンでチャットボットを作ってみた

はじめに

一般的にAIのエンジンと言えば、読者の皆様はどんなものを思い浮かべるでしょうか?やはり画像認識などにも応用されているDeep Learningなどの機械学習型エンジンって方が多いですかね。
当社は会話プラットフォームを用いたチャットボットを提供しているのですが、当社にお問い合わせいただくお客様からも「機械学習型のエンジンを使用したチャットボットは作れますか?」といった問い合わせを多くいただきます。当社の「ENOKI」は機械学習を含めたハイブリッドのAIエンジンを搭載していて対応はできますが、オントロジー型がベースとなっているため単独で機械学習型のエンジンは使用しません。しかしながら、お客様から機械学習型のエンジンを使用しているかと問い合わせがあるということは「他のチャットボットでは機械学習型のエンジンを使っているものが多いんじゃない?」と気づいてしまいました。
なぜ「機械学習型のチャットボット」がお客様に人気があるのか・・・この謎を解明するために「機械学習型」のチャットボットを作ってみようと一念発起しました。そんな私は「ENOKI」を使用したチャットボットでしかデータを作ったことがないので、機械学習に関しては素人に近い状態です。なので、方法としては当社Blog記事「機械学習型チャットとENOKI5.0を比べてみる」を参考にしました。チャットボットを初めて導入されるお客様と同じくらいのレベルと思って記事を読んでいただけると嬉しいです。

機械学習用データの準備・投入

あまり難しいことはわからないのでスコアの高いほうが出力されるようデータを2つだけ準備してみました。

No.質問回答
1各拠点への郵便はいつ着きますか拠点への郵便は翌稼働日には着きます
2ヘッドセットはどこに置いてありますかヘッドセットは総務部で保管しています。備品予約サイトから予約してご使用ください。

機械学習用のデータとして、それぞれの言い換え文を10個ずつ準備します。(果たして10個が適切なのかどうか・・・)

それぞれの質問文の言い換え
No.各拠点への郵便はいつ着きますかヘッドセットはどこに置いてありますか
1各営業所への郵便はいつ着きますかヘッドセットはどこですか
2各拠点へはいつ着きますかイヤホンマイクはどこにありますか
3各営業所へはいつ着きますかWeb会議用のセットはどこにありますか
4各拠点への郵送物はいつ届きますかインカムはどこにありますか
5各営業所への郵送物はいつ届きますかインターカムはどこにありますか
6各拠点へはいつ着荷しますかヘッドセットが置いてある場所
7各営業所へはいつ着荷しますかイヤホンマイクが置いてある場所
8各拠点へは何日後に届きますかWeb会議用のセットが置いてある場所
9各営業所へは何日後に届きますかインカムが置いてある場所
10各拠点へはいつつきますかインターカムが置いてある場所

これを機械学習型エンジンをもつチャットツールに投入して準備は完了です。

ボットとチャットしてみる

上記の質問回答に関して、ランダムに入力してみてボットからの回答を確認してみました。結果は以下のとおりです。

ふんふん・・・ふんふん・・・

ん!?

思っていた結果と違う!

途中までは作者の意図通りの結果がでていたのに・・・これが機械学習型エンジンのあるあるなのでしょうか。想定通りの結果を出すためにはどうすればよいか、「機械学習型チャットとENOKI5.0を比べてみる」を読むと「機械学習はブラックボックスなのでデータを削ったり足したりして良いポイントを見つけてください」とのことなので、データを足してみようと思います。どんなデータを足したらよいかわからないので想定通りの結果が出なかった入力を言い換えに追加してみました。

No.各拠点への郵便はいつ着きますかヘッドセットはどこに置いてありますか
1各営業所への郵便はいつ着きますかヘッドセットはどこですか
2各拠点へはいつ着きますかイヤホンマイクはどこにありますか
3各営業所へはいつ着きますかWeb会議用のセットはどこにありますか
4各拠点への郵送物はいつ届きますかインカムはどこにありますか
5各営業所への郵送物はいつ届きますかインターカムはどこにありますか
6各拠点へはいつ着荷しますかヘッドセットが置いてある場所
7各営業所へはいつ着荷しますかイヤホンマイクが置いてある場所
8各拠点へは何日後に届きますかWeb会議用のセットが置いてある場所
9各営業所へは何日後に届きますかインカムが置いてある場所
10各拠点へはいつつきますかインターカムが置いてある場所
11いつ郵便が届く?
12いつ拠点に届く?
13拠点に郵便がいつ届く?

この状態で再度チャットに入力してみると、

無事、想定どおりの回答が出力されました。よかったよかった。

言い換え追加後に起こった問題

「ヘッドセットはどこに置いてありますか」の回答として、予約サイトの案内も付加していたため、予約に関する質問も来ることを想定し、以下のように「いつかりられますか?」という言い換えを追加しました。
すると、「いつごろ送り先にとどきますか?」という入力に対して、以下のような変化が起こってしまったのです。

No.各拠点への郵便はいつ着きますかヘッドセットはどこに置いてありますか
1各営業所への郵便はいつ着きますかヘッドセットはどこですか
2各拠点へはいつ着きますかイヤホンマイクはどこにありますか
3各営業所へはいつ着きますかWeb会議用のセットはどこにありますか
4各拠点への郵送物はいつ届きますかインカムはどこにありますか
5各営業所への郵送物はいつ届きますかインターカムはどこにありますか
6各拠点へはいつ着荷しますかヘッドセットが置いてある場所
7各営業所へはいつ着荷しますかイヤホンマイクが置いてある場所
8各拠点へは何日後に届きますかWeb会議用のセットが置いてある場所
9各営業所へは何日後に届きますかインカムが置いてある場所
10各拠点へはいつつきますかインターカムが置いてある場所
11いつ郵便が届く?いつかりられますか?
12いつ拠点に届く?
13拠点に郵便がいつ届く?

あれ!?結果が変わってしまった!?

機械学習はブラ(以下略)なので、原因は推測でしかありませんが「いつかりられますか?」が反応してしまったようです。うーん。。。

おわりに

上記を解決するためには言い換えのたしひきが必要になることがおわかりいただけたと思いますが、たった2つのデータを調整するのに作者は右往左往してしまいました。そして感じることは、当社にお問い合わせいただくお客様は数十~数百のデータをお持ちだと思うのですがその数十~数百のデータに対して、言い換えの総数は数百~数千必要になると思われ、その数百~数千のデータがそれぞれ影響しないようにデータを足し引きして調整するのにかかる時間と工夫は膨大な工数を要するものと思われます。

皆さんどうやってチューニングされているのでしょうか?