先日、カタログ通販大手が、顧客からの電話注文にAIのみで対応することを発表しました。電話注文は音声でやり取りされますから、本連載でも何度かご紹介した通り、この対応は「音声認識AI」「対話AI」「音声合成AI」の組み合わせで成り立っているものです。今回は、電話注文のようにある程度会話の内容が想定できるシーンで活用される対話AIについて解説したいと思います。

シナリオ対話に対話AIが使われているとは限らない?

対話AIは、用途に合わせてさまざまな技術によって成り立っています。また、対話AIを開発している会社によっても、手法はさまざまです。今回のニュースのように「電話注文」という状況においては、ある程度人とシステムとのやり取りの内容が想定できるため、多くの場合、シナリオに従って対話を行う手法(以下、「シナリオ対話」)が用いられます。

シナリオ対話については第16回でも簡単にご紹介しましたが、その良さは”システムがおかしなことを言わない”ということに尽きます。なぜなら、システムが話す内容は全てあらかじめ人間が書いたものなので、失言をすることがないのです。しかし、もちろん人が想定して書けるシナリオの量は限られています。そのため、ユーザーの発話に対して応答できないケースも多々発生します。そういう場合は、「すみません。わかりませんでした」のような台詞で応答することになるでしょう。

あらかじめ全て人が書いておいたシナリオに沿って対話をする――これのどこにAIが隠れているのでしょうか。実は、シナリオ対話ではAI技術を用いていない場合もあります。単純に、ユーザーがこう言ったらこう返す、さらにこう言われたらこう返す……を繰り返すようにプログラムしておけば、対話が可能だからです。

しかし、こうした方法で作られたシステムは人の発話に対してうまく応答できないケースが多く、人のほうがシステムに合わせて話す必要が出てきます。例えば、次のようなシナリオをコンピュータに与えておくことを想像してみてください。

シナリオ対話で使うシナリオの例

システムが「注文番号001をご注文ですか?」と質問した後に、ユーザーが「はい」か「いいえ」で答えてくれれば、想定通りにシナリオは進み、順調に受け答えができるでしょう。しかし、必ずしもユーザーが「はい」「いいえ」で答えてくれるとは限りません。「欲しいのはそれじゃないです」と答えた場合はどうなるでしょうか。

システム   「注文番号001をご注文ですか?」
客(ユーザー)「欲しいのはそれじゃないです」
システム   「”はい”か”いいえ”でお答えください」
客(ユーザー)「いいえ」

結局、システムに人間が合わせるかたちで、ひとまずシナリオは進んでいきます。しかし、このようなことが積み重なれば、ユーザーはシステムと話をすることにいら立ちを覚えてしまうかもしれません。

人の発話が肯定か否定かを判定するAIを使う

こうした問題を解決するためには、人の発話が肯定か否定かを判定できるAIを入れておけば良いでしょう。システムからの質問が「はい」か「いいえ」で答えられるものである場合、質問に対するユーザーの発話が肯定か否定かを判定できるAIを導入するのです。そうすれば、先の例も次のように進むことができるようになります。

システム   「注文番号001をご注文ですか?」
客(ユーザー)「欲しいのはそれじゃないです」
システム   「注文番号を教えてください」

単純にユーザーの発話が肯定か否定かを判定するだけであれば、ユーザーの発話バリエーションを大量に集め、各々に肯定か否定かのタグを付けて、発話を肯定か否定に分類するための学習モデルを作成すればよいでしょう。

ユーザーの発話 肯定or否定
欲しいのはそれじゃないです 否定
それとは違います 否定
注文番号001が欲しいです 肯定

しかし、このやり方では問題が起こり得ます。ユーザーが次のように発話した場合です。

システム   「注文番号001をご注文ですか?」
客(ユーザー)「欲しいのは注文番号002です」

この応答の場合、ユーザーの発話は単体で見れば肯定文ですが、システムの発話とセットで見れば、システムの発話に対しては否定の意を表しています。こうした発話にも対応できるようにするためには、例えば「システムが話題にしている注文番号と、ユーザーが話題にしている注文番号が一致しているか」を見て、肯定か否定かを判定する方法が考えられます。

システムが注目する注文番号とユーザーが注目する注文番号が一致する場合は、ユーザー発話の肯定/否定をそのまま採用し、システムが注目する注文番号とユーザーが注目する注文番号が一致しない場合は、全て否定ととらえるわけです。

システムの発話 ユーザーの発話 肯定or否定
注文番号001をご注文ですか? 欲しいのは注文番号001です 肯定
注文番号001をご注文ですか? 欲しいのは注文番号002です 否定
注文番号001をご注文ですか? 欲しいのは注文番号001ではありません 否定
注文番号001をご注文ですか? 欲しいのは注文番号002ではありません 否定

※ この場合はシステム発話に対しては肯定でも否定でもないが、ユーザー発話が否定なので否定として扱う。

このように、ある程度対話の流れが想定できるものに対しては、シナリオ対話という手法で実現することが可能です。しかし一言にシナリオ対話と言っても、「AIを使用しているかどうか」「使っている場合、どのようなAI技術を採用しているか」はシステムによって千差万別です。また、世の中にあるシナリオ対話で実現しているシステムは、ここで紹介した以外にもさまざまな工夫がなされていることでしょう。

もし皆さんが実際に対話のシナリオを書く機会があるならば、ぜひチャレンジしてみてください。恐らく今回挙げたような課題に直面し、それを解決するためにAI技術を必要とするはずです。

著者紹介


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

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