(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-12
(45)【発行日】2023-10-20
(54)【発明の名称】発話生成装置、発話生成方法及び発話生成プログラム
(51)【国際特許分類】
G06F 40/56 20200101AFI20231013BHJP
G06F 40/242 20200101ALI20231013BHJP
G06F 16/90 20190101ALI20231013BHJP
G06F 16/9032 20190101ALI20231013BHJP
【FI】
G06F40/56
G06F40/242
G06F16/90 100
G06F16/9032
(21)【出願番号】P 2019108667
(22)【出願日】2019-06-11
【審査請求日】2022-05-11
(73)【特許権者】
【識別番号】000004352
【氏名又は名称】日本放送協会
(74)【代理人】
【識別番号】100106002
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【氏名又は名称】林 一好
(72)【発明者】
【氏名】萩尾 勇太
(72)【発明者】
【氏名】金子 豊
【審査官】成瀬 博之
(56)【参考文献】
【文献】特開2018-190077(JP,A)
【文献】国際公開第2018/142686(WO,A1)
【文献】特開2011-170735(JP,A)
【文献】国際公開第2018/043113(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 40/00-40/58
G06F 16/00-16/958
G06Q 10/00-99/00
G06F 3/048-3/0489
G10L 15/00-17/26
(57)【特許請求の範囲】
【請求項1】
入力文から、キーワードデータベースに登録されているキーワードを抽出するキーワード抽出部と、
抽出された前記キーワードをキーワードメモリに格納し、格納時から所定時間が経過した前記キーワードを前記キーワードメモリから削除するキーワード管理部と、
ユーザの発話文に含まれる
、予め登録されている代表語を探索する代表語探索部と、
前記代表語の特徴ベクトルと前記キーワードメモリに格納されている前記キーワードそれぞれの特徴ベクトルとの距離に基づいて、前記発話文の対象語となる前記キーワードを決定する対象語推定部と、
前記代表語に
対応して予め登録されている発話文のテンプレートに前記対象語を組み合わせた文を、前記ユーザの発話文に対する応答発話文
として生成する発話文生成部と、を備える発話生成装置。
【請求項2】
入力文から、キーワードデータベースに登録されているキーワードを抽出するキーワード抽出部と、
抽出された前記キーワードをキーワードメモリに格納し、格納時から所定時間が経過した前記キーワードを前記キーワードメモリから削除するキーワード管理部と、
ユーザの発話文に含まれる
、予め登録されている代表語を探索する代表語探索部と、
前記代表語の特徴ベクトルと前記キーワードメモリに格納されている前記キーワードそれぞれの特徴ベクトルとの距離に基づいて、前記発話文の対象語となる前記キーワードを決定する対象語推定部と、
前記代表語に
対応して予め登録されている発話文のテンプレートに前記対象語を組み合わせた文を生成し、受信した文に対して機械的に返答文を生成して返信する外部アプリケーションにアクセスして、前記組み合わせた文に対する返答文を前記ユーザの発話文に対する応答発話文
として取得する発話文生成部と、を備える発話生成装置。
【請求項3】
前記入力文は、テレビ番組の映像又は音声から抽出される請求項1
又は請求項
2に記載の発話生成装置。
【請求項4】
前記入力文は、複数のユーザの発話文であり、
前記対象語推定部は、前記代表語を抽出したユーザとは異なるユーザの発話文から抽出されたキーワードの中から、前記対象語を決定する請求項1
又は請求項
2に記載の発話生成装置。
【請求項5】
入力文から、キーワードデータベースに登録されているキーワードを抽出するキーワード抽出ステップと、
抽出された前記キーワードをキーワードメモリに格納し、格納時から所定時間が経過した前記キーワードを前記キーワードメモリから削除するキーワード管理ステップと、
ユーザの発話文に含まれる
、予め登録されている代表語を探索する代表語探索ステップと、
前記代表語の特徴ベクトルと前記キーワードメモリに格納されている前記キーワードそれぞれの特徴ベクトルとの距離に基づいて、前記発話文の対象語となる前記キーワードを決定する対象語推定ステップと、
前記代表語に
対応して予め登録されている発話文のテンプレートに前記対象語を組み合わせた文を、前記ユーザの発話文に対する応答発話文
として生成する発話文生成ステップと、をコンピュータが実行する発話生成方法。
【請求項6】
入力文から、キーワードデータベースに登録されているキーワードを抽出するキーワード抽出ステップと、
抽出された前記キーワードをキーワードメモリに格納し、格納時から所定時間が経過した前記キーワードを前記キーワードメモリから削除するキーワード管理ステップと、
ユーザの発話文に含まれる
、予め登録されている代表語を探索する代表語探索ステップと、
前記代表語の特徴ベクトルと前記キーワードメモリに格納されている前記キーワードそれぞれの特徴ベクトルとの距離に基づいて、前記発話文の対象語となる前記キーワードを決定する対象語推定ステップと、
前記代表語に
対応して予め登録されている発話文のテンプレートに前記対象語を組み合わせた文を生成し、受信した文に対して機械的に返答文を生成して返信する外部アプリケーションにアクセスして、前記組み合わせた文に対する返答文を前記ユーザの発話文に対する応答発話文
として取得する発話文生成ステップと、をコンピュータが実行する発話生成方法。
【請求項7】
請求項1から請求項
4のいずれかに記載の発話生成装置としてコンピュータを機能させるための発話生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットの発話文を生成するための装置、方法及びプログラムに関する。
【背景技術】
【0002】
従来、人がコンピュータと会話を楽しむ手段として、例えば、人工無脳(チャットボット、会話ボット)が開発されている。人工無能は、人間の発言から応答文としてもっともらしいものを機械的に生成する方式を採用している。人工無脳の実装方法としては、発言と応答文とを会話のルールとして準備しておく辞書型、大量の会話のログから、ユーザの発言に最も近いものを探し、その応答ログを用いるログ型、大量の文章からマルコフ連鎖を作成し、文を生成するマルコフ文生成型などがある(例えば、非特許文献1及び2参照)。
【0003】
近年、人工無脳を組み込むことで、人と対話する機能が実装されたコミュニケーションロボットが開発されている。人工無脳を組み込んだソフトウェアプログラム、又はコミュニケーションロボットは、ユーザの発話に含まれている単語を用いてもっともらしい応答文を生成している。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2018-185561号公報
【文献】特開2018-190077号公報
【非特許文献】
【0005】
【文献】冨坂亮太、鈴木崇史、「人工無脳(会話ボット)」、映像情報メディア学会誌、Vol.64、No.1、pp.64~66(2010)
【文献】秋山智俊、「恋するプログラム-Rubyでつくる人工無脳」、毎日コミュニケーションズ、2005
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、人間同士の日常会話においては、発言としては明示していないがお互いに認識し共有している文脈や話題(コンテクスト)が存在することが多い。特にテレビ番組視聴中は、テレビ番組の内容を共通のコンテクストとして対話が進行するため、画面に映っているものの名称などを明示的に発話文に含めないことが多い。
しかしながら、一般的な人工無脳は、このようなコンテクストを考慮できていないという課題がある。このことは、会話が噛み合わない応答を行ってしまう原因となり、ユーザがコミュニケーションロボットに対して興味を失う要因の一つとなっている。
【0007】
一方で、特許文献1には、ユーザの発話を記憶部に保存されているトピックに分類することで、ユーザの意図を汲み取った応答文を生成する技術が提案されている。また、特許文献2には、テレビ番組からキーワードを抽出しテンプレート文と組み合わせることで、自発的な発話を行いコミュニケーションを活性化させる技術が提案されている。
しかしながら、特許文献1の技術は、ユーザの発話文と記憶部に保存されているトピックとを比較するため、ユーザの発話文に含まれていないコンテクストを考慮できない。また、特許文献2の技術は、テレビ番組から抽出したキーワードとテンプレート文とから自発的な発話文を生成するため、ユーザの発話に対して応答文を生成できない。
【0008】
本発明は、ユーザの発話に対して、明示されていないコンテクストを推定し、応答としての発話文を生成できる発話生成装置、発話生成方法及び発話生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明に係る発話生成装置は、入力文から、キーワードデータベースに登録されているキーワードを抽出するキーワード抽出部と、抽出された前記キーワードをキーワードメモリに格納し、格納時から所定時間が経過した前記キーワードを前記キーワードメモリから削除するキーワード管理部と、ユーザの発話文に含まれる代表語を探索する代表語探索部と、前記代表語の特徴ベクトルと前記キーワードメモリに格納されている前記キーワードそれぞれの特徴ベクトルとの距離に基づいて、前記発話文の対象語となる前記キーワードを決定する対象語推定部と、前記対象語及び前記代表語に基づいて応答発話文を生成する発話文生成部と、を備える。
【0010】
前記発話文生成部は、前記対象語を、前記代表語に対応するテンプレートに組み合わせて応答発話文を生成してもよい。
【0011】
前記発話文生成部は、前記対象語及び前記代表語を含むパラメータにより、人工無能アプリケーションにアクセスし、前記応答発話文を取得してもよい。
【0012】
前記入力文は、テレビ番組の映像又は音声から抽出されてもよい。
【0013】
前記入力文は、複数のユーザの発話文であり、前記対象語推定部は、前記代表語を抽出したユーザとは異なるユーザの発話文から抽出されたキーワードの中から、前記対象語を決定してもよい。
【0014】
本発明に係る発話生成方法は、入力文から、キーワードデータベースに登録されているキーワードを抽出するキーワード抽出ステップと、抽出された前記キーワードをキーワードメモリに格納し、格納時から所定時間が経過した前記キーワードを前記キーワードメモリから削除するキーワード管理ステップと、ユーザの発話文に含まれる代表語を探索する代表語探索ステップと、前記代表語の特徴ベクトルと前記キーワードメモリに格納されている前記キーワードそれぞれの特徴ベクトルとの距離に基づいて、前記発話文の対象語となる前記キーワードを決定する対象語推定ステップと、前記対象語及び前記代表語に基づいて応答発話文を生成する発話文生成ステップと、をコンピュータが実行する。
【0015】
本発明に係る発話生成プログラムは、前記発話生成装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0016】
本発明によれば、ユーザの発話に対して、明示されていないコンテクストを推定し、応答としての発話文を生成できる。
【図面の簡単な説明】
【0017】
【
図1】実施形態における発話生成装置の機能構成を示すブロック図である。
【
図2】実施形態におけるキーワードメモリに格納されたデータを例示する図である。
【
図3】実施形態における代表語データベースの登録例を示す図である。
【
図4】実施形態における特徴ベクトルデータベースの登録例を示す図である。
【
図5】実施形態におけるテンプレートデータベースの登録例を示す図である。
【
図6】実施形態におけるキーワード処理を示すフローチャートである。
【
図7】実施形態における対象語推定部の動作イメージを例示する図である。
【
図8】実施形態における応答生成処理を示すフローチャートである。
【
図9】実施形態における人工無脳を利用した応答発話文の生成の例を示す図である。
【
図10】実施形態における複数ユーザとの対話における応答発話文の生成例を示す図である。
【発明を実施するための形態】
【0018】
以下、本発明の第1実施形態について説明する。
本実施形態における発話生成装置1は、「食べたい」、「話したい」、「行きたい」などの要望を表す動詞を含む語句、又は「きれい」、「おいしそう」、「大きい」などの形容詞を含む語句を代表語と定義し、これらの代表語を含むテンプレート文と、代表語の特徴ベクトル及びキーワードデータベースに含まれる単語の特徴ベクトルを作成しておく。
【0019】
発話生成装置1は、視聴中の番組のキーワードを一定期間保持し、代表語を含むユーザ発話文が入力されたときに、この代表語の特徴ベクトルと保持しているキーワードの特徴ベクトルとを比較する。そして、発話生成装置1は、特徴ベクトルの近いキーワードを、代表語に対するテンプレート文に組み合わせて応答発話文を生成する。
これにより、発話生成装置1は、ユーザ発話文において明示されていないコンテクストである対象語を推定した上で、適切な応答発話文を生成することができる。例えば、キーワードとして、「ラーメン」、「どんぶり」、「レンゲ」、「博多」が保持されている状態で、ユーザが「これ食べたいな」などと発言した場合に、代表語である「食べたい」と特徴ベクトルの近い「ラーメン」が対象語として選択され、テンプレート文と組み合わせることで、「僕もラーメン食べたい」などの応答発話文が生成される。
【0020】
[全体構成]
図1は、本実施形態における発話生成装置1の機能構成を示すブロック図である。
発話生成装置1は、制御部及び記憶部の他、各種インタフェースを備えた情報処理装置であり、記憶部に格納されたソフトウェア(発話生成プログラム)を制御部が実行することにより、本実施形態の各種機能が実現される。
【0021】
発話生成装置1の記憶部は、キーワードデータベース11と、キーワードメモリ12と、代表語データベース13と、特徴ベクトルデータベース14と、テンプレートデータベース15とを備える。
また、発話生成装置1の制御部は、応答生成処理ブロック20として、代表語探索部21と、対象語推定部22と、発話文生成部23とを備え、キーワード処理ブロック30として、キーワード抽出部31と、キーワード管理部32とを備える。
【0022】
本実施形態では、発話生成装置1は、テレビのそばに置かれたコミュニケーションロボットの内部に組み込まれる。
そして、発話生成装置1には、ユーザ発話文Uとテレビ出力文Tとが入力され、応答発話文Rが出力される。
【0023】
[ユーザ発話文U]
ユーザ発話文Uは、音声入力装置40に入力された入力音声Viのうち、ユーザの発した音声のみを抽出してテキスト化したものである。なお、音声入力装置40は、コミュニケーションロボットに組み込まれ、複数のマイクを備えたマイクロフォンアレイにより構成される。
【0024】
コミュニケーションロボットは、テレビのそばに置かれるため、音声入力装置40に入力される入力音声Viは、ユーザの発話音声の他、テレビから出力された音声を含む複数の音源からの合成音となることが想定される。
そこで、合成音は、音源定位・分離ユニット41により、入力された各音声の方向が検出され音源方向毎の音声に分離される。続いて、分離した音声の中からユーザの発話音声のみが抽出されると、音声認識ユニット42により、テキストに変換されたユーザ発話文Uが得られる。
【0025】
音源定位・分離ユニット41には、例えば次の文献Aの手法を、音声認識ユニット42には、例えば次の文献Bの手法を用いることができるが、実現手法はこれらに限られない。
文献A: 中臺一博、奥乃博、中島弘史、長谷川雄二、辻野広司、「ロボット聴覚オープンソースソフトウェアHARKの概要と評価」、第26回日本ロボット学会学術講演会、2008
文献B: 篠崎隆宏、「Kaldiツールキットを用いた音声認識システムの構築」、信学技報 116(279)、pp25-29、2016
【0026】
なお、テレビが出力する音声を取り除きユーザの発話音声のみを抽出するためには、テレビ及びユーザの方向が必要であるが、ロボット、テレビ及びユーザの位置関係を予めパラメータとして与える方法、ロボットがカメラから画像を取得して画像処理によりテレビ及びユーザの方向を識別する方法、音声入力の頻度からテレビ及びユーザの方向を推定する方法などが利用できる。
【0027】
[テレビ出力文T]
テレビ出力文Tは、テレビの放送番組に付加されている字幕文(クローズドキャプション)であってよい。放送番組からの字幕文の抽出方法としては、例えば、ロボットがテレビ受像機と連動して、字幕情報を取得したり、放送連動サービスとして、インターネットなどの通信設備を用いて配信された字幕情報を受信したりする方法が考えられる。
また、テレビ出力文Tは、字幕文に限ったものではなく、例えば、ロボットに装備されたマイク又はカメラを用いて、テレビ音声から音声認識により文が抽出されてもよいし、テレビ映像のキャプチャ画像から画像処理によりオープンキャプションが抽出されてもよい。あるいは、既存の画像認識技術により、被写体の名称又は説明文などが生成されてもよい。
【0028】
[応答発話文R]
応答発話文Rは、音声合成ユニット51により音声へと変換され、スピーカにより構成される音声出力装置50から音声出力される。
音声合成ユニット51の実現手法は限定されないが、例えば次の文献Cの手法を用いることができる。
文献C: 大浦圭一郎、「日本語テキスト音声合成システム Open JTalk」、日本音響学会春季講論集、2010 1、pp343-344、2010
【0029】
[キーワードデータベース11]
キーワードデータベース11は、キーワードが登録されたデータベースである。ここで、キーワードとは、主に、人名、地名、施設などの固有名詞又は一般名詞などである。本実施形態では、キーワードデータベース11には、テレビ出力文Tから対象語(コンテクスト)の候補として抽出したい単語(キーワード)が予め登録されているものとする。
【0030】
[キーワードメモリ12]
キーワードメモリ12は、テレビ出力文Tから抽出されたキーワードを一定期間保持するためのメモリである。
【0031】
図2は、本実施形態におけるキーワードメモリ12に格納されたデータを例示する図である。
この例では、キーワードメモリ12には、「ラーメン」、「どんぶり」、「レンゲ」、「博多」の4つのキーワードが格納されており、それぞれのキーワードが格納された日時も各キーワードに対応付けて保存されている。
【0032】
キーワードメモリ12に格納されてから一定期間経過したキーワードについては、キーワード管理部32により削除される。ここでいう一定期間には、任意の時間が設定されてよいが、一般的に人間が何らかの話題に対して反応する時間と処理の遅延時間とを考慮し、例えば15秒程度が設定される。
なお、発話生成装置1の動作開始時には、キーワードメモリ12にはキーワードが保存されていない状態である。
【0033】
[代表語データベース13]
代表語データベース13には、発話の特徴を示す代表語として感情を表す動詞及び形容詞を含む語句が登録されており、さらに、この代表語と意味が類似する別表現が登録される。
【0034】
図3は、本実施形態における代表語データベース13の登録例を示す図である。
この例では、同じ又は似た意味の異なる表現を統一的に扱うため、種別、代表語、別表現の3つのフィールドのデータがリストとして保管されている。
【0035】
種別は、代表語の種別(品詞)を表しており、例えば、vは動詞、aは形容詞を表している。
代表語は、感情を表す動詞又は形容詞を含む語句であり、例えば、動詞を含む代表語として「話したい」、「聞きたい」、「食べたい」が登録されており、形容詞を含む代表語として「きれい」、「おもしろい」、「好き」が登録されている。
【0036】
別表現のフィールドには、代表語と同じ又は似た意味の異なる表現が登録されている。
例えば、「話したい」の別表現として「おしゃべりしたい」、「しゃべってみたい」、「しゃべりたい」、「言いたい」、「言ってみたい」が、「聞きたい」の別表現として、「聞いてみたい」、「お聞きしたい」、「聴いてみたい」が、「食べたい」の別表現として「食いたい」、「食べちゃいたい」、「食べてみたい」が登録されている。
さらに、「きれい」の別表現として「綺麗」が、「おもしろい」の別表現として「面白い」が、「好き」の別表現として「大好き」が登録されている。
【0037】
ここで、代表語データベース13には、ひらがな表記と漢字表記とが別の語として登録されている。例えば、字幕文は、放送局又は番組によって使用される表記が異なるが、いずれの表記にもマッチングさせることができる。
なお、本実施形態では、代表語データベース13にも、キーワードデータベース11と同様に、代表語と別表現とが予め登録されているものとする。
【0038】
[特徴ベクトルデータベース14]
特徴ベクトルデータベース14には、代表語及び他のキーワードを含む単語又は語句と、各語に対応する分散表現である特徴ベクトルとが登録される。
【0039】
本実施形態では、特徴ベクトルとして、既知の手法であるword2vecによって算出される特徴ベクトルを用いるものとする。word2vecは、3層のニューラルネットワークを用いており、分かち書きされた大量の文章を入力することで算出された特徴ベクトルは、類似した語が距離的に近いベクトルになることが経験的に知られている。
なお、特徴ベクトルの算出方法は、word2vecに限定されるものではなく、意味的に近い語の特徴ベクトルがベクトル空間上で近くに分布する演算方式であればよい。
【0040】
図4は、本実施形態における特徴ベクトルデータベース14の登録例を示す図である。
この例では、「ラーメン」の特徴ベクトルとしてvec1が登録され、以下、「どんぶり」、「レンゲ」、「博多」、「食べたい」、「聞きたい」、「話したい」の特徴ベクトルとしてそれぞれ、vec2~vec7が登録され、全部でN個の特徴ベクトルが登録されている。
特徴ベクトルデータベース14には、予め大量の文章を入力として学習した特徴ベクトルが登録され、キーワードデータベース11及び代表語データベース13に含まれる語の特徴ベクトルが含まれる必要がある。
【0041】
[テンプレートデータベース15]
テンプレートデータベース15には、代表語に対する発話文のテンプレートが登録される。代表語は、代表語データベース13の代表語フィールドに登録されている語と同じである。
【0042】
図5は、本実施形態におけるテンプレートデータベース15の登録例を示す図である。
この例では、テンプレートデータベース15には、「使いたい」という代表語に対して、「%keyを使ってみたい」、「今度%keyを使ってみよう」などのテンプレート文が登録されている。また、同様に、「飲みたい」、「食べたい」、「きれい」、「おもしろい」、「好き」の各代表語に対応するテンプレート文が登録されている。
ここで、%keyは、何らかのキーワードに置き換えられる箇所を示している。
なお、テンプレートデータベース15のデータは、予め準備され登録される。
【0043】
発話生成装置1による発話生成処理は、これらの各種データベースを利用し、応答生成処理ブロック20とキーワード処理ブロック30の各機能ブロックそれぞれの処理から構成される。これら2つの処理は並列で行われてよい。
【0044】
[キーワード処理]
キーワード処理は、キーワード処理ブロック30を構成するキーワード抽出部31及びキーワード管理部32により実行される。
【0045】
キーワード抽出部31は、テレビ出力文T(発話生成装置1への入力文)の中に、キーワードデータベース11に登録されているキーワードが含まれているかどうかを検索する。キーワードが含まれていない場合、キーワード抽出部31は、次のテレビ出力文Tが入力されるまで待機する。キーワードが含まれていた場合は、キーワード抽出部31は、該当のキーワードを抽出しキーワード管理部32に入力する。
なお、テレビ出力文Tに複数のキーワードが含まれていた場合は、これら全てがキーワード管理部32に入力されてよい。
【0046】
キーワード管理部32は、キーワードメモリ12に一時的に保持されるキーワードを管理する。具体的には、キーワード管理部32は、キーワード抽出部31より入力されたキーワードを、時刻情報と共にキーワードメモリ12に格納する。また、キーワード管理部32は、発話生成装置1の動作開始時にキーワード保持時間を予め設定しておき、キーワードメモリ12に格納されてからキーワード保持時間が経過したキーワードを、キーワードメモリ12から削除する。
これにより、キーワードメモリ12には、視聴中のテレビ番組において現在話題になっているキーワードが所定期間(例えば、15秒間)保持される。
【0047】
図6は、本実施形態におけるキーワード処理を示すフローチャートである。
ステップS1において、キーワード抽出部31は、発話生成装置1への入力テキストとしてテレビ出力文Tを受け付ける。
【0048】
ステップS2において、キーワード抽出部31は、受け付けたテレビ出力文Tの中に、キーワードデータベース11に登録されているキーワードが含まれているか否かを判定する。この判定がYESの場合、処理はステップS3に移り、判定がNOの場合、処理は終了する。
【0049】
ステップS3において、キーワード管理部32は、テレビ出力文Tに含まれていたキーワードを、時刻情報と共にキーワードメモリ12に格納する。
なお、格納されたキーワードは、本処理とは別に、所定のキーワード保持時間が経過すると、キーワードメモリ12から削除される。
【0050】
[応答生成処理]
応答生成処理は、応答生成処理ブロック20を構成する代表語探索部21、対象語推定部22、及び発話文生成部23により実行される。
【0051】
代表語探索部21は、入力されたユーザ発話文Uに、代表語データベース13に格納されている代表語又はその別表現が含まれているかどうかを探索する。代表語データベース13の代表語及びその別表現がユーザ発話文Uに含まれていた場合、代表語探索部21は、ユーザ発話文Uとそれに含まれていた代表語とを、対象語推定部22に入力する。
なお、ユーザ発話文Uに複数の代表語が含まれていた場合、代表語探索部21は、これら全てを対象語推定部22に入力してよい。また、代表語が一つも含まれていない場合、対象語推定部22への入力はなく、代表語探索部21は、次のユーザ発話文Uが入力されるまで待機する。
【0052】
対象語推定部22は、ユーザ発話文Uと代表語とからユーザ発話の対象語となるキーワードをキーワードメモリ12から推定する。
具体的には、まず、ユーザ発話文Uに、キーワードメモリ12に格納されているキーワードが含まれているかどうかを確認する。キーワードがユーザ発話文Uに含まれていた場合、このユーザ発話文Uに含まれる代表語の対象は、確認されたキーワードであることが明示的であり推定する必要がない。例えば、ユーザ発話文Uが「このラーメンおいしそう」であった場合、代表語である「おいしそう」の対象がキーワード「ラーメン」であることは自明である。
【0053】
なお、本実施形態では、対象語推定部22は、単にユーザ発話文Uに対して、キーワードメモリ12に格納されているキーワードが含まれているかどうかのみを確認することとしているが、例えば、係り受け解析技術などを利用することで、より高精度に対象語を特定することができる。
【0054】
一方、ユーザ発話文Uに、キーワードメモリ12に格納されているキーワードが含まれていない場合、対象語推定部22は、対象語となるキーワードを推定する。このとき、対象語推定部22は、代表語探索部21において抽出された代表語及びキーワードメモリ12に含まれているキーワードそれぞれの特徴ベクトルを特徴ベクトルデータベース14から取り出し、特徴ベクトル間の距離を計算する。
ここで、キーワードメモリ12に格納されているキーワードkの特徴ベクトルをveck、ユーザ発話文Uに含まれる代表語tの特徴ベクトルをvectとしたとき、veckとvectとの間の距離として、例えば、次式のコサイン類似度cos(veck,vect)が利用できる。
cos(veck,vect)=(veck・vect)/(|veck||vect|)
【0055】
次に、対象語推定部22は、キーワードメモリ12に含まれるキーワードの特徴ベクトルと、ユーザ発話文Uに含まれる代表語の特徴ベクトルとのコサイン類似度の計算結果を、値の大きい順にランキング(ソート)する。そして、対象語推定部22は、ランキングが最上位であり、ユーザ発話文Uに含まれる代表語に関連が強いキーワードを、キーワードメモリ12の中から推定結果として決定する。対象語として決定されたキーワードは、発話文生成部23に入力される。
【0056】
なお、代表語探索部21において複数の代表語が抽出された場合、対象語推定部22は、複数の代表語それぞれに対してキーワードメモリ12に含まれるキーワードとのコサイン類似度を計算した後、全ての計算結果を値の大きい順にランキング(ソート)し、最もコサイン類似度の大きい代表語とキーワードとのペアを発話文生成部23に入力する。
【0057】
図7は、本実施形態における対象語推定部22の動作イメージを例示する図である。
この例では、キーワードメモリ12には、「ラーメン」、「どんぶり」、「レンゲ」、「博多」の4つのキーワードが格納されており、それぞれの特徴ベクトルは、特徴ベクトルデータベース14により、vec1、vec2、vec3、vec4と定義されている。このとき、ユーザ発話文Uに代表語「食べたい」(特徴ベクトルvec5)が含まれていた場合を考える。
【0058】
本実施形態の特徴ベクトルは、例えば、「ラーメン」の近くに「うどん」、「カレー」、「焼きそば」などが分布するように、似た傾向の語の特徴ベクトルが近くなる。これと共に、関連のある語の特徴ベクトルも近くなる。すなわち、「ラーメン」のような食べ物の特徴ベクトルは、「食べたい」という特徴ベクトルと近い位置に分布し、その一方で、「博多」などの地名の特徴ベクトルは、「食べたい」の特徴ベクトルとは遠い距離に分布している。これにより、代表語「食べたい」に対して、キーワードメモリ12に含まれるキーワードの中では、「ラーメン」というキーワードが最もコサイン類似度が高くなり、代表語「食べたい」の対象語はキーワード「ラーメン」であると推定される。
【0059】
発話文生成部23は、ユーザ発話文Uに含まれている代表語に対応して、テンプレートデータベース15に登録されているテンプレートの中から、ランダムにテンプレートを選択する。そして、発話文生成部23は、選択したテンプレート内の「%key」の部分を、対象語推定部22により対象語として推定されたキーワードに置き換えることで、発話文を生成する。
【0060】
例えば、ユーザ発話文Uに含まれている代表語が「食べたい」で、対象語としてキーワードメモリ12内の「ラーメン」が推定されているとする。この場合、
図5のテンプレートデータベース15から、代表語「食べたい」に対して登録されたテンプレートの1番目が選ばれると、発話文は、対象語「ラーメン」を組み合わせて「僕もラーメン食べたい」となる。
発話生成装置1は、このように生成した発話文を応答発話文Rとして出力する。
【0061】
なお、本実施形態では、発話文生成部23は、代表語に対して複数登録されたテンプレートをランダムに選択するものとして説明したが、これには限られない。例えば、特定のテンプレートに重み付けをして選択しやすくし、選択確率に偏りを持たせてもよいし、この選択確率を視聴番組に関連して適宜更新することで、発話文に個性を持たせてもよい。
【0062】
図8は、本実施形態における応答生成処理を示すフローチャートである。
ステップS11において、代表語探索部21は、ユーザ発話文Uを受け付ける。
【0063】
ステップS12において、代表語探索部21は、ユーザ発話文Uの中に、代表語データベース13に格納されている代表語又はその別表現が含まれているか否かを判定する。この判定がYESの場合、処理はステップS13に移り、判定がNOの場合、処理は終了する。
【0064】
ステップS13において、対象語推定部22は、ユーザ発話文Uの中に、キーワードメモリ12に格納されているキーワードが含まれているか否かを判定する。この判定がYESの場合、ユーザ発話文Uに含まれているキーワードを対象語とし、処理はステップS15に移る。一方、判定がNOの場合、処理はステップS14に移る。
【0065】
ステップS14において、対象語推定部22は、代表語の特徴ベクトルと、キーワードメモリ12に格納されているキーワード毎の特徴ベクトルとの距離をそれぞれ算出し、最も距離が近いキーワードを対象語として決定する。
【0066】
ステップS15において、発話文生成部23は、代表語に対応するテンプレートを選択する。
【0067】
ステップS16において、発話文生成部23は、テンプレートに対象語を組み合わせて、応答発話文Rを生成して出力する。
【0068】
本実施形態によれば、発話生成装置1は、ユーザ発話文Uから代表語を、テレビ出力文Tからキーワードをそれぞれ抽出し、代表語の特徴ベクトルと距離が近く、かつ、所定時間内に用いられたキーワードを対象語として組み合わせ、応答発話文Rを生成する。
これにより、発話生成装置1は、テレビ番組視聴中にユーザが発した、感情を表現し、かつ、対象となるコンテクストを明示的に含んでいない発話、例えば、ラーメンが出てきたシーンで発した「これ食べたいな」というような発話に対して、「このラーメン食べてみたいね」、「僕は味噌ラーメンが好き」のように、明示されていないコンテクストを推定した上で、応答としての発話文を生成できる。
【0069】
したがって、発話生成装置1をコミュニケーションロボットに組み込むことで、ユーザの発話文に明示されていなかった対象語を推定し、対象語を含んだ応答文により人と対話できるコミュニケーションロボットが実現される。この結果、発話生成装置1は、会話が噛み合わない応答を行ってしまうことを防ぎ、コミュニケーションロボットに対してユーザが愛着を持つことの手助けとなることが期待できる。
【0070】
また、発話生成装置1は、対象語を、代表語に対応するテンプレートに組み合わせて応答発話文Rを生成することにより、容易に応答発話文Rを生成することができる。
【0071】
また、キーワードがテレビ番組の映像又は音声から抽出されることにより、発話生成装置1は、テレビ視聴中のユーザの発話に対して、コンテクストを考慮した適切な応答発話文Rを生成できる。
【0072】
[第2実施形態]
以下、本発明の第2実施形態について説明する。
本実施形態では、発話文生成部23の機能が第1実施形態とは異なり、外部の人工無能を利用して、応答発話文Rを生成する。
【0073】
発話文生成部23は、テンプレートデータベース15を利用せず、対話API呼出部231により、外部の人工無脳にアクセスする。
ここで、人工無脳は、テキスト又は音声を通じて会話を自動的に行うプログラムにより構成される。このような人工無脳は、インターネット上に存在する情報を収集し、SNSなどで話題となっている時事的な内容に関する対話を実現できるものも多い。
人工無脳は、ユーザから送られた文に対して返答を行う。例えば、ユーザが「ラーメン食べたい」と送ったとき、人工無脳からは、「僕は味噌ラーメンが好き」や「最近○○のラーメンが人気みたいだよ」などの返答が得られることが期待される。
【0074】
図9は、本実施形態における人工無脳を利用した応答発話文Rの生成の例を示す図である。
この例では、「これ食べたい」というユーザ発話文Uに対して、代表語探索部21において「食べたい」が代表語として抽出され、対象語推定部22において「ラーメン」が対象語として推定された場合を示している。
【0075】
代表語「食べたい」と対象語「ラーメン」を組み合わせることで「ラーメン食べたい」という文を作成することができる。この文は、ユーザ発話文Uに明示されていなかった対象語を補った文である。この文を人工無脳に送ることで、人工無脳からは、返答として「僕は味噌ラーメンが好き」といった文が返ってくる。発話文生成部23は、人工無脳からの返答文を応答発話文Rとして出力することで、テンプレートデータベース15を利用しない発話文生成を実現できる。
ここでは、人工無能に文をパラメータとして入力することを想定している。このため、代表語及び対象語から文を作成するためのテンプレートが予め用意されてもよいし、テンプレートデータベース15が流用されてもよい。あるいは、語句を受け付け可能な人工無能の場合には、代表語及び対象語がそのままパラメータとして入力されてもよい。
【0076】
なお、応答発話文Rを生成する際に、テンプレートデータベース15を利用した手法と人工無脳を利用した手法とを併用することも可能である。発話文生成部23は、これら2つの手法で生成した文のいずれかをランダムに出力してもよい。
また、複数の人工無脳を利用することも可能であるが、人工無脳は、その個性に合わせた一人称(私、僕、など)及び語尾(です、だよ、など)を利用している場合がある。この場合、テンプレートデータベース15のテンプレート文に合わせて、文を整形して応答発話文Rとすることが好ましい。
【0077】
本実施形態によれば、発話生成装置1は、対象語及び代表語を含むパラメータにより、人工無能にアクセスし、応答発話文を取得する。
これにより、発話生成装置1は、限られたテンプレートによらず、バリエーションに富む応答発話文Rを出力することができる。また、代表語及び対象語の組み合わせは、ユーザの発話内容を解釈したものであるため、これに対して、さらに応答となる文を取得することで、発話生成装置1は、ユーザの発話に応じた対話を実現できる。
【0078】
なお、人工無能は、クラウドなどの外部サーバに設けられたアプリケーションであってよいが、これには限られず、発話生成装置1に組み込まれていてもよい。
【0079】
[第3実施形態]
以下、本発明の第3実施形態について説明する。
発話生成装置1は、キーワードメモリ12に含まれるキーワードの中からユーザ発話文Uに含まれる代表語の対象となるキーワードを推定するが、キーワードメモリ12に格納されるキーワードが抽出されるテキストの発生元は限定されない。すなわち、対話の文脈となる対象語の発生元は、テレビ、ラジオ、人間など、様々なシチュエーションが考えられる。したがって、キーワード処理ブロック30へ入力されるテキストを変更し、キーワードメモリ12のデータを変更することで、異なるシチュエーションにおける発話文生成を実現できる。
【0080】
本実施形態では、キーワード処理ブロック30へ入力されるテキストが第1実施形態とは異なり、前述のテレビ出力文Tに代えて、複数のユーザの発話文となる。
これにより、キーワードメモリ12には、複数のユーザそれぞれの発したキーワードがユーザと対応付けて格納される。
そして、対象語推定部22は、代表語を抽出したユーザとは異なるユーザの発話文から抽出されたキーワードの中から対象語を決定する。
【0081】
図10は、本実施形態における複数ユーザとの対話における応答発話文Rの生成例を示す図である。
この例では、ユーザ2人のそばに発話生成装置1が組み込まれたコミュニケーションロボットがいる場合を想定している。
【0082】
発話生成装置1は、音声入力装置40及び音源定位・分離ユニット41によって、2人のユーザの発話を分類して処理する。その後、音声認識ユニット42によってテキスト化されたユーザ発話文Uは、代表語探索部21に入力されると同時に、キーワード抽出部31にも入力される。
このとき、キーワードメモリ12には、キーワード及び格納日時のフィールドの他に、新たにユーザ情報を保存するフィールドが設けられる。このユーザ情報のフィールドには、キーワードが抽出される元となったユーザ発話文Uを発したユーザ名又はIDなどが格納される。
【0083】
代表語探索部21においてユーザ発話文Uから代表語が抽出されたとき、対象語推定部22は、このユーザ発話文Uを発したユーザとは別のユーザが発したキーワードを、キーワードメモリ12から抽出すると、これらのキーワードに対して代表語とのコサイン類似度を計算する。つまり、対象語推定部22は、ユーザXの発話文に対してはユーザYが発したキーワード、ユーザYの発話文に対してはユーザXが発したキーワードの中から対象語を推定する。
【0084】
例えば、
図10では、ユーザXが発したキーワードとして「ラーメン」、ユーザYが発したキーワードとして「焼き肉」及び「渋谷」がキーワードメモリ12に格納されている。このとき、ユーザXが「あ、それは食べたい。行ってみよう。」と発話した場合、代表語探索部21により代表語「食べたい」が抽出される。対象語推定部22は、キーワードメモリ12内に格納されているユーザYが発したキーワード「焼き肉」及び「渋谷」と、代表語「食べたい」とのコサイン類似度をそれぞれ計算し、ランキング(ソート)を行う。この結果、対象語としては「焼き肉」が選択され、テンプレートデータベース15を利用することで、「僕も焼き肉食べたい」という応答発話文Rが生成される。
【0085】
ユーザが3人以上の場合も同様に、対象語推定部22は、代表語が抽出された発話文を発したユーザ以外が発したキーワードの中から対象語を推定することで、応答発話文Rを生成できる。
【0086】
本実施形態によれば、発話生成装置1は、代表語を抽出した発話文を発したユーザとは異なるユーザの発話文から抽出されたキーワードの中から対象語を決定する。
これにより、発話生成装置1は、複数のユーザの会話の輪に入り、ユーザ間の話題を推定しつつ、いずれかのユーザの発話に対して応答できる。
【0087】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0088】
前述の実施形態では、発話生成装置1は、ユーザの発話に対する応答として応答発話文Rを生成したが、他の発話文生成処理を組み合わせて対話のバリエーションを増やしてもよい。例えば、特許文献2に開示されているような、テレビ出力文Tに基づいて自発的に発話する処理と組み合わせることにより、ユーザの発話がないときにも、ロボットが発話するよう構成されてもよい。
【0089】
前述の実施形態では、各種のデータベースは、発話生成装置1が備える構成としたが、これには限られず、データベースは、クラウドなどの外部サーバに配置されてもよい。
【0090】
本実施形態では、主に発話生成装置1の構成と動作について説明したが、本発明はこれに限られず、各構成要素を備え、ロボットの発話文を生成するための方法、又はプログラムとして構成されてもよい。
【0091】
さらに、発話生成装置1の機能を実現するためのプログラムをコンピュータで読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。
【0092】
ここでいう「コンピュータシステム」とは、OSや周辺機器などのハードウェアを含むものとする。また、「コンピュータで読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROMなどの可搬媒体、コンピュータシステムに内蔵されるハードディスクなどの記憶装置のことをいう。
【0093】
さらに「コンピュータで読み取り可能な記録媒体」とは、インターネットなどのネットワークや電話回線などの通信回線を介してプログラムを送信する場合の通信線のように、短時刻の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時刻プログラムを保持しているものも含んでもよい。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【符号の説明】
【0094】
R 応答発話文
T テレビ出力文
U ユーザ発話文
1 発話生成装置
11 キーワードデータベース
12 キーワードメモリ
13 代表語データベース
14 特徴ベクトルデータベース
15 テンプレートデータベース
20 応答生成処理ブロック
21 代表語探索部
22 対象語推定部
23 発話文生成部
30 キーワード処理ブロック
31 キーワード抽出部
32 キーワード管理部
231 対話API呼出部