近年、チャットボットが空前のブームとなっています。

AmazonやGoogleをはじめとする各社から発売されたスマートスピーカーでは、従来スマートフォンで画面をタッチして行っていたような操作を、話しかけることで実現できるようになってきました。

また、日本マイクロソフトが開発した女子高生AI「りんな」のように、ユーザーと楽しく話をすることを目的としたチャットボットも存在します。日常生活のなかで、チャットボットと会話をする機会が少しずつ、けれども確実に増えてきていると言えるでしょう。

その一方で、チャットボットの応答の質には、まだ問題がある場合が少なくありません。チャットボットと話をしてみたことがある人ならば、こちらが意図した内容をチャットボットが理解してくれずに、会話が噛み合わない経験をしたことがあると思います。

近年のAIブームの中心の1つとなっているチャットボットであるにもかかわらず、簡単な話もうまく理解してくれないことに落胆した方も多いのではないでしょうか。

チャットボットのような「人間と自然に会話をするシステム」は、「対話システム」という分野で研究されているのですが、その最新の研究成果を使っても「どんな話にも適切に応答する仕組み」をつくるのは極めて難しいのが現状です。一般に提供されている対話システムは、特定のタスクについてのみ会話できるというものがほとんどでしょう。

本連載では、そんな現在ブームであり、かつ技術的に挑戦しがいのある対話システムを作成しながら、プログラミング言語「Python」を学んでいきます。環境のインストールから始め、必要なことはその都度解説していくので、Pythonの知識はゼロからのスタートでも大丈夫です。

また、本連載では、対話システムの仕組みや考え方についてはプログラミング言語に依存しないように解説していきます。実装方法についてはPythonを使った解説となりますが、仕組みを理解すれば、Python以外の言語での実装もそんなに難しくはありません。興味のある方は、ぜひ挑戦してみてください。

仕組みを学んでいくなかで、対話システムとの会話がなぜ難しいのかについても理解していただければ幸いです。

対話システムってどんなもの?

対話システムを作成するにあたり、まず「対話システムとは何か」について簡単に説明しておきましょう。

入出力に着目すると、対話システムは大きく2種類に分かれます。

1つ目は、音声で入力し、結果を音声で出力する「音声対話システム」です。これは、スマートスピーカーを思い浮かべてもらうとわかりやすいと思います。

2つ目は、テキストで入力するとテキストで回答をする「テキスト対話システム」です。多くのチャットベースのシステムでは、このテキスト対話システムを用いています。

これらは一見全く異なるシステムのように見えますが、実はテキスト対話システムがあれば音声対話システムを構成することが可能です。

その場合、まず入力音声を「音声認識器」によって入力テキストに変換し、テキスト対話システムに入力します。そして、テキスト対話システムの出力テキストを「音声合成器」により出力音声に変換することで、音声対話システムを構成できるというわけです。

テキスト対話システムを使って構成した音声対話システムの全体像

そこで本連載では、音声対話システムも構成できるという意味で、より基本的とも言えるテキスト対話システムを作成していくことにします。

なお、対話システムは「どのような話題に対応できるか」という観点でも分類することができます。これについては、本誌連載「教えてカナコさん! これならわかるAI入門」の第16回にまとめられているので、興味のある方はぜひご一読ください。

対話システムを自作するメリット

私生活ではスマートスピーカーのような対話システムを使うことで、スマートフォンを直接操作しなくても、音楽再生やタイマーといった機能を使ったり、調べ物などを行ったりすることができます。

また商用の場面では、コールセンターのようなお問い合わせ窓口のオペレーター業務(の一部)を対話システムが担うことも珍しくなくなってきています。

このように、すでにさまざまな対話システムのサービスがあるなかで、自身で対話システムを作る意義はどこにあるのでしょうか?

まず、自作することで対話システムが応答する仕組みを詳しく知ることができます。仕組みを理解することによって、既存のサービスが提供しているシステムの実現方法もおおよそ把握できるようになり、そのシステムがどの程度の処理ができるのか想定した上で利用できるようになります。

近年のAI技術を過信するあまり、「こんな簡単な質問にも返答できないのか」と落胆して対話システムを利用しなくなってしまうケースもあるようです。しかし、現在の技術でできること/できないことを理解した上で最大限に活用できれば、生活をより便利にしていけるでしょう。

また、自作すれば細部まで好きなようにカスタマイズした対話システムを持つことができます。「愚痴を聞いてくれるシステム」「おやつの時間を教えてくれるシステム」「好きな有名人の最新動向を教えてくれるシステム」など、アイデア次第で自分好みのシステムを作成できるわけです。

本連載を通じ、対話システムの仕組みを理解しながら、自分だけの対話システムを作っていきましょう。

次回は、Pythonをインストールし、プログラムの実行方法を解説します。

著者紹介


株式会社NTTドコモ
R&Dイノベーション本部 サービスイノベーション部
阿部憲幸

2015年京都大学大学院理学研究科数学・数理解析専攻修了。 同年、NECに入社。 2016年から国立研究開発法人情報通信研究機構出向。 2018年より現職。 自然言語処理、特に対話システムの研究開発に従事。 毎日話したくなるAIを夢見て日夜コーディングに励む。
GitHub:https://github.com/noriyukipy