(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023091637
(43)【公開日】2023-06-30
(54)【発明の名称】応答文生成装置及びプログラム
(51)【国際特許分類】
G10L 15/22 20060101AFI20230623BHJP
G10L 15/10 20060101ALI20230623BHJP
G10L 13/00 20060101ALI20230623BHJP
【FI】
G10L15/22 300U
G10L15/10 200W
G10L13/00 100M
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2021206474
(22)【出願日】2021-12-20
(71)【出願人】
【識別番号】000004352
【氏名又は名称】日本放送協会
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【弁護士】
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100161148
【弁理士】
【氏名又は名称】福尾 誠
(72)【発明者】
【氏名】星 祐太
(72)【発明者】
【氏名】萩尾 勇太
(72)【発明者】
【氏名】上村 真利奈
(72)【発明者】
【氏名】奥田 誠
(72)【発明者】
【氏名】金子 豊
(72)【発明者】
【氏名】西本 友成
(57)【要約】
【課題】ユーザの発話に対して、好き嫌いを表出した応答文を生成する。
【解決手段】応答文生成装置1は、ユーザの発話テキストの中からキーワードを抽出するキーワード抽出部12と、キーワードに対して興味判定を行い興味があるキーワードを興味キーワードとし、興味キーワードに対してさらに好悪判定を行う自己興味判定部13と、自己興味判定部13により好きと判定された興味キーワードの確率値を上昇させ、自己興味判定部13により嫌いと判定された興味キーワードの確率値を低下させ、該確率値に基づいて発話テキストに対する応答テキストを生成する応答文生成部14と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ユーザの発話テキストの中からキーワードを抽出するキーワード抽出部と、
前記キーワードに対して興味判定を行い興味があるキーワードを興味キーワードとし、興味キーワードに対してさらに好悪判定を行う自己興味判定部と、
前記自己興味判定部により好きと判定された興味キーワードの確率値を上昇させ、前記自己興味判定部により嫌いと判定された興味キーワードの確率値を低下させ、該確率値に基づいて前記発話テキストに対する応答テキストを生成する応答文生成部と、
を備える、応答文生成装置。
【請求項2】
前記応答文生成部は、テレビ視聴時の人同士の対話データから応答ペアを学習した応答モデルを用いて前記応答テキストを生成する、請求項1に記載の応答文生成装置。
【請求項3】
前記自己興味判定部は、前記興味があるキーワードを仮興味キーワードとし、仮興味キーワードと該仮興味キーワードに関連する関連単語との中から、興味キーワードを選定する、請求項1又は2に記載の応答文生成装置。
【請求項4】
ユーザの発話を音声認識してテキスト化し、前記発話テキストを生成する音声認識部と、
前記応答テキストを音声データに変換する音声合成部と、
をさらに備える、請求項1から3のいずれか一項に記載の応答文生成装置。
【請求項5】
コンピュータを、請求項1から4のいずれか一項に記載の応答文生成装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、応答文生成装置及びプログラムに関する。
【背景技術】
【0002】
近年、非特許文献1に開示されているような、従来のタスク指向の対話システムとは異なる、雑談を行う雑談対話システムに注目が集まっている。タスク指向の対話は、対話を通して明確な目的を達成するための対話である。対して、雑談はタスク指向の対話とは異なり、対話そのものから楽しさや満足を得ることを目的とする対話である。
【0003】
従来のユーザの発話に応答するロボットにおける文生成技術においては、収集した人同士の対話データ、あるいはインターネットを介して、ユーザの発話に適した応答文を検索する手法や、人同士の対話データを事前に学習して応答モデルを作成しておき、そのモデルを用いて応答文を生成する手法などがある。
【0004】
例えば、特許文献1には、ユーザの発話の中から主題語とそれに関連する関連語を抽出し、インターネットから検索した回答をテンプレート文に当てはめて応答文を生成する手法が開示されている。
【0005】
また、特許文献2には、ユーザの感情を推定し、ユーザの感情に基づいた応答文を、ニューラルネットワークを用いることにより、ルールベース生成手法では実現できなかった、適切な応答文の生成を実現する手法が開示されている。
【0006】
また、近年では、複数の人同士がテレビ視聴を楽しむのと同じように、会話を交わしながらテレビを視聴するロボットの研究開発が進められている。テレビ視聴時の人同士の対話解析を行うことにより、テレビ視聴時のロボットの対話動作に関する指針を得ることができる。非特許文献2は、テレビ視聴時の人同士の対話解析の結果、テレビがあることで長文でなくても理解し合えることや、テレビの視聴を妨げないような短い発話が多いことなどが開示されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2018-198097号公報
【特許文献2】特開2020-24293号公報
【非特許文献】
【0008】
【非特許文献1】Higashinaka,R., Imamura,K., Meguro,T., Miyazaki,C., Kobayashi,N., Sugiyama,H., Hirano,T., Makino,T., and Matsuo,Y., ”Towards an open-domain conversational system fully based on natural language processing,” in Proceedings of the 25th International Conference on Computational Linguistics, pp.928-939, 2014
【非特許文献2】星 祐太、外3名、「ロボット発話に向けたテレビ視聴時の人同士の対話解析」、NHK技研R&D、2019年11月号、報告03
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、特許文献1に開示された手法では、あらかじめ決められたテンプレート文を用いて応答文を生成するルールベースの応答文生成手法のため、装置の発話は画一的であり、感情を有するかのような応答を行うことができないという課題がある。また、特許文献2に開示された手法では、ユーザの感情を推定するものの、システム自身の気持ちは考慮されていない。また、特許文献1,2に開示された手法においては、テレビ視聴時における特徴的な短い発話を元にした対話データとなっていないため、非特許文献2に開示された手法を適用することができない。
【0010】
ユーザとの対話によって、装置自身が興味を示し、ユーザの話題に対して好き嫌いを表現することができれば、ユーザからロボットへの親近感の向上と飽きの解消に寄与するものと考えられる。そこで、本発明は、ユーザの発話に対して興味を示し、好き嫌いを表現した応答文を生成することが可能な応答文生成装置及びプログラムを提供することにある。
【課題を解決するための手段】
【0011】
上記課題を解決するため、一実施形態に係る応答文生成装置は、ユーザの発話テキストの中からキーワードを抽出するキーワード抽出部と、前記キーワードに対して興味判定を行い興味があるキーワードを興味キーワードとし、興味キーワードに対してさらに好悪判定を行う自己興味判定部と、前記自己興味判定部により好きと判定された興味キーワードの確率値を上昇させ、前記自己興味判定部により嫌いと判定された興味キーワードの確率値を低下させ、該確率値に基づいて前記発話テキストに対する応答テキストを生成する応答文生成部と、を備える。
【0012】
さらに、一実施形態に係る応答文生成装置において、前記応答文生成部は、テレビ視聴時の人同士の対話データから応答ペアを学習した応答モデルを用いて前記応答テキストを生成してもよい。
【0013】
さらに、一実施形態に係る応答文生成装置において、前記自己興味判定部は、前記興味があるキーワードを仮興味キーワードとし、仮興味キーワードと該仮興味キーワードに関連する関連単語との中から、興味キーワードを選定してもよい。
【0014】
さらに、一実施形態に係る応答文生成装置において、ユーザの発話を音声認識してテキスト化し、前記発話テキストを生成する音声認識部と、前記応答テキストを音声データに変換する音声合成部と、をさらに備えてもよい。
【0015】
また、一実施形態係るプログラムは、コンピュータを、上記応答文生成装置として機能させる。
【発明の効果】
【0016】
本発明によれば、ユーザの発話に対して、好き嫌いを表出した応答文を生成することが可能となる。
【図面の簡単な説明】
【0017】
【
図1】一実施形態に係る応答文生成装置の構成例を示すブロック図である。
【
図2】一実施形態に係る応答文生成装置における、音声認識部の動作例を示すフローチャートである。
【
図3】一実施形態に係る応答文生成装置における、キーワード抽出部の動作例を示すフローチャートである。
【
図4】一実施形態に係る応答文生成装置における、自己興味判定部の動作例を示すフローチャートである。
【
図5】一実施形態に係る応答文生成装置で記憶される単語ベクトルを生成する学習モデルの作成例を示すフローチャートである。
【
図6】一実施形態に係る応答文生成装置における、応答文生成部の動作例を示すフローチャートである。
【
図7】一実施形態に係る応答文生成装置における、応答文生成部のエンコード処理例を示す図である。
【
図8】一実施形態に係る応答文生成装置における、興味キーワードの確率値の変化処理例を示すフローチャートである。
【
図9】一実施形態に係る応答文生成装置における、興味キーワードを好きと判定した場合の単語出力例を示す図である。
【
図10】一実施形態に係る応答文生成装置おける、興味キーワードを嫌いと判定した場合の単語出力例を示す図である。
【発明を実施するための形態】
【0018】
本発明に係る応答文生成装置は、ユーザの発話に対して応答する、ロボットやコンピュータのディスプレイ上に仮想的に設定されたチャット相手などのエージェントである。以下の実施形態では、エージェントである応答文生成装置が、ユーザと一緒にテレビを視聴するロボットである場合について、図面を参照して詳細に説明する。
【0019】
図1は、本発明の一実施形態に係る応答文生成装置の構成例を示すブロック図である。
図1に示す応答文生成装置1は、制御部10と、発話取得部20と、記憶部30と、発話出力部40と、を備える。
【0020】
応答文生成装置1の利用例としては、テレビ番組などの映像コンテンツをユーザと一緒に視聴するロボットが挙げられる。テレビ視聴中の会話には自らの気持ちを表出する自己開示が多いことから(例えば、非特許文献2を参照)、ロボットも自らの興味に基づいた発話をすることで、ユーザと共感する場面を作り、テレビ視聴を楽しくすることができる。応答文生成装置1は、発話取得部20で取得したユーザの発話に対して、制御部10においてロボットの興味に基づく応答文を生成し、発話出力部40で出力する。
【0021】
発話取得部20は、マイクで構成され、ユーザの発話を集音する。発話取得部20は、集音した音声を制御部10へ出力する。
【0022】
記憶部30は、制御部10において制御に必要なデータを記憶する記憶媒体である。例えば、不揮発性のフラッシュメモリ、SSD(Solid State Drive)、又はハードディスク等により構成される。記憶部30は、単語ベクトル記憶部31と、応答モデル記憶部32と、を備える。
【0023】
発話出力部40は、スピーカで構成され、制御部10から転送された音声データを、スピーカから出力する。
【0024】
制御部10は、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)などの専用のハードウェアによって構成されてもよいし、プロセッサによって構成されてもよいし、双方を含んで構成されてもよい。制御部10は、音声認識部11と、キーワード抽出部12と、自己興味判定部13と、応答文生成部14と、音声合成部15と、を備える。
【0025】
音声認識部11は、ユーザの発話を音声認識してテキスト化し、発話テキストを生成する。そして、音声認識部11は発話テキストをキーワード抽出部12及び応答文生成部14に出力する。
【0026】
音声認識部11の動作について、
図2を参照して説明する。
図2は、音声認識部11の動作例を示すフローチャートである。
【0027】
S101では、音声認識部11は、発話取得部20から音声信号を取得する。
【0028】
S102では、音声認識部11は、音声信号をテキスト化する。音声信号のテキスト化には、オープンソースのJulius(例えば、インターネット<URL:https://julius.osdn.jp/index.php>を参照)を用いてもよい。
【0029】
キーワード抽出部12は、発話テキストを形態素解析して分かち書きを行い、各単語の品詞を取得し、名詞をキーワードとして抽出する。そして、キーワード抽出部12は、抽出したキーワード(名詞)を自己興味判定部13に出力する。
【0030】
キーワード抽出部12の動作について、
図3を参照して説明する。
図3は、キーワード抽出部12の動作例を示すフローチャートである。
【0031】
S201では、キーワード抽出部12は、音声認識部11から発話テキスト(ユーザ発話のテキスト)を取得する。
【0032】
S202では、キーワード抽出部12は、発話テキストを形態素解析して分かち書きを行い、各単語に分割する。そして、分割した各単語の品詞を取得する。形態素解析には、オープンソースの形態素解析エンジンMeCab(例えば、インターネット<https://taku910.github.io/mecab/>を参照)を用いてもよい。以下、発話テキストが「私はラーメンが好き。」である場合を例に説明する。この発話テキストは、以下のように形態素解析される。
私 (代名詞)
は (助詞)
ラーメン(名詞)
が (助詞)
好き (形容詞)
。 (句点)
【0033】
S203では、キーワード抽出部12は、S202において取得した単語と該単語に紐付いた品詞とを用いて、名詞を抽出する。そして、キーワード抽出部12は、抽出したキーワード「ラーメン」を保存する。
【0034】
自己興味判定部13は、キーワード抽出部12から入力したキーワードに対して興味判定を行い、キーワードについて「興味がある」又は「興味がない」と判定し、興味があるキーワードを「興味キーワード」とする。キーワードに対する興味の判定は、ランダムに判定する。または、あらかじめ興味があるキーワードを記録したファイルから検索することで判定する。自己興味判定部13は、キーワード抽出部12から入力したキーワード、及び該キーワードに関連する関連単語の中から、興味キーワードを選定してもよい。
【0035】
自己興味判定部13は、興味キーワードに対してさらに好悪判定を行い、興味キーワードについて「好き」、「嫌い」、又は「どちらでもない」と判定する。興味キーワードに対する好悪判定は、ランダムに判定する。または、あらかじめ「好き」、「嫌い」、又は「どちらでもない」と記録したファイルから検索することで判定する。好きと判定した場合は「好きな興味キーワード」として保存し、嫌いと判定した場合は「嫌いな興味キーワード」として保存する。自己興味判定部13は、興味キーワードを応答文生成部14に出力する。
【0036】
自己興味判定部13の動作について、
図4を参照して説明する。
図4は、自己興味判定部13の動作例を示すフローチャートである。
【0037】
S301では、自己興味判定部13は、キーワード抽出部12から取得したキーワードに対して興味があるか否かを判定する。キーワードに対する興味の判定は、ランダムに判定する。または、あらかじめ興味があるキーワードを記録したファイルから検索することで判定する。自己興味判定部13は、興味があると判定したキーワードを、仮興味キーワードとして保存する。
【0038】
S302では、自己興味判定部13は単語ベクトル記憶部31から仮興味キーワードに関連する関連単語を検索し、仮興味キーワードと検索した関連単語との中から、興味キーワードを選定する。単語ベクトル記憶部31に記憶される単語ベクトルの生成方法については後述する。仮興味キーワードをそのまま興味キーワードとしたり、仮興味キーワードに関連する単語を興味キーワードとしたりすることにより、制御部10が生成する応答文のバリエーションを増やすことができ、ユーザとの会話を膨らませることが可能となる。
【0039】
関連単語の検索には、仮興味キーワードをベクトル化し、ベクトル化された仮興味キーワードと単語ベクトルのコサイン類似度を計算することで、仮興味キーワードに関連性が高い順に関連単語を抽出することができる。仮興味キーワードのベクトル化には、Word2vec(例えば、T.Mikolov, I.Sutskever, K.Chen, G.Corrado, J.Dean, “Distributed Representations of Words and Phrases and their Compositionality,” NIPS2013 pp.3111-3119, 2013を参照)を用いてもよい。
【0040】
仮興味キーワードの関連単語の検索に用いるコサイン類似度は、仮興味キーワードのベクトルをa、単語ベクトルをbとすると、式(1)により計算できる。
【0041】
【0042】
表1に、仮興味キーワード「ラーメン」に対する単語のコサイン類似度の算出例を示す。例えば、表1において、関連単語として採用するためのコサイン類似度の閾値を0.8とした場合、自己興味判定部13は、「つけ麺」を仮興味キーワード「ラーメン」に対する関連単語として抽出し、該抽出した関連単語「つけ麺」を興味キーワードに決定する。この例ではコサイン類似度の閾値を0.8としたが、閾値はこれに限られるものではない。例えば、コサイン類似度の閾値を0.7とした場合、自己興味判定部13は、仮興味キーワード「ラーメン」に対する関連単語として「つけ麺」及び「うどん」を抽出する。自己興味判定部13は、コサイン類似度が閾値を超える関連単語が複数ある場合、複数の関連単語からランダムに1つを選択し、該選択した関連単語を興味キーワードに決定してもよい。自己興味判定部13は、仮興味キーワード「ラーメン」とのコサイン類似度が高い関連単語が存在しない場合には、仮興味キーワード「ラーメン」をそのまま興味キーワードに決定する。
【0043】
【0044】
S303では、自己興味判定部13は、S302により決定された興味キーワードに対して、「好き」、「嫌い」、又は「どちらでもない」と判定する。興味キーワードに対する好悪判定は、ランダムに判定する。または、あらかじめ「好き」、「嫌い」、又は「どちらでもない」と記録したファイルから検索することで判定する。
【0045】
S304では、S303の好悪判定において、好きと判定された興味キーワードを保存する。
【0046】
S305では、S303の好悪判定において、嫌いと判定された興味キーワードを保存する。
【0047】
S306では、S303の好悪判定において、どちらでもないと判定された興味キーワードを保存する。
【0048】
単語ベクトル記憶部31は、あらかじめ作成された単語ベクトルを記憶する。
【0049】
単語ベクトルの作成方法について、
図5を参照して説明する。
図5は、単語ベクトルを生成する学習モデルの作成例を示すフローチャートである。
【0050】
S401では、番組コンテンツサーバから、過去のテレビ番組の電子番組表(EPG:Electronic Programming Guide)や放送番組に付加されている字幕文(クローズドキャプション)などの番組情報を取得する。放送番組からの字幕文の抽出方法としては、例えば、テレビ受像機と連動して字幕情報を取得したり、放送連動サービスとして、インターネットなどの通信設備を用いて配信された字幕情報を受信したりする方法が考えられる。また、番組情報は、テレビ音声から音声認識により抽出された文であってもよい。
【0051】
S402では、番組情報の形態素解析による分かち書きを行い、各単語に分割する。そして、分割した各単語の品詞を取得する。形態素解析には、オープンソースの形態素解析エンジンMeCab(例えば、インターネット<URL:https://taku910.github.io/mecab/>を参照)を用いてもよい。MeCabでは、mecab-ipadic-NEologdなどのシステム辞書を用いて品詞に分解する。mecab-ipadic-NEologdは、Web上の言語資源から得た新語を毎週追加している辞書で、多数の固有表現が登録されている(例えば、インターネット<URL:https://github.com/neologd/mecab-ipadic-neologd>を参照)。
【0052】
S403では、S402により品詞が付与された単語を、オープンソースのWord2vecなどを用いて、200次元にベクトル化する学習モデルを作成する。Word2vecでの単語のベクトル化には、CBOW(Continuous Bag-OF-Words Model)法(例えば、Xin Rong, “word2vec Parameter Learning Explained,” 2014を参照)を用いてもよい。単語ベクトル記憶部31は、このようにして生成された学習モデルが出力する単語ベクトルをあらかじめ記憶する。
【0053】
学習モデルの作成にはS402により分かち書きしたテキストにおける名詞を着目単語とし、着目単語の周辺の単語を周辺単語とし、周辺単語から着目単語を推定するネットワークに入力し、そこから着目単語を推定するように学習させて、単語をベクトル化した学習モデルを作成する。周辺単語を入力するネットワークは、入力層、隠れ層、出力層で構成されるニューラルネットワークとする。ネットワークからの出力は、着目単語の条件付確率となり、着目単語の条件付確率が最大となるように学習させる。例えば、「私はラーメンが好き。」というテキストにおいて、着目単語を「ラーメン」とする。このとき、着目単語の周辺にある周辺単語から、「ラーメン」という着目単語を予測するネットワークを作成し、モデルを学習する。周辺単語をネットワークに入力したとき、この場合の着目単語である「ラーメン」の条件付確率が最大となるように学習させる。モデルの学習法については、これに限らず、着目単語から周辺単語を予測する手法で学習させるSkip-Gram法などを用いてもよい。
【0054】
応答モデル記憶部32は、テレビ視聴時における人同士の対話データから応答ペアを学習した応答モデルを記憶する。
【0055】
応答ペアとは、2名のやりとりの発話のことで、発話者が交代した両者の発話のことである。表2に、応答ペアの例を示す。テレビ視聴時における対話の応答ペアには、テレビ視聴実験により取得した映像データから対話をテキストに書き起こし、抽出した応答ペアを用いる。応答モデルは、発話元のテキスト(発話テキスト)が入力されると、該発話元のデータとの応答ペアとなる発話先のテキストを出力するよう機械学習(例えば、深層学習)した、エンコーダ・デコーダの重みである。
【0056】
【0057】
応答文生成部14は、音声認識部11から取得した発話テキストを、応答モデル記憶部32に記憶された応答モデルに入力し、該発話テキストに対応する応答テキストを生成する。例えば、「私はラーメンが好き。」という発話テキストに対する応答文の生成時は、応答文生成部14は、分割された単語(私・は・ラーメン・が・好き)の順に応答モデルに入力し、応答モデルは順番に単語を出力する。その結果、「私はつけ麺が好きです。」や、「私はラーメンが食べたいです。」といった応答テキストが生成される。
【0058】
より詳細には、応答文生成部14は、発話テキストを応答モデルが記憶する重みに基いたエンコーダに入力する。そして、デコーダから出力された単語を線形層により全結合し、Softmax層により0から1の値を取り、各単語を合計が1となる値に変換する。そして、興味キーワードと関連単語の値を好きか嫌いかによって調整することにより自己興味を反映させる。
【0059】
図6は、応答文生成部14の動作例を示すフローチャートである。
【0060】
S601では、応答文生成部14は、MeCabなどを用いて形態素解析を行った単語に対して、Word2vecなどを用いて、発話テキストの単語をベクトル化して、単語ベクトルを生成する。デコーダに応答出力を再入力する場合も、同様に単語をベクトル化する。
【0061】
S602では、応答文生成部14は、単語ベクトルに位置情報(位置エンコーディングベクトル)を付加し、位置情報付き単語ベクトルを生成する。位置情報は、単語が文章のどの位置にあるのかを示すために付加される。位置情報の算出には、以下の式(2)、(3)を用いる。単語の出現順のインデックス番号posが偶数の時は式(2)を用い、奇数の時は式(3)を用いる。dmodelは単語の次元数を表す。
【0062】
【0063】
S603では、応答文生成部14は、発話テキストの位置情報付き単語ベクトルに対してエンコード処理を行い、複数の符号化ベクトルを生成する。
【0064】
図7は、S603によるエンコード処理の一例を示す図である。x1、x2、x3、…、xnは、エンコーダに入力される位置情報付き単語ベクトルを示し、h1、h2、h3、…hnはエンコーダによって得られた符号化ベクトルを示す。エンコーダネットワークのノード数及びネットワーク層数は
図7に限定されず、Transformerを用いてもよい(例えば、Ashish Vaswani, et al., “Attention is all you need,” Advances in neural information processing systems, 2017を参照)。
【0065】
S604では、S603により生成された複数の符号化ベクトルに対して、応答出力の位置情報付き単語ベクトルを用いて、デコード処理を行う。すなわち、第一タイムステップにおいて応答出力した後は、第二タイムステップではエンコーダ出力とともに第一タイムステップの応答出力を入力し、さらに後続の出力単語を選択して文章を生成していく。
【0066】
S605では、線形層(全結合層)により、S604で出力された複数のベクトルを全結合する。
【0067】
S606では、Softmax層によりSoftmax関数を用いて、複数ある単語ベクトルを合計で1になる確率値に変換する。
【0068】
S607では、キーワードに対する興味に基づいて単語を選択し文章を生成していく。興味キーワードが好きな場合はS606で生成された興味キーワードの確率値を上昇させ、興味キーワードが嫌いな場合は興味キーワードの確率値を低下させることで、興味を反映させた単語を選択する。
【0069】
興味キーワードの確率値を変化させる処理について、
図8を参照して説明する。
図8は、興味キーワードの確率値の変化処理例を示すフローチャートである。
【0070】
S701では、複数の単語の確率値の最大値及び最小値を取得する。
【0071】
S702では、興味キーワードの確率値が、S701で取得した確率値の最大値又は最小値となるよう、係数kを算出する。
【0072】
S703では、興味キーワード以外の単語の確率値を変更するための係数mを算出する。
【0073】
S704では、S702で算出した係数kを興味キーワードの確率値に乗じ、S703で算出した係数mを興味キーワード以外の単語の確率値に乗じて、各単語の確率値を変更する。
【0074】
興味キーワードが「好き」と判定されている場合、最大の確率値をPmax、興味キーワードの確率値をPiとすると、S702において、以下の式で係数klを算出する。
【0075】
【0076】
次に、S703において、興味キーワード以外の単語の確率値を低下させるための係数mを算出する。興味キーワードの確率値をPi、興味キーワードを含む単語の確率値をP1、P2、…、Pn(nは全単語数を表す)とすると、以下の式で係数mを算出する。
【0077】
【0078】
例えば、P1(0.1)、P2(0.2)、P3(0.1)、P4(0.6)、興味キーワードがP3だった場合、klは0.6/0.1=6となる。係数mは、(1-6×0.1)/(1-0.1)=4/9となる。これらを各単語の確率値に乗算すると、以下のようになる。このように、興味キーワードP3の確率値は増加する(最大値となる)。
P1:0.1×m=0.1×(4/9)=4/90
P2:0.2×m=0.2×(4/9)=8/90
P3:0.1×kl=0.1×6=54/90
P4:0.6×m=0.6×(4/9)=24/90
【0079】
一方、興味キーワードが「嫌い」と判定されている場合、最大の確率値をPmin、興味キーワードの確率値をPiとすると、S702において、以下の式で係数khを算出する。
【0080】
【0081】
次に、S703において、興味キーワード以外の単語の確率値を上昇させるための係数mを算出する。興味キーワードの確率値をPi、興味キーワードを含む単語の確率値をP1、P2、…、Pn(nは全単語数を表す)とすると、以下の式で係数mを算出する。
【0082】
【0083】
例えば、P1(0.1)、P2(0.2)、P3(0.1)、P4(0.6)、興味キーワードがP4だった場合、khは0.1/0.6=1/6となる。係数mは、(1-1/6×0.6)/(1-0.6)=9/4となる。これらを各単語の確率値に乗算すると、以下のようになる。このように、興味キーワードP4の確率値は減少する(最小値となる)。
P1:0.1×m=0.1×(9/4)=9/40
P2:0.2×m=0.2×(9/4)=18/40
P3:0.1×m=0.1×(9/4)=9/40
P4:0.6×kh=0.6×(1/6)=4/40
【0084】
S705では、複数の単語の確率値から単語を選択する。選択する際は、単語の累積確率が一定値以上となる単語の中からランダムに選択するTop-P Sampling(例えば、Ari Holtzman, Jan Buys, Li Du, Maxwell Forbes, and Yejin Choi, “The Curious Case OF Neural Text Degeneration,” 2019を参照)を用いる。単語の選択方法はこれに限らず、確率の上位k個の中からランダムに選択するTop-k Sampling(例えば、Angela Fan, Mike Lewis, and Yann Dauphin, “Hierarchical Neural Story Generation,” 2018を参照)を用いる、あるいは併用してもよい。
【0085】
図9は、興味キーワードを好きと判定した場合の単語出力例を示す図である。ここでは、上述したようにキーワードは「ラーメン」であり、興味キーワードは「つけ麺」である。S605の処理により生成された各単語列を「0,1,2・・・」と表している。
図9の場合、はじめは単語「1」の「ラーメン」を選択していたが、S607の処理により興味キーワードである「つけ麺」の確率値が上昇したため、最終的に単語「5」の「つけ麺」を使用して応答テキストを生成することを表している。応答文生成部14は、応答テキスト「私はつけ麺が好きです。」を音声合成部15に出力する。
【0086】
図10は、興味キーワードを嫌いと判定した場合の単語出力例を示す図である。ここでは、上述したようにキーワードは「ラーメン」であり、興味キーワードは「つけ麺」である。S605の処理により生成された各単語列を「0,1,2・・・」と表している。
図10の場合、はじめは単語「1」の「ラーメン」を選択しており、S607の処理により興味キーワードである「つけ麺」の確率値が低下したため、最終的にそのまま単語「1」の「ラーメン」を使用して応答テキストを生成することを表している。応答文生成部14は、応答テキスト「私はラーメンが食べたい。」を音声合成部15に出力する。
【0087】
音声合成部15は、応答文生成部14により生成された応答テキストを、読み上げるための音声データに変換し(例えば、大浦圭一郎、「日本語テキスト音声合成システム Open JTalk」、日本音響学会春季講論集、2010 1、pp343-344、2010を参照)、発話出力部40に出力する。
【0088】
以上説明したように、本発明によれば、興味キーワードに対してさらに好悪判定を行い、好きと判定された興味キーワードの確率値を上昇させ、嫌いと判定された興味キーワードの確率値を低下させ、該確率値に基づいて応答テキストを生成する。そのため、応答文生成装置1は、ユーザの発話に対して、好き嫌いを表出した応答文を生成することができ、特定の事柄に興味を持っているような振る舞いをユーザに与えることができる。例えば、応答文生成装置1は、ユーザと一緒にテレビ番組などの映像コンテンツを視聴し、ユーザが発話すると、興味のあるキーワードに対する好き嫌いを反映させた応答を行うことができる。
【0089】
(プログラム)
上述した応答文生成装置として機能させるために、プログラム命令を実行可能なコンピュータを用いることも可能である。ここで、コンピュータは、汎用コンピュータ、専用コンピュータ、ワークステーション、PC(Personal Computer)、電子ノートパッドなどであってもよい。プログラム命令は、必要なタスクを実行するためのプログラムコード、コードセグメントなどであってもよい。
【0090】
コンピュータは、プロセッサと、記憶部と、入力部と、出力部と、通信インターフェースとを備える。プロセッサは、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)、SoC(System on a Chip)などであり、同種又は異種の複数のプロセッサにより構成されてもよい。プロセッサは、記憶部からプログラムを読み出して実行することで、上記各構成の制御及び各種の演算処理を行う。なお、これらの処理内容の少なくとも一部をハードウェアで実現することとしてもよい。入力部は、ユーザの入力操作を受け付けてユーザの操作に基づく情報を取得する入力インターフェースであり、マイク、ポインティングデバイス、キーボードなどである。出力部は、情報を出力する出力インターフェースであり、ディスプレイ、スピーカなどである。通信インターフェースは、外部の装置と通信するためのインターフェースであり、例えばLAN(Local Area Network)インターフェースである。
【0091】
プログラムは、コンピュータが読み取り可能な記録媒体に記録されていてもよい。このような記録媒体を用いれば、プログラムをコンピュータにインストールすることが可能である。ここで、プログラムが記録された記録媒体は、非一過性(non-transitory)の記録媒体であってもよい。非一過性の記録媒体は、特に限定されるものではないが、例えば、CD-ROM、DVD-ROM、USB(Universal Serial Bus)メモリなどであってもよい。また、このプログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【0092】
例えば、応答文生成装置1として機能させるためのプログラムは、ユーザの発話テキストの中からキーワードを抽出する抽出ステップと、キーワードに対して興味判定を行い興味があるキーワードを興味キーワードとし、興味キーワードに対してさらに好悪判定を行う判定ステップと、判定ステップにより好きと判定された興味キーワードの確率値を上昇させ、嫌いと判定された興味キーワードの確率値を低下させ、該確率値に基づいて前記発話テキストに対する応答テキストを生成する応答ステップと、をコンピュータに実行させる。
【0093】
また、応答文生成装置1は、1つ又は複数の半導体チップにより構成されてもよく、該半導体チップは、応答文生成装置1の各機能を実現する処理内容を記述したプログラムを実行するCPUを搭載してもよい。
【0094】
上述の実施形態は代表的な例として説明したが、本発明の趣旨及び範囲内で、多くの変更及び置換ができることは当業者に明らかである。したがって、本発明は、上述の実施形態によって制限するものと解するべきではなく、特許請求の範囲から逸脱することなく、種々の変形又は変更が可能である。例えば、実施形態の構成図に記載の複数の構成ブロックを統合したり、1つの構成ブロックを分割したりすることが可能である。
【符号の説明】
【0095】
1 応答文生成装置
10 制御部
11 音声認識部
12 キーワード抽出部
13 自己興味判定部
14 応答文生成部
15 音声合成部
20 発話取得部
30 記憶部
31 単語ベクトル記憶部
32 応答モデル記憶部
40 発話出力部