【新規性喪失の例外の表示】特許法第30条第2項適用 (1) 発行日 2016年10月1日 刊行物 「第78回言語・音声理解と対話処理研究会資料 一般社団法人 人工知能学会」 発表題目 「発話生成における誤りパターンの分析に基づく対話破綻検出」第81〜84頁 公開者 杉山 弘晃
【文献】
杉山 弘晃,"異なる特性を持つデータの組み合わせによる雑談対話の破綻検出 人工知能学会研究会資料",第75回 言語・音声理解と対話処理研究会資料 (SIG−SLUD−B502) (2015-10-26),2015年10月26日
【文献】
森下 雄太,"特徴抽出と疑問応答を中心としたルールベースによる応答破綻の自動検出 人工知能学会研究会資料",第78回 言語・音声理解と対話処理研究会資料 (SIG−SLUD−B505) (2016-10-01),2016年10月 1日
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【0011】
<用語>
まず、各実施形態で用いる用語について簡単に説明する。
【0012】
対話とは、過去N個(Nは1以上の整数)の一連の発話のことをいう。つまり、発話とはユーザとシステムによる発話の時系列のことである。
【0013】
対話破壊力とは、発話が対話を破綻させる程度のことをいう。過去N個の一連の発話(対話)において、最後の発話がこの対話を破綻させる程度のことである。なお、最後の発話は未発話となっていても構わない。対話破壊力は、破綻している、破綻していない、どちらでもないのいずれかを示すラベルとして表現してもよいし、破綻している、破綻していない、それ以外を確率変数とする確率分布として表現してもよい。また、対話破壊力は、対話の破綻の程度を示す実数値として表現してもよい。対話破壊力を実数値として表現する場合は、閾値との比較で対話が破綻している、破綻していない、どちらでもないなどの状態を判断すればよい。
【0014】
<特徴量>
対話の破綻に影響を及ぼす要因は様々あり、各要因に関連する特徴量も多様である。以下、対話が破綻しているか否かの特徴を示す特徴量について説明していく。その際、各特徴量の定義に加えて、各特徴量がどのような観点で対話破壊力に影響しているかについても説明する。なお、一般に、特徴量は、対話に含まれるいくつかの発話から抽出されるものであり、ベクトルとして表現される。
【0015】
以下、各特徴量の説明の中で、具体的な例を挙げることもあるが、これらはあくまでも一例であってその他のベクトル表現であっても構わない。
【0016】
[話題の結束性]
現在の対話システムでは、ユーザの発話と関係のない話題の発話を生成してしまい、対話を破綻させてしまう場合がある。また逆に、1つの話題に固執し何度も同じ内容や話題の発話を繰り返すことで、対話を破綻させてしまう場合もある。
【0017】
そこで、話題の遷移パターンの出現頻度、ユーザの発話の話題とシステムによる発話の話題の近さ、話題の繰り返し回数などを測ることにより、話題の結束性を考慮した対話破壊力推定が可能になる。以下、単語組合せ特徴量、発話間類似度特徴量、話題繰り返し数特徴量の3つの特徴量について説明する。
【0018】
(1-1)単語組合せ特徴量
単語組合せ特徴量とは、対話内の最後の発話とそれ以外の発話との間または最後の発話内において共起している単語Ngram、単語クラスNgram、単語集合、述語項構造のいずれかの組合せ(以下、単語組合せという)の出現結果を要素とするBag-of-wordsベクトルとして表現される特徴量である。
【0019】
なお、単語Ngram、単語クラスNgram、単語集合、述語項構造は、形態素解析することにより対話に含まれる発話を単語に分割し、得ることができる。形態素解析の対象となる発話は、対話破壊力推定対象となる最後の発話を含む直前のM個の発話である。なお、Mは1〜4程度が好ましい。
【0020】
単語Ngram、単語クラスNgramのNは1〜4程度が好ましい。また、単語クラスとは、word2vec(詳細は後述する)を用いて得られる単語ベクトル表現をクラスタリングした結果得られる単語ベクトルの集合、または日本語語彙大系のような辞書で付与されている、単語を抽象化して表現したものでよい。例えば、自動車の単語クラスは、乗り物・人工物などと表現される。また、単語集合は、順序を考慮するNgramとは異なり、文(例えば、直前のM個の発話)に含まれる単語と単語が離れていてもよい。
【0021】
通常、このような単語組合せとして得られるものの数は、非常に膨大となり、効率的なモデル学習の妨げとなる。そこで、単語組合せ特徴量の定義に用いる単語組合せを、学習対象となる対話からなるコーパスにおける出現数、TF-IDF値などを用いて上位K個(Kは数十個から数万個程度)に限定するとよい。また、取りうる単語組合せの範囲を各発話内の係り受け関係があるもの、述語項構造内のみの共起に限定してもよい。さらに、考慮する単語を内容語のみに限定し、助詞や句読点などの話題に関わらない単語を除いてもよい。その他、考慮する単語を名詞に比べて種類が少ない述語のみに限定してもよい。このようにすると、名詞の多様性に対して頑健に推定することができる。
【0022】
このように、単語組合せ特徴量を用いることで、ある対話システムに特有の破綻パターンを捉えたり、逆に一般的にあり得る話題の遷移パターンを捉えたりすることが可能になる。
【0023】
以下の対話例1を用いて、単語組合せ特徴量の例について説明する。
(対話例1)
1 ユーザ: こんにちは/。/旅行/は/好き/です/か/?
2 システム: はい/。/先日/京都/に/行き/まし/た/。
【0024】
ただし、記号“/”は単語の区切りを表す。
【0025】
例えば、対話例1において、ユーザ発話からは「こんにちは」「。」「旅行」「は」「好き」「です」「か」「?」の8個の単語が得られ、システム発話からは「はい」「。」「先日」「京都」「に」「行き」「まし」「た」「。」の9個の単語が得られた場合、単語Ngram(N=1)の組合せとして、ユーザ発話とシステム発話の間で「はい-こんにちは」「はい-。」「はい-旅行」…「。-?」の9x8=72通りの組合せが得られ、システム発話内で
9C
2=9x8/2=36通りの組合せが得られる。つまり、対話内の最後の発話とそれ以外の発話との間において共起している単語Ngramの組合せが72通り、最後の発話内において共起している単語Ngramの組合せが36通り得られる。
【0026】
このように、学習に用いる訓練データ内に現れるすべての組合せを列挙し、それぞれの組合せがある次元の要素に対応するベクトルを構成しておく。ベクトルの各次元の要素の値は、ある組合せが出現している場合は対応するベクトルの次元の要素を1、出現しない場合は0とする。例えば、上記により構成されるベクトルの次元数が5で、2次元目の要素に対応する組合せのみが出現していた場合、得られる単語組合せ特徴量は(0,1,0,0,0)となる。
【0027】
(1-2)発話間類似度特徴量
発話間類似度特徴量とは、対話内の最後の発話とそれ以外の発話がどの程度似ているかを表す特徴量であり、後述する類似度のうち、1つ以上の類似度を要素として並べたベクトルである。ここで用いる各類似度は、発話と発話の間の類似の程度を測るものである。
【0028】
特定の遷移パターンをとらえる単語組合せ特徴量と異なり、発話間類似度特徴量は、対話中に現れない組合せであっても、発話間の関連性を類似度に基づいて評価することができる。
【0029】
なお、直前のユーザの発話と最後の発話との間で発話間類似度特徴量を計算した場合は、不連続な話題の遷移を検出することができる。また、直前のシステムによる発話と最後の発話との間で発話間類似度特徴量を計算した場合は、特定の話題への固執を検出することができる。
【0030】
類似度の計算には、単語コサイン距離、word2vecの平均ベクトル間距離(参考非特許文献2)、WordMoversDistance距離(参考非特許文献3)を用いることができる。また、BLEUスコア、ROUGEスコア(参考非特許文献4)のような、単語の組合せ(BLEUスコア及びROUGEスコアの場合は単語Ngram)を考慮したものを用いることもできる。つまり、類似度は単語間の距離や単語の共起関係に基づいて算出される発話間の距離といえる。
【0031】
word2vecは、単語を意味ベクトルへ変換する手法であり、各単語に対応する意味ベクトルは、コーパス(ここでは対話)内で共起する単語が似ている単語としてベクトル間距離が近くなるように計算される。これにより、word2vecの平均ベクトル間距離は、単語コサイン距離より、ネコと猫、ネコと子猫などのような表記のゆれや小さな違いに対して頑健になる。
(参考非特許文献2:T. Mikolov, K. Chen, G. Corrado, J. Dean, “Efficient Estimation of Word Representations in Vector Space”, arXiv preprint arXiv:1301.3781, 2013.)
【0032】
WordMoversDistanceは、ある文Sに含まれている単語wについて、文Sとは別の文S’に含まれる単語vとの距離d(w,v)を調べ、最も近い距離d’(w)を計算し、文Sのすべての単語についての総和Σd’(w)を取ったものである。WordMoversDistanceは、個々の単語の類似性をword2vecの平均ベクトル間距離よりも詳細に評価することができる。
(参考非特許文献3:M. J. Kusner, Y. Sun, N. I. Kolkin, K. Q. Weinberger, “From Word Embeddings To Document Distances”, Proceedings of the 32nd International Conference on Machine Learning (ICML-15), pp.957-966, 2015.)
【0033】
BLEUスコア及びROUGEスコアは、機械翻訳などで用いられる、2文間の距離を単語Ngramの一致率を利用して計算するものである。
(参考非特許文献4:平尾努,磯崎秀樹,須藤克仁,Duh Kevin,塚田元,永田昌明,“語順の相関に基づく機械翻訳の自動評価法”,自然言語処理,vol.21, no.3, pp.421-444, 2014.)
【0034】
なお、単語をそのまま用いて類似度を計算する代わりに、日本語語彙大系(参考非特許文献5)のような辞書を用いて、単語を単語クラスに抽象化したうえで類似度を計算してもよい。
(参考非特許文献5:池原悟,宮崎正弘,白井諭,横尾昭男,中岩浩巳,小倉健太郎,大山芳史,林良彦,“日本語語彙大系”,岩波書店,1997.)
【0035】
さらに、類似度を計算するときに考慮する単語を内容語に限定してもよい。
【0036】
以下の対話例2を用いて、発話間類似度特徴量の例について説明する。
(対話例2)
1 ユーザ: こんにちは/。/旅行/は/好き/です/か/?
2 システム: はい/。/先日/京都/に/行き/まし/た/。
【0037】
例えば、対話例2において、内容語(名詞・動詞・形容詞・独立詞など)に限定したword2vecの平均ベクトル間距離を考える。ユーザ発話からは、「こんにちは」「旅行」「好き」の3個の内容語が得られ、システム発話からは「はい」「先日」「京都」「行き」の4個の内容語が得られる。word2vecを用いて得られた単語をベクトルへ変換する。例えば、3次元のベクトルとして、「こんにちは」は(0.1,0.7,0.2)、「旅行」は(0.8,0.1,0.1)、「好き」は(0.3,0.4,0.3)、「はい」は(0.2,0.6,0.2)、「先日」は(0.1,0.1,0.8)、「京都」は(0.6,0.3,0.1)、「行き」は(0.7,0.2,0.1)が得られたとする。このとき、ユーザ発話の平均ベクトルは((0.1,0.7,0.2)+(0.8,0.1,0.1)+(0.3,0.4,0.3))/3 = (0.4,0.4,0.2)、システム発話の平均ベクトルは((0.2,0.6,0.2)+(0.1,0.1,0.8)+(0.6,0.3,0.1)+(0.7,0.2,0.1))/4 = (0.4,0.3,0.3)となる。これらのコサイン類似度(≒0.97)などを計算することで、上記ユーザ発話1と上記システム発話2との間の類似度を得ることができる。こうして得られた類似度を1つ以上並べたベクトル(0.97,…)が発話間類似度特徴量となる。
【0038】
(1-3)話題繰り返し数特徴量
話題繰り返し数特徴量とは、対話内での話題の繰り返し数を表す特徴量である。ここで、話題とは、焦点となっている単語、焦点となっている述語項構造のことである。
【0039】
ある特定の話題が連続して発話されるのは、一般的に不自然な振る舞いであるため、ユーザが違和感を覚えたり、ユーザの対話意欲が減退したりし、その結果対話が破綻することが多い。したがって、ある話題の繰り返し数を調べることにより、対話の破綻を検知することができる。
【0040】
以下の対話例3を用いて、話題繰り返し数特徴量の例について説明する。
(対話例3)
1 システム: こんにちは。熱中症に気をつけて。
2 ユーザ: はい。ありがとう。あなたも気を付けて。
3 システム: 熱中症に気をつけないんですか?
4 ユーザ: 小まめに水を飲んだりして、気を付けていますよ。
5 システム:熱中症に気をつけたいんでしょう?
【0041】
対話例3の場合、システムは「熱中症」という単語や「熱中症に気をつける」という述語項構造を繰り返して発話している。このとき、最後の発話である5のシステム発話における話題繰り返し数特徴量は3として計算する。
【0042】
[対話行為のつながり]
対話行為特徴量とは、対話に含まれる発話が表す対話行為から生成される特徴量である。ここで、対話行為とは、質問・挨拶・自己開示・賞賛・謝罪などのユーザ等の発話意図のことである(参考非特許文献6)。対話行為は、後述するようにBag-of-wordsベクトルとして表すことができる。
(参考非特許文献6:T. Meguro, Y. Minami, R. Higashinaka, K. Dohsaka, “Controlling listening-oriented dialogue using partially observable Markov decision processes”, Proceedings of the 23rd international conference on computational linguistics. Association for Computational Linguistics (COLING 10), pp.761-769, 2010.)
【0043】
対話行為特徴量には、以下に説明する対話行為列特徴量と予測対話行為特徴量がある。
【0044】
(2-1)対話行為列特徴量
対話行為列特徴量とは、対話に含まれる各発話が表す対話行為を推定した結果(以下、推定対話行為という)を要素とするベクトルとして表現される特徴量である。推定結果(推定対話行為)はBag-of-wordsベクトルとして表すことができる。具体的には、各発話の推定対話行為に対応するBag-of-wordsベクトルは、1bestの対話行為の値を1、それ以外の対話行為の値を0とする1-of-Kベクトルとしたり、推定された対話行為らしさを表す確率分布(確率分布ベクトル)としたりすることで表現できる。なお、対話行為を推定する最後の発話を含み発話は、最後の発話を含む直前のM個の発話である。なお、Mは1〜4程度が好ましい。
【0045】
例えば、推定する対話行為を質問・挨拶・自己開示・賞賛・謝罪の5つとし、対話行為列を最後の発話を含む4つの直前の発話から生成する場合、4つの発話の対話行為の1bestが「挨拶⇒挨拶⇒自己開示⇒称賛」であるとき、Bag-of-wordsベクトルのベクトルである対話行為列特徴量は、((0,1,0,0,0), (0,1,0,0,0), (0,0,1,0,0), (0,0,0,1,0))となる。
【0046】
各発話の推定対話行為を表すBag-of-wordsベクトルの生成には、単語を特徴量とするSVM(Support Vector Machine)を用いる。なお、人があらかじめ発話に対応する対話行為を付与した対話データベースを利用して、事前にSVMの学習を行っておく必要がある。
【0047】
(2-2)予測対話行為特徴量
予測対話行為特徴量とは、対話に含まれる発話から最後の発話が持つべき対話行為を予測した結果(以下、予測対話行為という)を表す予測結果ベクトル、予測結果ベクトルと最後の発話が表す対話行為を推定した結果を表す推定結果ベクトルを並べたベクトル、予測結果ベクトルと推定結果ベクトルの差分ベクトル、予測結果ベクトルと推定結果ベクトルの1bestが一致しているか否かの真偽値のうち、いずれか1つ以上からなる特徴量である。予測結果ベクトルと推定結果ベクトルの1bestが一致するとは、各ベクトルの要素のうち最大となる要素の次元が一致することをいう。
【0048】
なお、予測結果(予測対話行為)は、(2-1)の推定結果と同様、Bag-of-wordsベクトルとして表すことができる。具体的には、最後の発話の予測対話行為に対応するBag-of-wordsベクトルは、1bestの対話行為の値を1、それ以外の対話行為の値を0とする1-of-Kベクトルとしたり、予測された対話行為らしさを表す確率分布(確率分布ベクトル)としたりすることで表現できる。
【0049】
最後の発話の予測対話行為を表すBag-of-wordsベクトル(予測結果ベクトル)の生成には、単語や直前の発話の対話行為を特徴量とするSVMやPOMDP(Partially Observable Markov Decision Process)を用いる(参考非特許文献6)。なお、人があらかじめ発話に対応する対話行為を付与した対話データベースを利用して、事前にSVMやPOMDPの学習を行っておく必要がある。
【0050】
例えば、対話行為を質問・挨拶・自己開示・賞賛・謝罪の5つとし、最後の発話から対話行為として“質問”が予測されたとするとき、予測した結果を表すBag-of-wordsベクトルと最後の発話が表す対話行為を推定した結果を表すBag-of-wordsベクトルを並べたベクトルは((1,0,0,0,0),(0,0,0,1,0))となる。また、それらの差分ベクトルは(1,0,0,-1,0)、一致しているかの真偽値は偽(0)となる。例えば、これらのベクトルを結合したベクトルを予測対話行為特徴量とすると、ベクトル(1,0,0,0,0,0,0,0,1,0,1,0,0,-1,0,0)が予測対話行為特徴量として得られることになる。
【0051】
(2-3)文字列共起特徴量
文字列共起特徴量とは、対話内の最後の発話とそれ以外の発話との間において共起している文字列Ngram(ただし、Nは3以上の整数)の組合せの出現結果を要素とするBag-of-wordsベクトルとして表現される特徴量である。
【0052】
語尾の文字列は対話行為を表すことが多いため、それらの共起を見ることにより、対話行為の共起関係をとらえることができる。
【0053】
以下の対話例4を用いて、文字列共起特徴量の例について説明する。
(対話例4)
1 ユーザ: どこから来たんですか?
2 システム: フォレストアドベンチャーと竹田城跡なら、どちらに関心がありますか?
【0054】
例えば、N=3として文字列Ngramを抽出すると、ユーザ発話からは「どこか」「こから」「から来」…「すか?」が得られ、システム発話からは「フォレ」「ォレス」…「すか?」が得られる。ここで、特に語尾に着目して共起を取ると、「すか?-すか?」という組合せが得られる。
【0055】
このように、学習に用いる訓練データ内に現れるすべての組合せを列挙し、それぞれの組合せがある次元の要素に対応するベクトルを構成しておく。ベクトルの各次元の要素の値は、ある組合せが出現している場合は対応するベクトルの次元の要素を1、出現しない場合は0とする。例えば、上記により構成されるベクトルの次元数が5で、2次元目の要素に対応する組合せのみが出現していた場合、得られる文字列共起特徴量は(0,1,0,0,0)となる。
【0056】
[論理的なつながり]
(3-1)質問タイプ特徴量
質問タイプ特徴量とは、対話内の最後の発話の直前の発話が質問である場合、推定される質問タイプを表す特徴量である。質問タイプの例として、話者の具体的な嗜好や経験を問うパーソナリティ質問、具体的な事物を問うファクトイド質問、(ニュースなど)ある事象の5W1Hを問う質問などが挙げられる。また、“レストランの場所”のように、話題に紐付いた形で質問タイプを定義してもよい。
【0057】
質問タイプの推定には、単語を特徴量とするSVMを用いる。なお、人があらかじめ質問タイプを分類したデータベースを利用して、事前にSVMの学習を行っておく必要がある。
【0058】
対話システムには、上記質問タイプの一部に対する応答ができない(応答を苦手とする)ものもあるため、質問タイプ特徴量を用いると、そうしたシステム特性を反映した対話破壊力推定が可能になる。
【0059】
例えば、天気案内を行う対話システムは、ある特定の場所の天気についての質問には答えられるものの、その場所の観光情報やシステム自身のパーソナリティに関する質問には答えられないことが多い。そのため、質問タイプを“天気に関する質問”と“それ以外の質問”の2タイプとして定義し、ユーザからの質問がいずれの質問タイプかを推定して、(1,0)のように1-of-K表現を用いてベクトル化することで、質問タイプ特徴量を得る。
【0060】
(3-2)質問クラス特徴量
質問クラス特徴量とは、対話内の最後の発話の直前の発話が質問である場合、質問が回答に要求していると推定される単語クラスを表すベクトル、回答(最後の発話)に含まれる単語クラスを表すベクトル、それらの差分ベクトル、それらの2つのベクトルが表す単語クラスが一致しているか否かを表す真偽値のうち、いずれか1つ以上からなる特徴量である。推定される単語クラスを表すベクトル、回答に含まれる単語クラスを表すベクトルは、確率分布ベクトルや1-of-Kベクトルとして表現することができる。
【0061】
ENE(拡張固有表現)抽出技術を用いて、推定した単語クラス(つまり、質問クラス特徴量が表す単語クラス)が最後の発話に含まれるか否かを調べることにより、質問とその答えについての対応関係を調べることができる。
【0062】
以下の対話例5を用いて、質問クラス特徴量の例について説明する。
(対話例5)
1 ユーザ: どこから来たんですか?
2 システム:京都から来ました
【0063】
例えば、対話例5において、ユーザ発話が回答に要求している単語クラスが「場所」であると推定され、システム発話に「場所」の単語クラスが含まれていると推定された場合を考える。単語クラスの集合を固有物、場所、数量としたとき、ユーザ発話から得られる1-of-Kベクトル(つまり、質問が回答に要求していると推定される単語クラスを表すベクトル)は(0,1,0)となり、システム発話から得られる1-of-Kベクトル(つまり、回答(最後の発話)に含まれる単語クラスを表すベクトル)は(0,1,0)となる。例えば、これらのベクトルを結合したベクトルを質問クラス特徴量とすると、ベクトル(0,1,0,0,1,0)が質問クラス特徴量として得られることになる。
【0064】
なお、ユーザ発話からの単語クラスの推定には質問分類と呼ばれる技術が、システム発話からの単語クラスの推定にはENE抽出と呼ばれる技術が用いられることが多い。
【0065】
[発話自体の適切さ]
(4-1)パープレキシティ特徴量
パープレキシティ特徴量とは、対話に含まれる各発話について言語モデルを用いて計算したパープレキシティを表す特徴量である。パープレキシティは、単語間の連なりの自然さを表現しており、文法的に不自然な発話を検出することができる。また、言語モデルは、単語Ngramや文字Ngram(Nは1〜7程度が多い)を利用したもの、Recurrent Neural Networkを利用したものが知られている。パープレキシティを計算できるものであればどのような言語モデルを用いてもよい。パープレキシティ特徴量は、パープレキシティの値そのものを直接特徴量とする方法のほか、適当な個数に量子化した1-of-Kベクトルを特徴量としてもよい。
【0066】
なお、単語自体の出現確率に依らず文の流暢さを重視して表現するために、上記のように計算されるパープレキシティの代わりに、パープレキシティを各単語の出現確率で正規化した値(パープレキシティを単語の出現確率で割った値、以下、正規化パープレキシティという)を用いてもよい。
【0067】
例えば、システム発話「どこのご出身ですか?」のパープレキシティとシステム発話「の出身ですどこごか?」のパープレキシティとでは使われている単語は同一であるが、「どこのご出身ですか?」の方が流暢な表現であり、パープレキシティが低下することが期待される。
【0068】
(4-2)単語特徴量
単語特徴量とは、対話に含まれる各発話の単語N-gram(Nは1〜5程度)を並べたBag-of-wordsベクトルとして表現される特徴量である。
【0069】
単語特徴量を利用することにより、ある対話システムが出力しやすい誤りパターンをとらえることが可能になる。
【0070】
単語特徴量に用いる単語は、対話内出現数やTF-IDF値を用いて上位N個に足切りして用いてもよい。また、考慮する単語を内容語のみに限定し、助詞などの話題に関わらない単語を除外するようにしてもよい。その他、考慮する単語を名詞に比べて種類が少ない述語のみに限定してもよい。このようにすると、名詞の多様性に対して頑健に推定することができる。
【0071】
以下の対話例6を用いて、単語特徴量の例について説明する。
(対話例6)
1 ユーザ: こんにちは/。/旅行/は/好き/です/か/?
2 システム: はい/。/先日/京都/に/行き/まし/た/。
【0072】
例えば、対話例6において、ユーザ発話からは、「こんにちは」「。」「旅行」「は」「好き」「です」「か」「?」の8個の単語が得られ、システム発話からは「はい」「。」「先日」「京都」「に」「行き」「まし」「た」「。」の9個の単語が得られた場合、単語Ngram(N=1)のBag-of-wordsベクトルは、ユーザ発話からは「こんにちは」「。」「旅行」「は」「好き」「です」「か」「?」に対応する次元の要素が1、それ以外が0となるベクトルが単語特徴量として得られる。一方、システム発話からは「はい」「。」「先日」「京都」「に」「行き」「まし」「た」「。」に対応する次元の要素が1、それ以外が0となるベクトルが単語特徴量として得られる。
【0073】
(4-3)単語クラス特徴量
単語クラス特徴量とは、対話に含まれる各発話の単語に対応する単語クラスを並べたBag-of-classesベクトルとして表現される特徴量である。単語クラスとは、その単語のおおまかな意味を表すものである。
【0074】
単語クラスの構成方法には、Wordnetや日本語語彙大系などの辞書に付与されたクラス情報を用いる辞書ベースの方法、Word2vecのベクトルをK-meansでクラスタリングし、単語の集合を生成する方法などがある。
【0075】
単語クラス特徴量に用いる単語クラスは、対話内出現数、TF-IDF値を用いて上位N個に足切りして用いてもよい。
【0076】
以下の対話例7を用いて、単語クラス特徴量の例について説明する。
(対話例7)
1 ユーザ: どこから来たんですか?
2 システム: 京都から来ました
【0077】
例えば、対話例7において、単語クラスを人名、場所、金額に限定した場合を考える。このとき、ユーザ発話には単語クラスに変換可能な単語が含まれていないため、(0,0,0)が単語クラス特徴量として得られる。一方、システム発話には「場所」の単語クラスが含まれていると推定されるため、(0,1,0)が単語クラス特徴量として得られる。
【0078】
(4-4)単語ベクトル特徴量
単語ベクトル特徴量とは、対話に含まれる各発話の単語N-gram(Nは1〜5程度)を表すベクトルから生成されるベクトルとして表現される特徴量である。例えば、重み付き平均や要素ごとの掛け合わせを用いて生成することができる。
【0079】
重み付き平均を用いる場合、単語ベクトル特徴量は、対話に含まれる各発話の単語N-gramを表すベクトルを重み付き平均として構成したベクトルで表される特徴量となる。
【0080】
単語N-gramを表すベクトルは、例えば、Word2vecで抽出すればよい。重み付き平均の重みには、TF-IDF値を用いてもよいし、すべて等しくしてもよい。
【0081】
また、重み付き平均の算出に用いる単語N-gramを表すベクトルの数をTF-IDF値を用いて足切りし、上位M個のみを用いるようにしてもよい。
【0082】
ベクトルの要素ごとの掛けあわせを用いる場合、単語ベクトル特徴量は、対話に含まれる各発話の単語N-gramを表すベクトルの各要素を掛け合わせて構成したベクトルで表される特徴量となる。
【0083】
以下の対話例8を用いて、単語ベクトル特徴量の例について説明する。
(対話例8)
1 ユーザ: こんにちは/。/旅行/は/好き/です/か/?
2 システム: はい/。/先日/京都/に/行き/まし/た/。
【0084】
例えば、対話例8において、内容語(名詞・動詞・形容詞・独立詞など)に限定したword2vecの平均ベクトルを単語ベクトル特徴量として考える。ユーザ発話からは、「こんにちは」「旅行」「好き」の3個の内容語が得られ、システム発話からは、「はい」「先日」「京都」「行き」の4個の内容語が得られる。word2vecを用いて得られた単語をベクトルへ変換する。例えば、3次元のベクトルとして、「こんにちは」は(0.1,0.7,0.2)、「旅行」は(0.8,0.1,0.1)、「好き」は(0.3,0.4,0.3)、「はい」は(0.2,0.6,0.2)、「先日」は(0.1,0.1,0.8)、「京都」は(0.6,0.3,0.1)、「行き」は(0.7,0.2,0.1)が得られたとする。このとき、ユーザ発話の平均ベクトル(単語ベクトル特徴量)は、((0.1,0.7,0.2)+(0.8,0.1,0.1)+(0.3,0.4,0.3))/3 = (0.4,0.4,0.2)、システム発話の平均ベクトル(単語ベクトル特徴量)は((0.2,0.6,0.2)+(0.1,0.1,0.8)+(0.6,0.3,0.1)+(0.7,0.2,0.1))/4 = (0.4,0.3,0.3)となる。
【0085】
(4-5)文長特徴量
文長特徴量とは、対話内の最後の発話の単語長および文字長を表す特徴量である。
【0086】
現在の対話システムでは、ユーザ発話の内容とシステム発話の内容との一貫性を誤りなく推定することは困難である。そのため、システム発話が長ければ長いほど、無関係な部分が含まれる可能性が多くなってしまうという問題がある。これを対話破壊力の推定に反映させるため、文長特徴量を用いることができる。
【0087】
例えば、対話内の最後の発話が“買い物は一緒が楽しいですね”である場合、単語長は7、文字長は13となり、文長特徴量は(7,13)となる。
【0088】
(4-6)ターン数特徴量
ターン数特徴量とは、対話開始からの経過ターン数を表す特徴量である。
【0089】
これは、いずれの対話システムも対話の冒頭部分では比較的適切な発話を生成しているものの、対話が経過するごとに不適切な発話の割合が増えていく傾向がみられるという特徴を表すためのものである。
【0090】
例えば、
図5の入力にある対話の場合、ターン数は5であるため、ターン数特徴量は(5)となる。
【0091】
[想定シナリオ内]
(5-1)頻出単語列特徴量
頻出単語列特徴量とは、対話内に所定の頻度T以上出現する単語Ngramの文字列を要素とする特徴量である。ここで、Nは4〜7程度、Tは10以上が好ましい。
【0092】
この特徴量は、文Aと文Bのどちらを発話するかのような、あらかじめ想定されたシナリオに誘導するシステム発話を入れ込んで対話システムを構成する場合を考慮したものである。シナリオに誘導した直後は、比較的それまでの文脈から切り離された形でシステムが応答できるため、適切な応答を生成しやすい。また、シナリオに誘導した直後は、他の部分とは評価傾向が異なると想定される。そのため、シナリオに誘導した直後か否かを推定するための特徴として頻出単語列特徴量を用いる。
【0093】
例えば、対話内に単語2gramである“買い物は”が所定の頻度3以上出現する場合、頻出単語列特徴量は、“買い物は”を要素として含み、(“買い物は”)のようにベクトルとして表現される。
【0094】
<第一実施形態>
[対話破壊モデル学習装置100]
以下、
図1〜
図2を参照して対話破壊モデル学習装置100について説明する。
図1に示すように対話破壊モデル学習装置100は、対話破壊特徴量抽出部110、モデル生成部120、記録部190を含む。記録部190は、対話破壊モデル学習装置100の処理に必要な情報を適宜記録する構成部である。例えば、学習中の対話破壊モデル(対話破壊モデルパラメータ)を記録する。
【0095】
また、対話破壊特徴量抽出部110は、第1種特徴量計算部110
1、…、第J種特徴量計算部110
Jを含む(ただし、Jは1以上の整数)。第j種特徴量計算部110
j(1≦j≦J)は、対話から第j種特徴量を計算するものである。第j種特徴量は、<特徴量>にて説明した特徴量のいずれかである。
【0096】
学習開始前に、一連の発話からなる対話と当該対話が破綻しているか否かを示す正解データの組である訓練データを複数用意しておく。対話が破綻しているか否かを示す正解データは、破綻している、破綻していない、どちらでもないのいずれかを示すラベルでもよいし、破綻している、破綻していない、それ以外を確率変数とする確率分布であってもよい。また、正解データは、破綻の程度を示す実数値であってもよい。訓練データには、参考非特許文献1にある、人手であらかじめ対話の破綻を示すラベルや確率分布を付与した対話破綻データを利用することができる。
【0097】
対話破壊モデル学習装置100は、訓練データである対話と正解データの組から、対話破壊モデルを学習する。対話破壊モデルは、対話が破綻しているか否かの程度を示す対話破壊力を推定するために用いる。
【0098】
図2に従い対話破壊モデル学習装置100の動作について説明する。対話破壊特徴量抽出部110は、入力された対話から、最後の発話により対話が破綻しているか否かの特徴を示す対話破壊特徴量を抽出する(S110)。対話破壊特徴量は、第1種特徴量、…、第J種特徴量の組合せである。特徴量の組合せである対話破壊特徴量の例として、以下のようなものがある。
【0099】
1) 頻出単語列特徴量、発話間類似度特徴量、文長特徴量、ターン数特徴量、単語ベクトル特徴量、質問タイプ特徴量、質問クラス特徴量、話題繰り返し数特徴量のうち、いずれか1つ以上の特徴量を含む組合せ。
【0100】
ここでの発話間類似度特徴量は、単語コサイン距離以外の類似度をベクトルの要素とする。
【0101】
2) 対話行為特徴量、発話間類似度特徴量を含み、単語特徴量、単語クラス特徴量、単語組合せ特徴量、頻出単語列特徴量のうち少なくともいずれか1つの特徴量を含まない組合せ。
【0102】
この組合せは、単語特徴量、単語クラス特徴量、単語組合せ特徴量、頻出単語列特徴量の4つの特徴量のうち、少なくともいずれか1つの特徴量を含まない。例えば、対話行為特徴量、発話間類似度特徴量に加えて、単語特徴量、単語クラス特徴量、単語組合せ特徴量の3つを含む組合せは対話破壊特徴量として適切であるが、対話行為特徴量、発話間類似度特徴量に加えて、単語特徴量、単語クラス特徴量、単語組合せ特徴量、頻出単語列特徴量の4つすべてを含む組合せは適切ではない。したがって、この組合せを用いると、特徴量数を押さえつつ、対話行為の不自然な遷移による破綻と話題の急激な遷移による破綻を効果的に推定することが可能になる。
【0103】
3) 対話行為特徴量、発話間類似度特徴量、文長特徴量を含み、単語特徴量、単語クラス特徴量、単語組合せ特徴量、頻出単語列特徴量のうち少なくともいずれか1つの特徴量を含まない組合せ。
【0104】
この組合せを用いると、特徴量数を押さえつつ、対話行為の不自然な遷移による破綻、話題の急激な遷移による破綻、長過ぎる発話による無関係な話題の混入による破綻を効果的に推定することが可能になる。つまり、2)よりも好ましい特徴を備えた組合せになる。
【0105】
4) 対話行為特徴量、発話間類似度特徴量、文長特徴量、ターン数特徴量を含み、単語特徴量、単語クラス特徴量、単語組合せ特徴量、頻出単語列特徴量のうち少なくともいずれか1つの特徴量を含まない組合せ。
【0106】
この組合せを用いると、対話開始時の破綻しにくさを反映しかつ特徴量数を押さえつつ、対話行為の不自然な遷移による破綻、話題の急激な遷移による破綻、長過ぎる発話による無関係な話題の混入による破綻を効果的に推定することが可能になる。つまり、3)よりも好ましい特徴を備えた組合せになる。
【0107】
5) 対話行為特徴量、発話間類似度特徴量、文長特徴量、ターン数特徴量を含む一方、単語特徴量、単語クラス特徴量、単語組合せ特徴量、頻出単語列特徴量を含まない組合せ。
【0108】
この組合せは、4)の組合せをより制限したものになっている。
【0109】
6) 対話行為特徴量、発話間類似度特徴量、文長特徴量、ターン数特徴量、文字列共起特徴量を含む一方、単語特徴量、単語クラス特徴量、単語組合せ特徴量、頻出単語列特徴量を含まない組合せ。
【0110】
この組合せは、5)の組合せをより制限したものになっている。
【0111】
7) 対話行為特徴量、発話間類似度特徴量、文長特徴量、ターン数特徴量、パープレキシティ特徴量を含み、単語特徴量、単語クラス特徴量、単語組合せ特徴量、頻出単語列特徴量のうち少なくともいずれか1つの特徴量を含まない組合せ
【0112】
この組合せを用いると、対話開始時の破綻しにくさ及び発話自体の構文の自然さを反映しかつ特徴量数を押さえつつ、対話行為の不自然な遷移による破綻、話題の急激な遷移による破綻、長過ぎる発話による無関係な話題の混入による破綻を効果的に推定することが可能になる。つまり、4)よりも好ましい特徴を備えた組合せになる。
【0113】
8) 発話間類似度特徴量、頻出単語列特徴量、対話行為特徴量、文長特徴量、単語組合せ特徴量を含む組合せ。
【0114】
この組合せは、シナリオに基づいて動作する対話システムの固有の振る舞いを捉えるために頻出単語列特徴量を、効率的な話題遷移を捉えるために単語組合せ特徴量を利用する。
【0115】
9) 対話行為特徴量、発話間類似度特徴量を含み、更に単語特徴量、単語クラス特徴量のうちいずれか1つ以上の特徴量を含む組合せ。
【0116】
少なくとも、単語特徴量、単語クラス特徴量のいずれかを特徴量として含むことにより、この組合せはデータ量を十分に確保できる場合により性能を高めることが可能となる。
【0117】
モデル生成部120は、S110で抽出した対話破壊特徴量と入力された正解データを用いて、対話破壊モデルを生成する(S120)。ここで、対話破壊モデルの学習アルゴリズムには、どのようなアルゴリズムを用いてもよい。例えば、ディープニューラルネットワーク(DNN: Deep Neural Networks)、SVM、ExtraTreesClassifierを用いることができる。
【0118】
これらの学習アルゴリズムにより獲得される対話破壊モデルを用いて構成される対話破壊力推定装置には、それぞれ以下のような特徴がある。DNNを用いた場合、特徴量の組合せを自動的に考慮した推定ができる点において優れている(実際、実験的に優れた結果を示している)が、訓練データの量が少ない場合に挙動が安定しないという問題がある。SVMを用いた場合、推定精度のピーク値ではDNNに劣るものの、少量の訓練データでも効率的に学習できる。ExtraTreesClassifierを用いた場合、訓練データの量が少ない場合でも特徴量の組合せを考慮した推定が可能であるが、特徴量が多くなると、モデル学習に時間がかかり、推定精度も低下するという問題がある。
【0119】
なお、正解データが確率分布として与えられる場合(つまり、対話破壊力推定装置が対話の破綻を確率分布として推定する場合)は、SVMの代わりにSupport Vector Regressorを、ExtraTreesClassifierの代わりにExtraTreesRegressorを用いるとよい。
【0120】
生成した対話破壊モデルは、フィードバックされ、次の訓練データを用いた学習に利用される。
【0121】
モデル生成部120は、学習アルゴリズムに基づく計算を実行する構成部である。したがって、対話破壊モデル学習装置100は、学習開始までに、記録部190に記録した対話破壊モデルの初期値をモデル生成部120に設定する。また、対話破壊モデル学習装置100は、学習中、モデル生成部120が対話破壊モデルを生成する都度、生成した対話破壊モデルをモデル生成部120に設定する。
【0122】
対話破壊モデル学習装置100は、S110〜S120の処理を訓練データの数だけ繰り返し、最終的に生成された対話破壊モデルを学習結果として出力する。
【0123】
なお、対話破壊特徴量を抽出する対話破壊特徴量抽出部110を対話破壊モデル学習装置100の一部としてではなく、独立した装置(以下、対話破壊特徴量抽出装置という)として扱うこともできる。この場合、対話破壊特徴量抽出装置は、対話破壊特徴量抽出部110と記録部190を含む。対話破壊特徴量抽出装置は、対話を入力として、当該対話が破綻しているか否かの特徴を示す特徴量の組合せである対話破壊特徴量を抽出、出力するものとなる。
【0124】
[対話破壊力推定装置200]
以下、
図3〜
図4を参照して対話破壊力推定装置200について説明する。
図3に示すように対話破壊力推定装置200は、対話破壊特徴量抽出部110、対話破壊力計算部220を含む。
【0125】
また、対話破壊力推定装置200は、学習結果記録部290と接続している。学習結果記録部290は、対話破壊モデル学習装置100が学習した対話破壊モデルを記録している。なお、学習結果記録部290は、対話破壊力推定装置200に含まれる構成部としてもよい。
【0126】
対話破壊力推定装置200は、一連の発話である対話から、当該対話の最後の発話が対話を破綻させる程度である対話破壊力を推定する。
図5は、対話破壊力推定装置200の入出力の例を示す。一連の発話(“買い物は一人が楽です”というシステムによる発話から“買い物は一緒が楽しいですね”というシステムによる発話まで)が入力である。“買い物は一緒が楽しいですね”というシステムによる発話が、最後の発話であり、対話破壊力を推定する対象となる。また、破綻していない(○)、破綻している(×)、どちらでもない(△)の確率分布として対話破壊力が推定されている。なお、ここでは確率値が最も大きいのが(つまり、1bestが)×であることからこの最後の発話により当該対話は破綻していると考えられる。
【0127】
対話破壊力推定装置200は、推定開始までに、学習結果記録部290に記録した対話破壊モデルを対話破壊力計算部220に設定する。
【0128】
図4に従い対話破壊力推定装置200の動作について説明する。対話破壊特徴量抽出部110は、入力された対話から、最後の発話により対話が破綻しているか否かの特徴を示す対話破壊特徴量を抽出する(S110)。なお、最後の発話はユーザの発話であっても、システムによる発話であってもよい。
【0129】
対話破壊力計算部220は、S110で抽出した対話破壊特徴量から、最後の発話が対話を破綻させる程度である対話破壊力を計算する(S220)。その際、対話破壊モデル学習装置100が学習した対話破壊モデルを用いる。推定結果である対話破壊力は、生成した対話破壊モデルに応じて、ラベル、確率分布、実数値のいずれかとして計算される。
【0130】
本実施形態の発明によれば、対話を破綻させる様々な要因を踏まえた特徴量の組合せとして対話破壊特徴量を計算することができる。また、組合せに用いる各特徴量の特徴を考慮した対話破壊特徴量とすることにより、少量の訓練データから対話破壊モデルを学習することが可能となる。
【0131】
システムによる発話に対して対話破壊力を推定することにより、対話破壊力が高い発話の出力を抑制することができる。その結果、対話の継続が容易になる。
【0132】
また、実際の人とシステムが行った対話を対象に対話破壊力を推定することにより、対話が破綻している可能性の高い箇所を見つけることができ、システムの改善に活用することができる。
【0133】
さらに、音声対話では、ユーザによる発話の音響特徴のみから音声認識エラーを検出することは難しいため、認識エラーを含んだ発話からシステムが発話を生成してしまうことがある。このような場合、ユーザ発話の音声認識結果と直前のシステム発話との間の対話的なつながりの自然性をユーザ発話の対話破壊力として推定することにより、認識エラーの検出、音声認識候補のリランキングが可能となり、スムースな音声対話が可能になる。
【0134】
<変形例>
この発明は上述の実施形態に限定されるものではなく、この発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。上記実施形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【0135】
<補記>
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部、CPU(Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい)、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD−ROMなどの記録媒体を読み書きできる装置(ドライブ)などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
【0136】
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている(外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるROMに記憶させておくこととしてもよい)。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に記憶される。
【0137】
ハードウェアエンティティでは、外部記憶装置(あるいはROMなど)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にCPUで解釈実行・処理される。その結果、CPUが所定の機能(上記、…部、…手段などと表した各構成要件)を実現する。
【0138】
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【0139】
既述のように、上記実施形態において説明したハードウェアエンティティ(本発明の装置)における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
【0140】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
【0141】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0142】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0143】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。