以下、図面を参照して、実施形態について説明する。
図1は、本実施形態に係る文書管理装置のハードウェア構成を示すブロック図である。図1に示すように、コンピュータ10は、例えばハードディスクドライブ(HDD:Hard Disk Drive)のような外部記憶装置20と接続されている。この外部記憶装置20は、コンピュータ10によって実行されるプログラム21を格納する。コンピュータ10および外部記憶装置20は、文書管理装置30を構成する。
図2は、図1に示す文書管理装置30の主として機能構成を示すブロック図である。図2に示すように、文書管理装置30は、入力部31、文書登録部32、文書検索部33、項目取得部34および出力部35を含む。本実施形態において、これらの各部31〜35は、図1に示すコンピュータ10が外部記憶装置20に格納されているプログラム21を実行することにより実現されるものとする。このプログラム21は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム21が、例えばネットワークを介してコンピュータ10にダウンロードされても構わない。
また、文書管理装置30は、文書データリポジトリ22を含む。本実施形態において、文書データリポジトリ22は、例えば外部記憶装置20に格納される。
文書データリポジトリ22には、各種項目が記述された複数の文書が格納される。文書データリポジトリ22に格納されている文書の各々には、単語が含まれる。
また、文書データリポジトリ22には、当該文書データリポジトリ22に格納されている文書毎に、当該文書に関する詳細な情報が記述されたメタデータ(以下、文書のメタデータと表記)が格納される。このメタデータは、例えば文書に記述されている項目および当該文書に含まれる単語(を示す情報)を含む。
また、文書データリポジトリ22には、当該文書データリポジトリ22に格納されている文書の各々に記述されている項目および当該項目間の関係が定義されたモデル(以下、メタモデルと表記)が格納される。
入力部31は、例えばユーザ(文書作成者)によって作成された文書を入力する。入力部31によって入力された文書には、上記したように各種項目が記述されており、単語が含まれる。
また、入力部31は、文書を作成しようとするユーザによって指定された検索条件(例えば、検索キーワード)を入力する。
文書登録部32は、入力部31によって入力された文書に記述されている項目に基づいて、文書データリポジトリ22に格納されているメタモデルを更新する。文書登録部32は、入力部31によって入力された文書を文書データリポジトリ22に登録する。また、文書登録部32は、入力部31によって入力された文書のメタデータを文書データリポジトリ22に登録する。
文書検索部33は、入力部31によって入力された検索条件に基づいて、当該検索条件に合致する文書を文書データリポジトリ22から検索する。
項目取得部34は、文書データリポジトリ22に格納されている各文書のメタデータおよびメタモデルに基づいて、文書検索部33によって検索された文書と類似する文書(以下、類似文書と表記)を当該文書データリポジトリ22から取得する。
項目取得部34は、文書検索部33によって検索された文書および当該文書と類似する文書において共通して記述されている項目を特定する。
出力部35は、項目取得部34によって特定された項目を出力する。これにより、ユーザに対して文書に記述すべき項目が提示される。
ここで、図3を参照して、図2に示す文書データリポジトリ22に格納されているメタモデルを概念的に説明する。なお、文書データリポジトリ22には、1つのメタモデルが格納されている。
図3は、ソフトウェアの仕様書(の要件)に関するメタモデルの一例を示す。メタモデルにおいては、上述したように文書データリポジトリ22に格納されている文書の各々に記述されている項目および当該項目間の関係が定義されている。なお、このメタモデルにおいて、文書の各々に記述されている項目はクラスと称される。
ソフトウェアの仕様書は、メタモデルに定義されているクラスを取捨選択することによって作成することができる。例えば、Webアプリケーションに関する仕様書であれば、「画面」クラス(図示せず)を選択し、当該「画面」に関する仕様を記述する。一方、フレームワークに関する仕様書であれば、「画面」クラスは必要ないため当該「画面」に関する仕様は記述しない。その他、メタモデルにおいて定義されているクラス以外で記述すべき項目があれば追加することができる。
図3に示すメタモデルにおいては、「機能要件」クラスおよび「非機能要件」クラスが定義されている。
「機能要件」クラスの下位のクラス(以下、サブクラスと表記)として、「共通機能」サブクラスおよび「機能」サブクラスが定義されている。「機能」サブクラスの下位のクラス(以下、サブサブクラスと表記)として、「機能ID」サブサブクラスおよび「機能名」サブサブクラスが定義されている。これによれば、例えば「機能要件」が記述された文書(ソフトウェアの仕様書)では、「共通機能」および「機能」の項目が記述され、当該「機能」の属性として「機能ID」および「機能名」の項目が記述されることが示されている。
また、「非機能要件」クラスの下位のサブクラスとして、「業務特性」サブクラスおよび「制約事項」サブクラスが定義されている。「制約事項」サブクラスの下位のサブサブクラスとして、「制約事項ID」サブサブクラスおよび「制約事項名」サブサブクラスが定義されている。これによれば、例えば「非機能要件」が記述された文書(ソフトウェアの仕様書)では、「業務特性」および「制約事項」の項目が記述され、当該「制約事項」の属性として「制約事項ID」および「制約事項名」の項目が記述されることが示されている。
つまり、文書データリポジトリ22に格納されているメタモデルでは、当該メタモデルにおける第1階層のノード毎(ここでは、「機能要件」クラスおよび「非機能要件」クラス毎)に1つの文書に記述される項目および当該項目の関係が定義されている。
上記した図3においてはメタモデルを概念的に説明したが、メタモデルは、例えば図4に示すようなXML(Extensible Markup Language)形式のファイル(以下、メタモデルのファイルと表記)で文書データリポジトリ22に格納されている。
なお、図4に示すメタモデルのファイルには、各クラスを定義する「class」要素、「subclass」要素および「subsubclass」要素が含まれる。また、「class」要素、「subclass」要素および「subsubclass」要素は、それぞれ当該要素によって定義されるクラスのクラス名(つまり、項目名)を属性値とする「name」属性を有する。
また、図4に示すメタモデルのファイルにおける「class」要素、「subclass」要素および「subsubclass」要素は、当該メタモデルにおいて定義されている各クラスの階層構造を構成する。ここでは、「subclass」要素は、「class」要素に定義されているクラスの下位のサブクラスを定義している。また、「subsubclass」要素は、「subclass」要素に定義されているサブクラスの下位のサブサブクラスを定義している。また、メタモデルにおいて定義されている各クラスには、当該クラスを識別するための識別子(id)が属性値として付与されている。具体的には、「class」要素、「subclass」要素および「subsubclass」要素は、当該要素によって定義されるクラスを識別するための識別子を属性値とする「id」属性を有する。
図5は、図2に示す文書登録部32の機能構成を示すブロック図である。図5に示すように、文書登録部32は、文書取得部321、メタモデル取得部322、メタモデル更新部323、メタデータ生成部324および登録部325を含む。
文書取得部321は、入力部31によって入力された文書を取得する。文書取得部321は、取得された文書を例えばXML形式に変換する。
メタモデル取得部322は、文書データリポジトリ22からメタモデル(のファイル)を取得する。このメタモデルは、上記したように文書データリポジトリ22に格納されている文書の各々に記述されている項目および当該項目間の関係が定義されたモデルである。
メタモデル更新部323は、文書取得部321によってXML形式に変換された文書に記述されている項目およびメタモデルに定義されているクラスを比較することにより、当該文書に記述されている項目の中で当該メタモデルに定義されていない項目(クラス)を抽出する。メタモデル更新部323は、抽出されたクラスをメタモデルのファイルに追加(追記)することによって、当該メタモデルを更新する。
メタデータ生成部324は、文書取得部321によってXML形式に変換された文書に基づいて、当該文書のメタデータを生成する。この場合、メタデータ生成部324は、文書取得部321によってXML形式に変換された文書に記述された項目、当該項目間の関係、当該文書に含まれる単語および当該文書における当該単語の出現数(を示す情報)を含むメタデータを生成する。
登録部325は、文書取得部321によってXML形式に変換された文書およびメタデータ生成部324によって生成されたメタデータを文書データリポジトリ22に登録する。
図6は、図2に示す文書検索部33の機能構成を示すブロック図である。図6に示すように、文書検索部33は、検索条件取得部331および検索結果取得部332を含む。
検索条件取得部331は、入力部31によって入力された検索条件を取得する。この検索条件は、例えばユーザによって指定された検索キーワードを含む。
検索結果取得部332は、検索条件取得部331によって取得された検索条件(検索キーワード)に基づいて、当該検索条件に合致する文書を文書データリポジトリ22から検索する。これにより、検索結果取得部332は、検索条件取得部331によって取得された検索条件に合致する文書を含む検索結果を取得する。なお、検索結果取得部332によって取得された検索結果は、出力部35を介してユーザに提示される。
図7は、図2に示す項目取得部34の機能構成を示すブロック図である。図7に示すように、項目取得部34は、選択文書取得部341、メタデータ取得部342、類似文書取得部343および項目算出部344を含む。
選択文書取得部341は、ユーザに対して提示された検索結果(に含まれる文書)の中から、当該ユーザによって選択された文書を取得する。
メタデータ取得部342は、文書データリポジトリ22に格納されている全ての文書のメタデータを当該文書データリポジトリ22から取得する。
類似文書取得部343は、メタデータ取得部342によって取得されたメタデータに基づいて、選択文書取得部341によって取得された文書および文書データリポジトリ22に格納されている文書の類似度を算出する。類似文書取得部343は、算出された類似度に基づいて、選択文書取得部341によって取得された文書と類似する文書を取得する。
項目算出部344は、文書データリポジトリ22からメタモデルを取得する。項目算出部344は、取得されたメタモデルに定義されているクラス(項目)毎に、選択文書取得部341によって取得された文書および類似文書取得部343によって取得された文書のうち当該項目が記述されている文書の数を重複度として算出する。項目算出部344は、算出された重複度に基づいて、選択文書取得部341によって取得された文書および類似文書取得部343によって取得された文書において共通して記述されている項目を特定する。なお、項目算出部344によって特定された項目は、ユーザが作成しようとしている文書に記述すべき項目として出力部35を介して当該ユーザに提示される。
以下、本実施形態に係る文書管理装置30の動作について説明する。本実施形態に係る文書管理装置30においては、ユーザによって作成された文書を文書データリポジトリ22に登録する処理(以下、文書登録処理と表記)およびユーザが新規に文書を作成する際に当該文書に記載すべき項目を提示する処理(以下、項目提示処理と表記)が実行される。
ここで、図8のフローチャートを参照して、本実施形態に係る文書管理装置30において実行される文書登録処理の処理手順について説明する。ここでは、文書データリポジトリ22には、上述した図4に示すようなメタモデルのファイルが格納されているものとする。
まず、入力部31は、例えばユーザの操作に応じて、当該ユーザによって作成された文書を入力する(ステップS1)。入力部31によって入力される文書には、各種項目が記述されている。また、入力部31によって入力される文書には、単語が含まれる。なお、入力部31によって入力される文書は、複数であってもよい。
入力部31によって入力される文書は、例えばソフトウェアの仕様書、特許明細書または規程文書等のどのような種類の文書であってもよいが、文書データリポジトリ22に格納されているメタモデルに基づいた文書であるものとする。
ここで、図9および図10を参照して、入力部31によって入力される文書について具体的に説明する。
図9は、ソフトウェア仕様書において「機能要件」が記述された文書の一例を示す。図9に示す例では、「機能要件」が記述された文書には、「共通機能」、「機能」、「業務ロジック」、「例外処理」および「画面」のシートがあり、「機能」のシートには、「機能ID」、「機能名」、「説明」および「詳細説明」が記述されている。なお、「機能」のシートに記述されている「機能ID」、「機能名」、「説明」および「詳細説明」は、当該「機能」の属性である。
この図9に示す文書においては、「機能要件」、「共通機能」、「機能」、「業務ロジック」、「例外処理」、「画面」、「機能ID」、「機能名」、「説明」および「詳細説明」がそれぞれ当該文書に記述された項目である。
一方、図10は、ソフトウェア仕様書において「非機能要件」が記述された文書の一例を示す。図10に示す例では、「非機能要件」が記述された文書には、「業務特性」、「制約事項」、「メモリ制約」、「設計制約」および「稼動場所」のシートがあり、「制約事項」のシートには、「制約事項ID」、「制約事項名」、「説明」および「由来」が記述されている。なお、「制約事項」のシートに記述されている「制約事項ID」、「制約事項名」、「説明」および「由来」は、当該「制約事項」の属性である。
この図10に示す文書においては、「非機能要件」、「業務特性」、「制約事項」、「メモリ制約」、「設計制約」、「稼動場所」、「制約事項ID」、「制約事項名」、「説明」および「由来」がそれぞれ当該文書に記述された項目である。
再び図8に戻ると、文書登録部32に含まれる文書取得部321は、入力部31によって入力された文書を取得する。なお、文書取得部321によって取得された文書は、XML形式に変換される(ステップS2)。文書取得部321によって取得された文書が複数である場合、当該複数の文書の全てが1つのXML形式の文書(ファイル)に変換される。
ここで、図11および図12を参照して、XML形式に変換された文書について具体的に説明する。図11および図12は、上記した図9および図10に示す文書がXML形式のファイルに変換された例を示す。
図11および図12に示す例では、「機能要件」要素の内容(つまり、<機能要件>から</機能要件>までの内容)が図9に示す「機能要件」が記述された文書に該当する。なお、「機能要件」要素は、「機能要件」が記述された文書に記述されている各項目を示す要素を含む。また、「機能要件」が記述された文書に記述されている各項目を示す要素の内容は、当該項目に記述されている文書の内容を示す。
同様に、図11および図12に示す例では、「非機能要件」要素の内容(<非機能要件>から</非機能要件>までの内容)が図10に示す「非機能要件」が記述された文書に該当する。なお、「非機能要件」要素は、「非機能要件」が記述された文書に記述されている各項目を示す要素を含む。また、「非機能要件」が記述された文書に記述されている各項目を示す要素の内容は、当該項目に記述されている文書の内容を示す。
再び図8に戻ると、メタモデル取得部322は、文書データリポジトリ22からメタモデル(のファイル)を取得する。
メタモデル更新部323は、文書取得321によって取得された文書(XML形式に変換された文書)およびメタモデル取得部322によって取得されたメタモデルに基づいて、メタモデル更新処理を実行する(ステップS3)。このメタモデル更新処理によれば、文書取得部321によって取得された文書に記述されている項目の中でメタモデルに定義されていない項目が抽出され、当該抽出された項目がクラスとしてメタモデルに追加(追記)されることにより、当該メタモデルが更新される。なお、メタモデル更新処理の詳細については後述する。
次に、メタデータ生成部324は、文書取得部321によって取得された文書に記述されている各項目の内容(文字列)を形態素解析する。具体的には、XML形式に変換された文書に記述された各項目を示す要素の内容に含まれる文字列が形態素解析される。メタデータ生成部324は、形態素解析結果に基づいて、文書取得部321によって取得された文書に含まれる単語を取得する。
メタデータ生成部324は、文書取得部321によって取得された文書および当該文書に含まれる単語に基づいて、当該文書のメタデータを生成する(ステップS4)。なお、メタデータ生成部324によって生成されるメタデータには、文書取得部321によって取得された文書に記述されている項目、当該項目間の関係、文書に含まれる単語および当該単語が当該文書において出現する数(出現数)が含まれる。
登録部325は、文書取得部321によって取得された文書およびメタデータ生成部324によって生成される当該文書のメタデータを、文書データリポジトリ22に登録(格納)する(ステップS5)。なお、登録部325は、メタデータを文書データリポジトリ22に登録する際、当該登録日(を示す情報)を当該メタデータに付加する。つまり、文書データリポジトリ22に登録される文書のメタデータには、当該文書(およびメタデータ)の登録日が含まれる。
ここで、図13は、文書データリポジトリ22に登録されたメタデータのデータ構造の一例を示す。なお、図13は、例えばdoc_00001によって識別される文書のメタデータである。
図13に示すメタデータによれば、当該メタデータの登録日は、「date」要素において示されている。また、メタデータに含まれる文書に記述された各項目は、「metamodel」要素内に含まれる各要素において示されている。また、メタデータに含まれるXML文書に含まれる単語および当該単語の出現数は、「words」要素に含まれる「word」要素が有する「name」属性および「num」属性の属性値として示されている。
図13に示すように、文書データリポジトリ22に登録されるメタデータは、XML形式で記述される。
次に、図14のフローチャートを参照して、上述したメタモデル更新処理(図8に示すステップS3の処理)の処理手順について説明する。このメタモデル更新処理によれば、文書登録部32に含まれる文書取得部321によって取得された文書に記述されている項目の中でメタモデルに定義されていない項目(クラス)がメタモデルに追加される。なお、このメタモデル更新処理は、文書登録部32に含まれるメタモデル更新部323によって実行される。
メタモデル更新処理においては、まず、文書取得部321によって取得された文書(XML形式に変換された文書)における第1階層の要素の各々について以下のステップS11〜S15の処理が実行される。
この場合、メタモデル更新部323は、文書取得部321によって取得された文書(XML形式に変換された文書)における第1階層の要素を1つ取得する(ステップS11)。ここで、文書取得部321によって取得された文書における第1階層の要素とは、当該文書におけるルート要素の1階層下位の要素を指す。図11および図12に示す文書を参照して具体的に説明すると、当該文書における第1階層の要素には、「機能要件」要素および「非機能要件」要素が該当する。以下、ステップS11において取得された要素を対象要素として説明する。
次に、メタモデル更新部323は、文書データリポジトリ22に格納されているメタモデルのファイルから、対象要素(ステップS11において取得された第1階層の要素)に対応する要素(以下、対応要素と表記)を取得する(ステップS12)。ここで、対応要素とは、ステップS11において取得された要素の階層と同じ階層のメタモデルのファイルにおける要素を指す。メタモデル更新部323は、対応要素の「name」属性の属性値を取得する。
図4に示すメタモデルのファイルを参照して具体的に説明すると、対象要素が第1階層の要素である場合、対応要素は、メタモデルにおける第1階層の要素である例えば「class(クラス)」要素である。この場合、メタモデル更新部323は、対応要素である「class」要素の「name」属性の属性値「機能要件」を取得する。以下、メタモデルの対応要素の「name」属性の属性値を単に対応要素の属性値と称する。
メタモデル更新部323は、上記したように取得された対象要素(の要素名)および対応要素の属性値が一致するか否かを判定する(ステップS13)。
対象要素の要素名および対応要素の属性値が一致しないと判定された場合(ステップS13のNO)、メタモデル更新部323は、他の対応要素があるか否かを文書データリポジトリ22に格納されているメタモデル(のファイル)を参照して判定する(ステップS14)。つまり、メタモデル更新部323は、ステップS12において取得された対応要素以外に対応要素が存在するか否かを判定する。
他のメタモデルの対応要素があると判定された場合(ステップS14のYES)、上記したステップS12に戻って処理が繰り返される。
一方、他のメタモデルの対応要素がないと判定された場合(ステップS14のNO)、メタモデル更新部323は、対象要素をクラスとして、文書データリポジトリ22に格納されているメタモデルのファイルに追加(追記)する(ステップS15)。具体的には、メタモデル更新部323は、対象要素の要素名を属性値とする「name」属性を有する要素(ここでは、「class」要素)をメタモデルのファイルに追加する。これにより、文書データリポジトリ22に格納されているメタモデル(のファイル)が更新される。ここで、文書取得部321によって取得された文書において、対象要素より下位の階層に要素が存在する場合には、当該対象要素および当該対象要素より下位の階層の要素の全てがメタモデルのファイルに追加される。
ステップS15の処理が実行されると、文書取得部321によって取得された文書における全ての第1階層の要素について上記したステップS11〜S15の処理が実行されたか否かが判定される(ステップS16)。
全ての第1階層の要素について処理が実行されていないと判定された場合、上記したステップS11に戻って処理が繰り返される。
一方、全ての第1階層の要素について処理が実行されたと判定された場合、当該第1階層の要素についてのメタモデル更新処理は終了される。
ここでは、文書取得部321によって取得された文書(XML形式に変換された文書)における第1階層の要素についてのメタモデル更新処理について説明したが、当該文書における第2階層の要素についても同様にメタモデル更新処理が実行される。
なお、第2階層の要素のうちメタモデル更新処理の対象となる要素は、上記したステップS13において対応要素と一致すると判定された第1階層の要素の下位の要素である。つまり、ステップS13において対応要素と一致しないと判定された第1階層の要素の下位の要素についてはステップS15において既にメタモデルに追加されているため、メタモデル更新処理は実行されない。
この場合、上記したメタモデル更新処理における第1階層の要素を第2階層の要素として処理が実行される。なお、第3階層以降の要素についても同様である。
このようにメタモデル更新処理が実行されることによって、文書取得部321によって取得された文書における各階層の要素の各々について、文書データリポジトリ22に格納されているメタモデルにクラスとして定義されているか否かが判定される。これにより、メタモデルにクラスとして定義されていない要素(および当該要素の下位の階層にある要素)については、当該メタモデルに追加される。
ここで、図15は、メタモデル更新処理後のメタモデルのファイルのデータ構造の一例を示す。ここでは、図4に示すメタモデルのファイルが更新されたものとして説明する。
図15に示すメタモデルのファイルにおいては、図4に示すメタモデルのファイルと比較して、「name」属性の属性値が「詳細説明」である「subsubclass」要素が追加されている。
これによれば、文書取得部321によって取得された文書における「詳細説明」要素(つまり、当該文書に記述されている「詳細説明」の項目)がクラスとしてメタモデル中に定義されておらず、当該「詳細説明」要素がメタモデルに追加されたことが示されている。
次に、図16のフローチャートを参照して、本実施形態に係る文書管理装置30において実行される項目提示処理の処理手順について説明する。ここでは、文書データリポジトリ22には、上記したように複数の文書、当該文書毎のメタデータおよび当該複数の文書の各々に記述された項目および当該項目間の関係が定義された1つのメタモデルが格納されているものとする。なお、文書データリポジトリ22に格納されている文書、メタデータおよびメタモデルは、上記したようにXML形式のファイルである。
まず、入力部31は、ユーザによって指定された検索キーワードを入力する(ステップS21)。
次に、文書検索部33に含まれる検索条件取得部331は、入力部31によって入力された検索キーワードを取得する。
文書検索部33に含まれる検索結果取得部332は、検索条件取得部331によって取得された検索キーワードを用いて、当該検索キーワードに合致する文書を文書データリポジトリ22から検索する(ステップS22)。これにより、検索結果取得部332は、検索キーワードに合致する文書を含む検索結果を取得する。
検索結果取得部332は、取得された検索結果を、出力部35を介して出力する(ステップS23)。これにより、検索結果(に含まれる文書)は、ユーザに対して提示される。
ここで、ユーザは、提示された検索結果の中から、当該ユーザにとって所望の文書を選択することができる。具体的には、ユーザは、例えば当該ユーザが作成しようとする文書と似ている文書を選択することができる。
文書管理装置30においては、ユーザによって文書が選択されたか否かが判定される(ステップS24)。
ユーザによって文書が選択されていないと判定された場合(ステップS24のNO)、ステップS21に戻って処理が繰り返される。
一方、ユーザによって文書が選択されたと判定された場合(ステップS24のYES)、項目取得部34に含まれる選択文書取得部341は、当該ユーザによって選択された文書(以下、選択文書と表記)を例えば文書データリポジトリ22から取得する(ステップS25)。
次に、項目取得部34に含まれるメタデータ取得部342は、文書データリポジトリ22に格納されている全ての文書のメタデータを取得する(ステップS26)。
項目取得部34に含まれる類似文書取得部343は、メタデータ取得部342によって取得されたメタデータに基づいて、選択文書に類似する文書(以下、類似文書と表記)を文書データリポジトリ22に格納されている文書の中から取得(算出)する(ステップS27)。
この場合、類似文書取得部343は、選択文書と文書データリポジトリ22に格納されている文書の各々との類似度を算出する。類似文書取得部343は、算出された類似度が予め定められた値(閾値)以上の文書を、類似文書(選択文書に類似する文書)として取得する。
ここで、類似文書取得部343による類似度の算出処理について説明する。ここでは、類似文書取得部343は、第1および第2の類似度を算出するものとする。以下の説明では、選択文書との類似度が算出される文書を対象文書とする。
まず、類似文書取得部343によって算出される第1の類似度について説明する。第1の類似度は、選択文書のメタデータに含まれる各項目(当該選択文書に記述された項目および当該項目間の関係)がクラスとして定義されたメタモデル(以下、選択文書のメタモデルと表記)および対象文書のメタデータに含まれる各項目(当該対象文書に記述された項目および当該項目間の関係)がクラスとして定義されたメタモデル(以下、対象文書のメタモデルと表記)を用いて算出される。
ここで、図17を参照して、文書(選択文書および対象文書)のメタモデルについて具体的に説明する。この文書のメタモデルは、当該文書のメタデータに基づいて生成される。また、文書のメタモデルは、文書データリポジトリ22に格納されている文書毎に生成される。
図17に示す例では、文書のメタモデルには、当該文書のメタデータの「metamodel」要素および当該「metamodel」要素内に含まれる各要素(によって示される項目)がクラスとして含まれる。
具体的には、文書のメタモデルには、当該文書のメタデータの「class」要素(「metamodel」要素の1階層下位の要素)、「subclass」要素(「class」要素の1階層下位の要素)および「subsubclass」要素(「subclass」要素の1階層下位の要素)がクラスとして含まれる。
第1の類似度の算出においては、選択文書のメタモデルを木構造とした場合における第1階層以下の要素(クラス)からなる部分木単位での対象文書との比較が行われる。図17に示す例においては、破線100aおよび100bで囲まれた部分が対象文書との比較の対象となる部分木である。
ここで、選択文書のメタモデルをMs、対象文書のメタモデルをMoとする。MsとMoとの類似度(つまり、第1の類似度)をsim_metamodel(Ms,Mo)とすると、sim_metamodel(Ms,Mo)は以下の式(1)で表される。
式(1)のMsiは、Msの各部分木を表す。また、class(Msi)は、Msの部分木(つまり、Msi)に含まれるクラス数を表す。また、match(Mo)は、Msiに含まれるクラスと一致するMoに含まれるクラス数を表す。
次に、類似文書取得部343によって算出される第2の類似度について説明する。第2の類似度は、選択文書および対象文書のメタデータに含まれる単語(当該文書に含まれる単語)および当該単語の出現数を用いて算出される。
ここでは、選択文書および対象文書に含まれる単語のtf/idf値が算出される。ここで、文書dにおける単語tの出現数(頻度)をtf(t,d)とする。なお、単語tは、文書dのメタデータに含まれる「word」要素において定義されている。また、tf(t,d)は、文書dのメタデータに含まれる「word」要素の「num」属性の属性値である。
文書データリポジトリ22に格納されている文書の数をN、単語tが1回以上出現する文書の数をdf(t)とすると、idf(t)は以下の式(2)で表される。
また、単語tの文書dにおける重みw(t,d)は以下の式(3)で表される。
更に、選択文書をDsとし、当該選択文書Dsに含まれる各単語のtf/idf値をw1、w2、…、wpとすると、選択文書Dsのベクトルは以下の式(4)で表される。
また、対象文書をDoとし、当該対象文書Doに含まれる各単語のtf/idf値をw1、w2、…、wpとすると、対象文書Doのベクトルは以下の式(5)で表される。
なお、対象文書Doのベクトルには、選択文書Dsのベクトルに含まれるtf/idf値に対応する各単語のtf/idf値が含まれる。つまり、対象文書Doに選択文書Dsに含まれる単語が含まれていない場合、対象文書Doに含まれる当該単語のtf/idf値は0となる。
選択文書Dsおよび対象文書Doに含まれる単語および当該単語の出現数を用いた類似度(つまり、第2の類似度)をsim_words(Ds,Do)とすると、sim_words(Ds,Do)は以下の式(6)で表される。
上記したように第1および第2の類似度が算出された場合、類似文書取得部343は、選択文書と対象文書との類似度を算出する。選択文書Dsと対象文書Doとの類似度をsim(Ds,Do)とすると、sim(Ds,Do)は以下の式(7)で表される。
類似文書取得部343は、式(7)によって算出された選択文書Dsおよび対象文書Doとの類似度が閾値以上である場合、当該対象文書Doを選択文書Dsに類似する文書、つまり、類似文書として取得する。
以下、選択文書Dsと対象文書Doとの類似度(つまり、sim(Ds,Do))の算出処理について具体的に説明する。ここでは、図18に示すメタデータが選択文書Dsのメタデータであるものとする。また、図19に示すメタデータが対象文書Doのメタデータであるものとする。
まず、選択文書Dsおよび対象文書Doのメタモデルを用いて算出される第1の類似度について具体的に説明する。ここでは、選択文書DsのメタモデルをMs、対象文書DoのメタモデルをMoとする。
ここで、図18に示す選択文書Dsのメタデータによれば、選択文書DsのメタモデルMsは、「id」属性の属性値が「meta_001」である「class」要素をルート要素とする部分木(以下、部分木Ms1と表記)と「id」属性の属性値が「meta_002」である「class」要素をルート要素とする部分木(以下、部分木Ms2と表記)とを含む。
部分木Ms1には、選択文書Dsのメタデータに含まれる「id」属性の属性値が「meta_001」である「class」要素、当該「class」要素の下位にある「subclass」要素および「subsubclass」要素(によって示される項目)がクラスとして含まれる。具体的には、図18に示す選択文書Dsのメタデータによれば、部分木Ms1には、「id」属性の属性値が「meta_001」である「class」要素、「id」属性の属性値が「meta_001_001」である「subclass」要素、「id」属性の属性値が「meta_001_0001_0001」である「subsubclass」要素、「id」属性の属性値が「meta_001_0001_0002」である「subsubclass」要素、「id」属性の属性値が「meta_001_0001_0003」である「subsubclass」要素および「id」属性の属性値が「meta_001_0001_0007」である「subsubclass」要素が含まれる。したがって、部分木Ms1に含まれるクラス(要素)数を表すclass(Ms1)は6となる。
また、図19に示す対象文書Doのメタデータによれば、対象文書DoのメタモデルMoには、「id」属性の属性値が「meta_001」である「class」要素、「id」属性の属性値が「meta_001_0001」である「subclass」要素、「id」属性の属性値が「meta_001_0001_0001」である「subsubclass」要素、「id」属性の属性値が「meta_001_0001_0002」である「subsubclass」要素、「id」属性の属性値が「meta_001_0001_0004」である「subsubclass」要素、「id」属性の属性値が「meta_001_0001_0009」である「subsubclass」要素、「id」属性の属性値が「meta_002」である「class」要素、「id」属性の属性値が「meta_002_0001」である「subclass」要素、「id」属性の属性値が「meta_002_0001_0001」である「subsubclass」要素、「id」属性の属性値が「meta_002_0001_0002」である「subsubclass」要素および「id」属性の属性値が「meta_002_0001_0005」である「subsubclass」要素(によって示される項目)がクラスとして含まれる。
この場合、対象文書DoのメタモデルMoに含まれるクラスと一致する部分木Ms1に含まれるクラス(項目)は、「id」属性の属性値が「meta_001」である「class」要素、「id」属性の属性値が「meta_001_0001」である「subclass」要素、「id」属性の属性値が「meta_001_0001_0001」である「subsubclass」要素および「id」属性の属性値が「meta_001_0001_0002」である「subsubclass」要素である。したがって、対象文書DoのメタモデルMoに含まれるクラスと一致する部分木Ms1に含まれるクラス数を表すmatch(Mo)は4となる。
一方、部分木Ms2には、選択文書Dsのメタデータに含まれる「id」属性の属性値が「meta_002」である「class」要素、当該「class」要素の下位にある「subclass」要素および「subsubclass」要素がクラスとして含まれる。具体的には、図18に示す選択文書Dsのメタデータによれば、部分木Ms2には、「id」属性の属性値が「meta_002」である「class」要素、「id」属性の属性値が「meta_002_0001」である「subclass」要素、「id」属性の属性値が「meta_002_0001_0001」である「subsubclass」要素、「id」属性の属性値が「meta_002_0001_0002」である「subsubclass」要素および「id」属性の属性値が「meta_002_0001_0003」である「subsubclass」要素が含まれる。したがって、部分木Ms2に含まれるクラス数を表すclass(Ms2)は5となる。
この場合、上記した対象文書DoのメタモデルMoに含まれるクラスと一致する部分木Ms2に含まれるクラス(項目)は、「id」属性の属性値が「meta_002」である「class」要素、「id」属性の属性値が「meta_002_0001」である「subclass」要素、「id」属性の属性値が「meta_002_0001_0001」である「subsubclass」要素および「id」属性の属性値が「meta_002_0001_0002」である「subsubclass」要素である。したがって、対象文書DoのメタモデルMoに含まれるクラスと一致する部分木Ms2に含まれるクラス数を表すmatch(Mo)は4となる。
以上の値を用いると、選択文書DsのメタモデルMsと対象文書DoのメタモデルMoとの類似度(第1の類似度)sim_metamodel(Ms,Mo)は、4/6+4/5=1.3と算出される。
次に、選択文書Dsおよび対象文書Doのメタデータに含まれる単語および当該単語の出現数を用いて算出される第2の類似度について具体的に説明する。ここでは、文書データリポジトリ22に格納されている文書の数Nを10とする。
図18に示す選択文書Dsのメタデータによれば、選択文書Dsには、単語「顧客」、「情報」、「管理」および「検索」が含まれている。なお、選択文書Dsに含まれる単語「顧客」の数(つまり、出現数)は10である。選択文書Dsに含まれる単語「情報」の数は20である。選択文書Dsに含まれる単語「管理」の数は5である。また、選択文書Dsに含まれる単語「検索」の数は5である。
この選択文書Dsに含まれる単語は、当該選択文書Dsのメタデータの「word」要素が有する「name」属性の属性値から得ることができる。また、選択文書Dsに含まれる単語の出現数は、当該選択文書Dsのメタデータの「word」要素が有する「num」属性の属性値から得ることができる。
ここで、文書データリポジトリ22に格納されている文書の中で、選択文書Dsに含まれる単語「顧客」が1回以上出現する文書の数(つまり、df(顧客))は3であるものとする。この場合、選択文書Dsに含まれる単語「顧客」のtf/idf値(つまり、w(顧客、選択文書Ds))は、10*log(10/3)=5.2となる。
また、文書データリポジトリ22に格納されている文書の中で、選択文書Dsに含まれる単語「情報」が1回以上出現する文書の数(つまり、df(情報))は5であるものとする。この場合、選択文書Dsに含まれる単語「情報」のtf/idf値(つまり、w(情報、選択文書Ds))は、20*log(10/5)=6となる。
また、文書データリポジトリ22に格納されている文書の中で、選択文書Dsに含まれる単語「管理」が1回以上出現する文書の数(つまり、df(管理))は1であるものとする。この場合、選択文書Dsに含まれる単語「管理」のtf/idf値(つまり、w(管理、選択文書Ds))は、5*log(10/1)=5となる。
また、文書データリポジトリ22に格納されている文書の中で、選択文書Dsに含まれる単語「検索」が1回以上出現する文書の数(つまり、df(検索))は3であるものとする。この場合、選択文書Dsに含まれる単語「検索」のtf/idf値(つまり、w(検索、選択文書Ds))は、5*log(10/3)=2.6となる。
これによれば、選択文書Dsのベクトルは、以下の式(8)のようになる。
一方、図19に示す対象文書Doのメタデータによれば、対象文書Doには、単語「従業員」、「情報」、「検索」および「登録」が含まれている。なお、対象文書Doに含まれる単語「従業員」の数(つまり、出現数)は10である。対象文書Doに含まれる単語「情報」の数は19である。対象文書Doに含まれる単語「検索」の数は6である。また、対象文書Doに含まれる単語「登録」の数は6である。
この対象文書Doに含まれる単語は、当該対象文書Doのメタデータの「word」要素が有する「name」属性の属性値から得ることができる。また、対象文書Doに含まれる単語の出現数は、当該対象文書Doのメタデータの「word」要素が有する「num」属性の属性値から得ることができる。
ここで、文書データリポジトリ22に格納されている文書の中で、対象文書Doに含まれる単語「従業員」が1回以上出現する文書の数(つまり、df(従業員))は1であるものとする。この場合、対象文書Doに含まれる単語「従業員」のtf/idf値(つまり、w(従業員、対象文書Do))は、10*log(10/1)=10となる。
また、文書データリポジトリ22に格納されている文書の中で、対象文書Doに含まれる単語「情報」が1回以上出現する文書の数(つまり、df(情報))は5であるものとする。この場合、対象文書Doに含まれる単語「情報」のtf/idf値(つまり、w(情報、対象文書Do))は、19*log(10/5)=5.7となる。
また、文書データリポジトリ22に格納されている文書の中で、対象文書Doに含まれる単語「検索」が1回以上出現する文書の数(つまり、df(検索))は3であるものとする。この場合、対象文書Doに含まれる単語「検索」のtf/idf値(つまり、w(検索、対象文書Do))は、6*log(10/3)=3.1となる。
また、文書データリポジトリ22に格納されている文書の中で、対象文書Doに含まれる単語「登録」が1回以上出現する文書の数(つまり、df(登録))は3であるものとする。この場合、対象文書Doに含まれる単語「登録」のtf/idf値(つまり、w(登録、対象文書Do))は、6*log(10/3)=3.1となる。
ここで、上述したように対象文書Doのベクトルには、選択文書Dsのベクトルに含まれるtf/idf値に対応する各単語のtf/idf値が含まれる。これによれば、対象文書Doのベクトルは、以下の式(9)のようになる。
上記した式(8)に示す選択文書Dsのベクトルおよび式(9)に示す対象文書Doのベクトルを用いると、選択文書Dsおよび対象文書Doに含まれる単語および当該単語の出現数を用いた類似度(第2の類似度)sim_words(Ds,Do)は、以下の式(10)のように算出することができる。
上記したsim_metamodel(Ms,Mo)およびsim_words(Ds,Do)を用いると、選択文書Dsと対象文書Doとの類似度sim(Ds,Do)は、sim_metamodel(Ms,Mo)+sim_words(Ds,Do)=1.3+0.67=1.97となる。類似文書を取得するための閾値が例えば1.5であるものとすると、対象文書Doは、選択文書Dsに類似する文書として取得される。
ここでは、選択文書Dsと対象文書Doとの類似度について説明したが、選択文書Dsとの類似度は、文書データリポジトリ22に格納されている文書の全てについて算出される。
再び図16に戻ると、項目取得部34に含まれる項目算出部344は、選択文書と類似文書とを用いて、文書データリポジトリ22に格納されているメタモデルに定義されている項目(クラス)毎に重複度を算出する(ステップS28)。重複度は、メタモデルにおいて定義されている項目が出現する選択文書および類似文書の数(つまり、重複している数)を示す。
ここで、項目算出部344によって算出される重複度について説明する。ここでは、選択文書が文書Aであり、類似文書が文書B〜Eであるものとする。
この場合、項目算出部344は、メタモデルに定義されている項目(クラス)が文書A〜Eの各々に含まれているか否かを判定する。具体的には、項目算出部344は、メタモデルに定義されている「class」要素、「subclass」要素および「subsubclass」要素等が文書A〜Eのメタデータに含まれているか否かを判定する。この判定処理は、メタモデルに定義されている「class」要素、「subclass」要素および「subsubclass」要素が有する「id」属性の属性値と文書A〜Eのメタデータに含まれる「class」要素、「suclass」要素および「subsubclass」要素が有する「id」属性の属性値とを比較することによって行われる。
なお、メタモデルに定義されているある項目が文書A〜Eの全てに含まれている場合には、当該項目の重複度は5となる。一方、メタモデルに定義されているある項目が文書A〜Eの全てに含まれていない場合には、当該項目の重複度は0となる。
次に、項目算出部344は、算出された重複度が予め定められた値(閾値)以上である項目(クラス)を特定する。
項目算出部344は、特定された項目を出力部35を介して出力する(ステップS29)。これにより、項目算出部344によって特定された項目(つまり、重複度が閾値以上である項目)が文書に記述すべき項目としてユーザに提示される。
ここで、図20は、ユーザに提示される項目の一例を示す。図20に示す例では、ユーザに提示される項目には、「id」属性の属性値が「meta_001」である「class」要素、「id」属性の属性値が「meta_001_0001」である「subclass」要素、「id」属性の属性値が「meta_001_0001_0001」である「subsubclass」要素、「id」属性の属性値が「meta_001_0001_0002」である「subsubclass」要素、「id」属性の属性値が「meta_002」である「class」要素、「id」属性の属性値が「meta_002_0001」である「subclass」要素、「id」属性の属性値が「meta_002_0001_0001」である「subsubclass」要素および「id」属性の属性値が「meta_002_0001_0002」である「subsubclass」要素が含まれている。
なお、文書に記述すべき項目は図20に示すような形式でユーザに提示されてもよいが、よりユーザが容易に記述すべき項目を認識できるように、文書データリポジトリ22に格納されているメタモデルを参照することによって例えば当該項目の項目名(メタモデルに含まれる「class」要素、「subclass」要素および「subsubclass」要素が有する「name」属性の属性値)が提示される方が好ましい。
上記したように本実施形態においては、ユーザによって指定された検索条件(検索キーワード)に基づいて当該検索条件に合致する文書を文書データリポジトリ22から検索し、当該検索された文書と類似する文書を文書データリポジトリ22から取得し、当該検索された文書および取得された文書において共通して記述されている項目を特定し、当該特定された項目をユーザに提示する構成により、ユーザが新規に文書を作成する際に、当該文書に記述すべき項目を提示することが可能となる。つまり、本実施形態においては、ユーザがこれから作成しようとする文書に記述すべき項目を提示することにより、当該ユーザが新規に文書を作成する際の工数削減を図り、また、当該文書に必要な項目を落とすことを防止することが可能となる。
また、本実施形態においては、ユーザによって作成された文書を入力し、当該入力された文書を文書データリポジトリ22に登録し、当該入力された文書に記述されている項目のうち文書データリポジトリ22に格納されているメタモデルに定義されていない項目を当該メタモデルに追加することによって当該メタモデルを更新する構成により、ユーザによって文書が作成された際に、当該文書に記述されている項目に応じて自動的にメタモデルを更新することが可能となる。
なお、本実施形態においては、第1および第2の類似度に基づいて選択文書に類似する文書(類似文書)を取得するものとして説明したが、例えば第1および第2の類似度のいずれか一方のみに基づいて類似文書が取得される構成であっても構わない。また、上述した第1および第2の類似度の算出方法は一例であり、他の方法で算出された類似度に基づいて類似文書が取得されるような構成であってもよい。
また、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。