(57)【要約】【課題】応答関係にある発話データのペアのパターンを抽出することができるようにする。【解決手段】発話ペア抽出部２２によって、対話データから、発話ペアを各々抽出し、単語パターン取得部２３によって、発話ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである単語パターンを取得し、抽象化パターン取得部２４によって、発話ペアの先に発話された発話データの意味情報を含む文字列と後に発話された発話データを表す単語列とのペアである抽象化パターン取得する。パターン登録部２５によって、出現頻度が閾値以上となる単語パターン及び抽象化パターンを出力する。【選択図】図１
2014222413.tif 000002
【特許請求の範囲】
【請求項１】
複数の発話データを含む対話データから、応答関係にある発話データのペアを各々抽出する発話ペア抽出部と、
前記発話ペア抽出部によって抽出された前記発話データのペアの各々について、前記ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである単語パターン、及び前記ペアの先に発話された発話データの意味情報を含む文字列と後に発話された発話データを表す単語列とのペアである抽象化パターンの少なくとも一方を取得するパターン取得部と、
前記パターン取得部によって取得された単語パターンのうちの、前記対話データにおける前記単語パターンの出現頻度が閾値以上となる単語パターン、又は前記パターン取得部によって取得された抽象化パターンのうちの、前記対話データにおける前記抽象化パターンの出現頻度が閾値以上となる抽象化パターンを出力するパターン出力部と、
を含む対話パターン抽出装置。
【請求項２】
前記パターン取得部は、
前記発話ペア抽出部によって抽出された前記発話データのペアの各々について、前記ペアの前記先に発話された発話データの形態素解析結果に基づいて得られる単語列と前記後に発話された発話データの形態素解析結果に基づいて得られる単語列とのペアを、前記単語パターンとして取得し、又は前記ペアの前記先に発話された発話データの形態素解析結果に基づいて得られる単語の各々の意味情報を含む文字列と前記後に発話された発話データの形態素解析結果に基づいて得られる単語列とのペアを、前記抽象化パターンとして取得する請求項１記載の対話パターン抽出装置。
【請求項３】
応答関係にある発話データのペアの各々について予め取得された、前記ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである、複数の単語パターン、及び前記発話データのペアの各々について予め取得された、前記ペアの前記先に発話された発話データの意味情報を含む文字列と前記後に発話された発話データを表す単語列とのペアである、複数の抽象化パターンの少なくとも一方を記憶した記憶部と、
入力されたユーザの発話データに基づいて、前記発話データを表す単語列及び前記発話データの意味情報を含む文字列の少なくとも一方を取得する取得部と、
前記取得部によって取得された前記発話データを表す単語列と、前記ペアの前記先に発話された発話データを表す単語列とが一致すると判断される前記単語パターンを、前記記憶部に記憶された前記複数の単語パターンから検索する、又は前記取得部によって取得された前記発話データの意味情報を含む文字列と、前記ペアの前記先に発話された発話データの意味情報を含む文字列とが一致すると判断される前記抽象化パターンを、前記記憶部に記憶された前記複数の抽象化パターンから検索する検索部と、
前記検索部によって検索された前記単語パターン又は前記抽象化パターンの、前記後に発話された発話データを表す単語列を、前記ユーザの発話データに対する応答として出力する応答部と、
を含む対話装置。
【請求項４】
応答関係にある発話データのペアの各々について予め取得された、前記ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである、複数の単語パターン、及び前記発話データのペアの各々について予め取得された、前記ペアの前記先に発話された発話データの意味情報を含む文字列と前記後に発話された発話データを表す単語列とのペアである、複数の抽象化パターンを記憶した記憶部と、
入力されたユーザの発話データに基づいて、前記発話データを表す単語列、及び前記発話データの意味情報を含む文字列を取得する取得部と、
前記取得部によって取得された前記発話データを表す単語列と、前記ペアの前記先に発話された発話データを表す単語列とが一致すると判断される前記単語パターンを、前記記憶部に記憶された前記複数の単語パターンから検索し、前記取得部によって取得された、前記発話データの意味情報を含む文字列と、前記ペアの前記先に発話された発話データの意味情報を含む文字列とが一致すると判断される前記抽象化パターンを、前記記憶部に記憶された前記複数の抽象化パターンから検索する検索部と、
前記検索部によって前記単語パターンが検索された場合には、前記単語パターンの、前記後に発話された発話データを表す単語列を、前記ユーザの発話データに対する応答として出力し、前記検索部によって前記単語パターンが検索されなかった場合であって、かつ、前記検索部によって前記抽象化パターンが検索された場合には、前記抽象化パターンの、前記後に発話された発話データを表す単語列を、前記ユーザの発話データに対する応答として出力する応答部と、
を含む対話装置。
【請求項５】
発話ペア抽出部によって、複数の発話データを含む対話データから、応答関係にある発話データのペアを各々抽出し、
パターン取得部によって、前記発話ペア抽出部によって抽出された前記発話データのペアの各々について、前記ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである単語パターン、及び前記ペアの先に発話された発話データの意味情報を含む文字列と後に発話された発話データを表す単語列とのペアである抽象化パターンの少なくとも一方を取得し、
パターン出力部によって、前記パターン取得部によって取得された単語パターンのうちの、前記対話データにおける前記単語パターンの出現頻度が閾値以上となる単語パターン、又は前記パターン取得部によって取得された抽象化パターンのうちの、前記対話データにおける前記抽象化パターンの出現頻度が閾値以上となる抽象化パターンを出力する
対話パターン抽出方法
【請求項６】
応答関係にある発話データのペアの各々について予め取得された、前記ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである、複数の単語パターン、及び前記発話データのペアの各々について予め取得された、前記ペアの前記先に発話された発話データの意味情報を含む文字列と前記後に発話された発話データを表す単語列とのペアである、複数の抽象化パターンの少なくとも一方を記憶した記憶部を含む対話装置における対話方法であって、
取得部によって、入力されたユーザの発話データに基づいて、前記発話データを表す単語列及び前記発話データの意味情報を含む文字列の少なくとも一方を取得し、
検索部によって、前記取得部によって取得された前記発話データを表す単語列と、前記ペアの前記先に発話された発話データを表す単語列とが一致すると判断される前記単語パターンを、前記記憶部に記憶された前記複数の単語パターンから検索し、又は前記取得部によって取得された前記発話データの意味情報を含む文字列と、前記ペアの前記先に発話された発話データの意味情報を含む文字列とが一致すると判断される前記抽象化パターンを、前記記憶部に記憶された前記複数の抽象化パターンから検索し、
応答部によって、前記検索部によって検索された前記単語パターン又は前記抽象化パターンの、前記後に発話された発話データを表す単語列を、前記ユーザの発話データに対する応答として出力する
対話方法。
【請求項７】
応答関係にある発話データのペアの各々について予め取得された、前記ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである、複数の単語パターン、及び前記発話データのペアの各々について予め取得された、前記ペアの前記先に発話された発話データの意味情報を含む文字列と前記後に発話された発話データを表す単語列とのペアである、複数の抽象化パターンを記憶した記憶部を含む対話装置の対話方法であって、
取得部によって、入力されたユーザの発話データに基づいて、前記発話データを表す単語列、及び前記発話データの意味情報を含む文字列を取得し、
検索部によって、前記取得部によって取得された前記発話データを表す単語列と、前記ペアの前記先に発話された発話データを表す単語列とが一致すると判断される前記単語パターンを、前記記憶部に記憶された前記複数の単語パターンから検索し、前記取得部によって取得された、前記発話データの意味情報を含む文字列と、前記ペアの前記先に発話された発話データの意味情報を含む文字列とが一致すると判断される前記抽象化パターンを、前記記憶部に記憶された前記複数の抽象化パターンから検索し、
応答部によって、前記検索部によって前記単語パターンが検索された場合には、前記単語パターンの、前記後に発話された発話データを表す単語列を、前記ユーザの発話データに対する応答として出力し、前記検索部によって前記単語パターンが検索されなかった場合であって、かつ、前記検索部によって前記抽象化パターンが検索された場合には、前記抽象化パターンの、前記後に発話された発話データを表す単語列を、前記ユーザの発話データに対する応答として出力する
対話方法。
【請求項８】
コンピュータを、請求項１記載の対話パターン抽出装置を構成する各部として機能させるためのプログラム。
【請求項９】
コンピュータを、請求項３又は４記載の対話装置を構成する各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対話パターン抽出装置、対話装置、方法、及びプログラムに係り、特に、応答関係にある発話データのペアにおけるパターンを抽出する対話パターン抽出装置、方法、及びプログラム、並びに、応答関係にある発話データのペアにおけるパターンを用いて、ユーザの発話に対して応答する対話装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
人間同士が対話を行う場合、定型のやりとりというものがある。たとえば、「こんにちは」に対して「こんにちは」と返したり、「ありがとう」に対して「どういたしまして」と返したり、「こら」に対して「ごめんなさい」と返すようなやりとりのことである。これらの定型やりとりは人間同士の対話で頻出し、人間はごく自然に行っている。ただ、人間が常識的に行うこれらの定型やりとりは、常識の工学的な扱いの難しさから、計算機が苦手とするところである。このような定型やりとりを対話システムが実現するためには、上記のような応答を実現するための発話ペア（ユーザ入力発話（入力部）とそれに対応するシステム出力発話（出力部）；たとえばユーザ入力発話「こんにちは」とシステム出力発話「こんにちは」）をデータベースとして保持する必要がある。たとえば、米国の対話システムとして有名なALICE（非特許文献１）はこのような発話ペアを手書きで大量に作成し、定型やりとりを実現している。
【０００３】
手書きのコストを避けるため、入力部に対する出力部を自動的にデータから求める研究もある。たとえば、別所らはユーザの入力発話を元に、マイクロブログであるツイッター（Ｒ）を検索し、関連ツイートを得る。そして、そのツイートに対し応答しているツイートを取得し応答に用いている（非特許文献２）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Richard S. Wallace, "The Anatomy of A.L.I.C.E.," A.L.I.C.E. Artificial  Intelligence Foundation, Inc, 2004.
【非特許文献２】Bessho, F., Harada, T., and Kuniyoshi, Y. (2012) . "Dialog System Using Real-Time Crowdsourcing and Twitter Large-Scale Corpus." In Proc. SIGDIAL, pp. 227-231.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記の非特許文献１の手法では、網羅的な発話ペアを作成するには多大な手作業のコストがかかる。また、上記の非特許文献２の手法では、入力発話を元に検索するだけであり、定型やりとりとしての応答が適切に返せる保証はない。定型やりとりは人間にとっては極めて自然なやりとりであり、確実に行うことができないと、人間とシステムのスムーズなやりとりは実現できない。
【０００６】
本発明は、上記の事情を鑑みてなされたもので、応答関係にある発話データのペアのパターンを抽出することができる対話パターン抽出装置、方法、及びプログラムを提供することを目的とする。
【０００７】
また、応答関係にある発話データのペアのパターンに従って、ユーザの発話に対して応答することができる対話装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために第１の発明に係る対話パターン抽出装置は、複数の発話データを含む対話データから、応答関係にある発話データのペアを各々抽出する発話ペア抽出部と、前記発話ペア抽出部によって抽出された前記発話データのペアの各々について、前記ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである単語パターン、及び前記ペアの先に発話された発話データの意味情報を含む文字列と後に発話された発話データを表す単語列とのペアである抽象化パターンの少なくとも一方を取得するパターン取得部と、前記パターン取得部によって取得された単語パターンのうちの、前記対話データにおける前記単語パターンの出現頻度が閾値以上となる単語パターン、又は前記パターン取得部によって取得された抽象化パターンのうちの、前記対話データにおける前記抽象化パターンの出現頻度が閾値以上となる抽象化パターンを出力するパターン出力部と、を含んで構成されている。
【０００９】
第２の発明に係る対話パターン抽出方法は、発話ペア抽出部によって、複数の発話データを含む対話データから、応答関係にある発話データのペアを各々抽出し、パターン取得部によって、前記発話ペア抽出部によって抽出された前記発話データのペアの各々について、前記ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである単語パターン、及び前記ペアの先に発話された発話データの意味情報を含む文字列と後に発話された発話データを表す単語列とのペアである抽象化パターンの少なくとも一方を取得し、パターン出力部によって、前記パターン取得部によって取得された単語パターンのうちの、前記対話データにおける前記単語パターンの出現頻度が閾値以上となる単語パターン、又は前記パターン取得部によって取得された抽象化パターンのうちの、前記対話データにおける前記抽象化パターンの出現頻度が閾値以上となる抽象化パターンを出力する。
【００１０】
第３の発明に係る対話装置は、応答関係にある発話データのペアの各々について予め取得された、前記ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである、複数の単語パターン、及び前記発話データのペアの各々について予め取得された、前記ペアの前記先に発話された発話データの意味情報を含む文字列と前記後に発話された発話データを表す単語列とのペアである、複数の抽象化パターンの少なくとも一方を記憶した記憶部と、入力されたユーザの発話データに基づいて、前記発話データを表す単語列及び前記発話データの意味情報を含む文字列の少なくとも一方を取得する取得部と、前記取得部によって取得された前記発話データを表す単語列と、前記ペアの前記先に発話された発話データを表す単語列とが一致すると判断される前記単語パターンを、前記記憶部に記憶された前記複数の単語パターンから検索する、又は前記取得部によって取得された前記発話データの意味情報を含む文字列と、前記ペアの前記先に発話された発話データの意味情報を含む文字列とが一致すると判断される前記抽象化パターンを、前記記憶部に記憶された前記複数の抽象化パターンから検索する検索部と、前記検索部によって検索された前記単語パターン又は前記抽象化パターンの、前記後に発話された発話データを表す単語列を、前記ユーザの発話データに対する応答として出力する応答部と、を含んで構成されている。
【００１１】
第４の発明に係る対話方法は、応答関係にある発話データのペアの各々について予め取得された、前記ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである、複数の単語パターン、及び前記発話データのペアの各々について予め取得された、前記ペアの前記先に発話された発話データの意味情報を含む文字列と前記後に発話された発話データを表す単語列とのペアである、複数の抽象化パターンの少なくとも一方を記憶した記憶部を含む対話装置における対話方法であって、取得部によって、入力されたユーザの発話データに基づいて、前記発話データを表す単語列及び前記発話データの意味情報を含む文字列の少なくとも一方を取得し、検索部によって、前記取得部によって取得された前記発話データを表す単語列と、前記ペアの前記先に発話された発話データを表す単語列とが一致すると判断される前記単語パターンを、前記記憶部に記憶された前記複数の単語パターンから検索し、又は前記取得部によって取得された前記発話データの意味情報を含む文字列と、前記ペアの前記先に発話された発話データの意味情報を含む文字列とが一致すると判断される前記抽象化パターンを、前記記憶部に記憶された前記複数の抽象化パターンから検索し、応答部によって、前記検索部によって検索された前記単語パターン又は前記抽象化パターンの、前記後に発話された発話データを表す単語列を、前記ユーザの発話データに対する応答として出力する。
【００１２】
第５の発明に係る対話装置は、応答関係にある発話データのペアの各々について予め取得された、前記ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである、複数の単語パターン、及び前記発話データのペアの各々について予め取得された、前記ペアの前記先に発話された発話データの意味情報を含む文字列と前記後に発話された発話データを表す単語列とのペアである、複数の抽象化パターンを記憶した記憶部と、入力されたユーザの発話データに基づいて、前記発話データを表す単語列、及び前記発話データの意味情報を含む文字列を取得する取得部と、前記取得部によって取得された前記発話データを表す単語列と、前記ペアの前記先に発話された発話データを表す単語列とが一致すると判断される前記単語パターンを、前記記憶部に記憶された前記複数の単語パターンから検索し、前記取得部によって取得された、前記発話データの意味情報を含む文字列と、前記ペアの前記先に発話された発話データの意味情報を含む文字列とが一致すると判断される前記抽象化パターンを、前記記憶部に記憶された前記複数の抽象化パターンから検索する検索部と、前記検索部によって前記単語パターンが検索された場合には、前記単語パターンの、前記後に発話された発話データを表す単語列を、前記ユーザの発話データに対する応答として出力し、前記検索部によって前記単語パターンが検索されなかった場合であって、かつ、前記検索部によって前記抽象化パターンが検索された場合には、前記抽象化パターンの、前記後に発話された発話データを表す単語列を、前記ユーザの発話データに対する応答として出力する応答部と、を含んで構成されている。
【００１３】
第６の発明に係る対話方法は、応答関係にある発話データのペアの各々について予め取得された、前記ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである、複数の単語パターン、及び前記発話データのペアの各々について予め取得された、前記ペアの前記先に発話された発話データの意味情報を含む文字列と前記後に発話された発話データを表す単語列とのペアである、複数の抽象化パターンを記憶した記憶部を含む対話装置の対話方法であって、取得部によって、入力されたユーザの発話データに基づいて、前記発話データを表す単語列、及び前記発話データの意味情報を含む文字列を取得し、検索部によって、前記取得部によって取得された前記発話データを表す単語列と、前記ペアの前記先に発話された発話データを表す単語列とが一致すると判断される前記単語パターンを、前記記憶部に記憶された前記複数の単語パターンから検索し、前記取得部によって取得された、前記発話データの意味情報を含む文字列と、前記ペアの前記先に発話された発話データの意味情報を含む文字列とが一致すると判断される前記抽象化パターンを、前記記憶部に記憶された前記複数の抽象化パターンから検索し、応答部によって、前記検索部によって前記単語パターンが検索された場合には、前記単語パターンの、前記後に発話された発話データを表す単語列を、前記ユーザの発話データに対する応答として出力し、前記検索部によって前記単語パターンが検索されなかった場合であって、かつ、前記検索部によって前記抽象化パターンが検索された場合には、前記抽象化パターンの、前記後に発話された発話データを表す単語列を、前記ユーザの発話データに対する応答として出力する。
【００１４】
第７の発明に係るプログラムは、コンピュータを、上記の対話パターン抽出装置の各部として機能させるためのプログラムである。
【００１５】
第８の発明に係るプログラムは、コンピュータを、上記の対話装置の各部として機能させるためのプログラムである。
【発明の効果】
【００１６】
以上説明したように、本発明の対話パターン抽出装置、方法、及びプログラムによれば、応答関係にある発話データのペアについて、ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである単語パターン、及びペアの先に発話された発話データの意味情報を含む文字列と後に発話された発話データを表す単語列とのペアである抽象化パターンの少なくとも一方を取得し、出現頻度が閾値以上となる単語パターン、又は抽象化パターンを抽出することにより、応答関係にある発話データのペアのパターンを抽出することができる、という効果が得られる。
【００１７】
本発明の対話装置、方法、及びプログラムによれば、入力されたユーザの発話データを表す単語列及び発話データの意味情報を含む文字列の少なくとも一方を取得し、取得された発話データを表す単語列と、ペアの先に発話された発話データを表す単語列とが一致すると判断される単語パターンを検索し、又は取得された発話データの意味情報を含む文字列と、ペアの先に発話された発話データの意味情報を含む文字列とが一致すると判断される抽象化パターンを検索し、検索された単語パターン又は抽象化パターンの、後に発話された発話データを表す単語列を、応答として出力することにより、応答関係にある発話データのペアのパターンに従って、ユーザの発話に対して応答することができる、という効果が得られる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態に係る対話システムの対話パターン抽出装置の構成を示す概略図である。
【図２】ツイートデータの一例を示す図である。
【図３】１対話のツイートデータの一例を示す図である。
【図４】単語パターンの一例を示す図である。
【図５】抽象化パターンの一例を示す図である。
【図６】本発明の実施の形態に係る対話システムの対話装置の構成を示す概略図である。
【図７】対話システムとユーザの対話例を示す図である。
【図８】本発明の実施の形態に係る対話パターン抽出装置におけるパターン抽出処理ルーチンの内容を示すフローチャートである。
【図９】本発明の実施の形態に係る対話装置における対話処理ルーチンの内容を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００２０】
＜発明の概要＞
大量の対話データから定型やりとりを抽出して、対話システムが用いる発話ペアを獲得する。また、対応できるユーザ入力を拡充するために、発話ペアにおける先の発話を抽象化する。さらに、対話システムがユーザ発話に対して応答するとき、抽象化されていない発話ペア、抽象化された発話ペアを順に用いることで、入力に対して、適切な応答を行う。
【００２１】
＜システム構成＞
以下では、対話システムに本発明を適用した場合を例に説明する。
【００２２】
図１に示すように、本発明の実施の形態に係る対話システムの対話パターン抽出装置１００は、対話データが入力され、発話ペアの定型やりとりのパターンを抽出する。この対話パターン抽出装置１００は、ＣＰＵと、ＲＡＭと、後述するパターン抽出処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成され、機能的には次に示すように構成されている。図１に示すように、対話パターン抽出装置１００は、入力部１０と、演算部２０とを備えている。
【００２３】
入力部１０は、複数の発話データを含む対話データの入力を受け付ける。例えば、マイクロブログサービスであるツイッター（Ｒ）から収集したツイートデータの集合が、対話データとして入力される。本実施の形態では、ツイートデータうち、一定期間について、in_reply_toフィールドを保持する、または、他のツイートに返信を受けているツイートデータのみを、ツイッター（Ｒ）のサイトからクロールすることで、ツイートデータの集合を収集する。これによって、図２に示すようなデータができる。
【００２４】
上記図２で、各行はツイートを表し、status_idがツイートのID、in_reply_to_status_idが、当該ツイートが返信関係にあるツイートのIDを示す。ここでは、101番のツイートと102番のツイートが、100番のツイートに返信していることが分かる。
【００２５】
演算部２０は、対話データ記憶部２１、発話ペア抽出部２２、単語パターン取得部２３、抽象化パターン取得部２４、パターン登録部２５、単語パターンデータベース２６、及び抽象化パターンデータベース２７を備えている。パターン登録部２５は、パターン出力部の一例である。
【００２６】
対話データ記憶部２１は、入力部１０により受け付けた対話データを記憶する。
【００２７】
発話ペア抽出部２２は、対話データ記憶部２１に記憶された対話データから、応答関係にある発話データのペアを各々抽出する。例えば、上記図２に示すような、ツイートデータの集合から、in_reply_toで関係づけられた一連のツイートをひとまとめにする作業を行う。
【００２８】
具体的には、対話データ記憶部２１に記憶された各ツイートデータを、in_reply_to_status_idで親ノードを表すような木構造のノードとして扱い、全ツイートデータを木構造となるように内部で変換する。ここで、根ノードは、in_reply_to_status_idで指す先が無いようなツイートデータであり、葉ノードはどこからもin_reply_to_status_id で指されていないツイートデータである。そして、葉ノードから根ノードまでたどり、そのパス中のノードを表すツイートデータを根ノードから葉ノードの順で、1対話として出力することを行う。この過程により、図３に示すようなデータが構築できる。
【００２９】
上記図３に示すデータの形式は疑似XML形式となっている。各対話は<conversation>というタグで括られ、idとthreadという属性を持つ。idはルートのstatus_idごとにユニークに決定されるID番号であり、threadは同じルートを持つ対話を識別するためのスレッド番号である。</conversation>までは、一行一文のツイートであり、発話、ユーザ、日付を表している。なお、ツイッター（Ｒ）に特有の書式（@、RTなど）をこの段階で手動のルールに従って除外して、発話の本文だけを抽出しておく。以降、このデータをツイート対話データと呼ぶことにする。
【００３０】
発話ペア抽出部２２は、このツイート対話データにおける各対話（conversation）について、連続した発話を取り出す。対話にN発話あれば、N-1個のペアが抽出される。上記図３の例であれば各対話には2つの発話ずつしかないため、それぞれから、1つずつ発話ペアが抽出される。すなわち、「あけましておめでとう」と「おめでとー」のペアと、「あけましておめでとう」と「今年もよろしく」のペアである。
【００３１】
単語パターン取得部２３は、発話ペア抽出部２２が抽出した発話ペアの各々について、単語を用いて表される単語パターンを作成する。具体的には、発話ペアのうちの先に発話された発話データと後に発話された発話データをそれぞれA、Bとすると、発話データAと発話データBのそれぞれについて、形態素解析し、不要な単語（空白、句点、読点、記号など）を除去した上で、その単語列を取得する。たとえば、発話データが「帰宅した」であれば、「帰宅  し  た」という単語列が得られる。発話ペアの発話データAと発話データBを処理し、発話データAから得られた単語列と発話データBから得られた単語列とをペアにし、単語パターンとして取得する。本実施の形態では、形態素解析エンジンとして、出願人が開発している、ＪＴＡＧを用いているが、他の形態素解析エンジンであるChaSenやMecabを用いてもよい。
【００３２】
抽象化パターン取得部２４は、発話ペア抽出部２２が抽出した発話ペアの各々について、意味情報と単語とを用いて表される抽象化パターンを作成する。例えば、発話ペアのうちの先に発話された発話データと後に発話された発話データをそれぞれA、Bとすると、発話データAについては、形態素解析し、不要な単語を除去した上、単語それぞれについて、語彙大系の意味属性が付与された単語であれば、予め用意した語彙大系から意味属性の先頭のものを取得し、意味属性がなければ、単語そのものを取得し、各単語について取得した意味属性又は単語を、文字列として連結する。
【００３３】
たとえば、発話データ「帰宅した」であれば、「帰宅」には2175という意味属性が付与されており、「し」には2050という意味属性が付与されており、「た」には意味属性がない。そのため、発話データ「帰宅した」から、「N-2175  N-2050  た」という文字列が得られる。ここで「N-」は名詞の意味属性であることを表す接頭辞である。また、本実施の形態では、抽象化パターン取得部２４でも形態素解析にはJTAGを用いる。JTAGは、一般的な形態素解析器が出力する品詞情報などのほか、意味属性と呼ばれる、単語についての意味情報も出力する。なお、各単語の意味情報を取得する際、市中のオンラインのシソーラスを用いて得られる意味情報を用いてもよい。たとえば、WordNetのSynsetIDやEDR辞書における概念識別子を用いてもよい。この結果得られる文字列（たとえば、「N-2175  N-2050  た」）を抽象化された文字列と呼ぶ。
【００３４】
発話データBについては、単語パターン取得部２３における処理と同様の処理を行う。すなわち、発話データBを形態素解析し、不要な単語（空白、句点、読点、記号など）を除去した上、その単語列を取得する。発話データAの抽象化された文字列と発話データBの単語列をペアにして、抽象化パターンとする。
【００３５】
パターン登録部２５は、単語パターン取得部２３によって取得した単語パターンの各々と、抽象化パターン取得部２４によって取得した抽象化パターンの各々とに基づいて、対話データ記憶部２１に記憶されているツイート対話データ全体における、各単語パターンの頻度、及び各抽象化パターンの頻度を計算し、単語パターンのうち、所定の頻度以上出現した単語パターンを各々選択し、発話ペアとして単語パターンデータベース２６に登録する。また、パターン登録部２５は、抽象化パターンのうち、所定の頻度以上出現した抽象化パターンを各々選択し、発話ペアとして抽象化パターンデータベース２７に登録する。たとえば、所定の頻度とは10である。
【００３６】
なお、パターン登録部２５は、単語パターンデータベース２６及び抽象化パターンデータベース２７に登録する単語パターン及び抽象化パターンの、後の発話データＢの単語列について、単語間の空白を削除する。この空白の除去は、対話システムの対話装置１５０で、ユーザ発話に対する応答としてそのまま出力できるようにするためである。なお、登録されたパターンの質の向上のため、以下の工夫も行う。
【００３７】
固有名詞、数値などが単語パターン及び抽象化パターンの、後の発話データＢの単語列に存在することがまれにある。このようなパターンにおける後の発話データＢの単語列は、具体的な内容を含んでいると考えられ、いつでも使える定型やりとりとしては妥当ではない可能性が高い。そこで、後の発話データＢの単語列について形態素解析を行い、固有名詞や数値が含まれていると判断される場合は、パターン登録部２５は、頻度に関係なく、当該後の発話データＢの単語列を有する単語パターン及び抽象化パターンを、単語パターンデータベース２６及び抽象化パターンデータベース２７に登録しない。また、後の発話データＢの単語列に含まれている意味属性を確認し、7番から45番までの意味属性（人物を指す表現に相当）が含まれている場合は、特定の人物に対する応答である可能性があるため、パターン登録部２５は、当該後の発話データＢの単語列を有する単語パターン及び抽象化パターンを、単語パターンデータベース２６及び抽象化パターンデータベース２７に登録しない。また、先の発話データＡの単語列及び後の発話データＢの単語列の少なくとも一方の文字列長が長すぎる場合にも複雑な内容が含まれるなど、定型やりとりではない可能性が高いため、パターン登録部２５は、当該単語列を有する単語パターン及び抽象化パターンを、単語パターンデータベース２６及び抽象化パターンデータベース２７に登録しない。たとえば、20文字を超える場合は登録しない。
【００３８】
例えば、数千万のconversationからなるツイート対話データから、上記で説明したパターン抽出処理を経て、19375の単語パターンが単語パターンデータベース２６に登録される。また、19790の抽象化パターンが抽象化パターンデータベース２７に登録される。図４は、登録された単語パターンの抜粋であり、図５は、登録された抽象化パターンの抜粋である。3つのカラムからなっており、パターンのID番号、ユーザ入力発話（前の発話データＡの単語列又は抽象化された文字列）、システム出力発話（後の発話データＢの単語列）である。2カラム目、3カラム目の組がいわゆる発話ペアである。
【００３９】
図６に示すように、本発明の実施の形態に係る対話システムの対話装置１５０は、ユーザ発話が入力され、ユーザ発話に対する応答を出力する。この対話装置１５０は、ＣＰＵと、ＲＡＭと、後述する対話処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成され、機能的には次に示すように構成されている。図６に示すように、対話装置１５０は、入力部５０と、演算部６０と、出力部７０とを備えている。
【００４０】
入力部５０は、入力されたユーザ発話を受け付ける。
【００４１】
演算部６０は、単語パターンデータベース６１、抽象化パターンデータベース６２、及び応答部６３を備えている。
【００４２】
単語パターンデータベース６１には、対話パターン抽出装置１００の単語パターンデータベース２６と同じ単語パターンが記憶されている。
【００４３】
抽象化パターンデータベース６２には、対話パターン抽出装置１００の抽象化パターンデータベース２７と同じ抽象化パターンが記憶されている。
【００４４】
応答部６３は、入力部５０により入力されたユーザ発話を受け付けると、ユーザ発話の入力文字列に対して、単語パターン取得部２３による単語パターンの前の発話データＡの単語列を取得する処理と同様の処理を行って、単語列を取得すると共に、抽象化パターン取得部２４による抽象化パターンの前の発話データＡの抽象化された文字列を取得する処理と同様の処理を行って、抽象化された文字列を取得する。
【００４５】
そして、応答部６３は、単語パターンデータベース６１に記憶された単語パターンから、前の発話データＡの単語列が、上記取得した単語列と一致すると判断される単語パターンを検索する。一致すると判断される単語パターンが検索されると、応答部６３は、検索された単語パターンの後の発話データＢの単語列を用いて出力部７０により応答する。一致する単語パターンが複数検索された場合には、そのうち一つの単語パターンをランダムに選択して出力部７０により応答する。一致すると判断される単語パターンが検索されなかった場合には、抽象化パターンデータベース６２に記憶された抽象化パターンから、前の発話データＡの抽象化された文字列が、上記取得した抽象化された文字列と一致すると判断される抽象化パターンを検索する。一致すると判断される抽象化パターンが検索されると、応答部６３は、検索された抽象化パターンの後の発話データＢの単語列を用いて出力部７０により応答する。一致すると判断される抽象化パターンが複数検索された場合には、そのうち一つの抽象化パターンをランダムに選択して出力部７０により応答する。
なお、本実施の形態では、応答部６３は、完全一致のみではなく、一致するとみなされる単語パターンや抽象化パターンを検索している。具体的には、例えば、編集距離や単語の重複率などを用いて、予め設けておいた閾値に基づいて当該閾値を超えるか否かにより、一致するか否かを判断して、単語パターンや抽象化パターンを検索している。このように応答部６３は、上記取得した単語列と完全に一致する単語パターンのみではなく、一致すると判断される単語パターンを検索し、上記取得した抽象化された文字列と完全に一致する抽象化パターンのみではなく、一致すると判断される抽象化パターンを検索することが好ましい。
【００４６】
このように、単語パターンとのマッチを優先し、意味情報を用いた抽象化パターンとの緩やかなマッチを後段に行うことで、単語列が一致するパターンによる応答ができる場合にはそれを行い、単語列として一致しないような入力であるが、意味的には近い入力についても、定型やりとりを実現することができる。なお、一致すると判断される単語パターン及び抽象化パターンの何れも検索されなかった場合には、定型やりとりの範疇ではないと判断し、別途用意した発話ペア又は別途人手で作成した応答ルールに基づいて、応答すればよい。別途用意した発話ペアに基づいて応答する方法、別途人手で作成した応答ルールを用いて応答する方法については、例えば、上記の非特許文献１に記載のＡＬＩＣＥなどの従来既知の方法を用いればよいため、説明を省略する。
【００４７】
図７に、本実施の形態に係る対話装置１５０を用いた対話システムとユーザとの対話例を示す。人間同士がよく行うような定型やりとりを用いることで、自然な対話を実現できていることが分かる。なお、最初のシステムの「こんにちは」は対話システムのプロンプト（初期発話）であり、取得したパターンを用いて発話しているわけではない点に注意する。
【００４８】
＜対話システムの作用＞
次に、本実施の形態に係る対話システムの作用について説明する。まず、予め用意されたツイート対話データが対話パターン抽出装置１００に入力されると、対話パターン抽出装置１００によって、入力されたツイート対話データが、対話データ記憶部２１へ格納される。そして、対話パターン抽出装置１００によって、図８に示すパターン抽出処理ルーチンが実行される。
【００４９】
まず、ステップＳ１０１において、対話データ記憶部２１から、ツイート対話データを取得し、ステップＳ１０２において、上記ステップＳ１０１で取得したツイート対話データから、発話ペアを各々抽出する。
【００５０】
次のステップＳ１０３では、上記ステップＳ１０２で抽出された発話ペアの各々について、当該発話ペアの発話データAから得られた単語列と発話データBから得られた単語列とをペアにして、単語パターンとして取得する。
【００５１】
そして、ステップＳ１０４において、上記ステップＳ１０２で抽出された発話ペアの各々について、当該発話ペアの発話データAの各単語の意味属性を求めることにより得られた抽象化された文字列と発話データBから得られた単語列とをペアにして、抽象化パターンとして取得する。
【００５２】
次のステップＳ１０５では、上記ステップＳ１０３で取得した単語パターンから、ツイート対話データ全体における出現頻度が所定の頻度以上となる単語パターンを選択し、単語パターンデータベース２６に登録する。そして、ステップＳ１０６において、上記ステップＳ１０４で取得した抽象化パターンから、ツイート対話データ全体における出現頻度が所定の頻度以上となる抽象化パターンを選択し、抽象化パターンデータベース２７に登録し、パターン抽出処理ルーチンを終了する。
【００５３】
そして、単語パターンデータベース２６に登録された単語パターンが、対話装置１５０の単語パターンデータベース６１に記憶される。また、抽象化パターンデータベース２７に登録された単語パターンが、対話装置１５０の抽象化パターンデータベース６２に記憶される。
【００５４】
ユーザ発話が対話装置１５０に入力されると、対話装置１５０によって、図９に示す対話処理ルーチンが実行される。
【００５５】
ステップＳ１１１において、入力されたユーザ発話を受け付ける。ステップＳ１１２では、上記ステップＳ１１１で受け付けたユーザ発話から、単語列を取得し、単語パターンデータベース２６から、上記で取得した単語列と、前の発話データＡの単語列とが一致すると判断される単語パターンを検索する。
【００５６】
ステップＳ１１３では、上記ステップＳ１１２で単語パターンが検索されたか否かを判定する。単語パターンが検索された場合には、ステップＳ１１４で、上記ステップＳ１１２で検索された単語パターンの、後の発話データＢの単語列を用いて、上記ステップＳ１１１で入力されたユーザ発話に対する応答を生成する。
【００５７】
一方、単語パターンが検索されなかった場合には、ステップＳ１１５において、上記ステップＳ１１１で受け付けたユーザ発話から、抽象化された文字列を取得し、抽象化パターンデータベース２７から、上記で取得した抽象化された文字列と、前の発話データＡの抽象化された文字列とが一致すると判断される抽象化パターンを検索する。
【００５８】
ステップＳ１１６では、上記ステップＳ１１５で抽象化パターンが検索されたか否かを判定する。抽象化パターンが検索された場合には、ステップＳ１１７で、上記ステップＳ１１５で検索された抽象化パターンの、後の発話データＢの単語列を用いて、上記ステップＳ１１１で入力されたユーザ発話に対する応答を生成する。
【００５９】
一方、抽象化パターンが検索されなかった場合には、ステップＳ１１８において、予め用意した発話ペアに基づいて、入力されたユーザ発話に対する応答を生成する。
【００６０】
ステップＳ１１９では、上記ステップＳ１１４、Ｓ１１７、又はＳ１１８で生成された応答を、出力部７０により出力し、対話処理ルーチンを終了する。
【００６１】
以上説明したように、本実施の形態に係る対話システムの対話パターン抽出装置によれば、対話データから抽出された発話ペアの各々について、ペアの先に発話された発話データを表す単語列と後に発話された発話データを表す単語列とのペアである単語パターン、及びペアの先に発話された発話データの意味情報を含む抽象化された文字列と後に発話された発話データを表す単語列とのペアである抽象化パターンを取得し、出現頻度が閾値以上となる単語パターン及び抽象化パターンを抽出することにより、応答関係にある発話データのペアのパターンを抽出することができる。
【００６２】
また、対話システムの対話装置によれば、入力されたユーザの発話データを表す単語列及び当該発話データの意味情報を含む抽象化された文字列を取得し、取得された発話データを表す単語列と、ペアの先に発話された発話データを表す単語列とが一致すると判断される単語パターンを検索し、取得された発話データの抽象化された文字列と、ペアの先に発話された発話データの抽象化された文字列とが一致すると判断される抽象化パターンを検索し、検索された単語パターン又は抽象化パターンの、後に発話された発話データを表す単語列を、応答として出力することにより、応答関係にある発話データのペアのパターンに従って、ユーザの発話に対して応答することができる。
【００６３】
また、対話パターン抽出装置は、大規模な対話コーパスである対話データから、高頻度に出現する発話ペアを単語パターンとして抽出すると共に、パターン中の単語を意味情報に抽象化することによって、より汎用的な抽象化パターンを抽出することができる。さらに、対話装置は、抽象化されていない単語パターンと抽象化されたパターンを順に利用することで、ユーザに適切な応答を返すことができる。
【００６４】
また、人間が日常的に行うようなやりとりを対話システムが実現できるようになり、人間とシステムの間のやりとりがスムーズになる。その結果、コンピュータと人間の共同作業の効率が高まる。
【００６５】
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【００６６】
例えば、対話パターン抽出装置と対話装置とを一つの装置で実現するようにしてもよい。
【００６７】
また、対話パターン抽出装置は、単語パターンのみを抽出し、単語パターンデータベースに登録するようにしてもよい。この場合には、対話装置は、単語パターンデータベースのみを備え、入力されたユーザ発話の単語列と一致すると判断される単語パターンを単語パターンデータベースから検索して、応答を生成する。
【００６８】
また、対話パターン抽出装置は、抽象化パターンのみを抽出し、抽象化パターンデータベースに登録するようにしてもよい。この場合には、対話装置は、抽象化パターンデータベースのみを備え、入力されたユーザ発話の抽象化された文字列と一致すると判断される抽象化パターンを抽象化パターンデータベースから検索して、応答を生成する。
【００６９】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。
【符号の説明】
【００７０】
１０、５０    入力部
２０、６０    演算部
２１   対話データ記憶部
２２   発話ペア抽出部
２３   単語パターン取得部
２４   抽象化パターン取得部
２５   パターン登録部
２６、６１    単語パターンデータベース
２７、６２    抽象化パターンデータベース
６３   応答部
７０   出力部
１００ 対話パターン抽出装置
１５０ 対話装置
【図１】
2014222413.tif 000003
【図２】
2014222413.tif 000004
【図３】
2014222413.tif 000005
【図４】
2014222413.tif 000006
【図５】
2014222413.tif 000007
【図６】
2014222413.tif 000008
【図７】
2014222413.tif 000009
【図８】
2014222413.tif 000010
【図９】
2014222413.tif 000011