(57)【要約】【課題】自然な文章を生成する文章生成装置を提供する。【解決手段】ユーザに提供する対話文を生成する文章生成装置であって、一つ以上のキーワードを取得するキーワード取得手段と、連続した単語または文字同士の前後の共起関係を表すＮグラム文字列が、出現頻度とともに定義されたモデルであるＮグラムモデルにアクセスするアクセス手段と、前記キーワードに基づいて、前記Ｎグラムモデルから複数のＮグラム文字列を抽出し、前記抽出したＮグラム文字列の一部が重複するように結合することで対話文を生成する生成手段と、前記結合した複数のＮグラム文字列の出現頻度を前記Ｎグラムモデルから取得し、前記出現頻度に基づいて算出した第一のスコアを用いて、前記生成した対話文を評価する評価手段と、を有する。【選択図】図１
2018045594.tif 000002
【特許請求の範囲】
【請求項１】
ユーザに提供する対話文を生成する文章生成装置であって、
一つ以上のキーワードを取得するキーワード取得手段と、
連続した単語または文字同士の前後の共起関係を表すＮグラム文字列が、出現頻度とともに定義されたモデルであるＮグラムモデルにアクセスするアクセス手段と、
前記キーワードに基づいて、前記Ｎグラムモデルから複数のＮグラム文字列を抽出し、前記抽出したＮグラム文字列の一部が重複するように結合することで対話文を生成する生成手段と、
前記結合した複数のＮグラム文字列の出現頻度を前記Ｎグラムモデルから取得し、前記出現頻度に基づいて算出した第一のスコアを用いて、前記生成した対話文を評価する評価手段と、
を有する、文章生成装置。
【請求項２】
前記評価手段は、評価対象の対話文を、生成時とは異なる位置で区切られた複数のＮグラム文字列に分解し、前記分解したＮグラム文字列の出現頻度を前記Ｎグラムモデルから取得し、前記出現頻度に基づいて算出した第二のスコアをさらに用いて前記対話文の評価を行う、
請求項１に記載の文章生成装置。
【請求項３】
前記Ｎグラムモデルは、特定の状況におけるＮグラム文字列の出現頻度を、前記特定の状況を表す状況識別子とともに定義したデータであり、
前記評価手段は、対話文を生成する際の状況に対応する状況識別子を取得し、当該状況識別子に対応するＮグラム文字列の出現頻度を前記Ｎグラムモデルから取得する、
請求項１または２に記載の文章生成装置。
【請求項４】
前記状況識別子は、対話文を提供するユーザごとに異なる、
請求項３に記載の文章生成装置。
【請求項５】
前記評価手段が行った評価の結果に基づいて、対話文をユーザに提供する提供手段をさらに有し、
前記提供手段は、特定のユーザに提供した対話文に含まれるＮグラム文字列のそれぞれについて、ユーザごとの提供回数を記録する、
請求項１から４に記載の文章生成装置。
【請求項６】
前記キーワード取得手段は、過去に対話文を生成した際の結果に基づいて、取得したキーワードのうち、特定のキーワードを削除するか否かを判定する、
請求項１から５に記載の文章生成装置。
【請求項７】
ユーザに提供する対話文を生成する文章生成装置が行う文章生成方法であって、
一つ以上のキーワードを取得するキーワード取得ステップと、
連続した単語または文字同士の前後の共起関係を表すＮグラム文字列が、出現頻度とともに定義されたモデルであるＮグラムモデルにアクセスするアクセスステップと、
前記キーワードに基づいて、前記Ｎグラムモデルから複数のＮグラム文字列を抽出し、前記抽出したＮグラム文字列の一部が重複するように結合することで対話文を生成する生成ステップと、
前記結合した複数のＮグラム文字列の出現頻度を前記Ｎグラムモデルから取得し、前記出現頻度に基づいて算出した第一のスコアを用いて、前記生成した対話文を評価する評価ステップと、
を含む、文章生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文章を生成する装置に関する。
【背景技術】
【０００２】
人間と対話を行う装置において、文章を自動生成する技術が利用されている。このような装置においては、多くの場合、事前に設計された対話データベースを利用して文章の生成を行っている。
【０００３】
対話データベースを利用して文章を生成する場合、文章のバリエーションが限定されてしまい、対話の範囲が限られてしまうという問題がある。これに対応するため、特許文献１に記載の発明では、入力された文章に対して、事前に設計された対話データベースとの相関度を算出し、相関度に基づいて、事前に設計された対話データベースを利用して文章を生成するか、対話設計なしに文章を自動生成するかを選択している。特許文献１に記載の発明によると、常に同じ対話データベースを選択して文章を生成することがなくなるため、対話にメリハリをつけることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−０２５６０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の発明では、入力された文章と、対話データベースとの相関度が低い場合に、事前設計されたデータベースを用いずに文章を生成するため、文章の生成方法によっては自然な文章が生成されないという課題がある。
しかし、事前に設計された対話データベースのみを用いると、前述したように対話がワンパターンになってしまい、ユーザが飽きてしまうという問題が発生する。
【０００６】
本発明は上記の課題を考慮してなされたものであり、自然な文章を生成する文章生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る文章生成装置は、
ユーザに提供する対話文を生成する文章生成装置であって、一つ以上のキーワードを取得するキーワード取得手段と、連続した単語または文字同士の前後の共起関係を表すＮグラム文字列が、出現頻度とともに定義されたモデルであるＮグラムモデルにアクセスするアクセス手段と、前記キーワードに基づいて、前記Ｎグラムモデルから複数のＮグラム文字列を抽出し、前記抽出したＮグラム文字列の一部が重複するように結合することで対話文を生成する生成手段と、前記結合した複数のＮグラム文字列の出現頻度を前記Ｎグラムモデルから取得し、前記出現頻度に基づいて算出した第一のスコアを用いて、前記生成した対話文を評価する評価手段と、を有することを特徴とする。
【０００８】
本発明に係る文章生成装置は、Ｎグラムモデルに含まれるＮグラム文字列を結合することで文章を生成する。Ｎグラムモデルとは、単語列に含まれる単語の生起確率が、直前のＮ−１単語に依存する確率的言語モデルである。
例えば、３グラム（tri-gram）モデルとは、連続する２単語に続く１単語の出現頻度が定義されたモデルである。言い換えると、３つの単語が順序通りに出現する頻度が定義さ
れたモデルである。また、Ｎグラム文字列とは、Ｎグラムモデルに含まれる、Ｎ個の連続する単語からなるデータである。
Ｎグラムモデルは、コーパスを用いて生成されたものであってもよい。また、Ｎグラムモデルは、本発明に係る文章生成装置が保有していてもよいし、文章生成装置の外部にあってもよい。
なお、Ｎグラムとは、Ｎ個の文字からなる文字列と解される場合もあるが、本明細書では、Ｎ個の単語からなる文字列であるものとする。もちろん、Ｎ個の文字からなる文字列であってもよい。
【０００９】
キーワード取得手段は、対話文において重要となるキーワード（例えば、対話相手に伝達すべき情報）を取得する手段である。
また、生成手段は、取得したキーワードに基づいて、複数のＮグラム文字列を抽出して結合することで対話文を生成する手段である。例えば、指定したキーワードがそれぞれ含まれる複数のＮグラム文字列を抽出し、文字列の一部が重複するようにそれらを順次結合する。これにより、自然な対話文を生成することができる。なお、キーワードは、結合するＮグラム文字列の少なくともいずれかに含まれていればよい。
【００１０】
また、評価手段は、Ｎグラム文字列に関連付いた出現頻度に基づいて、生成した対話文を評価する手段である。対話文に含まれるＮグラム文字列の出現頻度（Ｎグラムモデルに定義されている出現頻度）が高いほど、自然な文章であることが推定できるため、出現頻度に基づいて算出したスコアによって、対話文を評価することができる。
【００１１】
また、前記評価手段は、評価対象の対話文を、生成時とは異なる位置で区切られた複数のＮグラム文字列に分解し、前記分解したＮグラム文字列の出現頻度を前記Ｎグラムモデルから取得し、前記出現頻度に基づいて算出した第二のスコアをさらに用いて前記対話文の評価を行うことを特徴としてもよい。
【００１２】
対話文は複数のＮグラム文字列を結合して生成したものであるため、Ｎグラム文字列自体は自然な文字列であっても、Ｎグラム文字列同士を接続した結果、不自然な表現になってしまうおそれがある。そこで、対話文を、生成時とは異なる位置で再度複数のＮグラム文字列に分解し、得られたＮグラム文字列がＮグラムモデルに含まれるかを検証する。この結果、出現頻度が低い（あるいは含まれていない）場合、自然な文章ではないと推定することができる。このように、第一のスコアと第二のスコアを併用することで、対話文が自然な文章であるか否かをより精度よく評価することができる。
【００１３】
また、前記Ｎグラムモデルは、特定の状況におけるＮグラム文字列の出現頻度を、前記特定の状況を表す状況識別子とともに定義したデータであり、前記評価手段は、対話文を生成する際の状況に対応する状況識別子を取得し、当該状況識別子に対応するＮグラム文字列の出現頻度を前記Ｎグラムモデルから取得することを特徴としてもよい。
また、前記状況識別子は、対話文を提供するユーザごとに異なることを特徴としてもよい。
【００１４】
Ｎグラムモデルは単語同士の接続関係が定義されたモデルであるが、単語同士の接続関係は、文章が生成された際のシチュエーションによって大きく変化する。例えば、対話を行う相手、場所、時間帯等によってＮグラムモデルの特性は変化しうる。そこで、ＮグラムモデルにおけるＮグラム文字列の出現頻度を、状況識別子と関連付けて定義し、対話文を評価する際に、状況識別子に対応する出現頻度を取得する。かかる構成によると、より精度よく対話文を評価することができる。
【００１５】
また、本発明に係る文章生成装置は、前記評価手段が行った評価の結果に基づいて、対
話文をユーザに提供する提供手段をさらに有し、前記提供手段は、特定のユーザに提供した対話文に含まれるＮグラム文字列のそれぞれについて、ユーザごとの提供回数を記録することを特徴としてもよい。
【００１６】
このように、あるユーザに対して対話文を生成した際に、使用したＮグラム文字列とその回数を記録するようにしてもよい。この情報を利用することで、例えば、Ｎグラムモデルにアクセスせずとも、生成した対話文を簡易的に評価することができるようになる。また、これにより、データ量や演算量を削減することが可能になる。
【００１７】
また、前記キーワード取得手段は、過去に対話文を生成した際の結果に基づいて、取得したキーワードのうち、特定のキーワードを削除するか否かを判定することを特徴としてもよい。
【００１８】
例えば、全てのキーワードを含んだ対話文を生成することが困難であったり、あるキーワードを含ませることでスコアが大幅に低下することが、過去の生成結果に基づいて分かっている場合、該当するキーワードを削除（省略）するようにしてもよい。
【００１９】
なお、本発明は、上記手段の少なくとも一部を含む文章生成装置として特定することができる。また、前記文章生成装置が行う文章生成方法として特定することもできる。上記処理や手段は、技術的な矛盾が生じない限りにおいて、自由に組み合わせて実施することができる。
【発明の効果】
【００２０】
本発明によれば、自然な文章を生成する文章生成装置を提供することができる。
【図面の簡単な説明】
【００２１】
【図１】第一の実施形態に係る対話文生成装置１０のシステム構成図である。
【図２】Ｎグラムモデルを説明する図である。
【図３】第一の実施形態における対話文生成装置１０の処理フローチャート図である。
【図４】第二の実施形態における対話文生成装置１０の処理フローチャート図である。
【図５】第二のスコアの算出方法を説明する図である。
【図６】第二のスコアの算出方法を説明する図である。
【図７】第三の実施形態に係る対話文生成装置１０のシステム構成図である。
【図８】第三の実施形態におけるＮグラムモデルの例である。
【図９】第四の実施形態において生成されるデータを説明する図である。
【発明を実施するための形態】
【００２２】
（第一の実施形態）
<システム構成>
以下、本発明の好ましい実施形態について図面を参照しながら説明する。
第一の実施形態に係る対話文生成装置１０は、取得したキーワードに基づいて、ユーザに提供する対話文を生成する装置である。対話文生成装置１０は、コミュニケーションロボットにモジュールとして搭載されたものであってもよいし、独立した情報処理装置であってもよい。また、コンピュータに組み込まれ、ソフトウェアによって実行されてもよい。例えば、カーナビゲーション機能を提供するコンピュータに組み込まれたものであってもよい。
【００２３】
図１は、第一の実施形態に係る対話文生成装置１０のシステム構成図である。
本実施形態に係る対話文生成装置１０は、キーワード取得部１１、対話文生成部１２、対話文評価部１３、対話文出力部１４を含んで構成される。
【００２４】
キーワード取得部１１は、対話文を生成する際のキーワードを取得する手段である。キーワードは、対話相手に伝達すべき情報など、対話文において重要となる単語である。例えば、「明日の天気が晴れである」という情報を伝達する場合、「明日」「天気」「晴れ」といった単語がキーワードとなる。キーワードは、外部装置（例えば、ユーザに提供する情報を取得するコンピュータ）によって生成され、キーワード取得部１１によって取得される。
【００２５】
対話文生成部１２は、取得したキーワードに基づいて、自然言語による対話文を生成する手段である。例えば、「明日」「天気」「晴れ」というキーワードが入力された場合に、「明日の天気は晴れみたいだよ。」といった文章を生成する。
対話文生成部１２は、データベース２０に記憶されているＮグラムモデルにアクセスすることで対話文の生成を行う。なお、データベース２０に記憶されているＮグラムモデルは、コーパスに基づいて随時更新されるものとする。
【００２６】
ここで、Ｎグラムモデルについて説明する。
Ｎグラムモデルとは、連続するＮ−１個の単語があった場合における、当該Ｎ−１個の単語に続く１単語の出現頻度を定義したモデルである。言い換えると、Ｎ個の単語が順序通りに出現する頻度ないし確率が定義されたモデルである。図２（Ａ）に、Ｎグラムモデルの例を示す。本実施形態では、Ｎ＝３とする。すなわち、３つの単語の並びが、頻度とともに定義されているモデルを使用する。
図２（Ａ）に示したモデルは、図２（Ｂ）に示した文章を学習データとして生成されたものである。例えば、「明日の天気は晴れみたいだよ」という文章が学習データとして入力された場合、文章が、「明日／の／天気／は／晴れ／みたいだ／よ」といったように単語（形態素）に分割され、Ｎグラムモデルの対応する行が更新される。本例の場合、ＩＤ＝１，３，４，７で表された行の「頻度」に１が加算される（ＩＤ＝１〜１０以外は省略）。
【００２７】
Ｎグラムモデルは、実際に用いられた文章に基づいて生成されたものであるため、単語の並び同士を連結することで、自然言語による文章を生成することができる。本明細書では、文字列１，文字列２，文字列３の並びをＮグラム文字列と称する。
例えば、ＩＤが１，４，１０であるＮグラム文字列を連結することで、「明日の天気は晴れだってさ」という文章を得ることができる。
【００２８】
対話文生成部１２は、以下に説明する処理を行うことで、対話文を生成する。なお、ここでは、図２（Ａ）に示したＮグラムモデルを用いた例を述べる。
【００２９】
（１）取得した複数のキーワードを含むＮグラム文字列をそれぞれ抽出する
例えば、「明日」「天気」「晴れ」というキーワードが得られた場合、図２（Ａ）に示したＮグラムモデルから、以下のＮグラム文字列が抽出される。
＜「明日」を含むＮグラム文字列＞
「明日の天気」「明日は晴れ」
＜「天気」を含むＮグラム文字列＞
「明日の天気」「明後日の天気」「の天気は」「天気は晴れ」「天気は曇り」「天気は雨」
＜「晴れ」を含むＮグラム文字列＞
「天気は晴れ」「晴れみたいだよ」「明日は晴れ」「晴れの予報」「晴れだってさ」
【００３０】
（２）抽出したＮグラム文字列をキーワード順に連結する
ここでは、Ｎグラム文字列の最後の文字列が、次のＮグラム文字列の最初の文字列と重複するように、得られたＮグラム文字列をキーワード順に連結する。
本例の場合、以下のように連結が行われ、３パターンの文章が生成される。
「明日の天気／天気は晴れ／晴れみたいだよ」＝「明日の天気は晴れみたいだよ」
「明日の天気／天気は晴れ／晴れの予報」＝「明日の天気は晴れの予報」
「明日の天気／天気は晴れ／晴れだってさ」＝「明日の天気は晴れだってさ」
なお、「明日は晴れ」が選択された場合、「天気」に対応するＮグラム文字列が続かないため、文章は生成されない。
同様に、「明日の天気」に続いて「天気は曇り」が選択された場合、「晴れ」に対応するＮグラム文字列が続かないため、文章は生成されない。
【００３１】
このように、対話文生成部１２は、取得したキーワードとＮグラムモデルに基づいて、複数の対話文（対話文の候補）を生成する。生成された複数の対話文は、対話文評価部１４へ送信される。
なお、本例では、Ｎグラム文字列を連結する際に、１単語のみが重複するようにしたが、２つ以上の単語が重複するようにしてもよい。例えば、「明日／の／天気」「の／天気／は」「天気／は／晴れ」というＮグラム文字列同士を連結し、「明日の天気は晴れ」という文章を生成してもよい。
【００３２】
対話文評価部１３は、対話文生成部１２が生成した複数の対話文に対応するスコア（本発明における第一のスコア）を算出する手段である。
対話文評価部１３は、対話文を構成するＮグラム文字列の出現頻度の合計をスコアとして算出する。すなわち、よく使われるＮグラム文字列が含まれているほど、対話文のスコアが高くなる。よって、対話文のスコアが高いほど、対話文が自然な表現であることが期待できる。
【００３３】
前述した例の場合、「明日の天気は晴れみたいだよ」という対話文に対するスコアは、２０＋２０＋２０＝６０となる。また、「明日の天気は晴れの予報」という対話文に対するスコアは、２０＋２０＋３＝４３となる。また、「明日の天気は晴れだってさ」という対話文に対するスコアは、２０＋２０＋２＝４２となる。
対話文評価部１３が算出したスコアは、対話文と関連付けられて対話文出力部１４へ送信される。
【００３４】
対話文出力部１４は、取得したスコアに基づいて、出力する対話文を決定する手段である。本例の場合、最もスコアが高い「明日の天気は晴れみたいだよ」という対話文を、ユーザに提供する文章として決定する。
【００３５】
<処理フローチャート>
次に、本実施形態に係る対話文生成装置１０が行う処理について、処理フローチャート図である図３を参照しながら説明する。
まず、ステップＳ１１にて、キーワード取得部１１が、外部装置からキーワードを取得する。
【００３６】
次に、ステップＳ１２にて、対話文生成部１１が、取得したキーワードに基づいて、Ｎグラムモデルから複数のＮグラム文字列を抽出し、対話文を生成する。本例では、キーワードごとに対応するＮグラム文字列を複数抽出し、先頭の１単語と末尾の１単語が重複するように、得られたＮグラム文字列をキーワード順に連結する。これにより、例えば、ｎ個のキーワードが与えられた場合、ｎ個のＮグラム文字列が連結された対話文が複数生成される。
【００３７】
次に、ステップＳ１３にて、対話文評価部１３が、複数の対話文に対してそれぞれスコア（以下、第一のスコア）を算出する。ここでは、前述したように、対話文に含まれるＮグラム文字列の出現頻度を合計したものが第一のスコアとして算出される。
次に、ステップＳ１４にて、対話文出力部１４が、最もスコアが高い対話文を、出力対象の対話文として決定する。決定された対話文は、不図示の出力手段（音声合成モジュールやスピーカなど）を通して、音声データとしてユーザに提供される。
【００３８】
以上説明したように、第一の実施形態では、キーワードに基づいて複数のＮグラム文字列を抽出し、当該Ｎグラム文字列を連結することで対話文を生成する。これにより、キーワードをユーザに伝達するための自然な文章を取得することができる。また、生成した対話文を、Ｎグラム文字列の出現頻度に基づいてスコアリングするため、最も言語的に自然な対話文を選択することができる。
【００３９】
（第一の実施形態の変形例）
なお、第一の実施形態では、Ｎ＝３であるものとして説明したが、Ｎは４以上であってもよい。また、使用するＮグラムモデルにおいて、Ｎは全て同一である必要はない。例えば、３グラムモデルと４グラムモデルを混在させたものを用いてもよい。
【００４０】
また、第一の実施形態では、取得した全てのキーワードを用いて対話文を生成したが、全てのキーワードを含んだ対話文を生成することが困難である場合、一部のキーワードを省略してもよい。例えば、あるキーワードを含ませることで、スコアが大幅に低下する場合や、対話文の生成自体ができなくなる場合、当該キーワードを省略して対話文を生成するようにしてもよい。
【００４１】
また、この場合、使用したキーワードや、省略したキーワードをログに記録してもよい。また、当該ログを参照することで、使用に適さないキーワードを事前にフィルタリングしてもよい。なお、記録は、キーワードごとに行ってもよいし、キーワードグループ単位で行ってもよい。
例えば、「明日／天気／地震」というキーワードが取得された場合であって、「地震」というキーワードを省略した場合、単純に「地震」というキーワードを省略した旨を記録してもよいし、「明日／天気／地震」というキーワードグループに対して、「地震」というキーワードを省略した旨をセットにして記録してもよい。
【００４２】
（第二の実施形態）
第一の実施形態では、使用されているＮグラム文字列の出現頻度に基づいて対話文のスコアリングを行った。しかし、この方法では、Ｎグラム文字列を連結した際に不自然な表現となってしまう場合がある。
【００４３】
例えば、「明日／の／予定」「予定／は／天気／次第」「次第／に／晴れる」といったＮグラム文字列があった場合、「明日の予定は天気次第に晴れる」といった不自然な対話文が生成されてしまうことがある。この場合、第一の実施形態で説明したスコアリング方法では、対話文を正しく評価することができない。
第二の実施形態は、これに対応するため、生成された対話文を異なる方法によって更に評価する実施形態である。
【００４４】
第二の実施形態では、第一の実施形態で説明したスコアリングを行い、第一のスコアを取得した後で、対話文評価部１３が、以下に説明する処理によって、第二のスコアを取得する。図４は、第二の実施形態における対話文生成装置１０が行う処理のフローチャート図である。ステップＳ１１〜Ｓ１３までは、第一の実施形態と同様であるため、説明は省
略する。
【００４５】
図５は、ステップＳ１３Ａにおいて、対話文評価部１３が行うスコア算出方法を説明する図である。
第一の実施形態では、連結を行ったＮグラム文字列（すなわち、文字列ＡＢＣ，ＣＤＥ，ＥＦＧ，ＧＨＩ）にそれぞれ対応する出現頻度を加算することで第一のスコアを算出した。
これに対し、第二の実施形態では、一度生成した対話文を、異なる区切り位置で再度Ｎグラム文字列に分解する。ここでは、単語Ａと単語Ｉを除外し、文字列ＢＣＤ，ＤＥＦ，ＦＧＨを得るものとする。そして、得られた文字列が、Ｎグラムモデルに存在するか否かを判定する。
【００４６】
もし、生成した対話文（ＡＢＣＤＥＦＧＨＩ）が自然な文章である場合、文字列ＢＣＤ，ＤＥＦ，ＦＧＨについても、それぞれＮグラムモデルに存在する可能性が高い。一方、当該対話文が不自然なものである場合、文字列ＢＣＤ，ＤＥＦ，ＦＧＨは、Ｎグラムモデルに存在する可能性が低いか、または、存在しても出現頻度が極めて低い可能性がある。
第二の実施形態では、このように、再度分解した文字列（文字列ＢＣＤ，ＤＥＦ，ＦＧＨ）を用いて、Ｎグラムモデルから当該文字列の出現頻度を取得し、合計したものを第二のスコアとする。
【００４７】
図６を参照しながら、より具体的な例を挙げる。
ここでは、キーワードとして「母」「かき揚げ」「おいしい」という３つの単語が与えられたものとする。また、第一の実施形態で説明した方法によって対話文を生成した結果、以下のような対話文が生成されたものとする。
（対話文１）「いつもの母のかき揚げ、おいしいね。」
（対話文２）「いつもの母のかき揚げはおいしいね。」
（対話文３）「いつもの母のかき揚げがおいしいね。」
（対話文４）「いつもの母のかき揚げとおいしいね。」
（対話文５）「いつものかき揚げ、母はおいしいね。」
ここで挙げた対話文は一例であるが、この中には、対話文４と対話文５など、文章として成り立っていないものがある。
【００４８】
そこで、第二の実施形態では、ステップＳ１３Ａにて、対話文評価部１３が以下の処理を行う。なお、ここでは、対話文４を例に説明する。
【００４９】
対話文４は、「いつも／の／母」「母／の／かき揚げ」「かき揚げ／と／おいしい」「おいしい／ね／。」という４つのＮグラム文字列からなる。なお、対話文４に対応する第一のスコアは、４つのＮグラム文字列の出現頻度の合計であるため、２６＋２６＋１＋２６＝７９となる。
【００５０】
（１）ステップＳ１２で連結を行ったのとは異なる位置で文字列を分解する
例えば、「いつも／の／母」「母／の／かき揚げ」「かき揚げ／と／おいしい」「おいしい／ね／。」というＮグラム文字列を連結した場合、行頭の「いつも」と末尾の「。」を省略し、「の／母／の」「の／かき揚げ／と」「と／おいしい／ね」という文字列に分解する。
【００５１】
（２）分解した文字列の出現頻度を取得する
本例では、「の／母／の」という文字列と、「の／かき揚げ／と」という文字列と、「と／おいしい／ね」という文字列が、Ｎグラムモデルに存在しているかを判定し、存在している場合、出現頻度を取得する。もし、存在していない場合、出現頻度＝０として扱う
。
【００５２】
この結果、「の／母／の」という文字列の出現頻度は２６であり、「の／かき揚げ／と」という文字列の出現頻度が０であることがわかる。また、「と／おいしい／ね」という文字列の出現頻度が０であることがわかる。すなわち、第二のスコアは、２６＋０＋０＝２６となる。
【００５３】
以上に説明した処理によると、対話文４に対応する第一のスコアは７９であり、第二のスコアは２６であることがわかる。
第二の実施形態では、第一のスコアと第二のスコアの合計値を、対話文に対するトータルのスコアとする。（本例では１０５となる）
【００５４】
なお、対話文１の場合、「いつも／の／母」「母／の／かき揚げ」「かき揚げ／、／おいしい」「おいしい／ね／。」という４つのＮグラム文字列からなる。対話文１に対応する第一のスコアは、４つのＮグラム文字列の出現頻度の合計であるため、２６＋２６＋１０＋２６＝８８となる。また、再分解後のＮグラム文字列は、「の／母／の」「の／かき揚げ／、」「、／おいしい／ね」という３つのＮグラム文字列からなる。すなわち、第二のスコアは、２６＋１０＋１０＝４６となり、トータルのスコアは１３４となる。すなわち、対話文１と対話文４とを比較すると、対話文１のほうがより自然な文章であることがわかる。
第二の実施形態におけるステップＳ１４では、第一のスコアと第二のスコアの合計に基づいて、出力する対話文を決定する。例えば、第一のスコアと第二のスコアの合計が最も高い対話文を、出力する対話文とする。
【００５５】
以上説明したように、第二の実施形態では、一度生成した対話文を、異なる区切り位置で再度分解し、分解したＮグラム文字列の出現頻度に基づいて第二のスコアを算出する。これにより、生成した対話文が自然な文章であるか否かをより精度よく評価することができる。
【００５６】
なお、第二の実施形態では、第一のスコアと第二のスコアの合計をトータルのスコアとしたが、これ以外の方法を用いてもよい。例えば、分解後のＮグラム文字列のうち、一つでも出現頻度が極端に少ないものがあった場合、不自然な表現が含まれていると判定し、対話文全体のスコアを低くする（または対話文自体を削除する）処理を行ってもよい。
【００５７】
（第三の実施形態）
Ｎグラムモデルは単語同士の接続関係を表したモデルであるが、単語同士の接続関係は、対話が行われるシチュエーションや相手によって大きく変化する可能性がある。
第三の実施形態は、これに対応するため、対話がある状況下で行われることを判定し、当該状況を表す識別子（以下、状況識別子）を用いて対話文の評価を行う実施形態である。
【００５８】
図７は、第三の実施形態に係る対話文生成装置１０のシステム構成図である。第三の実施形態に係る対話文生成装置１０は、ユーザとの対話における状況（ユースケース）を判定し、状況識別子を出力する手段である状況判定部１５を有している。状況識別子は、例えば、対話を行う相手、対話を行う場所、対話を行う時間帯などを特定する識別子であるが、これ以外であってもよい。状況判定部１５は、例えば、不図示のセンサやシステム時計等を用いて状況を判定し、状況識別子を生成する。
【００５９】
また、第三の実施形態では、図８に示したように、Ｎグラム文字列の出現頻度が、状況識別子ごとに分類されて記録されている。
第三の実施形態では、ステップＳ１１でキーワード取得部１１がキーワードを取得すると同時に、状況判定部１５が状況識別子を取得する。そして、対話文評価部１３が、第一および第二のスコアを取得する際に、取得した状況識別子に対応する出現頻度を取得して利用する。
【００６０】
第三の実施形態によると、対話を行うシチュエーションに適合したデータを取得できるため、より適切な対話文を生成することができる。
【００６１】
なお、ある状況下において対話文を生成した場合に、生成した対話文に関する情報を、状況識別子と対応づけて記録してもよい。例えば、使用されたＮグラム文字列について、状況識別子ごとの出現頻度を加算してもよい。
また、出現頻度とは別に、状況識別子ごとのＮグラム文字列の使用回数を表すフィールドを設け、Ｎグラム文字列の使用回数をカウントするようにしてもよい。この場合、記憶された使用回数をさらに用いて対話文の評価を行うようにしてもよい。
【００６２】
また、本実施形態では、状況識別子を考慮して対話文の評価を行ったが、状況識別子を考慮して対話文を評価した結果と、状況識別子を考慮せずに対話文を評価した結果の双方を取得したうえで、双方を統合して最終的なスコアを得るようにしてもよい。
【００６３】
（第四の実施形態）
第四の実施形態は、生成した対話文を構成するＮグラム文字列の使用回数を、ユーザごとに記憶して利用する実施形態である。
第四の実施形態では、ユーザに対するＮグラム文字列の使用回数を表すテーブル（以下、使用履歴テーブル）を設け、対話文出力部１４が、対話文を生成する際に、使用履歴テーブルを更新する。図９に使用履歴テーブルの例を示す。使用履歴テーブルは、Ｎグラムモデルとは別に、対話文生成装置１０内の不揮発メモリ（不図示）に記憶される。
【００６４】
第四の実施形態では、Ｎグラム文字列を使用した回数をユーザごとに記録するため、これを用いて、対話文を簡易的に評価することができる。例えば、生成された対話文に含まれるＮグラム文字列の過去の使用回数を取得し、所定の値以上である場合に、第一のスコア（および第二のスコア）の算出を省略するようにしてもよい。これにより、通信量や演算量を削減することができる。
【００６５】
（変形例）
上記の実施形態はあくまでも一例であって、本発明はその要旨を逸脱しない範囲内で適宜変更して実施しうる。
【００６６】
例えば、実施形態の説明では、一つのキーワードについて一つのＮグラム文字列を抽出したが、生成された対話文にキーワードが含まれていれば、必ずしも全てのＮグラム文字列にキーワードが含まれていなくてもよい。ただし、キーワードが含まれていないＮグラム文字列が長く続くと、意図しない文章になるおそれがあるため、適度な間隔でキーワードを含ませるようにするとよい。
【００６７】
また、実施形態の説明では、Ｎグラム文字列ごとに出現頻度を合計したが、一つのＮグラム文字列に二つ以上のキーワードが含まれている場合、スコアを高くする補正を行ってもよい。一つのＮグラム文字列にキーワードが複数含まれている場合、対話文としてより適切な文字列である可能性が高いためである。
【００６８】
また、実施形態の説明では、出現頻度の合計をスコアとしたが、出現頻度の平均値を用いてもよい。例えば、連結を行ったＮグラム文字列の個数が対話文ごとに異なる場合など
、合計値よりも平均値を用いたほうがより適切なスコアが算出できる場合があるためである。
また、実施形態の説明では、独立したデータベース２０にＮグラムモデルを記憶させたが、Ｎグラムモデルは対話文生成装置１０が記憶していてもよい。
【００６９】
なお、本明細書では、Ｎグラム文字列とは、Ｎ個の単語からなる文字列であるものとしたが、Ｎグラム文字列を、Ｎ個の文字からなる文字列と解してもよい。この場合、明細書中で「単語」として説明している箇所を「文字」に置き換えればよい。
【符号の説明】
【００７０】
１０・・・対話文生成装置
１１・・・キーワード取得部
１２・・・対話文生成部
１３・・・対話文評価部
１４・・・対話文出力部
２０・・・データベース
【図１】
2018045594.tif 000003
【図２】
2018045594.tif 000004
【図３】
2018045594.tif 000005
【図４】
2018045594.tif 000006
【図５】
2018045594.tif 000007
【図６】
2018045594.tif 000008
【図７】
2018045594.tif 000009
【図８】
2018045594.tif 000010
【図９】
2018045594.tif 000011