ここ数年で飛躍的に増えたチャットボットの活用ですが、特に最近顕著に増加しているのが「問い合わせチャットボット」です。Webサイトの右下などに、サポートセンターにつながりそうな吹き出しボタンや、「お問い合わせ」のボタンを見かけたことはないでしょうか。それらのボタンをクリックしてチャットを開始すると、人ではなくチャットボットが自動で応答するケースが増えています。

先月も、中外製薬でAIを用いた医療従事者向け製品情報問い合わせチャットボット「MI chat(エムアイチャット)」の運用が開始されたというニュースがありました。

問い合わせチャットボットは、お客様(ユーザー)から入力された質問に対して、自動で回答を返します。すなわち通常の対話とは異なり、入力は常に「質問」であり、出力は常に「回答」であることを想定しているわけです。

今回は、こうした問い合わせチャットボットを開発する方法について考えてみましょう。

「開発する前」に必要なコト

問い合わせチャットボットの開発に欠かせないものは、質問と回答のペア(のデータ)です。仮に、何もデータがない状態から問い合わせチャットボットを開発する場合、まず想定される質問と回答を書き出さなければなりません。しかし、質問と回答をゼロから記述していくことは、想像以上に大変で、時間とコストがかかる作業です。

問い合わせチャットボットを作りたいと思った場合は、どんなチャットボットを開発するかという手法を検討する前に、近くに使用可能な質問/回答ペアのデータがないかどうかを探してみることが重要です。

チャットボットを導入しようとしているWebサイトに「よくある質問」のページがあるのならば、そこに質問/回答ペアがたくさんあるかもしれません。質問/回答ペアさえ大量にあれば、後は好きな手法で問い合わせチャットボットを開発することができます。

「検索」に基づく開発手法

例として、次のような質問と回答のペアがあることを想像してみてください(ここには4つのペアのみしか記載していませんが、このような質問/回答ペアがたくさんあると想定してください)。

質問文 回答文
新規で口座を作りたい 本人確認ができるものを持ってご来店ください
利息はいくらですか 普通預金のお利息は0.01%です
1日の引き出し限度額はいくらですか 10万円です
他行宛の振込手数料はいくらですか 他行宛でお振込み金額3万円未満は324円、3万円以上は648円です

このようなデータがある場合に、問い合わせチャットボットを開発する際によくとる手法の1つが、検索に基づいたものです。例えば、この質問/回答ペアを保持した状態で、ユーザーから次のような入力があったとします。

「新しい口座の作り方は?」

検索に基づく問い合わせチャットボットは、入力された文(質問)に対して、最も似ていると思われる質問文を手持ちの質問/回答ペアのなかから探します。

質問文 回答文
新規で口座を作りたい 本人確認ができるものを持ってご来店ください
利息はいくらですか 普通預金のお利息は0.01%です
1日の引き出し限度額はいくらですか 10万円です
他行宛の振込手数料はいくらですか 他行宛でお振込み金額3万円未満は324円、3万円以上は648円です

上記のうち、「新しい口座の作り方は?」と最も似ている質問文は「新規で口座を作りたい」でしょう。最も似ている質問文が特定できれば、その質問文に対応する回答文「本人確認ができるものを持ってご来店ください」を出力することで、問い合わせチャットボットとしての役目を果たせます。

それでは、”最も似ている質問文”はどのようにして探したら良いのでしょうか。

最も似ている文を探す方法はいろいろありますが、その1つは本連載の第28回でご紹介した「tf-idf」を用いる方法です。tf-idfでは、単純に単語の一致を見るよりも、よりその文にとって特徴的な単語を見つけることができます。すなわち、そのような特徴的な単語が多く一致している文を、最も似ている文だと判定すれば良いわけです。

tf-idfは第28回ではレコメンド(推薦)のために紹介した技術ですが、使い方次第では問い合わせチャットボットにも使えます。このように、技術はアイデア次第でさまざまな活用方法があるわけです。

「同義語の扱い」をどうするか

また、実際に問い合わせチャットボットを開発しようという場合、「同義語(類義語)をどう扱うか」も大きな課題となります。同義語とは、よく似た意味を持つ単語のことです。例えば、次の2文のなかにある「新規」と「新しい」は同義語と言えるでしょう。

  • 新規で口座を作りたい
  • 新しい口座の作り方は?

あらかじめコンピュータに「新規」と「新しい」は同じ意味だということを教えておかなければ、両者は別物として扱われてしまいます。同義語を扱う最も簡単な方法は、同義語を大量に集めた辞書データを作成し、それをコンピュータに与えておく方法です。

単語 同義語
新規 新しい
口座 銀行口座
利息 金利、利子

このようなデータを作成するのは大変ですが、一度作ってしまえばさまざまなところで活用することができるので、思い切って作成してしまうのも手でしょう。

機械学習を使った開発手法

機械学習を使って問い合わせチャットボットを作りたいのであれば、分類問題に落とし込んでも良いかもしれません。そのためには、質問と回答のペアだけでなく、そこに含まれる質問文と同じ意図で発話される別の文(言い換え文)を大量に集める必要があります。

質問文 言い換え文
新規で口座を作りたい 新しく口座を作りたいんですが
別の口座が欲しい
新規の銀行口座を開設したい
新しい銀行口座
利息はいくらですか 利子はどのくらい
金利教えて
利息高いの?

こうしたデータがあれば、「問い合わせチャットボットの開発」は「入力された文を質問文のいずれかに分類する」という課題に落とし込むことができるでしょう。

この方法のメリットは、同義語の辞書をあえて作成する必要がないというところにあります。一方で、データを十分に集めることは非常に大変です。反対に、もしこのようなデータをすでに持っているのであれば、それは大きな財産だと言えます。

問い合わせチャットボットに限った話ではありませんが、何かを開発したいと思ったときは、まず身近にどのようなデータがあるかをよく確認してから、用いる手法を検討するようにしましょう。手法から考え始めてしまうと、せっかくの既存データを無駄にしたり、無駄なデータを作成したりと、不要なコストがかさんでしまう恐れがあるのです。

著者紹介


株式会社NTTドコモ
R&Dイノベーション本部 サービスイノベーション部
大西可奈子

2012年お茶の水女子大学大学院博士後期課程修了。博士(理学)。同年、NTTドコモに入社。2016年から国立研究開発法人 情報通信研究機構 研究員(出向)。2018年より現職。一貫して自然言語処理、特に対話に関する研究開発に従事。人工知能(主に対話技術)に関する講演や記事執筆も行う。
著書に『いちばんやさしいAI〈人工知能〉超入門』(マイナビ出版)。
公式サイト:「AI研究家 大西可奈子のお仕事情報
twitter:@WHotChocolate