【文献】
Hikaru Yokono, et al.,Identification of relations between answers with global constraints for Community-based Question Answering services,Proc. IJCNLP,2011年11月 8日,pp.920-928
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0017】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【0018】
<システム構成>
図1に示すように、本発明の第1の実施の形態に係る発言間関係推定装置100は、発言を示すテキストデータの集合が入力され、各発言間の関係を出力する。1つの発言は1つ以上の文からなるテキストデータである。この発言間関係推定装置100は、CPUと、RAMと、後述するモデル学習処理ルーチン及び発言間関係推定処理ルーチンを実行するためのプログラムを記憶したROMとを備えたコンピュータで構成され、機能的には次に示すように構成されている。
図1に示すように、発言間関係推定装置100は、入力部10と、演算部20と、出力部30とを備えている。
【0019】
入力部10は、入力された発言の集合を受け付ける。本実施の形態の例では、発言の集合として、マイクロブログサービスの一つであるツイッター(R)における発言(ツイート)の集合を用いる。今回、ツイッターのまとめサイトであるtogetter(R)でまとめられたツイートをクロールすることで、この発言の集合を作成した。特定の検索キーワードが含まれるツイートを検索して取得し、取得されたツイートを発言の集合としてもよい。
【0020】
なお、togetter (R)は、個人が自身のお気に入りのツイートを「まとめ」として登録することのできるサービスで、一定のトピックに関係するツイートが雑多に集められている。
【0021】
また、学習データとして入力された発言の集合には、発言間の関係性ラベルとして、関係のあるなしを示すラベルが付与されている。また、関係のあるなし以外にも、「演繹」「帰納」「矛盾」「類似」「その他」のラベルが、発言間の関係性ラベルとして付与されている。なお、これらの入力されるラベルは人手で付与したものである。
【0022】
また、入力部10は、上記の関係性がツイート間にあるかないか、あるとしたらどの関係かを推定するために入力された、未知の発言の集合を受け付ける。
【0023】
演算部20は、発言集合データベース21、事例分割部23、分割データ記憶部24、特徴量抽出部25、学習制御部26、論理式生成部27、モデル学習部28、特徴量追加部29、モデル記憶部31、入力発言集合データベース32、事例分割部33、分割データ記憶部34、特徴量抽出部35、論理式生成部36、関係推定部37、及び特徴量追加部38を備えている。
【0024】
発言集合データベース21は、入力部10により受け付けた学習データとしての発言の集合を、発言間の関係と共に記憶する。
【0025】
事例分割部23は、学習データをいくつかに分割する。与えられた学習データ(発言)をD個とすると、この発言の集合をN分割し、それぞれ部分集合をD1・・・DNとして、分割データ記憶部24に記憶させる。たとえば、ツイートが100個あり4つに分割する場合、25個ずつの4つの部分集合に分割する。なお、この部分集合が、分割文書群の一例である。
【0026】
特徴量抽出部25は、分割データ記憶部24に記憶されている部分集合毎に、当該分集合の各発言及び各発言間について特徴量を抽出する。これらは観測述語と呼ばれる。たとえば、ツイートaがあり、ツイートbにリプライしているとすると、tweet(a),tweet(b), in_reply_to(a,b)という観測述語を抽出する。これらは、a がツイートであること、b がツイートであること、そして、aがbにリプライしていることを表す述語である。加えて、ツイートa が@...という形でツイートbのユーザ名に言及している場合、reply(a,b) という観測述語を抽出する。また、ツイートaとツイートbとが同ユーザによる発言の場合、述語sameuser(a,b)を抽出する。その他、ツイートを投稿された時間で並べた場合、ツイートaとツイートbの間に、ツイートaのユーザによる発言が存在するかどうかを表す述語や、発言集合において、あるツイートが時間的にそのユーザの最初のツイートであるかどうかを表す述語を抽出する。
【0027】
特徴量抽出部25は、さらに、各発言に対して形態素解析を行い、各ツイートがどのような単語を持つかを表すbag-of-words の述語やaとbの単語の重複度なども観測述語として抽出する。これらに加え、一般の文書分類において、機械学習の際に用いられるような素性を観測述語として抽出してもよい。
【0028】
例えば、発言ペアのどちらが長いか、発言ペアが連続する発言かどうか、発言間の投稿間隔、反意語となる単語対が発言間にあるか、発言ペアが同じURLを含むかどうか、発言ペアが同じ固有表現を含むか否か、発言ペアが括弧で囲まれた同じ表現を含むかどうか、発言ペアが異なる固有名詞を含むかどうか、発言間における単語ベクトルのコサイン類似度、発言間の名詞の包含度の各々を表わす述語を、発言間の特徴を示す観測述語として抽出してもよい。
【0029】
また、上記の観測述語に対し、潜在述語というものがある。潜在述語とは、観測述語ではない述語を指し、データそのものからは得られないものである。潜在述語は機械学習における、推定したいラベルに対応する。特徴量抽出部25は、学習データに付与された関係性ラベル(正解ラベル)の情報から、潜在述語も抽出する。たとえば、ツイートaとツイートbに関係ありとのラベルが付与されていると、has_aa_relation(a,b)という潜在述語が作られる。has_aa_relationは二つの発言の間に関係があるという事を表す述語である。
【0030】
論理式生成部27は、ある観測述語・潜在述語の組み合わせがあるとき、ある潜在述語が成立するということを表す論理式を作成する。たとえば、「tweet(a) & tweet(b) & in_reply_to(a,b)という組み合わせであればhas_aa_relation(a,b)という潜在述語が成立する」という内容の論理式を作成する。どう組み合わせてどの潜在述語に結び付けるかは、人手で作成した論理式生成テンプレートによる。
【0031】
また、論理式には重み付き論理式と重みなし論理式がある。重み付き論理式は、その論理式の成立しやすさを重みとして保持する。重みなし論理式は「制約」とも呼ばれ、必ず成立する論理式である。
【0032】
論理式生成部27は、基本的な制約として、推移律と呼ばれる、ツイートi とjにある関係R が成り立ち、ツイートjとkに同じくRが成り立つ場合、ツイートiとkにも同様の関係Rが成り立つという制約を示す論理式を生成する。例えば、あるツイートに類似している2つのツイートj、k は類似しているという制約を示す論理式を生成する。
【0033】
以上のように、論理式生成部27は、部分集合毎に、当該部分集合について特徴量抽出部25が出力した特徴(観測述語の集合)と、当該部分集合について後述する特徴量追加部29によって追加された特徴(観測述語の集合)とに基づいて、論理式生成テンプレートを用いて、各述語及び潜在述語を用いて記述された各論理式を生成する。
【0034】
学習制御部26は、分割した学習データのそれぞれについて順番に推定・学習を行うように制御する。
【0035】
学習制御部26は、学習データを分割した発言の部分集合D1、・・・、DNについて、部分集合D1に対して推定を行い、学習し、部分集合D2に部分集合D1での推定結果を組み込むと共に部分集合D1での学習結果を用いて、推定を行い、学習し、・・・、部分集合DNに部分集合D(N-1)の推定結果を組み込むと共に部分集合D(N-1)での学習結果を用いて推定し、学習するという一連の処理を1イタレーションとして、何度かイタレーションすることで学習を行う。ここで、推定結果は、学習データを分割した発言の部分集合に対して、クローズドに求めた推定結果のことである。まず推定を行い、推定結果と正しい解の差分が小さくなるように学習を行う。学習の初段階では、うまく推定できないが、イタレーションを繰り返すことでうまく推定できるよう学習される。イタレーション数は、たとえば10回である。
【0036】
一つ前の部分集合に対する推定結果を、次の部分集合に対する学習に生かすため、動的述語を生成し、次の部分集合を用いた学習に入れ込む処理を行う。動的述語を利用して学習・推定を行う考え方を
図2に示す。
【0037】
MLN上に動的述語を実装するため、潜在述語(Hidden predicate)と観測述語(Observed predicate)を組み合わせて動的述語を表現する。
【0038】
実際には、動的述語dp を表すため、dpをユーザが定義する際に、自動で内部的に潜在述語dyn_dpと観測述語obs_dpの2つを定義する。この二つの述語を動的述語として動かすため、一つ目の事例(部分集合)D1で潜在述語dyn_dpが推論によって得られた場合、二つ目の事例(部分集合)D2の観測述語に観測述語obs_dpとして加える処理をMLNに追加する。この観測述語obs_dpは、
図2では「データ1で真と推定された潜在述語の集合が観測述語化したもの」として2つ目の事例(部分集合)で観測述語として表され、潜在述語dyn_dpは
図2では「動的述語の集合」として表され、推定の結果真となった動的述語のみが、次のデータ(部分集合)における観測述語として追加される。
【0039】
つまり、動的述語は、既に分類された事例を表す際は観測述語、分類中の事例を表す際は潜在述語として扱える述語として実装される。ある問題を解いた結果を、次の問題で用いるために、推論の結果である潜在述語を次の問題における観測述語として動的に加えるため、述語の名前と種類を書き換えて次の問題に追加する処理を追加する。
【0040】
簡単な例として、単語列中の固有表現(地名)を判定する場合を挙げる。
【0041】
observed: word (観測述語として単語自身)
hidden: loc (推定する対象の述語として地名の一部かどうか)
dynamic: dloc (動的な述語として、以前の推定結果を表すための述語(dyn_dlocとobs_dlocが自動的に定義される))
weight w_word:WORD->Double; (単語wの地名らしさw_wordを重みとして学習させる)
factor: for Id i, WORD w
if word(i, w) add [loc(i)] * w_word(w);
【0042】
そして、以下のように、loc(i)と推定された場合は、dyn_dloc(i)も真を取るようにする。これは
図2で推定された潜在述語から動的述語へのアークに対応する(
図2のA参照)。
【0043】
factor: for Id i
if loc(i): dyn_dloc(i);
【0044】
また、以下のように、一つ前の単語(i-1)が地名と推定された場合の単語(i)の地名らしさをw_lastとして学習する。これは
図2の動的述語が観測述語化されたものから、データ2の潜在述語へのアークに対応する。
【0045】
weight w_last:Double;
factor: for Id i
if obs_dloc(i-1) add[loc(i)]*w_last;
【0046】
たとえば、以下の3単語が連続してあったとし、それぞれの単語が分割された各データだとする。
【0047】
word(1, "東京都")
--分割
word(2, "新宿区")
--分割
word(3, "新宿")
【0048】
上記のように分割された三つの事例を与えたときに、一つ目の事例で1つめの単語が地名と推定されloc(1)が真になったとき、dyn_dloc(1)も同様に真となり、二つ目の事例で2つめの単語について推論する際にはobs_dloc(1)が有効となる。よって、二つ目の事例ではobs_dloc(1)とword(2,"新宿区")という2つの観測述語から推論を行うことができる。ここでさらにloc(2)と推論が行われた場合、3つ目の事例ではobs_dloc(2)とword(3,"新宿")という2つの述語が観測可能として推論を行う。
【0049】
以上のように、一つ前の部分集合で得られた動的述語が観測述語化されたものから、現在の部分集合の潜在述語へのアークに対応する論理式を用いるために、論理式生成部27は、論理式生成プレートに従って、一つ前の部分集合で得られた動的述語が観測述語化されたものと、現在の部分集合についての潜在述語とを用いて記述された論理式を生成する。例えば、ある動的述語が観測述語化されたものと、ある観測述語との組み合わせがあるとき、ある潜在述語が成立するということを表す論理式を生成する。
【0050】
なお、本例では、動的述語は連続した事例(部分集合)でしか有効にしていないが、
【0051】
factor: for Id i
if obs_dloc(i): dyn_dloc(i);
【0052】
のように、再度、値を真としなおすようにすれば、分割をまたがった事例にも過去の推定結果を持ち越すことが可能である。
【0053】
モデル学習部28は、まず、論理式生成部27によって部分集合Dnについて生成された論理式と、現時点での各論理式の重みとを用いて、部分集合Dnの発言のペアの各々について、推論を行い、尤もらしい関係性ラベル(潜在述語)の集合を得る。具体的には、後述する(1)式中の確率が最も大きくなる場合の、真となる潜在述語の集合をラベルとして出力する。
【0054】
また、モデル学習部28は、MLNを用い、上記の推論によって得られた潜在述語の集合が表す発言間の関係と、部分集合Dnについて予め与えられた発言間の関係とが一致するように、各論理式の重みを学習して、各論理式の重みを更新する。MLNでは、与えられた論理式について、すべての制約を表わす論理式を満たしつつ、観測述語について行われた推論結果が、正解データとして与えられた述語の集合に近づくように、各論理式の重みが決定される。ここで学習された論理式の重みの集合がモデルとなり、重みの集合を表わすモデルが、モデル記憶部31に記憶される。
【0055】
モデル学習部28は、上記の推論及び学習を、各部分集合Dnについて繰り返し行う。
【0056】
ここで、MLNの学習について簡単に説明する。MLNは、述語の集合Xに対してある確率を与える。この確率を最大化する述語の集合(潜在述語を含む)が、MLNにおける推論結果となる。MLNは、実際には一階述語論理式の集合として表される。論理式には、違反を許容する重み付きの論理式と、違反を許容しない論理式を混在させることができ、制約を表わす論理式は、違反を許容しない論理式として記述される。
【0057】
述語の集合Xに対する確率は、述語を論理式中の変数に代入することで成立する(真となる)論理式すべてについて重みの和をとり、exponentialを取り、正規化したものである。例えば、述語の集合Xに対する確率は、以下の(1)式で表される。
【0059】
ここで、Zは正規化のための定数であり、w
iがi番目の論理式に対応する重みである。n
iは、ある述語の集合X上で真をとる論理式、例えば、tweet(i) & tweet(j) & in_reply_to(i,j) のそれぞれについて、カウントが1増える。論理式の一部のみが真でもカウントはされない。この場合、論理式 tweet(i) & tweet(j) & in_reply_to(i,j) が真になる回数 n
iは、X中に、この論理式が真になる i と j の組が存在する数と同じとなる。
【0060】
特徴量追加部29は、上述したように、部分集合Dnで潜在述語dyn_dpが推論によって得られた場合、次の部分集合D(n+1)の観測述語obs_dpとして加えるために、モデル学習部28による部分集合Dnに対する推論で得られた真となる潜在述語の集合から、動的述語を観測述語化したものを生成し、次の部分集合D(n+1)の観測述語として追加する。
【0061】
入力発言集合データベース32は、入力部10により受け付けた推定対象データとしての発言の集合を記憶する。入力されたツイート集合、具体的には、ツイッターから取得できる情報である、ID、発言内容、in_reply_to属性、及びユーザ名からなるデータの集合が、入力発言集合データベース32に記憶される。
【0062】
事例分割部33は、推定対象データをいくつかに分割する。与えられた推定対象データ(発言)をD個とすると、この発言の集合をN分割し、それぞれ部分集合をD1・・・DNとして、分割データ記憶部34に記憶させる。なお、この部分集合が、推定用分割文書群の一例である。
【0063】
特徴量抽出部35は、上記の特徴量抽出部25と同様に、分割データ記憶部34に記憶されている部分集合毎に、当該部分集合の各発言の特徴を示す観測述語を生成すると共に、当該部分集合の発言の全ペアについてペア間の特徴を示す観測述語を生成する。
【0064】
論理式生成部36は、分割データ記憶部34に記憶されている部分集合毎に、上記の論理式生成部27と同様に、当該部分集合について特徴量抽出部35が出力した特徴(観測述語の集合)及び特徴量追加部38が出力した特徴(観測述語の集合)に基づいて、論理式生成テンプレートを用いて、各述語及び潜在述語を用いて記述された各論理式を生成する。
【0065】
関係推定部37は、分割データ記憶部34に記憶されている部分集合毎に、当該部分集合の発言のペアについて、論理式生成部36によって生成された各論理式、及びモデル記憶部31に記憶されたモデルの重みを用いて、推論を行い、尤もらしい関係性ラベル(潜在述語)の集合を得る。具体的には、上記(1)式中の確率が最も大きくなる場合の、真となる潜在述語の集合をラベルとして出力する。たとえば、ツイートx とツイートyについて、has_aa_relation(x,y) が真だと推論されたとすると、x とy の間に関係があると出力する。
【0066】
関係推定部37により推定された潜在述語が表す発言の各ペアの関係性を、出力部30により出力する。
【0067】
特徴量追加部38は、上記の特徴量追加部29と同様に、部分集合Dnで潜在述語dyn_dpが推論によって得られた場合、次の部分集合D(n+1)の観測述語obs_dpとして加えるために、関係推定部37による部分集合Dnに対する推論で得られた真となる潜在述語の集合から、動的述語を観測述語化したものを生成し、次の部分集合D(n+1)の観測述語として追加する。
【0068】
<発言間関係推定装置の作用>
次に、第1の実施の形態に係る発言間関係推定装置100の作用について説明する。まず、発言の集合と、各発言間に対して手動で付与した発言間の関係を示すラベルの集合とを含む学習データが発言間関係推定装置100に入力されると、発言間関係推定装置100によって、入力された、学習データが、発言集合データベース21へ格納される。
【0069】
そして、発言間関係推定装置100によって、
図3に示すモデル学習処理ルーチンが実行される。
【0070】
まず、ステップS101において、発言集合データベース21に格納された学習データの発言の集合をN個の部分集合に分割して、分割データ記憶部24に格納する。
【0071】
ステップS102では、分割データ記憶部24に格納された部分集合Dn毎に、当該部分集合Dnの各発言に対して、形態素解析処理を行う。次のステップS103では、分割データ記憶部24に格納された部分集合Dn毎に、当該部分集合Dnの各発言から、発言の特徴を示す観測述語を生成する。
【0072】
そして、ステップS104において、分割データ記憶部24に格納された部分集合Dn毎に、当該部分集合Dnの発言の全ペアの各々に対して、発言間の特徴を示す観測述語を生成する。また、予め付与された発言間の関係を示すラベルの集合に基づいて、発言間の関係を示す潜在述語を生成する。
【0073】
次のステップS105では、部分集合を識別するための変数nに、初期値1を設定する。
【0074】
次のステップS106では、上記ステップS103、S104で生成された観測述語、及び部分集合Dnの発言ペアの各々の関係性を示す潜在述語を用いて記述される論理式を、論理式生成プレートに従って生成する。また、後述するステップS110で追加された観測述語化された動的述語、及び部分集合Dnの発言ペアの各々の関係性を示す潜在述語を用いて記述される論理式を、論理式生成プレートに従って生成する。また、制約を表わす論理式も生成する。
【0075】
ステップS107において、上記ステップS106で生成された論理式と、部分集合Dnの発言ペアについて予め付与された関係性を示すラベルに基づいて生成された潜在述語の集合とに基づいて、各論理式の重みを学習し、モデル記憶部31に記憶されている重みの集合を表すモデルを更新する。
【0076】
ここで、上記ステップS107は、
図4に示す処理ルーチンによって実現される。
【0077】
ステップS120では、現時点での各論理式の重みを用いて、上記ステップS106で生成された論理式に基づいて、上記(1)式中の確率が最も大きくなる場合の、真となる潜在述語の集合を求め、部分集合Dnの発言間の各ペアの関係を推定する。
【0078】
そして、ステップS121において、部分集合Dnの発言間のペアについて予め付与された関係性を示すラベルに基づいて生成された潜在述語の集合と、上記ステップS120で推定された部分集合Dnの発言の各ペアの関係(真となる潜在述語の集合)とを比較して、両者が一致するように、各論理式の重みを学習して更新し、当該処理ルーチンを終了する。
【0079】
そして、ステップS108において、nが、分割数を示すN未満であるか否かを判定する。nがN未満である場合には、ステップS109において、nを1だけインクリメントする。そして、ステップS110において、上記ステップS120で推定された、一つ前の部分集合D(n−1)の発言ペアの関係性を示す潜在述語の集合から、各動的述語を観測述語化したものを生成し、部分集合Dnに対する観測述語の集合として追加し、上記ステップS106へ戻る。
【0080】
一方、上記ステップS108において、nが、N以上であると判断された場合には、ステップS111へ移行し、繰り返しを終了するか否かを判定する。例えば、上記ステップS105〜S111の繰り返し回数が、予め定められた繰り返し回数の上限値に到達した場合には、繰り返しを終了すると判断し、ステップS112において、上記ステップS121で最終的に更新された各論理式の重みを、学習結果としてモデル記憶部31に格納して、モデル学習処理ルーチンを終了する。
【0081】
一方、上記ステップS105〜S111の繰り返し回数が、予め定められた繰り返し回数の上限値に到達していない場合には、繰り返しを終了しないと判断し、上記ステップS105へ戻る。
【0082】
そして、発言間の関係を推定する推定対象の発言集合が発言間関係推定装置100に入力されると、発言間関係推定装置100によって、入力された発言集合が、入力発言集合データベース32へ格納される。
【0083】
そして、発言間関係推定装置100によって、
図5に示す発言間関係推定処理ルーチンが実行される。
【0084】
まず、ステップS131において、入力発言集合データベース32に格納された発言の集合をN個の部分集合に分割して、分割データ記憶部34に格納する。
【0085】
ステップS132では、分割データ記憶部34に格納された部分集合Dn(n=1,・・・,N)毎に、分割集合Dnの各発言に対して、形態素解析処理を行う。次のステップS133では、分割データ記憶部34に格納された部分集合Dn毎に、分割集合Dnの各発言から、発言の特徴を示す観測述語を生成する。
【0086】
そして、ステップS134において、分割データ記憶部34に格納された部分集合Dn毎に、分割集合Dnの発言の全ペアの各々に対して、発言間の特徴を示す観測述語を生成する。
【0087】
次のステップS135では、部分集合を識別するための変数nに、初期値1を設定する。
【0088】
そして、ステップS136において、部分集合Dnについて、上記ステップS133、S134で生成された観測述語、及び部分集合Dnの発言ペアの各々の関係性を示す潜在述語を用いて記述される論理式を、論理式生成プレートに従って生成する。また、後述するステップS140で追加された観測述語化された動的述語、及び部分集合Dnの発言ペアの各々の関係性を示す潜在述語を用いて記述される論理式を、論理式生成プレートに従って生成する。また、制約を表わす論理式も生成する。
【0089】
ステップS137において、部分集合Dnについて、モデル記憶部31に記憶されている各論理式の重みを用いて、上記ステップS136で生成された論理式に基づいて、上記(1)式中の確率が最も大きくなる場合の、真となる潜在述語の集合を求め、部分集合Dnの発言間の各ペアの関係を推定する。
【0090】
そして、ステップS138において、nが、分割数を示すN未満であるか否かを判定する。nがN未満である場合には、ステップS139において、nを1だけインクリメントする。そして、ステップS140において、上記ステップS137で推定された、一つ前の部分集合D(n−1)の発言ペアの関係性を示す潜在述語の集合から、各動的述語を観測述語化したものを生成し、部分集合Dnに対する観測述語の集合として追加し、上記ステップS136へ戻る。
【0091】
一方、上記ステップS138において、nが、N以上であると判断された場合には、ステップS141へ移行し、上記ステップS137で推定された各ペアの関係を出力部30により出力して、発言間関係推定処理ルーチンを終了する。
【0092】
以上説明したように、第1の実施の形態に係る発言間関係推定装置によれば、学習データの発言集合を、複数の部分集合に分割し、複数の部分集合の各々に対して、当該部分集合の各発言について観測述語を抽出し、複数の部分集合の各々に対して、MLNにおける各論理式の重みを繰り返し学習することにより、発言間の関係を推定するためのMLNを用いた推定モデルを効率よく学習することができる。
【0093】
また、推定対象の発言集合を、複数の部分集合に分割し、複数の部分集合の各々に対して、部分集合の各発言について観測述語を抽出し、学習された各論理式の重みを用いて、MLNにより、発言間の関係を推定することにより、MLNを用いた発言間の関係の推定を効率よく行うことができる。
【0094】
大規模な学習事例からマルコフロジックネットワークを用いてデータ間の関係性を学習する際に、学習の効率化のため、事例を分割して学習する。これにより、問題のサイズを分割することができ、整数計画問題を高速に解くことができる。また、分割された情報を全体で共有するために動的述語を導入して、一つ前の部分集合から得た潜在述語の集合から動的述語を観測述語化したものを生成し、次の部分集合に対する観測述語として追加するとともに、観測述語化した述語と潜在述語の組み合わせを用いて記述した論理式についての論理式テンプレートを用いて、当該論理式を生成することにより、分割した事例間の関係を間接的に表すことができる。
【0095】
MLNの学習が大きなデータに対しても行えるようになり、汎用性が広がる。より多くの事例からの学習が可能になるため、関係推定の精度が向上し、情報抽出システムの精度が高まる。
【0096】
次に、第2の実施の形態に係る発言間関係推定装置について説明する。なお、第2の実施の形態に係る発言間関係推定装置は、第1の実施の形態と同様の構成であるため、同一符号を付して説明を省略する。
【0097】
第2の実施の形態では、学習データを重複するように分割している点と、潜在述語間の関係を考慮した論理式を生成している点とが、第1の実施の形態と異なっている。
【0098】
第2の実施の形態に係る発言間関係推定装置100では、事例分割部23によって、学習データを重複するように分割する。与えられた学習データ(発言)をD個とすると、この発言の集合をN分割し、それぞれ部分集合をD1・・・DNとして、分割データ記憶部24に記憶させる。たとえば、100サンプルある場合、各部分集合が他の部分集合と重複するように、1-25,1-50,26-75,51-100という4つのデータに分割する。最初が25サンプルしかないのは、重複すべき直前のデータが無いためである。
【0099】
論理式生成部27は、上記の第1の実施の形態と同様に論理式を生成するとともに、部分集合Dn毎に、潜在述語間の関係を記述した論理式、すなわち、複数の潜在述語の組み合わせがあるとき、ある潜在述語が成立することを表す論理式を生成する。潜在述語間の関係を記述した論理式を生成する場合には、データが完全に分断されるのを避けるため、上述したように、データを重複させながら分割する。
【0100】
また、
図6のようにデータを重複させて分割する場合には、重複部分について、ある分割されたデータで行った推定を踏まえて、次の分割されたデータ上で再度推定を行うために、重複部分について推定した結果を次の分割されたデータ上に加えた観測述語(動的述語)が存在すれば次のデータ上で対応する潜在述語が真となる重みつきの論理式を生成するための論理式テンプレートを加える。
【0101】
論理式生成部27は、以下に示すように、一つ前の部分集合D(n−1)で真と推定された潜在述語の集合のうち、部分集合Dnと重複する部分に関する潜在述語の各々について観測述語化した述語があるとき、当該述語に対応する、部分集合Dn内の潜在述語が真となることを表す論理式を生成する。なお、この論理式は、
図6の動的述語が観測述語化されたものから、自身の潜在述語に対するアークに対応している。
【0102】
factor:for Id i
if obs_dloc(i) add [loc(i)] * w_dloc;
【0103】
この論理式と、上記の潜在述語間の関係を記述した論理式とを加えることで、ある潜在述語についての二度目の推定では、前後の分割された部分集合を考慮して推定を行うことができる。データを重複させて分割する場合には、この二度目の推定結果を、重複部分に関する潜在述語の推定結果とする。
【0104】
特徴量追加部29は、部分集合Dnで潜在述語dyn_dpが推論によって得られた場合、次の部分集合D(n+1)の観測述語obs_dpとして加えるために、モデル学習部28により部分集合Dnに対する推論で得られた真となる潜在述語の集合のうち、部分集合D(n+1)と重複する部分に関する潜在述語の集合から、動的述語を観測述語化したものを生成し、次の部分集合D(n+1)の観測述語として追加する。
【0105】
事例分割部33は、推定対象の発言の集合を重複するように分割する。与えられた未知の発言をD個とすると、この発言の集合をN分割し、それぞれ部分集合をD1・・・DNとして、分割データ記憶部34に記憶させる。
【0106】
論理式生成部36は、論理式生成部27と同様に、部分集合Dn毎に、潜在述語間の関係を考慮した論理式、すなわち、複数の潜在述語の組み合わせがあるとき、ある潜在述語が成立することを表す論理式を含んで、各論理式を生成する。
【0107】
また、論理式生成部36は、一つ前の部分集合D(n−1)と部分集合Dnとで重複する部分に関する潜在述語の各々についての動的述語を観測述語化したものがあるとき、部分集合Dn内の対応する潜在述語が真となることを表す論理式を更に生成する。
【0108】
関係推定部37は、分割データ記憶部34に記憶されている部分集合毎に、当該部分集合の発言のペアについて、論理式生成部36によって生成された各論理式、及びモデル記憶部31に記憶されたモデルの重みを用いて、推論を行い、尤もらしい関係性ラベル(潜在述語)の集合を得る。
【0109】
特徴量追加部38は、関係推定部37による部分集合Dnに対する推論で得られた真となる潜在述語の集合のうち、部分集合D(n+1)と重複する部分に関する潜在述語の集合について、動的述語を観測述語化したものを生成し、次の部分集合D(n+1)の観測述語として追加する。
【0110】
なお、第2の実施の形態に係る発言間関係推定装置100の他の構成及び作用については、第1の実施の形態と同様であるため、説明を省略する。
【0111】
このように、同じ潜在述語に対して二度推定を行うことで、データの分割をまたいだ潜在述語間の関係を扱うことができる。
【0112】
<実施例>
学習データを元にMLNによってモデルを学習し、テストを行った。ここでは、93ツイートからなるデータを4分割して、学習・テストを行った実験結果を示す。ツイート間の関係のあるなしのみの関係を扱った。この実験はクローズドな実験であり、学習とテストに同じデータを用いている。
【0114】
学習時間については分割有りのほうが学習の回数が多くなることからやや時間が増えたが、推定する時間は分割した場合のほうが半分程度となっており、大幅に高速化されていることが分かる。
【0115】
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【0116】
例えば、発言以外の文書データ間の関係を推定することに、本発明を適用してもよい。
【0117】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。