以下詳細な本発明の実施例に関して説明する。なお、以下の各実施例は、処理の内容を矛盾させない範囲で適宜組み合わせることが可能である。以下、図面に基づいて各実施例について説明する。
図1は、本実施例における管理装置の利用形態の一例を示す図である。管理装置1は、ユーザのグループを管理するコンピュータである。例えば、管理装置1はサーバーである。端末装置21乃至端末装置23は、ユーザが情報の入力や閲覧を行うためのコンピュータである。なお、以下、端末装置21乃至端末装置23を、端末装置2と称する。端末装置2は、パーソナルコンピュータ(以下、PC)、携帯電話、スマートフォン、タブレットPCなどである。収集装置3は、ユーザにより投稿された情報を収集するコンピュータである。例えば、収集装置3は、SNSサーバーである。なお、管理装置1が収集装置3の機能を有しても良い。
また、管理装置1、端末装置2および収集装置3は、ネットワーク4を介して互いに通信可能である。ネットワーク4は、例えば、インターネット、携帯電話網、電話網等の通信網である。通信網は、有線通信網または無線通信網である。
ユーザは、端末装置2を操作することで、投稿したい内容を表す本文情報を入力する。そして、端末装置2は、投稿情報および投稿者情報を、収集装置3へ送信する。なお、投稿情報は、本文情報を含む情報である。投稿者情報は、投稿を行ったユーザを示す情報である。例えば、SNSにおけるユーザのアカウント情報などが利用される。
ここで、ユーザ自身が作成した本文情報を自分のアカウントで発信する場合と、他ユーザの本文情報を引用して発信する場合とがある。後者の場合には、さらに、投稿情報は、本文情報のほかに、作成者情報を含んでもよい。作成者情報は、本文情報を作成したユーザを示す情報である。例えば、ユーザAがユーザBの投稿を引用して発信する場合には、ユーザBを示す情報が作成者情報として、投稿情報に含まれる。
ユーザAがユーザBの投稿内容を引用して発信する場合は、例えば、TwitterのReTweet機能が利用される。ReTweet機能とは、ユーザBにより投稿された本文情報を、他のユーザAが、自分のアカウントで再度投稿する機能である。このとき、ユーザAが再度投稿した投稿情報には、本文情報とともに、当該投稿はReTweet機能により投稿されたことを示す「RT@ユーザB」が含まれる。例えば、「RT@ユーザB」が作成者情報にあたる。
言い換えると、ユーザCがユーザAによる投稿情報を閲覧した場合、投稿情報の本文情報の前に「RT@ユーザB」が表示されている場合には、ユーザCは、ユーザAにより投稿情報は、ユーザBの本文情報を引用して発信されたものであることを認識することができる。なお、あるユーザが他のユーザの投稿内容を引用して発信する機能は、TwitterのRetweet機能のほかにも、Tumblr(登録商標)のreblog機能などがある。
収集装置3は、投稿情報と投稿者情報を収集するとともに、管理する。なお、投稿情報を受信した日時に関する日時情報もあわせて管理する。例えば、収集装置3は、投稿情報と投稿者情報を、特定のユーザまたは、不特定のユーザに対して提供する。
本実施例においては、管理装置1は、収集装置3へアクセスして、投稿情報と投稿者情報を取得する。例えば、収集装置3が、Twitterのサーバーである場合には、TwitterのAPI(Application Program Interface)を利用して、投稿情報および投稿者情報を取得する。さらに、日時情報もあわせて取得される。
例えば、管理装置1は、一定時間ごとに、収集装置3に投稿された投稿情報および投稿者情報を取得してもよい。なお、収集装置3により所定の割合でサンプリングされた投稿情報および投稿者情報のみが、管理装置1へ提供されても良いし、すべての投稿者情報および投稿者情報が提供されても良い。
この場合、管理装置1は、定期的に取得した投稿情報および投稿者情報を記憶するとともに、検索条件に基づき、検索条件に合致する投稿情報および投稿者情報を抽出する。なお、検索条件は、例えば検索キーワードである。
そして、検索結果として抽出された投稿情報および投稿者情報を解析することで、グループを生成する。グループは、1または複数のユーザを含む集合である。なお、グループ生成処理については後述する。
また、定期的に投稿情報および投稿者情報を取得せずに、収集装置3に対して検索条件を含む情報提供要求に基づき、投稿情報および投稿者情報を取得してもよい。収集装置3は、管理装置1から与えられた検索条件に基づき、検索を行う。そして、検索結果を、管理装置1へ返却する。管理装置1は、検索結果である投稿情報および投稿者情報に基づき、グループ生成処理を行ってもよい。
さらに、管理装置1は、生成したグループについて、グループの特徴づけを行う。つまり、グループの特徴を現すキーワードを特定し、グループと対応付けて管理する。キーワード特定処理については後述する。
つまり、本実施例における管理装置1は、ユーザにより投稿された投稿情報を利用して、ユーザをグループに分け、ユーザをグループとして管理する。後述するように、グループのメンバーに合った情報提供サービスなどを実施する場合には、本実施例に開示するグループ管理が役立つ。
図2は、管理装置1の機能ブロック図である。管理装置1は、通信部11、検索部12、生成部13、特定部14、管理部15、記憶部16を含む。
通信部11は、ネットワーク4を介して、他の装置と通信を行う処理部である。例えば、通信部11は、収集装置3から、投稿情報や投稿者情報、日時情報などを受信する。なお、本実施例においては、定期的に収集装置3から投稿情報や投稿者情報を受信し、受信した情報は、記憶部16に記憶される。
つぎに、検索部12は、検索条件に合致する投稿情報を記憶部16から抽出する。例えば、検索部12は、収集装置3から取得した投稿情報のなかから、投稿情報に含まれる本文情報に検索キーワードを含む投稿情報を抽出する。検索部12は、さらに、抽出した投稿情報に対応する投稿者情報を取得する。
生成部13は、グループ生成処理を実行する処理部である。例えば、生成部13は、ある投稿情報を作成した作成者を示すユーザ情報と、当該投稿情報を引用して発信した引用者を示すユーザ情報とを含む第一のグループを生成する。なお、ユーザ情報は、例えばSNSのアカウントなどの情報であって、ユーザを識別するための情報である。
特定部14は、キーワード特定処理を実行する処理部である。例えば、特定部14は、第一の投稿情報から抽出した語句と、第二の投稿情報から抽出した語句とを比較するとともに、第一の投稿情報に特有の第一のキーワードと、第二の投稿情報に特有の第二のキーワードを特定する。特有のキーワードとは、例えば、一方の投稿情報にのみ含まれるキーワードであったり、抽出された全投稿情報のうち、一定以下の頻度または割合の投稿情報で利用されるキーワードである。なお、本実施例においては、語句は、名詞または名詞群である。
第一の投稿情報に特有のキーワードは、当該グループのメンバーにとって興味深いキーワードであって、他のグループと区別するための特徴として利用価値がたかいキーワードであることが推測される。つまり、第一のキーワードは、第一の投稿情報を作成した作成者と、当該投稿情報に含まれる本文情報を引用して発信した引用者とを含むグループを、特徴付けるキーワードといえる。
つぎに、管理部15は、生成したグループの情報と、特定したキーワードの情報とを対応付けて、記憶部16へ格納する。
記憶部16は、各種情報を記憶する。例えば、収集装置3から取得した投稿情報、投稿者情報を記憶する。さらに、記憶部16は、検索部12が、検索条件に基づき検索した結果である、投稿情報および投稿者情報を、一時的に検出結果集合として記憶してもよい。また、記憶部16は、管理部15による管理の下、生成したグループの情報と、特定したキーワードの情報とを対応付けた管理情報を記憶する。
つぎに、管理装置が実行する管理方法の処理内容について説明する。図3は、管理処理のフローチャートである。
まず、通信部11または検索部12が、検索条件に合致する投稿情報を収集する(Op.1)。なお、本実施例においては、検索部12が、記憶部16から検索キーワードを本文情報に含む投稿情報を収集する。なお、検索条件として、検索キーワード以外にも、投稿日時(期間)が指定されてもよい。例えば、「2013年1月1日以降」が検索条件として指定された場合、2013年1月1以降に投稿され、かつ検索キーワードを有する投稿情報が収集される。
ここで、検索結果として収集された投稿情報および投稿者情報を含む検索結果集合について説明する。図4は、検索結果集合を説明するための図である。なお、検索結果集合は、所定のフォーマットで、記憶部16に一時的に記憶される。
また、図4は、収集装置3がTwitterのサーバーである例を示しており、以下Twitterの場合における管理処理について説明する。図4は、例として、検索キーワード「Xクラウド」が与えられた場合の検索結果集合の一部を示している。
定期的に収集装置3から取得している投稿情報のうち、本文情報に、「Xクラウド」を有する複数の投稿情報が抽出される。さらに、当該投稿情報に対応する投稿者情報もあわせて抽出される。引用して発信された投稿情報も、元の投稿情報とは異なる投稿情報として扱われるため、図4の51乃至53で示す投稿情報のように、同様の本文情報を含む複数の投稿情報が抽出される。
投稿情報51「Xクラウドのサーバーに障害が発生しております」は、本文情報「Xクラウドのサーバーに障害が発生しております」を含む。一方、投稿情報52「RT@A:Xクラウドのサーバーに障害が発生しております」は、作成者情報「RT@A」と本文情報「Xクラウドのサーバーに障害が発生しております」を含む。
本実施例においては、当該投稿情報が引用して発信された情報でない場合は、投稿情報は作成者情報を含まない。つまり、作成者情報に基づき、投稿情報52は、ユーザAにより作成された本文情報を引用して発信されたことがわかる。ただし、引用発信された投稿情報であるか否かを示す情報を、作成者情報以外の情報(例えば、フラグ等)で管理することとしてもよい。
つぎに、生成部13が、投稿情報および当該投稿情報に対応する投稿者情報を用いて、グループを生成する(Op.2)。ここで、グループ生成処理について、詳細に説明する。図5は、グループ生成処理のフローチャートである。
始めに、生成部13は、検索結果集合のなかから、未処理の投稿情報を取得する(Op.21)。なお、各投稿情報について処理が終了しているか否かは、フラグ等により管理することができる。つぎに、生成部13は、取得した投稿情報が、引用して発信された投稿情報であるかを判定する(Op.22)。
取得した投稿情報が、引用して発信された投稿情報である場合には(Op.22Yes)、生成部13は、グループ生成用テーブルに、投稿情報に含まれる本文情報と、同一の本文情報が記憶されているかを判定する(Op.23)。ここで、グループ生成用テーブルは、グループ生成処理の過程で生成されるテーブルである。なお、グループ生成用テーブルは、一時的に記憶部16に記憶される。
同じ本文情報が登録されていない場合(Op.23No)、生成部13は、処理対象の投稿情報に含まれる本文情報を、グループ生成用テーブルの項目「本文情報」に追加する(Op.25)。また、生成部13は、投稿情報と対応する投稿者情報に基づき、投稿者を、グループ生成用テーブルの項目「ユーザ集合」に格納する(Op.26)。なお、引用して発信した投稿者は、先に述べた引用者に相当する。
さらに、生成部13は、投稿情報に含まれる作成者情報に基づき、作成者を、グループ生成用テーブルの項目「ユーザ情報」に格納する(Op.27)。作成者は、当該本文情報を始めに作成したユーザである。
一方、グループ生成用テーブルに、すでに同じ本文情報が登録されている場合(Op.23Yes)は、生成部13は、同じ本文情報に対応する項目「ユーザ集合」に、投稿者の情報を格納する(Op.24)。なお、投稿者は、処理対象の投稿情報に対応する投稿者情報に基づき、特定される。
取得した投稿情報が、引用して発信された投稿情報でない場合(Op.22No)、処理Op.24が終了した場合、またはOp.27が終了した場合は、生成部13は、検索結果集合に含まれる投稿情報の全てについて、処理が終了したか否かを判定する(Op.28)。
全投稿情報について処理が終了していない場合には(Op.28No)、生成部13は、Op.21へ戻り、新たな投稿情報を取得する。一方、全投稿情報について処理が終了した場合は(Op.28Yes)、グループ生成処理は終了となる。
ここで、グループ生成処理において利用されるグループ生成用テーブルについて説明する。図6は、グループ生成用テーブルのデータ構成例を示す。グループ生成用テーブルは、グループIDと、本文情報と、ユーザ集合とを対応付けて記憶する。
グループIDは、グループ生成処理によって生成されたグループを識別する情報である。本文情報は、当該グループに含まれるユーザが、作成して発信した内容または引用して発信した内容を示す情報である。ユーザ集合は、当該グループに含まれるユーザの集合である。つまり、本文情報の内容を、発信または引用して発信したユーザの情報である。
図6は、グループ生成処理が終了した時点でのグループ生成用テーブルを示している。例えば、グループID「G1」は、ユーザ「A,B,C,D、E,F,G,H」を含むとともに、ユーザ「A,B,C,D、E,F,G,H」が、「Xクラウドのサーバーに障害が発生しております」という本文情報を、作成して発信、または引用して発信したことを示している。
ここで、図4および図6を用いて、図5に示したグループ生成処理を具体的に説明する。例えば、Op.21において、図4に示す投稿情報51「Xクラウドのサーバーに障害が発生しております」が取得された場合、生成部13は、投稿情報51は作成者情報を含まないため、投稿情報51は引用発信された投稿情報ではないと判定する(Op.22No)。よって、生成部13は、Op.28に進む。生成部13は、全投稿情報について処理が終了していないと判定し(Op.28No)、Op.21へ戻る。
つぎに、投稿情報52「RT@A:Xクラウドのサーバーに障害が発生しております」を取得した場合(Op.21)、生成部13は、投稿情報52は、引用発信された投稿情報であると判定する(Op.22Yes)。つぎに、生成部13は、投稿情報52に含まれる本文情報「Xクラウドのサーバーに障害が発生しております」が、グループ生成用テーブルに登録されているかを判定する。ここで、本文情報「Xクラウドのサーバーに障害が発生しております」が、グループ生成用テーブルに未登録であるとする。
生成部13は、本文情報「Xクラウドのサーバーに障害が発生しております」が、グループ生成用テーブルに登録されていないと判定し(Op.23No)、グループ生成用テーブルの項目「本文情報」に、「Xクラウドのサーバーに障害が発生しております」を追加する(Op.25)。また、生成部13は、投稿情報と対応する投稿者情報「B」に基づき、投稿者「B」を、追加した本文情報に対応付けて、グループ生成用テーブルの項目「ユーザ集合」に格納する(Op.26)。さらに、生成部13は、投稿情報に含まれる作成者情報「RT@A」に基づき、作成者「A」を、グループ生成用テーブルの項目「ユーザ情報」に格納する(Op.27)。
また、投稿情報53「RT@A:Xクラウドのサーバーに障害が発生しております」を取得した場合(Op.21)、生成部13は、投稿情報53は、引用発信された投稿情報であると判定する(Op.22Yes)。つぎに、生成部13は、投稿情報53に含まれる本文情報「Xクラウドのサーバーに障害が発生しております」が、グループ生成用テーブルに登録されているかを判定する(Op.23)。
投稿情報53を処理対象とした時点で、本文情報「Xクラウドのサーバーに障害が発生しております」がグループ生成テーブルに登録されているため、生成部13は、同じ本文情報が登録済みであると判定する(Op.23Yes)。生成部13は、グループ生成用テーブルにおける同じ本文情報「Xクラウドのサーバーに障害が発生しております」に対応づけて、投稿情報53の投稿者「C」を、グループ生成用テーブルの項目「ユーザ集合」に格納する(Op.24)。
つまり、この時点で、本文情報「Xクラウドのサーバーに障害が発生しております」に対応するユーザ集合には、「A,B,C」が登録される。また、グループ生成用テーブルに、新たな本文情報が登録されるたびに、新たなグループIDが付与される。
図3にもどり、グループ生成処理が終了した後、特定部14は、キーワード特定処理を実行する(Op.3)。図7は、キーワード特定処理のフローチャートである。
まず、特定部14は、グループ生成用テーブルに登録された本文情報の各々から、名詞を抽出する(Op.31)。例えば、特定部14は、固有表現抽出を利用して名詞を抽出する。例えば、形態素解析などが利用される。
そして、キーワード特定用テーブルに、各本文情報とともに、抽出した名詞の情報を格納する。キーワード特定用テーブルは、キーワード特定処理の過程で生成されるテーブルである。なお、キーワード特定用テーブルは、一時的に記憶部16に記憶される。本実施例においては、特定部14は、図3のOp.1における検索キーワード以外の名詞を、名詞集合として格納する。
ここで、キーワード特定用テーブルについて説明する。図8は、キーワード特定用テーブルのデータ構成例を示す。キーワード特定用テーブルは、グループIDと、本文情報と、名詞集合とを対応付けて記憶する。グループIDおよび本文情報は、グループ生成用テーブルと同様の情報が格納される。さらに、名詞集合は、当該本文情報から抽出された名詞の情報が格納される。
図8の例では、グループID「G1」、本文情報「Xクラウドのサーバーに障害が発生しております」、および当該本文情報から抽出された名詞集合「サーバー;障害」が対応付けて記憶されることを示している。なお、さらに、検索キーワードであった「Xクラウド」を名詞集合に含めてもよい。
図7に戻り、特定部14は、未処理の名詞集合を取得する(Op.32)。そして、名詞集合に含まれる名詞を処理対象として、特定部14は、他の名詞集合に、当該名詞が含まれる頻度が閾値以下であるかを判定する(Op.33)。つまり、ある名詞が、他の本文情報に出現する頻度を計数するとともに、当該頻度が閾値よりも低いかを判定する。
閾値は、適宜設定される、例えば、本実施例においては、閾値は「1」である。ただし、閾値を「0」に設定してもよい。閾値が「0」の場合には、あるグループにおいて発信された本文情報にのみ出現する語句を、本キーワード特定処理によって、グループを特徴づけるキーワードとして抽出することができる。これにより、グループに特徴的なキーワードを特定することができる。
なお、頻度に基づき判定する方法以外にも、割合に基づきOp.33の判定が行われてもよい。例えば、特定部14は、処理対象の名詞が他の名詞集合に含まれる割合が、閾値以下であるかを判定してもよい。例えば、閾値は5%などに設定される。
処理対象の名詞が他の名詞集合に含まれる頻度が閾値以下である場合は(Op.33Yes)、特定部14は、処理対象の名詞を、グループの特徴を示すキーワードとして決定する(Op.34)。一方、処理対象の名詞が他の名詞集合に含まれる頻度が閾値以下でない場合は(Op.33No)、特定部14は、そのまま処理をOp.35へ進める。
特定部14は、処理対象の名詞集合につき、全ての名詞について処理が終了したかを判定する(Op.35)。処理が終了していない場合は(Op.35No)、新たな名詞を処理対象として、Op.33を実行する。
一方、処理が終了している場合には(Op.35Yes)、特定部14は、全ての名詞集合について処理が終了しているか否かを判定する(Op.36)。処理が終了していない場合は(Op.36No)、特定部14は、Op.32に戻り、新たな名詞集合について同様の処理を繰り返す。一方、処理が終了している場合には(Op.36Yes)、キーワード特定処理を終了する。
図8および図9を用いて、図7に示すフローチャートを具体的に説明する。特定部14は、Op.31を実行することで、図8の状態のキーワード特定用テーブルを生成したとする。
特定部14は、未処理の名詞集合として、グループID「G1」に対応する「サーバー;障害」を取得する(Op.32)。取得した名詞集合のうちの名詞「サーバー」を処理対象とした場合、特定部14は、名詞「サーバー」が他の名詞集合に含まれる頻度「2」を計数する。頻度「2」は閾値「1」以下ではないので(Op.32No)、特定部14は、そのままOp.35へ進む。
そして、名詞「障害」が残っているので(Op.35No)、名詞「障害」についても同様の処理を実行する。ここで、「障害」が他の名詞集合に含まれる頻度は「3」であるので、「障害」がキーワードに決定されることはない。この場合には、グループID「G1」のグループ内のユーザによって発信された本文情報には、グループに特有のキーワードが含まれてないということになる。
一方、特定部14は、未処理の名詞集合として、グループID「G3」に対応する「ゲームY;障害;サーバー;ダウン」を取得したとする(Op.32)。取得した名詞集合のうちの名詞「ゲームY」を処理対象とした場合、特定部14は、名詞「ゲームY」が他の名詞集合に含まれる頻度「0」を計数する。頻度「0」は閾値「1」以下であるので(Op.33Yes)、特定部14は、名詞「ゲームY」をキーワードに決定する(Op.34)。特定部14は、他の名詞についても同様の処理を行う。そして、図8の例では、名詞「ゲームY」のみがキーワードに決定されることとなる。
図3に戻り、管理部15は、生成された各々のグループに関する情報と、各グループを特徴付けるキーワードとを対応付けて、管理情報として記憶部16へ格納する(Op.4)。以上の処理によって、管理情報が生成される。そして、管理情報は、記憶部16に記憶される。
図9は、管理情報の例を示す図である。なお、本実施例においては、管理情報は管理テーブルとして記憶部16に記憶される。管理テーブルは、グループIDと、ユーザ集合と、キーワードとを対応付けて記憶する。さらに、本文情報を記憶してもよい。
グループIDは、グループを識別する情報である。ユーザ集合は、グループ生成処理によって生成されたグループに含まれるユーザの情報である。キーワードは、キーワード特定処理によって特定されたキーワードである。例えば、グループID「G3」で識別されるグループは、メンバー「K,L,M,N」を含み、キーワード「ゲームY」により特徴付けられることを示している。
また、管理テーブルには、グループID「G1」を特徴付けるキーワードとして、何れの名詞も記憶されていない。これは、先に説明した例のとおり、いずれの名詞も、他の名詞集合に含まれる頻度が閾値以下であるという条件を満たさなかったためである。ただし、このように、グループを特徴付けるキーワードが特定されなかった場合、管理部15は、検索キーワードとして利用した「Xクラウド」を、管理テーブルの項目「キーワード」に格納してもよい。
グループ生成処理によって、ある本文情報を作成した発信したユーザと、当該本文情報を引用して発信したユーザとを含むグループが、生成される。さらに、このグループに含まれるユーザは、ある本文情報を作成したり、引用したりしていることから、当該本文情報に対する大きな興味をしめしている。したがって、当該グループに含まれるユーザは、共通する興味や嗜好を示すと類推することができる。
なお、本実施例に開示した管理装置1が、グループを特徴付けるキーワードに関連する情報を収集し、各グループのメンバーに、当該グループを特徴付けるキーワードに関連する情報を提供してもよい。この場合、管理装置1は、ユーザのSNSのアカウントを利用して、情報を配信する。また、ユーザIDとアドレス情報とを対応付けて記憶する場合は、当該アドレス情報に相当するアドレスに対して、情報を配信してもよい。
また、あるグループを特徴付けるキーワードが特定される。つまり、あるグループに特有のキーワードとして、本文情報から抽出された語句のうち、他のグループではあまり利用されていない語句が特定される。特定されたキーワードは、グループに共通する興味や嗜好を表す可能性が高い。
また、検索キーワードに関連する投稿を行ったユーザをグループに分けて管理することで、管理装置1は、解析サービスや情報提供サービスを行うコンピュータに、グループに関する管理情報を提供することができる。
例えば、情報提供サービスを行うコンピュータは、管理情報に基づき、検索キーワード(例えばXクラウド)とグループを特徴付けるキーワード(ゲームY)との両方に関係する情報を、特定のグループのユーザに対して発信することができる。
以上のように、管理装置1によれば、ある検索キーワードに関連する投稿を行ったユーザを、さらに、詳細なグループに分けることができる。そして、グループを生成する際には、投稿情報に含まれる本文情報を引用して発信したことに基づき、ユーザの本文情報に対する興味関心を推定することとしたため、管理装置1は、簡易にグループ生成を行うことができる。
さらに、管理装置1は、生成したグループを特徴付けるキーワードを決定することができる。各グループのメンバーであるユーザ集合と、当該グループを特徴付けるキーワードとを対応付けて管理することで、管理装置1は、続くサービスに有効な情報を生成および管理することができる。
つぎに、図3に示す管理処理の変形例について説明する。変形例においては、図3に示したグループ生成処理と、キーワード特定処理との間に、グループ結合処理が実行される。つまり、管理装置1の生成部13は、グループ生成処理で生成した各グループを、必要に応じて結合する。
変形例における管理装置1の機能的構成は、先の実施例と同様である。ただし、生成部13は、グループ生成処理を実行するとともに、グループのユーザ集合同士の類似度に基づき、グループを結合する。これは、グループに含まれるユーザ集合の類似性が一定以上であれば、興味や嗜好が類似する可能性が高いと推定することができるためである。なお、グループのユーザ集合同士の類似性以外にも、本文情報の内容の類似性に基づき、グループ結合処理が実行されてもよい。
図10は、グループ結合処理のフローチャートである。なお、生成部13がグループ結合処理を実行する時点で、グループ生成処理(Op.2)が終了し、グループ生成用テーブルが生成されている。ここでは、図6の状態のグループ生成用テーブルが生成されているものとする。
まず、生成部13は、変数iを1に設定するとともに、変数jを2に設定する(Op.41)。なお、変数iは処理対象のグループIDに関する数字である。変数jは、変数iに関するグループ以外のグループIDに関する数字である。
生成部13は、グループID「Gi」のユーザ集合と、グループID「Gj」のユーザ集合を、グループ生成用テーブルから取得する(Op.42)。例えば、グループID「G1」のユーザ集合「A,B,C,D,E,F,G,H」と、グループID「G2」のユーザ集合「A,B,D,E,I,J」を取得する。
生成部13は、取得したユーザ集合に基づき、GiとGjの類似度を算出する(Op.43)。なお、本実施例においては、類似度には、Jaccard係数を用いる。Jaccard係数は、GiおよびGjのいずれかに含まれるユーザ数に対する、GiおよびGjの両方に含まれるユーザの数の割合で求められる。例えば、グループID「G1」のユーザ集合「A,B,C,D,E,F,G,H」と、グループID「G2」のユーザ集合「A,B,D,E,I,J」との類似度は、「4/10」である。つまり、類似度は、「0.4」である。
つぎに、生成部13は、類似度が閾値以上であるかを判定する(Op.44)。例えば、閾値として、0.3333(1/3)が設定される。グループID「G1」とグループID「G2」との類似度は、閾値以上であると判定される。
類似度が閾値以上である場合には(Op.44Yes)、生成部13は、グループID「G1」のグループと、グループID「G2」のグループとを結合する(Op.45)。具体的には、生成部13は、グループ結合用テーブルに、結合対象の2つのグループのユーザ集合を、ひとつのユーザ集合として、格納する。グループ結合用テーブルは、グループ結合処理の過程で生成され、一時的に記憶部16に記憶される。
一方、類似度が閾値以上でない場合は(Op.44No)、生成部13は、そのままOp.46へ処理を進める。そして、生成部13は、全てのGjについて、Giとの結合処理を実行したか否かを判定する(Op.46)。ただし、同じ組み合わせについて2回以上処理を実行しないように、j>1とする。
ここで、全てのGjについて処理が終了していない場合は(Op.46No)、生成部13は、jをインクリメントする(Op.47)。そして、先の処理と同一のGiと、新たなGjとの組み合わせについて、同様の処理を実行する。
一方、全てのGjについて処理が終了した場合は(Op.46Yes)、生成部13は、全てのGiに対して処理が終了しているかを判定する(Op.48)。つまり、未処理のグループIDがないかを判定する。全てのGiに対して処理が終了していない場合には(Op.48No)、iをインクリメントするとともに、jにi+1を設定する(Op.49)。例えば、iをインクリメントした結果「i=2」となった場合、jには「2+1」の「3」が設定される。一方、全てのGiに対して処理が終了している場合には(Op.48Yes)、グループ結合処理を終了する。
図11は、グループ結合用テーブルのデータ構成例である。グループ結合用テーブルは、結合グループID、本文情報、ユーザ集合を対応付けて記憶する。項目「結合グループID」には、2以上のグループが結合された結合グループを、互いに識別する情報が格納される。項目「本文情報」には、結合対象のグループに対応付けられた本文情報が格納される。項目「ユーザ集合」には、結合されたグループに含まれるユーザの情報が格納される。
例えば、グループID「G1」とグループID「G2」とが結合された場合には、ユーザ集合には「A,B,C,D,E,F,G,H,I,J」が格納される。さらに、グループID「G1」に対応する本文情報「Xクラウドのサーバーに障害が発生しております」と、グループID「G2」に対応する本文情報「Xクラウドは16時に復旧予定です」とが、グループ結合用テーブルの項目「本文情報」に格納される。
本実施例においては、2つのグループが結合された場合にのみ、グループ結合用テーブルに、レコードが追加される。さらに、結合されたグループについては、グループ生成テーブルからレコードが削除される。そして、続く、キーワード特定処理においては、グループ生成テーブルに存在するグループ、およびグループ結合用テーブルに存在する結合グループの各々について、グループを特徴付けるキーワードを特定する。
また、図10においては、グループ結合処理は、2つのグループ間での結合のみを対象とする例を説明したが、これに限られない。例えば、同様の処理を繰り返してもよい。類似度が閾値以上となるグループの組み合わせがなくなるまで(グループ結合用テーブルが変化しなくなるまで)、生成部13は、図10の処理を繰り返してもよい。
例えば、図11に示す結合グループID「C1」と結合グループID「C2」とを対象として、図10のOp.43乃至Op.45の処理を行う。このとき、ユーザ集合同士の類似度が閾値(1/3)以上であるため、結合グループID「C1」と結合グループID「C2」とが結合される。図12には、結合グループID「C1」と結合グループID「C2」とが結合された場合の、グループ結合用テーブルの例を示す。
図13は管理装置1のハードウェア構成の一例を示す図である。コンピュータ100は、上述した管理処理を実行し、管理装置1として機能する。コンピュータ100はCPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、通信装置104、HDD(Hard Disk Drive)105、入力装置106、表示装置107、媒体読取装置108を有しており、各部はバス109を介して相互に接続されている。そしてCPU101による管理下で相互にデータの送受を行うことができる。
各実施例のフローチャートに示した管理処理が記述された管理プログラムは、コンピュータが読み取り可能な記録媒体に記録される。コンピュータが読み取り可能な記録媒体には、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、HDD、フレキシブルディスク(FD)、磁気テープ(MT)などがある。
光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc − Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto − OPtical disk)などがある。このプログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売されることが考えられる。
そして管理プログラムを実行するコンピュータ100は、例えば媒体読取装置108が、管理プログラムを記録した記録媒体から、該プログラムを読み出す。CPU101は、読み出されたプログラムをHDD105若しくはROM102、RAM103に格納する。
CPU101は、管理装置1全体の動作制御を司る中央処理装置である。そして、CPU101が、管理プログラムをHDD105から読み出して実行することで、CPU101は、図2に示す検索部12、生成部13、特定部14、管理部15として機能するようになる。先に述べたとおり、管理プログラムはCPU101とアクセス可能なROM102またはRAM103に格納されていても良い。
つぎに、通信装置104は、CPU101の制御の下、通信部11として機能する。
さらに、HDD105は、CPU101の管理下で図2に示す記憶部16として機能する。つまり、HDD105は、投稿情報や管理情報を記憶する。プログラム同様、投稿情報や管理情報はCPU101とアクセス可能なROM102またはRAM103に格納されても良い。
さらに、処理の過程で生成される各種情報は、例えば、RAM103に格納される。つまり、RAM103が記憶部16として機能する場合もある。
入力装置106は、各種入力を受け付ける。入力装置106は、例えばキーボードやマウスである。表示装置107は、各種情報を表示する。表示装置107は、例えばディスプレイである。