図8は、本発明の実施例1であるコミュニケーション活性化装置100のシステム概略を示す図である。
図1は、オンラインコミュニティのコミュニケーション情報を記録するコミュニケーション情報テーブルT1の例を示す図である。
図1に示すコミュニケーション情報テーブルT1には、カテゴリIDフィールドと、スレッドIDフィールドと、メッセージIDフィールドと、ユーザIDフィールドと、メッセージ時刻フィールドと、タイトルフィールドと、本文フィールドと、メッセージ種別フィールドとが含まれている。
上記「カテゴリIDフィールド」は、コミュニケーションのカテゴリを特定する識別子であり、ユーザのコミュニケーションが対象とするカテゴリに基づいて設定されている。なお、上記「カテゴリ」は、コミュニケーション活性化装置100において、ユーザまたはサービスを提供している主催者によって、設定されるコミュニケーション内容を分けた分類である。このカテゴリによって、ユーザは、コミュニケーションのための興味の対象を絞り込むことができる。
上記「カテゴリID」は、新たなカテゴリが設定された時刻に、コミュニケーション活性化装置100が設定する。
上記「スレッドIDフィールド」は、コミュニケーションのスレッドを特定する識別子であり、ユーザのコミュニケーションが、対象とするスレッドに基づいて設定される。上記「スレッド」は、1つの新規メッセージとそれに対する1以上の返信メッセージとの集合である。したがって、1つのスレッド内では、元のメッセージに起因する話題が、コミュニケーションの対象である場合が多く、ユーザは、カテゴリよりも、より詳細なコミュニケーションの興味の対象として、スレッドを選択する。
上記「スレッドID」は、新規のメッセージが設定された時刻に、コミュニケーション活性化装置100が設定する。
上記「メッセージIDフィールド」は、個々のメッセージ(新規または返信)を特定する識別子であり、各メッセージに対して、コミュニケーション活性化装置100が一意に設定する。
上記「ユーザIDフィールド」は、コミュニケーション活性化装置100がメッセージを発信したユーザを特定する識別子を格納する領域である。
上記「メッセージ時刻フィールド」は、コミュニケーション活性化装置100がメッセージを発信した時間を記録し、設定する領域である。
当該メッセージから、メッセージのタイトルをコミュニケーション活性化装置100が抽出し、タイトルフィールドに格納する。
当該メッセージから、メッセージの本文が、コミュニケーション活性化装置100によって抽出され、本文フィールドに格納される。
発信されたメッセージが新規の発信であるか(図1における「新規」)、他のメッセージに対する返信であるか(図1における「返信」)を、コミュニケーション活性化装置100が判定し、メッセージ種別フィールドに設定する。
今、コミュニケーションの方向性を考慮しながら、オンラインコミュニティのコミュニケーション情報を、グラフにモデル化する。ユーザu1が新規に発信したメッセージに対して、ユーザu2が返信した場合、ユーザu2は、ユーザu1に話しかけたと判断する。なお、上記「グラフ」は、離散数学における一般的なグラフであり、ノードとエッジとの集合で表される。
図2は、図1に示すコミュニケーション情報テーブルT1の例において、各カテゴリにおける時刻2008年6月21日0時37分のコミュニケーションをグラフにモデル化した例を示す図である。
上記の場合、ユーザu1、u2をノードとみなし、図2に示すように、ユーザu2からユーザu1への有向枝で、上記コミュニケーションの成立を表す。
この要領で、参加しているユーザを、ノードとし、カテゴリ毎に、返信メッセージをエッジとする有向グラフで表す。また、コミュニケーション時刻フィールド(図1に示すメッセージ時刻フィールド)のデータを参照することによって、過去のある時刻t0におけるグラフを、再現することができる。
図3は、図1に示すコミュニケーション情報テーブルT1の例において、時刻2008年6月21日1時9分のコミュニケーションをグラフにモデル化した例を示す図である。
このように、コミュニケーション情報をグラフにモデル化したときに、そのグラフは、時間とともに成長する(ノード、エッジが増える)。
さらに、上記グラフにおける任意の3ノード(すなわち、異なる3ユーザ)を選択し、これら3ノードからなる部分グラフがどのような構造をしているかを考える。なお、上記「部分グラフ」は、元のグラフのノードとエッジとの部分集合で構成される。
図4は、3ノードによって構成されている連結グラフの全パターンを示す図である。
なお、上記「連結グラフ」は、グラフの任意の2点間に道が存在するグラフである(1−3⇒1−2−3、2−3⇒2−3、1−2⇒1−2)。
3ノードからなる連結グラフは、任意のノードを入れ換えたものを同一と考えると、図4に示す13通りのパターンしか存在しない。それぞれのパターンについて、図4に示すように、1〜13の数字を付与する。
今、3−部分グラフに含まれているユーザのそれぞれが、どこに位置するかを考慮する。なお、上記「3−部分グラフ」は、ノードの数が3つの部分グラフである。
図5は、3−部分グラフにおけるユーザのポジションを示す図である。
図5に示すように、3−部分グラフにおける上のノードをポジション1、左下のノードをポジション2、右下のノードをポジション3と呼ぶ。
図6は、3ノード間の有向枝の出現パターンを示す図である。
13通りの3−部分グラフパターンとポジションとに基づくノードの種類は、図6に示す1〜30(丸印の中に記載されている数字)の30通りである。
ポジションに応じて決定されるノードの種類を、「構造」と呼ぶ。
ここで、3−部分グラフ内において、入ってくるエッジの数と、出るエッジの数とが等しいノードは、同一の「構造」のノードであるとみなす。
本発明の目的は、全てのユーザのそれぞれが過去にコミュニケーションを交わしたことがなくても、将来コミュニケーションを行う可能性の高い2者を発見することであり、このために、ノード間にどの程度、新たな返信が発生し易いかを、2ノードについてスコアリングし、新たなエッジがつき易い(返信が発生し易い)2ノードを抽出する。
図7は、3−部分グラフ構造に基づく返信推薦の概要を示す図である。
なお、3−部分グラフ構造は、13通りのパターンであり、3−部分グラフは、個々の3−部分グラフである。
時刻t0は、オンラインコミュニティを開始し、コミュニケーション情報が蓄積され始めた時刻である。まず、時刻t0から、ある過去の時刻t1までのコミュニケーション情報を使って、3−部分グラフと、それらがどのユーザによって構成されているかに関する情報とを使って、3−部分グラフと、それらがどのユーザによって構成されているかに関する情報とを取得する。
次に、時刻t1と、それよりも少し未来の時刻t2との間に行われた返信メッセージを使って、それらがどの構造(ポジションにより決定されるノードの種類)間で成立したものであるかを、カウントする。たとえば、構造10(たとえば図6に示すノードの中に記載されている数字10)から、構造10への返信メッセージが6件あったとする。
次に、同区間(t1〜t2)で、構造10から構造10へ返信メッセージが発生する期待値を求める。つまり、構造Aから構造Bへの返信メッセージの件数(絶対値)を比較しても、真に構造Aから構造Bに返信が発生しやすいかどうかを評価できない。したがって、構造Aから構造Bへの返信メッセージの相対的な件数(相対値)を求めるために、期待値が必要である。
この期待値と、観測値である上記6件という数値とを比較することによって、構造10から構造10への構造別推薦スコアを求める。上記「推薦スコア」は、当該2構造間の返信メッセージの発生し易さを示す数値である。当該2構造間に発生した返信の数の偏差値を求め、この偏差値が、当該2構造間の返信メッセージの発生し易さであると考える。
次に、時刻t0から時刻t2までのコミュニケーション情報を使って、3−部分グラフと、それらがどのユーザによって構成されているかに関する情報を取得する。このときに得られる3−部分グラフは、t1までの3−部分グラフに含まれている3ユーザが、同じパターンをなしているとは、限らない。上記処理で、構造10から構造10へは、比較的返信メッセージが着き易いということがわかっていれば、時刻t2において、構造10、構造10をなしている2ユーザ間は、返信メッセージが着きやすいとし、それらユーザに互いの新規メッセージを推薦する。つまり、上記2ユーザ間で発信すれば、返信される確率が高いので、発信する意義があり、このために、新規メッセージを推薦する。
本発明の実施例1であるコミュニケーション活性化装置100は、コミュニティ内のコミュニケーション活性化装置の例である。
コミュニケーション活性化装置100は、図8に示すように、コミュニケーション情報抽出部10と、3−部分グラフ情報テーブル構築部20と、構造別推薦スコアテーブル構築部30と、新規メッセージ推薦部40と、通信部50と、入出力部60と、記録部70とを有する。コミュニケーション活性化装置100には、ネットワークNW1を経由した外部端末80と、外部装置90とが接続される。
コミュニケーション情報抽出部10は、図1に示すコミュニケーション情報テーブルT1に記載されている情報を、記録部70から抽出し、この抽出した情報を、3−部分グラフ情報テーブル構築部20と、構造別推薦スコアテーブル構築部30と、新規メッセージ推薦部40とに受け渡す。
3−部分グラフ情報テーブル構築部20は、コミュニケーション情報抽出部10から受け渡されたコミュニケーション情報に記載されている情報に基づいて、図14に示す3−部分グラフ情報テーブルT2を、記録部70に構築し、構造別推薦スコアテーブル構築部30と、新規メッセージ推薦部40とに、3−部分グラフ情報テーブルT2を受け渡す。
構造別推薦スコアテーブル構築部30は、3−部分グラフ情報テーブル構築部20から受け渡された3−部分グラフ情報テーブルT2(図14参照)に記載されている情報を用いて、図22に示す構造別推薦スコアテーブルT4を記録部70に構築する。
新規メッセージ推薦部40は、コミュニケーション情報抽出部10から受け渡されたコミュニケーション情報に記載されている情報と、図14に示す3−部分グラフ情報テーブルT2に記載されている情報と、図22に示す構造別推薦スコアテーブルT4に記載されている情報とを用い、ユーザに推薦すべき新規メッセージを決定する。
記録部70は、図1に示すコミュニケーション情報テーブルT1と、図14に示す3−部分グラフ情報テーブルT2と、図16に示す構造別回答数テーブルT3と、図22に示す構造別推薦スコアテーブルT4とを記録している。
3−部分グラフ情報テーブル構築部20は、3−部分グラフ情報テーブル更新部21を有する。
3−部分グラフ情報テーブル更新部21は、3−部分グラフ情報テーブル構築部20から受け渡されたコミュニケーション時刻フィールドが、tc,0以上tc,1以下である投稿Pc(tc,0,tc,1)に基づいて、記録部70における3−部分グラフ情報テーブルT2(図14参照)を更新する。
3−部分グラフ情報テーブル更新部21は、3−部分グラフマッチング部211を有する。
3−部分グラフマッチング部211は、3−部分グラフ情報テーブル更新部21から受け渡されたコミュニケーション時刻フィールドが、tc,0以上tc,1以下である投稿Pc(tc,0,tc,1)と、ユーザIDフィールドとの組み合わせ(u1,u2,u3)(3ユーザIDの組み合わせ。重複を許さない)に基づいて、ユーザIDの組み合わせ(u1,u2,u3)に対応する3−部分グラフのパターンが、図4に示す13種類のパターンのうちのどのパターンであるかを示す投稿Patternu1,u2,u3と、ユーザu1,u2,u3のうちで、3−部分グラフのポジション1、ポジション2、ポジション3に当て嵌まるユーザIDP1,P2,P3とを取得する。
構造別推薦スコアテーブル構築部30は、図22に示す構造別推薦スコアテーブルT4を有する。
構造別回答数テーブル構築部31は、構造別推薦スコアテーブル構築部30から受け渡された3−部分グラフ情報テーブルT2(図14参照)に記載されているカテゴリcの3−部分グラフ情報のうちで、時刻がtc,1である投稿Gc,1と、コミュニケーション情報に記載されているカテゴリcの投稿のうちで、コミュニケーション時刻フィールドがtc,1以上、tc,2未満の投稿Pc(tc,1,tc,2)とを用い、図16に示す構造別回答数テーブルT3を、記録部70に構築する。
構造別回答数テーブル構築部31は、構造別回答数テーブル更新部311を有する。
構造別回答数テーブル更新部311は、構造別回答数テーブル構築部31から受け渡されたユーザu1、u2、3−部分グラフ情報集合Gu1,u2に基づいて、図16に示す構造別回答数テーブルT3を更新する。
新規メッセージ推薦部40は、ユーザ別推薦スコア算出部41を有する。
ユーザ別推薦スコア算出部41は、記録部70に記録されている3−部分グラフ情報テーブルT2(図14参照)と、図22に示す構造別推薦スコアテーブルT4とを参照し、ユーザu2の新規メッセージに対するユーザu1の推薦スコアru1,u2 cを算出する。
図9は、コミュニケーション活性化装置100の全体の処理を示すフローチャートである。
S1で、コミュニケーション情報抽出部10が、図1に示すコミュニケーション情報テーブルT1に記載されている情報を、記録部70から抽出し、それを3−部分グラフ情報テーブル構築部20と構造別推薦スコアテーブル構築部30と、新規メッセージ推薦部40とに受け渡す。
S2で、3−部分グラフ情報テーブル構築部20が、コミュニケーション情報抽出部10から受け渡されたコミュニケーション情報に記載されている情報に基づいて、図14に示す3−部分グラフ情報テーブルT2を記録部70に構築し、構造別推薦スコアテーブル構築部30と、新規メッセージ推薦部40に、3−部分グラフ情報テーブルT2を受け渡す。
S3で、構造別推薦スコアテーブル構築部30が、3−部分グラフ情報テーブル構築部20から受け渡された3−部分グラフ情報テーブルT2(図14参照)に記載されている情報を用いて、図22に示す構造別推薦スコアテーブルT4を記録部70に構築する。
S4で、新規メッセージ推薦部40が、コミュニケーション情報抽出部10から受け渡されたコミュニケーション情報に記載されている情報と、図14に示す3−部分グラフ情報テーブルT2に記載されている情報と、図22に示す構造別推薦スコアテーブルT4に記載されている情報とを用い、ユーザに推薦すべき新規メッセージを決定する。
新規メッセージ推薦部40は、推薦結果(推薦すべき新規メッセージ)を記録部70に記録するようにしてもよい。また、入出力部60を介して、外部出力装置に、上記推薦結果を出力するようにしてもよく、通信部50を介して、予め定められた推薦結果通知先に、上記推薦結果を通知するようにしてもよい。
図10は、3−部分グラフ情報テーブル構築部20が、図14に示す3−部分グラフ情報テーブルT2を構築する動作を示すフローチャートである。
ただし、どの構造にどれくらい新たなエッジ(返信)が発生し易いかは、カテゴリによって異なると考えられる。そこで、S10以下のステップでは、カテゴリ毎に分けて処理する。
S10では、3−部分グラフ情報テーブル構築部20が、コミュニケーション情報抽出部10から受け渡されたコミュニケーション情報に記載されているカテゴリcの投稿から、最も古い投稿の時刻tc,0と、最も新しい投稿の時刻tc,3とを取得し、図14に示す3−部分グラフ情報テーブルT2を構築するための時刻(tc,0,…,tc,3)を、4点、算出する。次の式(1)を満たす4点時刻(tc,0,…,tc,3)を設定する。
tc,1−tc,0>>tc,2−tc,1=tc,3−tc,2 …式(1)
S11では、3−部分グラフ情報テーブル構築部20が、一時変数iを用意し、その値を、1に初期化する。
S12では、3−部分グラフ情報テーブル構築部20が、コミュニケーション情報抽出部10から受け渡されたコミュニケーション情報に記載されているカテゴリcの投稿のうちで、コミュニケーション時刻フィールドが、tc,0以上tc,1以下である投稿Pc(tc,0,tc,1)を取得し、これら(投稿Pc(tc,0,tc,1))を、3−部分グラフ情報テーブル更新部21に受け渡す。
S13で、3−部分グラフ情報テーブル更新部21が、3−部分グラフ情報テーブル構築部20から受け渡されたコミュニケーション時刻フィールドが、tc,0以上tc,1以下である投稿Pc(tc,0,tc,1)に基づいて、記録部70における3−部分グラフ情報テーブルT2(図14参照)を更新する。
S14では、3−部分グラフ情報テーブル構築部20が、一時変数iをインクリメントする。
図11は、3−部分グラフ情報テーブル更新部21が行う3−部分グラフ情報テーブルT2(図14参照)の更新処理を示すフローチャートである。
S21では、3−部分グラフ情報テーブル更新部21が、3−部分グラフ情報テーブル構築部20から受け渡されたコミュニケーション時刻フィールドが、tc,0以上tc,1以下である投稿Pc(tc,0,tc,1)のうちで、ユーザIDフィールドの取りうる値(ID)の3つの全組み合わせを取得する。
S24で、3−部分グラフマッチング部211が、3−部分グラフ情報テーブル更新部21から受け渡されたコミュニケーション時刻フィールドが、tc,0以上tc,1以下である投稿Pc(tc,0,tc,1)と、ユーザIDフィールドとの組み合わせ(u1,u2,u3)(3ユーザIDの組み合わせ)に基づいて、ユーザIDの組み合わせ(u1,u2,u3)に対応する3−部分グラフのパターンが、図4に示す13種類のパターンのうちのどのパターンであるかを示す投稿Patternu1,u2,u3と、ユーザu1,u2,u3のうちで、3−部分グラフのポジション1、ポジション2、ポジション3に当て嵌まるユーザIDP1,P2,P3とを取得する。
なお、上記「3−部分グラフのポジション1」は、3−部分グラフにおける上のノードに当て嵌まるユーザである。上記「3−部分グラフのポジション2」は、3−部分グラフにおける左下のノードに当て嵌まるユーザである。上記「3−部分グラフのポジション3」は、3−部分グラフにおける右下のノードに当て嵌まるユーザである。
S26で、3−部分グラフ情報テーブル更新部21が、カテゴリIDフィールドの値が、cであり、ポジション1ユーザIDフィールドの値が、P1であり、ポジション2ユーザIDフィールドの値が、P2であり、ポジション3ユーザIDフィールドの値が、P3であり、時刻フィールドの値が、tc,iであり、3−部分グラフパターンフィールドの値が、patternu1,u2,u3である行を、図14に示す3−部分グラフ情報テーブルT2に挿入する。
図12は、3−部分グラフマッチング部211において、3ユーザのそれぞれについて行う3−部分グラフマッチング処理を示すフローチャートである。
S31で、3−部分グラフマッチング部211が、ユーザIDフィールドの組み合わせ(u1,u2,u3)に対応する(つまり、ユーザIDフィールドに記載されている異なるユーザu1、u2、u3について)全6通りの順序(u1,u2,u3)、(u1,u3,u2)、(u2,u1,u3)、(u2,u3,u1)、(u3,u1,u2)、(u3,u2,u1)を取得する。
S31で、3−部分グラフマッチング部211が、3−部分グラフ情報テーブル更新部21から受け渡されたコミュニケーション時刻フィールドが、tc,0以上tc,i以下の投稿Pc(tc,0,tc,i)に基づいて、ユーザIDフィールドの順序(P1,P2,P3)に対応する行列であって、図13に示す3行3列のコミュニケーション行列MP1,P2,P3を作成する。
図13は、3−部分グラフマッチング処理のために、13種類の各パターンにおけるコミュニケーション行列Mk(k=1,…,13)を示す図である。
コミュニケーション行列MP1,P2,P3の各成分は、対角成分の値を、*とし、x行y列の値が、投稿Pc(tc,0,tc,i)において、発信元アドレスフィールドの値がポジションPx(x=1、2、3のいずれか)であり、かつコミュニケーション識別フィールドの値が「返信」である行のうちで、発信元アドレスフィールドの値がポジションPy(y=1、2、3のいずれか)であり、かつコミュニケーション識別フィールドの値が「新規」である行と、スレッドIDフィールドの値とが一致する投稿がある場合、1を与え、一致しない場合、0を与える。
つまり、各コミュニケーション行列MP1,P2,P3の各成分は、対角成分の値を、*とし、x行y列の値を、x番目のノードからy番目のノードにエッジ(返信)がある場合、1を与え、エッジ(返信)がない場合、0を与える。なお、比較の際に、Mkの対角成分の値はチェックしない。
また、コミュニケーション行列MP1,P2,P3の対角成分の値を、*で与えているが、*の他のどのような値を与えるようにしてもよい。
S35で、3−部分グラフマッチング部211が、一時変数kを用意し、その値を1に初期化する。
S37で、3−部分グラフマッチング部211が、ユーザIDフィールドの順序(P1,P2,P3)に対応する3行3列のコミュニケーション行列MP1,P2,P3と、k番目のパターンを示すコミュニケーション行列Mkとが互いに一致するかどうかを判別する。
S38で、3−部分グラフマッチング部211が、ユーザIDフィールドに記載されている3ユーザの組み合わせ(u1,u2,u3)に対応する3−部分グラフパターンフィールドの値patternu1,u2,u3をkとし、3−部分グラフ情報データベース更新部21に受け渡す。
S39で、3−部分グラフマッチング部211が、一時変数kをインクリメントする。
図14は、図14に示す3−部分グラフ情報テーブルT2の例を示す図である。
3−部分グラフ情報テーブルT2には、カテゴリIDフィールドと、ポジション1ユーザIDフィールドと、ポジション2ユーザIDフィールドと、ポジション3ユーザIDフィールドと、3−部分グラフ時刻フィールドと、3−部分グラフパターンフィールドとが含まれている。
上記「ポジション1ユーザIDフィールド」は、ある行の3−部分グラフを構成する3ユーザのうちで、ポジション1にあたるユーザIDが、3−部分グラフ情報テーブル更新部21によって設定される。
上記「ポジション2ユーザIDフィールド」は、ある行の3−部分グラフを構成する3ユーザのうちで、ポジション2にあたるユーザIDが、3−部分グラフ情報テーブル更新部21によって設定される。
上記「ポジション3ユーザIDフィールド」は、ある行の3−部分グラフを構成する3ユーザのうちで、ポジション3にあたるユーザIDが、3−部分グラフ情報テーブル更新部21によって設定される。
上記「3−部分グラフ時刻フィールド」は、ある行の3−部分グラフがコミュニティ上で観測された時刻が、3−部分グラフ情報テーブル更新部21によって設定される。
上記「3−部分グラフパターンフィールド」は、ある行の3−部分グラフが、図13に示す13種類のいずれと一致するかを表す値が、3−部分グラフ情報テーブル更新部21によって設定される。
図15は、構造別推薦スコアテーブル構築部30が、図22に示す構造別推薦スコアテーブルT4を構築する動作を示すフローチャートである。
S41で、構造別推薦スコアテーブル構築部30が、図14に示す3−部分グラフ情報テーブルT2に記載されているカテゴリcの3−部分グラフ情報から、カテゴリcの構造別推薦スコアを計算する(新規メッセージに対する返信を推薦する)ための時刻として、4点時刻(tc,0,…,tc,3)を取得する。
S44で、構造別推薦スコアテーブル構築部30が、図14に示す3−部分グラフ情報テーブルT2に記載されているカテゴリcの3−部分グラフ情報のうちで、時刻がtc,0、である投稿Gc,1を取得する。
S22で、構造別推薦スコアテーブル構築部30が、コミュニケーション情報抽出部10から受け渡されたコミュニケーション情報に記載されているカテゴリcの投稿のうちで、コミュニケーション時刻フィールドが、tc,1以上であり、tc,2未満である投稿Pc(tc,1,tc,2)を取得し、それを3−部分グラフ情報テーブルに受け渡す。ただし、3−部分グラフ情報テーブルは、この投稿Pc(tc,1,tc,2)を、記録部70に記録するようにしてもよい。
S23で、構造別回答数テーブル構築部31が、構造別推薦スコアテーブル構築部30から受け渡された3−部分グラフ情報テーブルT2(図14参照)に記載されているカテゴリcの3−部分グラフ情報のうちで、時刻がtc,1である投稿Gc,1と、コミュニケーション情報に記載されているカテゴリcの投稿のうちで、コミュニケーション時刻フィールドがtc,1以上、tc,2未満の投稿Pc(tc,1,tc,2)とを用い、図16に示す構造別回答数テーブルT3を、記録部70に構築する。
図16は、構造別回答数テーブルT3の例を示す図である。
構造別推薦スコア算出部32と構造別推薦スコアテーブル構築部30とに、図16に示す構造別回答数テーブルT3を受け渡す。ただし、構造別回答数テーブル構築部31は、結果である構造別回答数(後述する)を、記録部70に記録する必要はない。ここで、図16に示す構造別回答数テーブルT3における構造フィールドの取りうる値の全てを取得し、それらの各要素について、S48、S49を実行する。
S48、S49の説明に入る前に、図16に示す構造別回答数テーブルT3について説明する。
図16に示す構造別回答数テーブルT3には、カテゴリIDフィールドと、時刻フィールドと、構造フィールドと、回答数フィールドとが含まれている。
上記「構造フィールド」は、図16における該当する行に対応するカテゴリIDフィールドの値を、cとし、時刻フィールドの値を、tc,iとした場合、カテゴリcの時刻tc,i−1からtc,iにおいて、時刻tc,i−1における3−部分グラフ内のパターンと、それに含まれているユーザによって特定されるエッジ(返信)の種類とを示す領域である。
たとえば、構造フィールドの値が(4,5)である場合、構造4のユーザの新規メッセージに対して、構造5のユーザが返信したことを意味し、グラフにモデル化すると、「4←5」で表すことができる。なお、構造4は、図6に示す3ノード間の有向枝の出現パターンにおいて丸印の中に記載されている数字4が示す構造である。
上記「回答数フィールド」は、図16における対応する行のカテゴリIDと、構造間(ノードの種類)における時刻tc,i−1、tc,iとの間に発生した回答数を示す領域である。
S48で、構造別推薦スコアテーブル構築部30が、図16に示す構造別回答数テーブルT3の回答数フィールドに記載されている回答数(構造別回答数)に関する情報であり、カテゴリIDフィールドの値が、cであり、時刻フィールドの値が、tc,2であり、構造フィールドの値が、(s1,s2)である投稿の回答数ns1,s2 c,2を取得する。
次に、構造別推薦スコア算出部32が、構造別回答数テーブル構築部31から受け渡された投稿Gc,1、回答数ns1,s2 c,2に基づいて、構造別推薦スコアfs1,s2 c,2を算出し、構造別推薦スコア算出部32に受け渡す。ただし、構造別推薦スコア算出部32は、構造別推薦スコアfs1,s2 c,2を、記録部70に記録するようにしてもよい。
図22は、構造別推薦スコアテーブルT4の例を示す図である。
S49で、構造別推薦スコアテーブル構築部30が、カテゴリIDフィールドの値がcであり、時刻フィールドの値がtc,2であり、構造フィールドの値が(s1,s2)であり、構造別推薦スコアフィールドの値がfs1,s2 c,2である行を、図22に示す構造別推薦スコアテーブルT4に挿入する。
図17は、構造別回答数テーブル構築部31が構造別回答数テーブルT3(図16参照)を構築する動作を示すフローチャートである。
S51で、構造別回答数テーブル構築部31が、構造別推薦スコアテーブル構築部30から受け渡された投稿Pc(tc,1,tc,2)において、スレッドIDフィールドの取りうる値の全てを取得する。そのスレッドID集合に含まれている各スレッドqについて、S52〜S56を実行する。
S54では、図16に示す構造別回答数テーブル構築部31が、投稿Pc(tc,1,tc,2)のうちで、スレッドIDが、qであり、かつ、メッセージ種別フィールドの値が、「新規」である行のユーザIDフィールドの値u1を取得する。
S55で、図16に示す構造別回答数テーブル構築部31が、投稿Pc(tc,1,tc,2)のうちで、スレッドIDがqであり、かつメッセージ種別フィールドの値が「返信」である投稿の全ての投稿Pqを取得する。投稿Pqに含まれている各投稿について、S54〜S56を実行する。
S57では、構造別回答数テーブル構築部31が、処理中の投稿のユーザIDフィールドの値u2を取得する。
S58で、構造別回答数テーブル構築部31が、構造別推薦スコアテーブル構築部30から受け渡された3−部分グラフ情報集合Gc,1において、ポジション1ユーザIDフィールド、ポジション2ユーザIDフィールド、ポジション3ユーザIDフィールドのいずれか2つに、u1、u2をともに含む行の集合Gu1,u2を取得する。
S59で、構造別回答数テーブル更新部311が、構造別回答数テーブル構築部31から受け渡されたユーザu1、u2、3−部分グラフ情報集合Gu1,u2に基づいて、図16に示す構造別回答数テーブルT3を更新する。
図18は、構造別回答数テーブル更新部311が、図16に示す構造別回答数テーブルT3を更新する動作を示すフローチャートである。
S61で、構造別回答数テーブル更新部311が、Gu1,u2に含まれている1つの3−部分グラフ情報gu1,u2を取得し、S62で、この3−部分グラフパターンフィールドの値patternu1,u2を得る。
今、ユーザuが、1つの3−部分グラフ情報gu1,u2のポジションx1ユーザIDフィールド(x1は、1、2、3のいずれかであり、ポジション1ユーザIDフィールド、ポジション2ユーザIDフィールド、ポジション3ユーザIDフィールドのいずれか)に含まれ、ユーザu2が、1つの3−部分グラフ情報gu1,u2のポジションx1ユーザIDフィールドに含まれているとする。なお、1つの3−部分グラフ情報gu1,u2のポジションx1、x2が取りうる値は、1、2、3のいずれかであり、またテーブルの設計から、1つの3−部分グラフ情報gu1,u2のポジションx1≠x2である。
S63で、構造別回答数テーブル更新部311が、1つの3−部分グラフ情報gu1,u2のポジションx1、x2の値に基づいて、ユーザ構造決定ルールを用い、構造フィールドの値(s1,s2)を決定する。ただし、構造フィールドの値s1が、ユーザu1に対応する値であり、構造フィールドの値s2が、ユーザu2に対応する値である。
図19は、ユーザ構造決定ルールR1をまとめた図である。
たとえば、図14に示す3−部分グラフパターンフィールドの値patternu1,u2が、5であり、1つの3−部分グラフ情報gu1,u2のポジションx1の値が3であり、1つの3−部分グラフ情報gu1,u2のポジションx2の値が2であるときに、ユーザu1に対応する構造フィールドの値s1は、13であり、ユーザu2に対応する構造フィールドの値s2は、12である。
S63で、構造別回答数テーブル更新部311が、図16に示す構造別回答数テーブルT3に記載されている構造別回答数のうちで、カテゴリIDフィールドの値が、cであり、時刻フィールドの値が、tc,iであり、構造フィールドの値が、(s1,s2)である行があるかどうかを判別する。
S64で、構造別回答数テーブル更新部311が、カテゴリIDフィールドの値が、cであり、時刻フィールドの値が、tc,2であり、構造フィールドの値が、(s1,s2)であり、回答数フィールドの値が1である行を、図16に示す構造別回答数テーブルT3に挿入する。
S65で、構造別回答数テーブル更新部311が、カテゴリIDフィールドの値が、cであり、時刻フィールドの値が、tc,2であり、構造フィールドの値が、(s1,s2)である行を参照し、回答数フィールドの値ns1,s2 c,2を得て、カテゴリIDフィールドの値が、cであり、時刻フィールドの値が、tc,2であり、構造フィールドの値が、(s1,s2)である行における回答数フィールドの値を、図16に示す構造別回答数テーブルT3ns1,s2 c,2+1において、更新する。
図20は、構造別推薦スコア算出部32が構造別推薦スコアを算出する動作を示すフローチャートである。
S71で、構造別推薦スコア算出部32が、ユーザ構造決定ルールR1を参照し、構造別推薦スコアテーブル構築部30から受け渡された構造フィールドの値s1の値から、対応する3−部分グラフパターンpatterns1を取得する。ただし、patterns1は、構造フィールドの値s1から一意に決まる。これは、構造が異なる2つのパターンに出現しないことに起因する。つまり、たとえば、図6において、構造9は、3−部分グラフパターン4にしか出現しない。
S72で、構造別推薦スコア算出部32が、構造別推薦スコアテーブル構築部30から受け渡されたGc,1のうちで、3−部分グラフパターンフィールドの値が、patterns1である行の数|patterns1|を、取得する。
S73で、構造別回答数期待値及び標準偏差算出部321とが、構造別推薦スコア算出部32から受け渡されたGc,1、Pc(tc,1,tc,2)を用い、構造フィールドの値(s1,s2)に対応する回答数の期待値<ns1,s2 c,2>、標準偏差σs1,s2 c,2を算出する。なお、上記標準偏差σs1,s2 c,2は、後述の式(4)、S91で定義されている。
S74で、構造別推薦スコア算出部32が、構造別推薦スコアテーブル構築部30から受け渡された回答数の期待値<ns1,s2 c,2>と、σs1,s2 c,2とに応じて、以下の式(2)を用い、構造フィールドの値(s1,s2)に対応する推薦スコアfs1,s2 c,2を求める。なお、fs1,s2 c,2の右上の2は、時刻t2である。
fs1,s2 c,2=(ns1,s2 c,2−<ns1,s2 c,2>)/σs1,s2 c,2 …式(2)
図21は、構造別回答数期待値及び標準偏差算出部321において、上記推薦スコア算出に必要な構造別回答数期待値と標準偏差σs1,s2 c,2とを算出する動作を示すフローチャートである。
まず、時刻tc,1からtc,2の間に投稿された投稿の集合Pc(tc,1,tc,2)から、ユーザ集合を抽出する。
次に、抽出されたユーザ集合から、ランダムに異なる2ユーザを選択し、2ユーザで構成されるエッジ(返信)を、ランダムに、|P1,2 a|回、生成した場合の返信数を取得する。ここで、上記|P1,2 a|は、投稿の集合Pc(tc,1,tc,2)に含まれている返信メッセージの数である。
この回答数を取得する処理を、予め設定した回数(ここでは1000回)実行することによって、|P1,2 a|×1000個の回答数が得られ、その中に含まれている構造フィールドの値(s1,s2)毎に、期待値と標準偏差σs1,s2 c,2とを算出する。
S81で、構造別回答数期待値及び標準偏差算出部321が、Pc(tc,1,tc,2)に含まれている返信メッセージの数|P1,2 a|を取得する。
S83以下は、Pc(tc,1,tc,2)と同等の回答数分ランダムの異なる2ユーザ間のコミュニケーションを発生させ、その場合の構造別回答数を取得するフローチャートである。
S83で、構造別回答数期待値及び標準偏差算出部321が、予め設定した回数分繰り返し、ランダムに発生させた返信に対する構造別回答数を取得し、構造別回答数の期待値<ns1,s2 c,2>、標準偏差σs1,s2 c,2を算出する。図21において、たとえば1000回繰り返すようにしているが、この値は、任意の適当な値でよい。
S87で、構造別回答数期待値及び標準偏差算出部321が、投稿の集合Pc(tc,1,tc,2)に含まれている互いに異なる2ユーザIDv1,v2を、ランダムに取得する。
S88で、構造別回答数期待値及び標準偏差算出部321が、投稿Gc,1において、ポジション1ユーザIDフィールド、ポジション2ユーザIDフィールド、ポジション3ユーザIDフィールドのいずれか2つに、ユーザIDv1、ユーザIDv2をともに含む行の集合Gv1,v2を取得する。
S89は、構造別回答数テーブル更新部311が、構造別回答数期待値及び標準偏差算出部321から受け渡されたv1、v2、Gv1,v2に基づいて、v1、v2対応のユーザ構造sv1、sv2に対応する回答数ns1,s2 c,2(i,j)を算出する。
S91で、構造別回答数期待値及び標準偏差算出部321が、下記の式(3)、式(4)を用いて、構造フィールドの値(エッジ(返信)の種類)(s1,s2)毎に、構造別回答数の期待値<ns1,s2 c,2>、標準偏差σs1,s2 c,2を算出する。
図22に示す構造別推薦スコアテーブルT4に、カテゴリIDフィールドと、時刻フィールドと、構造フィールドと、推薦スコアフィールドとが含まれている。
上記「回答数フィールド」は、当該行のカテゴリIDcと、構造フィールドの値(エッジ(返信)の種類)(s1,s2)と、時刻tc,1、tc,2間に対応する推薦スコアfs1,s2 c,2とを示す。
ここまでの処理によって、時刻tc,1、tc,2間において、構造フィールドの値(s1,s2)にどれだけ新たなエッジ(返信)が発生し易いかを、構造別推薦スコアとして算出することができる。つまり、「構造別推薦スコア」は、時刻tc,1、tc,2間において、構造フィールドの値(s1,s2)にどれだけ新たなエッジ(返信)が発生し易いかを示すスコアである。
次に、この構造別推薦スコアを用いて、時刻tc,2、tc,3間で、どの構造に、新たなエッジ(返信)が発生し易いかを予測し、返信メッセージ発信者毎に、予測された2ユーザへの返信を促す新規メッセージを抽出する処理について説明する。
図23は、新規メッセージ推薦部40が新規メッセージを推薦する(システムが返信メッセージ発信者側に新規メッセージ発信者のメッセージを推薦する)動作を示すフローチャートである。
S101で、新規メッセージ推薦部40が、コミュニケーション情報抽出部10から受け渡されたコミュニケーション情報に記載されている情報から、全ユーザIDの集合Uと、全カテゴリIDの集合Cとを取得する。このユーザID集合Uに含まれている各ユーザuと、カテゴリID集合Cに含まれている各カテゴリcとについて、S101〜S110を実行する。
S106で、新規メッセージ推薦部40が、コミュニケーション情報抽出部10から受け渡されたコミュニケーション情報に記載されている情報のうちで、カテゴリIDが、cであり、発生時刻が、tc,2からtc,3までであり、メッセージ種別が、「新規」である全ての投稿Qc(tc,2,tc,3)を取得する。全投稿Qc(tc,2,tc,3)に含まれている各投稿qについて、S108〜S110を実行する。
S108で、新規メッセージ推薦部40が、未処理の投稿qを選択し、このユーザIDu2を取得する。
S109で、ユーザ別推薦スコア算出部41が、記録部70に記録されている3−部分グラフ情報テーブルT2(図14参照)と、図22に示す構造別推薦スコアテーブルT4とを参照し、ユーザu2の新規メッセージに対するユーザu1の推薦スコアru1,u2 cを算出し、新規メッセージ推薦部40に受け渡す。なお、ユーザ別推薦スコア算出部41は、ru1,u2 cを記録部70に記録するようにしてもよい。
S110で、新規メッセージ推薦部40が、ユーザ別推薦スコア算出部41から受け渡された推薦スコアru1,u2 cが、予め設定されているある闘値θcを越えるか否かを判定する。ただし、闘値として、たとえば1のような定数を設定してもよく、ユーザu1に対して推薦する新規メッセージの数が、ある一定数になるように、上記閾値を調整する(閾値処理ではなく、ユーザ別推薦スコア上位n件を取得する)ようにしてもよい。
S111で、新規メッセージ推薦部40が、返信すべきメッセージとして、投稿qを、ユーザu1に推薦する。
図24は、ユーザ別推薦スコア算出部41がユーザ別推薦スコアを算出する動作を示すフローチャートである。
S121で、ユーザ別推薦スコア算出部41が、ユーザu1の新規メッセージに対するユーザu2の推薦スコアru1,u2 cに、初期値として0を代入する。
S122で、ユーザ別推薦スコア算出部41が、記録部70に記録されている3−部分グラフ情報テーブルT2(図14)を参照し、時刻が、tc,2であり、ポジション1ユーザIDフィールド、ポジシヨン2ユーザIDフィールド、ポジション3ユーザIDフィールドに、ユーザu1、u2をともに含む3−部分グラフ情報の全てGu1,u2 2を取得する。Gu1,u2 2の各3−部分グラフ情報gu1,u2 2について、S124、S125,S126、S127を実行する。
S124で、ユーザ別推薦スコア算出部41が、3−部分グラフ情報gu1,u2 2に含まれている3−部分グラフ情報の3−部分グラフパターンフィールドのpatternu1,u2を取得する。さらに、ユーザu1が、3−部分グラフ情報gu1,u2のポジションx1ユーザIDフィールドに含まれ(ポジション1、ポジション2、ポジション3のうちの1つ)、ユーザu2が、1つの3−部分グラフ情報gu1,u2のポジションx1ユーザIDフィールドに含まれているとして、1つの3−部分グラフ情報gu1,u2のポジションx1、x2を取得する。
S125で、ユーザ別推薦スコア算出部41が、1つの3−部分グラフ情報gu1,u2のポジションx1、x2、patternu1,u2の値からユーザ構造決定ルールR1を用いて、構造フィールドの値(s1,s2)を決定する。ただし、構造フィールドの値s1が、ユーザu1に対応する値であり、構造フィールドの値s2が、ユーザu2に対応する値である。ユーザ構造決定ルールR1を、上記の通り、図16に示してある。
S126で、ユーザ別推薦スコア算出部41が、記録部70に記録されている構造別推薦スコアテーブルT4(図22参照)に記載の構造別推薦スコア(テーブルの行の1つ)の中で、カテゴリフィールドの値が、cであり、時刻フィールドの値が、tc,2であり、構造フィールドの値が(s1,s2)である推薦スコアfs1,s2 c,2を取得する。
S127で、ユーザ別推薦スコア算出部41が、次の式(5)を用い、fs1,s2 c,2からユーザu1に対するユーザu2の新規メッセージの推薦スコアru1,u2 cを用いて更新する。
ru1,u2 c=ru1,u2 c+fs1,s2 c,2 …式(5)
実施例1では、投稿推薦に静的な4つの時刻を用いる。ただし、実施例1では、投稿推薦(返信メッセージ)のためのスコアを計算した4点時刻から、時間が経過すればするほど(tc,3−tc,2が大になればなるほど)、上記式(1)を満たさず、精度が落ちるという問題がある。
そこで、実施例2は、投稿推薦のためのスコアリングを、時間経過とともに更新する方実施例である。
図25は、実施例2の概要を示す図である。
4点時刻(tc,0,tc,k−2,tc,k−1,tc,k)を用いて、tc,k−1、tc,k間の投稿推薦を行ったとする。このときに構築した時刻tc,k−1における3−部分グラフ情報を用いる方法である。
今、4点時刻(tc,0,tc,k−1,tc,k,tc,k+1)を用いて、tc,k−1、tc,k、tc,k+1間の投稿推薦を行うときに関する3−部分グラフ情報テーブルは、既に構築済みであるので、3−部分グラフ情報テーブルを構築する必要がない。ただし、k=2である場合、tc,k−1に関する3−部分グラフ情報テーブルを構築する必要がある。tc,k−1、tc,k間の構造別回答スコアと、時刻tc,kに関する3−部分グラフ情報とを取得するだけで足りる。3−部分グラフ情報を取得するプロセスは、非常に計算量の多いプロセスであるので、このステップを省略できることは重要である。ただし、k=2である場合、実施例1と全く同様の処理を行う。
全体の処理の流れは、実施例1と同様に、図9に示すフローチャートの通りである。
図26は、実施例2において、3−部分グラフ情報テーブル構築部20が、3−部分グラフ情報テーブルを構築する動作を示すフローチャートである。
S133で、3−部分グラフ情報テーブル構築部20が、カテゴリcにおける最新の投稿時刻tc,k+1を取得し、前回処理の際における4点時刻(tc,0,tc,k−2,tc,k−1,tc,k)から、処理のための4点時刻(tc,0,tc,k−1,tc,k,tc,k+1)を決定する。ただし、以降のステップは、次の式(6)を満たしている必要がある。
tc,1−tc,o>>tc,k+1−tc,k …式(6)
S134で、3−部分グラフ情報テーブル構築部20が、コミュニケーション情報抽出部10から受け渡されたコミュニケーション情報に記載されているカテゴリcの投稿のうちで、コミュニケーション時刻フィールドがtc,o以上tc,k以下である投稿Pc(tc,0,tc,k)を取得し、この取得した3−部分グラフ情報テーブル更新部21に受け渡す。
S135で、3−部分グラフ情報テーブル更新部21が、3−部分グラフ情報テーブル構築部20から受け渡されたコミュニケーション時刻フィールドが、tc,o以上tc,k以下である投稿Pc(tc,0,tc,k)に基づいて、記録部70における3−部分グラフ情報テーブルT2(図14参照)を更新する。
図27は、実施例2において、構造別推薦スコアテーブル構築部30が、図22に示す構造別推薦スコアテーブルT4を構築する動作を示すフローチャートである。
S143で、構造別推薦スコアテーブル構築部30が、図14に示す3−部分グラフ情報テーブルT2に記載されているカテゴリcの3−部分グラフ情報から、カテゴリcの構造別推薦スコア計算のための時刻として、4点時刻(tc,0,tc,k−1,tc,k,tc,k+1)を取得する。
S144で、構造別推薦スコアテーブル構築部30が、図14に示す3−部分グラフ情報テーブルT2に記載されているカテゴリcの3−部分グラフ情報のうちで、時刻がtc,k−1である投稿Gc,kを取得する。
S145で、構造別推薦スコアテーブル構築部30が、コミュニケーション情報抽出部10から受け渡されたコミュニケーション情報に記載されているカテゴリcの投稿のうちで、コミュニケーション時刻フィールドがtc,k−1以上tc,k未満の投稿Pc(tc,k−1,tc,k)を取得し、これを、構造別回答数テーブル更新部311に受け渡す。
S146で、構造別回答数テーブル構築部31が、構造別推薦スコアテーブル構築部30から受け渡された3−部分グラフ情報テーブルT2(図14参照)に記載されているカテゴリcの3−部分グラフ情報のうちで、時刻がtc,k−1である投稿Gc,k−1と、コミュニケーション情報に記載されているカテゴリcの投稿のうちで、コミュニケーション時刻フィールドがtc,k−1以上tc,k未満である投稿Pc(tc,k−1,tc,k)を用い、図16に示す構造別回答数テーブルT3を記録部70に構築し、構造別推薦スコア算出部32と構造別推薦スコアテーブル構築部30とに受け渡す。
ただし、構造別回答数テーブル構築部31は、結果である構造別回答数ns1,s2 c,kを記録部70に記録する必要はない。ここで、図16に示す構造別回答数テーブルT3において、構造フィールドが取り得る値の全てを取得し、これらの各要素について、S148、S149を実行する。
S148で、構造別スコアテーブル構築部30が、図16に示す構造別回答数テーブルT3に記載されている構造別回答数に関する情報であり、カテゴリIDフィールドの値が、cであり、時刻フィールドの値が、tc,kであり、構造フィールドの値が(s1,s2)である情報の回答数ns1,s2 c,kを取得する。
次に、構造別推薦スコア算出部32が、構造別スコアテーブル構築部30から受け渡されたGc,k−1、ns1,s2 c,kに基づいて、構造別推薦スコアfs1,s2 c,kを算出し、構造別推薦スコアテーブル構築部30に受け渡す。
S149で、構造別推薦スコアテーブル構築部30が、図22に示す構造別推薦スコアテーブルT4に、カテゴリIDフィールドの値が、cであり、時刻フィールドの値が、tc,kであり、構造フィールドの値が、(s1,s2)であり、構造別推薦スコアフィールドの値が、fs1,s2 c,kである行を挿入する。
図28は、実施例2において、新規メッセージ推薦部40が返信メッセージ発信者に新規メッセージ推薦処理する動作を示すフローチャートである。
S101〜S05に関しては、図23に示す実施例1の場合と同様であるので、説明を割愛する。
S151は、実施例1における図23のS106に対応する。S151で、新規メッセージ推薦部40が、コミュニケーション清報抽出部10から受け渡されたコミュニケーション清報に記載されている情報のうちで、カテゴリIDが、cであり、発生時刻が、tc,kからtc,k+1であり、メッセージ種別が、「新規」である全ての投稿Qc(tc,k,tc,k+1)を取得する。全ての投稿Qc(tc,k,tc,k+1)に含まれている各投稿qについて、S108、S109、S110を実行する。
上記実施例の特徴は、3名のユーザそれぞれをノードで表現し、ユーザ間のメッセージのやりとりを有向グラフで表現し、各有向グラフの中でのノードの位置毎に(図6に示す構造番号毎に)、各ノード間でのメッセージ生成頻度を算出する処理である。
なお、ノード間でのメッセージ生成頻度算出時には、図6に示す構造番号毎のノード出現確率の違いを吸収するための正規化処理も実行する。
この処理に、たとえば、メッセージが発生する頻度が高い位置関係にあるノード(ユーザ)同士は、将来的にコミュニケーションを取る可能性が高いと判定する処理を追加するので、今まで直接メッセージのやりとりをしたことがあるかないかに関わらず、将来コミュニケーションを取る可能性の高いユーザを抽出することができる。
つまり、上記実施例は、3−部分グラフ情報テーブルに記載されているカテゴリの3−部分グラフ情報から、上記カテゴリの構造別推薦スコア計算のための時刻として、4点時刻(tc,0,…,tc,3)を取得する4点時刻取得手段と、3−部分グラフ情報テーブルに記載されている上記カテゴリの3−部分グラフ情報のうちで、時刻tc,1における3−部分グラフ情報Gc,1を取得する3−部分グラフ情報Gc,1取得手段と、コミュニケーション情報抽出部から受け渡されたコミュニケーション情報に記載されている上記カテゴリの投稿のうちで、コミュニケーション時刻フィールドが、tc,1以上であり、tc,2未満である投稿Pc(tc,1,tc,2)を取得する投稿Pc(tc,1,tc,2)取得手段と、3−部分グラフ情報テーブルに記載されている上記カテゴリの3−部分グラフ情報のうちで、時刻がtc,1である3−部分グラフ情報Gc,1と、コミュニケーション情報に記載されている上記カテゴリの投稿のうちで、コミュニケーション時刻フィールドがtc,1以上、tc,2未満の投稿Pc(tc,1,tc,2)とを用い、構造別回答数テーブルを構築する構造別回答数テーブル構築手段とを有するコミュニケーション活性化装置の例である。
この場合、ユーザ構造決定ルールを参照し、上記構造別推薦スコアテーブル構築部から受け渡された構造フィールドの値から、対応する3−部分グラフパターンpatterns1を取得する3−部分グラフパターンpatterns1取得手段と、上記構造別推薦スコア算出部が受け渡されたGc,1のうちで、3−部分グラフパターンフィールドの値が、patterns1である行の数|patterns1|を取得する行の数|patterns1|取得手段と、上記構造別推薦スコア算出部から受け渡された3−部分グラフ情報Gc,1、Pc(tc,1,tc,2)を用い、構造フィールドの値に対応する回答数の期待値<ns1,s2 c,2>と、標準偏差σs1,s2 c,2とを算出する構造別回答数期待値及び標準偏差算出部と、上記構造別推薦スコア算出部が受け渡された上記期待値<ns1,s2 c,2>と、上記標準偏差σs1,s2 c,2とに応じて、構造フィールドの値(s1,s2)に対応する推薦スコアを算出する構造別推薦スコア算出部とを有する。
また、生成した構造内でのユーザ位置関係毎の投稿の発生しやすさを表したスコアと、コミュニケーション情報と、未処理のユーザIDと、カテゴリとが与えられると、推薦メッセージを選択する。
さらに、構造別推薦スコアテーブル更新処理手段を有する。
しかも、推薦スコアを予め定めた閾値で閾値処理する閾値処理手段と、閾値以上のスコアを持つユーザが投稿した投稿を、返信すべき投稿であるとして推薦する推薦手段とを有する。
上記実施例によれば、図4に示す3−部分グラフパターンの時間的変化に基づいて、コミュニティの成長過程に関する情報(3−部分グラフのパターンと、そこに含まれているノードのポジションである構造に着目し、どの構造をなす2ユーザ間にエッジ(返信)が発生し易いかに関する情報)を取得するので、そのコミュニティに属するコミュニケーションをとる(そのコミュニティに属するユーザから、別のユーザへの返信メッセージが発生する)可能性の高い2ユーザを発見し、返信メッセージを投稿しそうなユーザに、他方のユーザの新規メッセージを推薦することができる。
また、上記実施例によれば、3ユーザに着目しているので、ある2ユーザに共通してコミュニケーションをとったことがあるユーザがいれば、上記2ユーザが互いにコミュニケーションを一度も行ったことが無くても、上記2ユーザ間で、コミュニケーションを促進することができる。
さらに、上記実施例によれば、ユーザにスコアを付与するのではなく、上記2ユーザ間の関係性にスコアを付与するので、従来手法によくある特定のユーザばかりのコミュニケーションを誘引する結果にはならず、コミュニティ全体を活性化することができる。
また、上記実施例を方法の発明として把握することができる。つまり、上記実施例は、3−部分グラフ情報テーブルに記載されているカテゴリの3−部分グラフ情報から、上記カテゴリの構造別推薦スコア計算のための時刻として、4点時刻(tc,0,…,tc,3)を取得し、記憶装置に記憶する4点時刻取得工程と、3−部分グラフ情報テーブルに記載されている上記カテゴリの3−部分グラフ情報のうちで、時刻tc,1における3−部分グラフ情報Gc,1を取得し、記憶装置に記憶する3−部分グラフ情報Gc,1取得工程と、コミュニケーション情報抽出部から受け渡されたコミュニケーション情報に記載されている上記カテゴリの投稿のうちで、コミュニケーション時刻フィールドが、tc,1以上であり、tc,2未満である投稿Pc(tc,1,tc,2)を取得し、記憶装置に記憶する投稿Pc(tc,1,tc,2)取得工程と、3−部分グラフ情報テーブルに記載されている上記カテゴリの3−部分グラフ情報のうちで、時刻がtc,1である3−部分グラフ情報Gc,1と、コミュニケーション情報に記載されている上記カテゴリの投稿のうちで、コミュニケーション時刻フィールドがtc,1以上、tc,2未満の投稿Pc(tc,1,tc,2)とを用い、構造別回答数テーブルを構築し、記憶装置に記憶する構造別回答数テーブル構築工程と、ユーザ構造決定ルールを参照し、上記構造別推薦スコアテーブル構築部から受け渡された構造フィールドの値から、対応する3−部分グラフパターンpatterns1を取得し、記憶装置に記憶する3−部分グラフパターンpatterns1取得工程と、上記構造別推薦スコア算出部が受け渡されたGc,1のうちで、3−部分グラフパターンフィールドの値が、patterns1である行の数|patterns1|を取得し、記憶装置に記憶する行の数|patterns1|取得工程と、上記構造別推薦スコア算出部から受け渡された3−部分グラフ情報Gc,1、Pc(tc,1,tc,2)を用い、構造フィールドの値に対応する回答数の期待値<ns1,s2 c,2>と、標準偏差σs1,s2 c,2とを算出し、記憶装置に記憶する構造別回答数期待値及び標準偏差算出部と、上記構造別推薦スコア算出部が受け渡された上記期待値<ns1,s2 c,2>と、上記標準偏差σs1,s2 c,2とに応じて、構造フィールドの値(s1,s2)に対応する推薦スコアを算出し、記憶装置に記憶する構造別推薦スコア算出工程とを有するコミュニケーション活性化方法の例である。
この場合、生成した構造内でのユーザ位置関係毎の投稿の発生しやすさを表したスコアと、コミュニケーション情報と、未処理のユーザIDと、カテゴリとが与えられると、推薦メッセージを選択する。
また、構造別推薦スコアテーブル更新処理工程を有する。
しかも、推薦スコアを予め定めた閾値で閾値処理する閾値処理工程と、閾値以上のスコアを持つユーザが投稿した投稿を、返信すべき投稿であるとして推薦する推薦工程とを有する。
さらに、上記実施例をプログラムの発明として把握することができる。つまり、上記実施例は、請求項1〜請求項5のいずれか1項記載の装置を構成する各手段としてコンピュータを機能させるプログラムの例である。