以下、図面を参照して、本発明の実施形態について説明する。
図1は、本発明の実施形態に係る情報共有装置を含むクライアント−サーバシステムのハードウェア構成を示すブロック図である。
図1のクライアント−サーバシステムは、主として、コンピュータ(サーバコンピュータ)10と、複数のクライアント端末とから構成される。複数のクライアント端末は、クライアント端末20を含む。クライアント端末20上では、コンピュータ10を利用するクライアントソフトウェアが動作する。クライアントソフトウェアは、例えばブラウザである。クライアント端末20を含むクライアント端末は、ローカルエリアネットワーク(LAN:Local Area Network)のようなネットワーク30を介してコンピュータ10と接続されている。なお、図1には、クライアント端末20以外のクライアント端末は省略されている。
コンピュータ10は、ハードディスクドライブのような外部記憶装置40と接続されている。この外部記憶装置40は、コンピュータ10によって実行されるプログラム41を格納する。コンピュータ10及び外部記憶装置40は、情報共有装置50を構成する。
図2は、図1に示す情報共有装置50の主として機能構成を示すブロック図である。この情報共有装置50は、例えばクライアント端末20に表示されるログイン画面を通して当該クライアント端末20を利用するユーザの認証を行った後に当該クライアント端末20からアクセスされる。
情報共有装置50には、例えば予め複数の情報共有グループ(以下、コミュニティと表記)が設定されている。情報共有装置50を利用するユーザは、予め登録することにより少なくとも1つのコミュニティに所属しているものとする。
情報共有装置50においては、ユーザがクライアント端末20を操作することによって当該ユーザが所属するコミュニティを場として記事(を示す情報)を投稿、閲覧することができる。これによって、同一のコミュニティに所属するユーザ間においてコミュニケーションが行われる。
また、情報共有装置50を利用するユーザとしては、一般利用者(第1のユーザ)及び当該情報共有装置50の管理者たるシステム管理者(第2のユーザ)が存在する。
一般利用者は、当該一般利用者が所属するコミュニティにしかアクセスすることができない。つまり、一般利用者は、当該一般利用者が所属していないコミュニティに対して記事を投稿する、または当該コミュニティに対して投稿された記事を閲覧することはできない。以下、一般利用者を単にユーザと表記する。
一方、システム管理者は、全てのコミュニティに対してアクセスすることができる。また、システム管理者は、例えば各コミュニティの設定情報等を変更する権限を有する。以下、システム管理者を単に管理者と表記する。
情報共有装置50は、記事投稿部51、記事投稿処理部52、形態素解析部53、記事検索部54、記事検索処理部55、アクセス制御部56、記事表示部57、コミュニティ間共有情報提示部58及びコミュニティ管理画面表示部59を含む。本実施形態において、これらの各部51乃至59は、図1に示すコンピュータ10が外部記憶装置40に格納されているプログラム41を実行することにより実現されるものとする。このプログラム41は、コンピュータ読取可能な記憶媒体に予め格納して頒布可能である。また、このプログラム41がネットワーク30を介してコンピュータ10にダウンロードされても構わない。
また、情報共有装置50は、記事格納部42、記事検索インデックス格納部43、コミュニティ情報格納部44及び検索履歴格納部45を含む。本実施形態において、これらは、図1に示す外部記憶装置40に格納される。
記事投稿部51は、例えばユーザがクライアント端末20を操作することによって投稿(作成)された記事を入力する。このとき、ユーザは、記事の投稿先となるコミュニティを指定して当該記事を投稿する。この記事は、クライアント端末20のブラウザを通して記事投稿部51に送られる。記事には、例えば当該記事を識別するための記事ID(記事識別情報)、当該記事が投稿されたコミュニティ、当該記事のタイトル、当該記事を投稿したユーザ(投稿者)、当該記事が投稿された日(投稿日)及び当該記事の本文(を示す情報)等が含まれる。記事に含まれる記事のタイトル及び本文には、文字列が含まれる。
記事投稿処理部52は、記事投稿部51によって入力された記事を記事格納部42に格納する。この記事格納部42には、例えば複数のユーザから投稿された記事が格納される。また、記事投稿処理部52は、記事投稿部51によって入力された記事を形態素解析部53に送る。
形態素解析部53は、記事投稿処理部52から送られた記事に含まれる文字列を形態素解析する。形態素解析部53は、形態素解析結果を記事検索インデックス格納部43に格納する。記事検索インデックス格納部43には、後述する出現記事情報及び出現頻度情報(単語情報)が格納される。
記事検索部54は、例えばクライアント端末20を操作することによりユーザによって指定された文字列を含む検索条件を入力する。この検索条件は、例えばユーザによって指定された自然文またはキーワード等を含む。このとき、記事検索部54は、クライアント端末20のブラウザとやり取りすることで、検索条件を入力する。
記事検索処理部55は、記事検索部54によって入力された検索条件(検索文)を形態素解析部53に送る。この検索条件は、形態素解析部53によって形態素解析される。記事検索処理部55は、形態素解析部53による検索条件の形態素解析結果を取得する。
記事検索処理部55は、記事検索部54によって入力された検索条件に合致する記事を、記事格納部42から検索する。
このとき、記事検索処理部55は、検索条件に含まれる文字列(検索条件の形態素解析結果)及び検索された記事に含まれる文字列(記事検索インデックス格納部43に格納されている記事の形態素解析結果)に基づいて、当該記事毎の検索スコアを算出する。
また、記事検索処理部55は、検索された記事の履歴を示す検索履歴情報を検索履歴格納部45に格納する。この検索履歴情報には、例えば検索された記事を識別するための記事ID、当該記事が投稿されたコミュニティ(を示すコミュニティ情報)、検索条件を指定したユーザ(を示すユーザ情報)、記事検索処理部55によって算出された当該記事の検索スコア及び当該検索条件に含まれる文字列(単語)が対応付けて含まれる。なお、この記事検索処理部55の検索履歴情報を格納する処理の詳細については後述する。
コミュニティ情報格納部44には、情報共有装置50に予め設定されているコミュニティに関するコミュニティ関連情報及び当該コミュニティに所属するユーザを示す所属コミュニティ情報が格納されている。
アクセス制御部56は、記事検索処理部55によって検索された記事のうち、検索条件を指定したユーザ(以下、検索実行ユーザと表記)が所属するコミュニティに投稿された記事(アクセス可能記事)を記事表示部57に送る。このとき、アクセス制御部56は、コミュニティ情報格納部44を参照して処理を実行する。
記事表示部57は、アクセス制御部56から送られた記事を、検索実行ユーザによって指定された検索条件に対する応答として当該検索実行ユーザが利用するクライアント端末20に表示する。このとき、記事表示部57は、アクセス制御部56から送られた記事の一覧を検索実行ユーザに対して表示する。このとき、記事表示部57は、検索実行ユーザが利用するクライアント端末20のブラウザとやり取りすることによって記事の一覧を表示する。
また、記事表示部57は、例えばユーザが検索条件を指定することなく直接記事を指定した場合には、当該指定された記事を記事格納部42から取得し、当該記事を当該ユーザに対して表示する。
コミュニティ間共有情報提示部58は、記事格納部42に格納されている記事のうち、当該記事が投稿されたコミュニティ以外の他のコミュニティに対して公開されるべき(コミュニティ間で共有すべき)記事の一覧を、情報共有装置50の管理者に対して提示する。このとき、コミュニティ間共有情報提示部58は、検索履歴格納部45に格納されている検索履歴情報に基づいてコミュニティ間で共有すべき記事の一覧を提示する。
コミュニティ間共有情報提示部58は、コミュニティ情報格納部44に格納されている所属コミュニティ情報及び検索履歴格納部45に格納されている検索履歴情報に基づいて、当該検索履歴情報に含まれる記事ID、当該検索履歴情報に含まれる当該記事が投稿されたコミュニティ(以下、記事のコミュニティと表記)、当該検索履歴情報に含まれる当該記事を検索するための検索条件を指定したユーザ(検索実行ユーザ)に対応付けて所属コミュニティ情報に含まれるコミュニティ(以下、検索実行ユーザのコミュニティと表記)及び当該検索履歴情報に含まれる当該検索条件に含まれる単語の組み合わせ毎に、情報の共有の必要性を表す統計値を算出する。つまり、コミュニティ間共有情報提示部58は、記事ID、記事のコミュニティ、検索実行ユーザのコミュニティ及び単語を軸として統計値を算出する。この統計値は、検索履歴情報において記事ID、記事のコミュニティ、検索実行ユーザ及び単語に対応付けられている検索スコアを加算することによって得られる。
コミュニティ間共有情報提示部58は、例えば算出された統計値のうちの上位の統計値であって、管理者によって指定(選択)されたコミュニティとともに当該統計値に対応付けられた記事IDによって識別される記事の一覧を提示する。この記事の一覧には、例えば当該記事の本文の要約等が含まれる。また、コミュニティ間共有情報提示部58は、管理者によって指定されたコミュニティとともに上記した上位の統計値に対応付けられた単語(文字列)を、例えば管理者によって指定されたコミュニティで必要とされる記事のキーワードとして提示する。
また、コミュニティ間共有情報提示部58は、上記した上位の統計値に対応付けられた記事のコミュニティ(第1のコミュニティ)及び当該記事のコミュニティとともに当該上位の統計値に対応付けられた検索実行ユーザのコミュニティ(第2のコミュニティ)間で必要とされる記事のキーワードの関係を表すグラフを作成する。コミュニティ間共有情報提示部58は、作成されたグラフを管理者に提示する。これらのコミュニティ間共有情報提示部58の処理の詳細については後述する。
上記した記事の一覧、キーワード及びグラフは、コミュニティ管理画面表示部60を通してブラウザに表示される。
図3は、図2に示す記事格納部42に格納される記事のデータ構造の一例を示す。図3に示すように、記事格納部42に格納される記事は、当該記事を識別するための記事ID、当該記事が投稿されたコミュニティ、当該記事のタイトル、当該記事を投稿したユーザを示す投稿者、当該記事が投稿された投稿日及び当該記事の本文を含む。
図3に示す例では、記事格納部42には、記事421〜424を含む複数の記事が格納されている。記事421は、記事ID「1」、コミュニティ「A」、タイトル「xxxについて」、投稿者「α」、投稿日「2007/12/7」及び本文「for文の中で…」を含む。
同様に、記事422は、記事ID「2」、コミュニティ「A」、タイトル「ビルド方法について」、投稿者「β」、投稿日「2008/1/9」及び本文「antで自動的にファイルを…」を含む。記事423は、記事ID「3」、コミュニティ「B」、タイトル「エラーが発生した場合の対処」、投稿者「α」、投稿日「2008/2/7」及び本文「xxxでExceptionが発生した場合は…」を含む。また、記事424は、記事ID「4」、コミュニティ「C」、タイトル「ショートカットキーについて」、投稿者「γ」、投稿日「2008/2/11」及び本文「xxxでyyyを実行するには…」を含む。
図4は、図2に示す記事検索インデックス格納部43に格納される出現記事情報のデータ構造の一例を示す。図4に示すように、前述した出現記事情報には、形態素解析部53によって形態素解析された記事に含まれる単語(文字列)を識別するための単語ID、当該単語IDによって識別される単語及び記事格納部42における当該単語が含まれる記事の数を示す出現記事数(Df)が含まれる。
図4に示す例では、記事検索インデックス格納部43には、出現記事情報431〜433を含む複数の出現記事情報が格納されている。出現記事情報431は、単語ID「1」、単語「aaa」及び出現記事数(Df)「23」を含む。つまり、出現記事情報431によれば、単語ID「1」によって識別される単語「aaa」は、記事格納部42に格納されている記事のうち「23」件の記事に含まれていることが示される。
同様に、出現記事情報432は、単語ID「2」、単語「bbb」及び出現記事数(Df)「15」を含む。出現記事情報433は、単語ID「3」、単語「ccc」及び出現記事数(Df)「12」を含む。
図5は、図2に示す記事検索インデックス格納部43に格納される出現頻度情報のデータ構造の一例を示す。図5に示すように、前述した出現頻度情報には、形態素解析部53によって形態素解析された記事に含まれる単語を識別するための単語ID、当該単語IDによって識別される単語が含まれる記事を識別するための記事ID及び当該単語IDによって識別される単語の当該記事IDによって識別される記事に対する出現頻度(Tf)が含まれる。この出現頻度(Tf)は、記事IDによって識別される記事に単語IDによって識別される単語が出現する回数を示す。
図5に示す例では、記事検索インデックス格納部43には、出現頻度情報434〜440を含む複数の出現頻度情報が含まれる。出現頻度情報434は、単語ID「1」、記事ID「1」及び出現頻度(Tf)「4」を含む。この出現頻度情報434によれば、単語ID「1」によって識別される単語が記事ID「1」によって識別される記事に4回出現することが示される。
同様に、出現頻度情報435は、単語ID「1」、記事ID「2」及び出現頻度(Tf)「2」を含む。出現頻度情報436は、単語ID「1」、記事ID「4」及び出現頻度(Tf)「3」を含む。出現頻度情報437は、単語ID「2」、記事ID「2」及び出現頻度(Tf)「1」を含む。出現頻度情報438は、単語ID「3」、記事ID「2」及び出現頻度(Tf)「1」を含む。出現頻度情報439は、単語ID「3」、記事ID「4」及び出現頻度(Tf)「3」を含む。出現頻度情報440は、単語ID「3」、記事ID「6」及び出現頻度(Tf)「2」を含む。
図6は、図2に示すコミュニティ情報格納部44に格納されるコミュニティ関連情報のデータ構造の一例を示す。図6に示すように、コミュニティ関連情報には、情報共有装置50に予め設定されているコミュニティ(を示すコミュニティ情報)、当該コミュニティが作成(設定)された日(作成日)及び当該コミュニティを説明するための説明文を含む。この説明文は、例えばコミュニティを作成したユーザによって登録される。
図6に示す例では、コミュニティ情報格納部44には、コミュニティ関連情報441〜443を含む複数のコミュニティ関連情報が格納されている。コミュニティ関連情報441は、コミュニティ「A」、作成日「2007/12/11」及び説明文「プログラミングのQ&A」を含む。
同様に、コミュニティ関連情報442は、コミュニティ「B」、作成日「2008/1/8」及び説明文「バグ事例の議論」を含む。コミュニティ関連情報443は、コミュニティ「C」、作成日「2008/1/22」及び説明文「ノウハウ蓄積」を含む。
図7は、図2に示すコミュニティ情報格納部44に格納される所属コミュニティ情報のデータ構造の一例を示す。図7に示すように、所属コミュニティ情報には、情報共有装置50に予め設定されているコミュニティ(を示すコミュニティ情報)及び当該コミュニティに所属するユーザ(を示すユーザ情報)が含まれる。
図7に示す例では、コミュニティ情報格納部44には、所属コミュニティ情報444〜449を含む複数の所属コミュニティ情報が格納されている。所属コミュニティ情報444は、コミュニティ「A」及びユーザ「α」を含む。所属コミュニティ情報444によれば、ユーザ「α」がコミュニティ「A」に所属していることが示される。
同様に、所属コミュニティ情報445は、コミュニティ「A」及びユーザ「β」を含む。所属コミュニティ情報446は、コミュニティ「A」及びユーザ「γ」を含む。所属コミュニティ情報447は、コミュニティ「B」及びユーザ「β」を含む。所属コミュニティ情報448は、コミュニティ「B」及びユーザ「γ」を含む。所属コミュニティ情報449は、コミュニティ「C」及びユーザ「β」を含む。
図8は、図2に示す検索履歴格納部45に格納される検索履歴情報のデータ構造の一例を示す。図8に示すように、検索履歴情報には、記事検索処理部55によって検索された記事を識別するための記事ID、当該記事が投稿されたコミュニティ、当該記事を検索するための検索条件(検索文)を指定した検索実行ユーザ(を示すユーザ情報)、当該記事検索処理部55によって算出された当該記事の検索スコア及び当該検索実行ユーザによって指定された検索条件に含まれる文字列(単語)が含まれる。
図8に示す例では、検索履歴格納部45には、検索履歴情報451及び452を含む複数の検索履歴情報が格納されている。検索履歴情報451は、記事ID「12」、コミュニティ「B」、検索実行ユーザ「α」、検索スコア「3272」及び検索条件に含まれる単語「プラグイン、作成、方法」を含む。この検索履歴情報451によれば、検索実行ユーザ「α」によって指定された「プラグイン、作成、方法」を含む検索条件に応じて検索された記事がコミュニティ「B」に投稿された記事ID「12」によって識別される記事であり、当該記事の検索スコアが「3272」であることが示される。
同様に、検索履歴情報452は、記事ID「29」、コミュニティ「E」、検索実行ユーザ「α」、検索スコア「1631」及び検索条件に含まれる単語「プラグイン、作成、方法」を含む。
次に、図9のフローチャートを参照して、前述したユーザによって指定された検索条件に応じて検索処理が実行される際に検索履歴情報を格納(保存)する処理手順について説明する。
まず、記事検索部54は、ユーザがクライアント端末20を操作することによって指定された文字列を含む検索条件(検索文)を入力する。記事検索処理部55は、記事検索部54によって入力された検索条件を形態素解析部53に送る。なお、検索条件を指定したユーザ(検索実行ユーザ)は、当該ユーザのログイン時等に判別することができる。
形態素解析部53は、記事検索処理部55から送られた検索条件を形態素解析する(ステップS1)。形態素解析部53は、検索条件の形態素解析結果を記事検索処理部55に返す。
記事検索処理部55は、検索条件の形態素解析結果に基づいて、記事検索部54によって入力された検索条件に合致する記事を、記事格納部42から検索する。記事検索処理部55は、記事検索インデックス格納部43を用いて検索処理を実行する。
このとき、記事検索処理部55は、形態素解析部53による検索条件の形態素解析結果、記事検索インデックス格納部43に格納されている出現記事情報及び出現頻度情報に基づいて、検索された記事毎の検索スコアを算出(取得)する(ステップS2)。記事検索処理部55は、例えばTF/IDFにより検索条件と記事との類似度を検索スコアとして算出する。ここでは、ユーザの所属するコミュニティとは関係なく、全てのコミュニティの記事について検索スコアが算出される。
次に、アクセス制御部56は、検索実行ユーザが所属するコミュニティ(を示すコミュニティ情報)をコミュニティ情報格納部44から取得する(ステップS3)。このとき、アクセス制御部56は、検索実行ユーザ(を示すユーザ情報)に対応付けて所属コミュニティ情報に含まれるコミュニティを取得する。
アクセス制御部56は、検索された記事のうち検索スコアが上位n件の記事の中に、取得されたコミュニティ以外に投稿された記事があるか否かを判定する(ステップS4)。このとき、アクセス制御部56は、検索された記事に含まれる当該記事が投稿されたコミュニティ(当該記事が所属するコミュニティ)に基づいて判定処理を実行する。なお、nは、予め定められている値である。ここでは、検索スコアが上位n件の記事を判定処理の対象とするものとして説明したが、例えば検索スコアが予め定められた値(足きり値)以上の記事を判定処理の対象としても構わない。
取得されたコミュニティ(つまり、検索実行ユーザが所属するコミュニティ)以外に投稿された記事があると判定された場合(ステップS4のYES)、記事検索処理部55は、当該記事の検索履歴情報を検索履歴格納部45に格納する(ステップS5)。この検索履歴情報には、検索実行ユーザが所属するコミュニティ以外に投稿された記事を識別するための記事ID、当該記事が投稿されたコミュニティ(を示すコミュニティ情報)、当該検索実行ユーザ(を示すユーザ情報)、上記したステップS2において算出された当該記事の検索スコア及び当該検索実行ユーザによって指定された検索条件に含まれる単語が含まれる。なお、この検索条件に含まれる単語は、上記したステップS1における検索条件の形態素解析結果により取得される。
ここで、検索された記事のうち、検索実行ユーザが所属するコミュニティに対して投稿されている記事は、当該検索実行ユーザがアクセス可能な記事であるため、アクセス制御部56によって記事表示部57に送られる。これにより、記事表示部57は、アクセス制御部56から送られた記事を検索条件に対する応答(検索結果)として検索実行ユーザに提示(表示)する。
一方、ステップS4において、検索実行ユーザが所属するコミュニティ以外に投稿された記事がないと判定された場合、検索履歴情報は格納されず、処理は終了される。この場合には、検索された全ての記事が検索結果として検索実行ユーザに対して提示される。
ここで、図10を参照して、上記した図9に示すステップS4及びステップS5の処理について具体的に説明する。
図10は、記事検索処理部55によって検索された記事(検索結果)の一例を示す。図10に示す例では、記事検索処理部55による検索結果には、コミュニティ「B」に投稿されている記事ID「12」によって識別される記事であって検索スコアが「3272」である記事61が含まれている。
同様に、記事検索処理部55による検索結果には、コミュニティ「A」に投稿されている記事ID「34」によって識別される記事であって検索スコアが「2447」である記事62が含まれている。記事検索処理部55による検索結果には、コミュニティ「D」に投稿されている記事ID「45」によって識別される記事であって検索スコアが「2321」である記事63が含まれている。記事検索処理部55による検索結果には、コミュニティ「E」に投稿されている記事ID「29」によって識別される記事であって検索スコアが「1631」である記事64が含まれている。また、記事検索処理部55による検索結果には、コミュニティ「C」に投稿されている記事ID「21」によって識別される記事であって検索スコアが「1262」である記事65が含まれている。
ここで、これらの記事を検索するための検索条件(検索文)が例えば「プラグインの作成方法」である場合を想定する。また、この検索条件を指定した検索実行ユーザが「α」であるものとし、この検索実行ユーザ「α」が所属するコミュニティが「A、C、D」であるものとする。
この場合、アクセス制御部56は、記事検索処理部55による検索結果に含まれる記事61〜65の中に、検索実行ユーザ「α」が所属するコミュニティ「A、C、D」以外に投稿された記事があるか否かを判定する。アクセス制御部56は、記事61〜65の中にコミュニティ「B」及び「E」に投稿された記事があるため、検索実行ユーザ「α」が所属するコミュニティ「A、C、D」以外に投稿された記事があると判定する。このとき、記事検索処理部55は、検索実行ユーザ「α」が所属するコミュニティ「A、C、D」以外のコミュニティ「B」及び「E」に投稿された記事61及び64について検索履歴情報を格納する。この場合、記事検索処理部55は、この記事61及び64についての検索履歴情報として前述した図8に示す検索履歴情報451及び452を検索履歴格納部45に格納する。
次に、図11のフローチャートを参照して、前述したコミュニティ間で共有すべき記事(情報)を管理者に対して提示する際のコミュニティ間共有情報提示部58の処理手順について説明する。図11に示す処理は、例えば管理者の要求に応じて実行される。
まず、コミュニティ間共有情報提示部58は、検索履歴格納部45に格納されている検索履歴情報の統計を取る。コミュニティ間共有情報提示部58は、検索履歴格納部45に格納されている検索履歴情報に基づいて、記事ID、当該記事IDによって識別される記事が所属する(投稿された)コミュニティ(記事のコミュニティ)、当該記事を検索するための検索条件を指定した検索実行ユーザが所属するコミュニティ(検索実行ユーザのコミュニティ)及び当該検索条件に含まれる単語の組み合わせ毎に、当該検索履歴情報においてこれらに対応付けられている検索スコアの和(統計値)を算出する(ステップS11)。
なお、検索実行ユーザが所属するコミュニティは、検索履歴情報に含まれる検索実行ユーザに対応付けて所属コミュニティ情報に含まれるコミュニティであり、コミュニティ情報格納部44から取得される。また、検索実行ユーザが複数のコミュニティに所属している場合、つまり、検索実行ユーザのコミュニティが複数存在する場合には、それぞれのコミュニティ毎に統計値が算出される。また、検索履歴情報に含まれる検索条件に含まれる単語が複数存在する場合も同様に、当該単語毎に統計値が算出される。
以下、統計値が算出される際の組み合わせに含まれる記事ID、記事のコミュニティ、検索実行ユーザのコミュニティ及び単語をまとめて組み合わせ情報と表記する。コミュニティ間共有情報提示部58は、組み合わせ情報(に含まれる記事ID、記事のコミュニティ、検索実行ユーザのコミュニティ及び単語)に対応付けて統計値を算出する。
次に、コミュニティ間共有情報提示部58は、組み合わせ情報に含まれる単語、記事検索インデックス格納部43に格納されている出現記事情報及び出現頻度情報に基づいて、当該組み合わせ情報に対応付けて算出された統計値に対して例えばTF/IDFによる単語の重みをかける(ステップS12)。これにより、検索条件に含まれる単語であるが、重要でない単語を含む組み合わせ情報に対応付けられた統計値が小さくなるようにする。
コミュニティ間共有情報提示部58は、算出された統計値に基づいて組み合わせ情報をソートする(ステップS13)。
ここで、図12は、上記したようにステップS13において統計値に基づいて組み合わせ情報がソートされた結果の一例を示す。図12に示す例では、記事ID「12」、記事のコミュニティ「B」、検索実行ユーザのコミュニティ「A」及び単語「xxx」を含む組み合わせ情報71に対応付けられた統計値は、「294834」で、最も高い値である。
以下、順に、記事ID「12」、記事のコミュニティ「B」、検索実行ユーザのコミュニティ「C」及び単語「xxx」を含む組み合わせ情報72に対応付けられた統計値は「163444」である。記事ID「23」、記事のコミュニティ「F」、検索実行ユーザのコミュニティ「A」及び単語「yyy」を含む組み合わせ情報73に対応付けられた統計値は「142131」である。記事ID「12」、記事のコミュニティ「B」、検索実行ユーザのコミュニティ「A」及び単語「zzz」を含む組み合わせ情報74に対応付けられた統計値は「124564」である。記事ID「14」、記事のコミュニティ「A」、検索実行ユーザのコミュニティ「B」及び単語「aaa」を含む組み合わせ情報75に対応付けられた統計値は「103223」である。記事ID「29」、記事のコミュニティ「E」、検索実行ユーザのコミュニティ「C」及び単語「bbb」を含む組み合わせ情報76に対応付けられた統計値は「37281」である。
ここで、図12に示す組み合わせ情報71及び72のように、例えば記事ID、記事のコミュニティ及び単語が同一であっても、検索実行ユーザのコミュニティが異なるものであれば、異なる組み合わせ情報として扱われる。すなわち、検索実行ユーザのコミュニティが異なるものであれば、異なる統計値が算出される。
また、図12に示す組み合わせ情報71及び74のように記事ID、記事のコミュニティ及び検索実行ユーザのコミュニティが同一であっても、単語が異なるものであれば、異なる統計値が算出される。
再び図11に戻ると、コミュニティ間共有情報提示部58は、例えば管理者によって指定(選択)されたコミュニティ(を示すコミュニティ情報)を入力する。コミュニティ間共有情報提示部58は、入力されたコミュニティに応じて組み合わせ情報の絞り込みを行う(ステップS14)。具体的には、コミュニティ間共有情報提示部58は、算出された統計値のうちの上位の統計値に対応付けられた組み合わせ情報のうち、入力されたコミュニティを検索実行ユーザのコミュニティとして含む組み合わせ情報に絞り込む。
コミュニティ間共有情報提示部58は、上記したように絞り込まれた組み合わせ情報を、更に記事IDで集計し、記事のコミュニティと単語の一覧(以下、単に記事の一覧と表記)を作成する(ステップS15)。つまり、記事の一覧には、上位の統計値に対応付けられた組み合わせ情報であって、コミュニティ間共有情報提示部58によって入力されたコミュニティを検索実行ユーザのコミュニティとして含む組み合わせ情報に含まれる記事IDによって識別される記事が含まれる。
上記した図12に示す統計値に基づいて組み合わせ情報がソートされた結果において、例えば管理者によって指定されたコミュニティが「A」である場合を想定する。この場合、管理者によって指定されたコミュニティ「A」を検索実行ユーザのコミュニティとして含む組み合わせ情報に絞り込む。
図13は、図12に示す組み合わせ情報がソートされた結果において管理者によって指定されたコミュニティ「A」に基づいて組み合わせ情報の絞り込みを行った結果を示す。図13に示す例では、組み合わせ情報71、73及び74に絞り込まれている。なお、組み合わせ情報71、73及び74に含まれる検索実行ユーザのコミュニティは「A」であるが、図13においては省略されている。
続いて、絞り込まれた組み合わせ情報は、記事IDで集計される。つまり、図13に示す組み合わせ情報71に含まれる記事ID及び組み合わせ情報74に含まれる記事IDは同一であるため、組み合わせ情報71及び74に含まれる単語「xxx」及び「zzz」は組み合わされる。これにより、図14に示すような記事の一覧が作成される。この記事の一覧に含まれる単語は、例えば管理者によって指定されたコミュニティ「A」において必要とされる記事のキーワードである。
このとき、コミュニティ間共有情報提示部58は、記事の一覧に含まれる記事(の本文)の要約を作成する。コミュニティ間共有情報提示部58は、上記した記事の一覧をもとに、当該記事の一覧に含まれる記事のタイトル、当該記事の投稿者及び作成された要約を例えば管理者によって指定されたコミュニティ「A」において共有すべき記事(情報)としてコミュニティ管理画面表示部60を介して管理者に対して表示する。
図15は、管理者によってコミュニティ「A」が指定された際に表示される記事一覧画面の一例を示す。図15に示すように、記事一覧画面には、管理者によって指定されたコミュニティ「A」において共有すべき他のコミュニティの記事の一覧が表示される。この場合、上記したように記事のタイトル、当該記事の投稿者(作成者)、キーワード及び当該記事の要約が表示される。
図15に示す例では、管理者によって指定されたコミュニティ「A」で共有すべき記事として、タイトル「xxxでのzzzの作成方法」、投稿者「α」、キーワード「xxx、zzz」及び要約「zzzを作成する場合は次の点に…」の記事が表示されている。同様に、コミュニティ「A」で共有すべき記事として、タイトル「yyyの使用方法」、投稿者「β」、キーワード「yyy」及び要約「yyyを使用する場合は…」の記事が表示されている。
次に、図16のフローチャートを参照して、前述した各コミュニティ間で必要とされる記事のキーワードの関係を表すグラフを管理者に対して提示する際のコミュニティ間共有情報提示部58の処理手順について説明する。図16に示す処理は、上記した図11に示す処理の場合と同様に、例えば管理者の要求に応じて実行される。
まず、上記した図11に示すステップS11〜ステップS13の処理に相当するステップS21〜ステップS23の処理が実行される。ただし、ステップS21〜ステップS23における組み合わせ情報は、記事のコミュニティ、検索実行ユーザのコミュニティ及び単語である。
次に、コミュニティ間共有情報提示部58は、ステップS23において統計値に基づいて組み合わせ情報がソートされた結果に対して、例えば統計値の上位m件で足きりをする(ステップS24)。このmは、例えば管理者によって予め定められた値である。
コミュニティ間共有情報提示部58は、ステップS24において足きりされた結果に基づいて、各コミュニティ間において必要とされる記事のキーワードの関係を表すグラフを作成する(ステップS25)。
ここで、図17及び図18を参照して、各コミュニティ間で必要とされる記事のキーワードの関係を表すグラフを作成する処理について具体的に説明する。
図17は、上記した図16に示すステップS24において組み合わせ情報がソートされた結果に対して足きりが行われた結果の一例を示す。図17に示す例では、統計値の上位7件で足きり処理が行われている。なお、図17においては、組み合わせ情報に含まれる記事IDについては省略されている。
図17に示す例では、組み合わせ情報がソートされた結果に対して足きりが行われた結果、上位7件の組み合わせ情報には、組み合わせ情報81から87が含まれる。組み合わせ情報81には、記事のコミュニティ「B」、検索実行ユーザのコミュニティ「A」及び単語「xxx」が含まれる。組み合わせ情報82には、記事のコミュニティ「B」、検索実行ユーザのコミュニティ「C」及び単語「xxx」が含まれている。また、組み合わせ情報83には、記事のコミュニティ「F」、検索実行ユーザのコミュニティ「A」及び単語「yyy」が含まれている。組み合わせ情報84には、記事のコミュニティ「B」、検索実行ユーザのコミュニティ「A」及び単語「zzz」が含まれている。組み合わせ情報85には、記事のコミュニティ「A」、検索実行ユーザのコミュニティ「B」及び単語「aaa」が含まれている。組み合わせ情報86には、記事のコミュニティ「E」、検索実行ユーザのコミュニティ「C」及び単語「ccc」が含まれている。また、組み合わせ情報87には、記事のコミュニティ「C」、検索実行ユーザのコミュニティ「A」及び単語「ddd」が含まれている。
図18は、図17に示す上位7件の組み合わせ情報をもとに作成されたグラフの一例を示す。図18に示すグラフ90では、例えば図17に示す組み合わせ情報81に含まれる記事のコミュニティ「B」から検索実行ユーザのコミュニティ「A」に対して矢印が示され、その近傍には単語「xxx」が示されている。これにより、グラフ90においては、コミュニティ「A」がコミュニティ「B」に対して必要とする記事のキーワードが「xxx」であることが示される。
同様に、グラフ90では、図17に示す組み合わせ情報82に含まれる記事のコミュニティ「B」から検索実行ユーザのコミュニティ「C」に対して矢印が示され、その近傍には単語「xxx」が示されている。これにより、グラフ90においては、コミュニティ「C」がコミュニティ「B」に対して必要とする記事のキーワードが「xxx」であることが示される。
グラフ90では、図17に示す組み合わせ情報83に含まれる記事のコミュニティ「F」から検索実行ユーザのコミュニティ「A」に対して矢印が示され、その近傍には単語「yyy」が示されている。これにより、グラフ90においては、コミュニティ「A」がコミュニティ「F」に対して必要とする記事のキーワードが「yyy」であることが示される。
グラフ90では、図17に示す組み合わせ情報84に含まれる記事のコミュニティ「B」から検索実行ユーザのコミュニティ「A」に対して矢印が示され、その近傍には単語「zzz」が示されている。なお、この矢印は、上記した組み合わせ情報81における矢印と同一である。これにより、グラフ90においては、コミュニティ「A」がコミュニティ「B」に対して必要とする記事のキーワードが「zzz」であることが示される。
グラフ90では、図17に示す組み合わせ情報85に含まれる記事のコミュニティ「A」から検索実行ユーザのコミュニティ「B」に対して矢印が示され、その近傍には単語「aaa」が示されている。これにより、グラフ90においては、コミュニティ「B」がコミュニティ「A」に対して必要とする記事のキーワードが「aaa」であることが示される。
グラフ90では、図17に示す組み合わせ情報86に含まれる記事のコミュニティ「E」から検索実行ユーザのコミュニティ「C」に対して矢印が示され、その近傍には単語「ccc」が示されている。これにより、グラフ90においては、コミュニティ「C」がコミュニティ「E」に対して必要とする記事のキーワードが「ccc」であることが示される。
グラフ90では、図17に示す組み合わせ情報87に含まれる記事のコミュニティ「C」から検索実行ユーザのコミュニティ「A」に対して矢印が示され、その近傍には単語「ddd」が示されている。これにより、グラフ90においては、コミュニティ「A」がコミュニティ「C」に対して必要とする記事のキーワードが「ddd」であることが示される。
上記したようにして、図17に示す上位7件の組み合わせ情報81〜87に基づいて、図18に示すグラフ90が作成される。
コミュニティ間共有情報提示部58によって作成されたグラフは、コミュニティ管理画面表示部59を介して管理者に対して提示(表示)される。なお、図18においては省略されているが、例えばグラフ90においてコミュニティ情報格納部44に格納されているコミュニティ関連情報に含まれる各コミュニティの説明文等が表示される構成であっても構わない。
上記したように本実施形態においては、例えばユーザによって指定された検索条件に応じて記事の検索が実行される際に、当該検索された記事の履歴を示す検索履歴情報が検索履歴格納部45に格納(蓄積)される。本実施形態においては、コミュニティ情報格納部44に格納されている所属コミュニティ情報及び検索履歴格納部45に格納された検索履歴情報に基づいて、記事ID、記事のコミュニティ、検索実行ユーザのコミュニティ及び検索条件に含まれる単語の組み合わせ(組み合わせ情報)毎に統計値が算出される。本実施形態においては、算出された統計値に基づいて、例えば管理者によって指定(選択)されたコミュニティにおいて共有すべき記事(情報)及び当該記事のキーワードの一覧が当該管理者に対して提示される。これにより、管理者は、提示された記事の一覧を利用することで共有すべき記事を容易に見つけることができる。また、管理者は、提示された記事の一覧をもとに記事の共有のための設定を行うことで、記事の共有を促進することができる。したがって、本実施形態によれば、例えば異なるコミュニティ(情報共有グループ)間で共有すべき記事(情報)を管理者に提示することで、当該記事の共有化の促進を支援することが可能となる。
また、本実施形態においては、記事の一覧に含まれる記事の要約を提示することにより、管理者は、より共有すべき記事の内容を容易に理解することが可能となる。
また、本実施形態においては、例えばコミュニティ間で必要とされる記事のキーワードの関係を表すグラフを管理者に提示することで、管理者は、例えばどのコミュニティでどのようなキーワードに関連した記事を必要としているかを容易に認識することができる。したがって、本実施形態においては、提示されたグラフをもとに管理者は共有すべき記事の設定等を行うことができるので、記事の共有化の促進を支援することが可能となる。
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
10…コンピュータ、20…クライアント端末、30…ネットワーク、40…外部記憶装置、42…記事格納部、43…記事検索インデックス格納部、44…コミュニティ情報格納部、45…検索履歴格納部、50…情報共有装置、51…記事投稿部、52…記事投稿処理部、53…形態素解析部、54…記事検索部、55…記事検索処理部、56…アクセス制御部、57…記事表示部、58…コミュニティ間共有情報提示部、59…コミュニティ管理画面表示部。