一つの実施形態では、検索装置に、検索条件入力部、部品検索部及び部品候補表示部を備えることで、コンテンツ部品検索装置が構築される。検索条件入力部は、テキストを表すテキスト情報要素と入力コントロールの種類を表す入力コントロール種類情報要素との組合せを含んだ検索条件の入力を受け付ける。部品検索部が、記憶部(例えば記憶資源)内の各コンテンツ部品情報グループと入力された検索条件との類似度を、該検索条件に含まれているテキスト情報要素及び入力コントロール種類情報要素とコンテンツ部品情報グループに含まれているテキスト情報要素及び入力コントロール種類情報要素とに基づいて算出する。部品候補表示部が、検索条件についてのコンテンツ部品候補に関する情報を算出された類似度に基づいて表示画面に表示する。
ここで、コンテンツ部品とは、テキスト又は入力コントロールを最小単位とし、テキストと入力コントロールとの一つの組合せ、その組合せを複数個含んだグループ、或いは画面コンテンツそれ自体であっても良い。具体的には、例えば、階層構造を有する画面コンテンツについて、階層レベルが最高の場合には、コンテンツ部品は、画面コンテンツそれ自体であり、階層レベルが最低の場合には、コンテンツ部品は、一のテキスト、一の入力コントロール又はそれらの一の組合せであり、階層レベルが最高でも最低でも無い場合には、コンテンツ部品は、テキスト及び入力コントロールの組合せを複数個有したグループであって良い。
また、「表示画面」は、一又は複数の表示装置がそれぞれ有するハードウェアとしての一又は複数の表示画面であっても良いし、一又は複数のハードウェアとしての表示画面に表示されるソフトウェアとしての表示画面であっても良い。
また、「コンテンツ部品候補に関する情報」としては、コンテンツ部品の識別子、そのコンテンツ部品に対応した類似度、或いは、そのコンテンツ部品に対応したコンテンツ部品情報グループの或る情報パッケージに含まれているテキスト情報要素など、種々の情報を採用することができる。
また、「コンテンツ部品候補に関する情報を算出された類似度に基づいて表示する」とは、例えば、類似度の降順に表示することであっても良いし、所定の閾値以上の類似度であるコンテンツ部品候補に関する情報を表示することであっても良い。
一つの実施形態では、類似度は、検索条件に含まれている一以上のテキスト情報要素とコンテンツ部品情報グループに含まれている一以上のテキスト情報要素との第一の類似度と、検索条件に含まれている一以上の入力コントロール種類情報要素とコンテンツ部品情報グループに含まれている一以上の入力コントロール種類情報要素との第二の類似度とに基づいて算出された値(例えば所定の計算式に第一の類似度及び第二の類似度を代入することで算出された値)とすることができる。
一つの実施形態では、類似度は、検索条件に含まれているテキスト情報要素及び入力コントロール種類情報要素の一以上のセットと、コンテンツ部品情報グループに含まれているテキスト情報要素及び入力コントロール種類情報要素の一以上のセットとの類似度であるとすることができる。
一つの実施形態では、コンテンツ部品検索装置が、更に、コンテンツ解析部、グルーピング部、パッケージグループ生成部、テキスト付与部及び部品登録部を備えることができる。コンテンツ解析部は、画面コンテンツ(例えば入力フォーム)を表すコンテンツファイルを解析することで、テキスト情報要素、テキスト配置位置、入力コントロール種類情報要素、及び入力コントロール配置位置を特定することができる。具体的には、例えば、コンテンツ解析部は、コンテンツファイルを解析することで、テキスト情報要素及びテキスト配置位置情報要素の組合せであるテキスト/位置組合せと、入力コントロール種類情報要素及び入力コントロール配置位置情報要素の組合せである入力コントロール/位置組合せとを特定し、特定されたテキスト/位置組合せをテキスト管理情報に格納し、特定された入力コントロール/位置組合せを入力コントロール管理情報に格納することができる。グルーピング部は、コンテンツファイルの解析の結果を基に(例えば入力コントロール管理情報を参照することにより)、それぞれの入力コントロール配置位置関係を特定し、特定された位置関係が所定の第一の条件を満たす場合に、前記条件を満たす複数の入力コントロールをグループとして抽出することができる。パッケージグループ生成部は、抽出したグループを構成する複数の入力コントロールに対応した複数の入力コントロール種類情報要素を含んだ複数の情報パッケージを有するパッケージグループを生成することができる。テキスト付与部は、例えば、コンテンツファイルの解析の結果を基に(例えばテキスト管理情報から)、情報パッケージにおける入力コントロール種類情報要素に対応するテキスト情報要素を取得し、取得したテキスト情報要素をその情報パッケージに含めることができる(例えば、取得したテキスト情報要素をラベルとして情報パッケージに含めることができる)。部品登録部は、テキスト情報要素がそれぞれ含められた複数の情報パッケージを有するパッケージグループであるコンテンツ情報グループを、解析されたコンテンツファイルに関連付けて記憶部に格納することができる。
一つの実施形態では、所定の第一の条件は、入力コントロール同士の配置位置間の距離が所定の値以下であるとすることができる。
一つの実施形態では、情報パッケージに含められるテキスト情報要素は、その情報パッケージ内の入力コントロール種類情報要素に対応した入力コントロールとの間の配置位置関係が所定の第二の条件を満たすテキストを表す情報要素であるとすることができる。
一つの実施形態では、所定の第二の条件は、テキストの配置位置と入力コントロールの配置位置との間の距離が所定の値以下であるとすることができる。
一つの実施形態では、コンテンツ情報グループは、最低階層レベルの末端に対応する情報パッケージをリーフとし、最低階層レベル以外の階層レベルの先頭に対応する情報パッケージをブランチとする情報パッケージツリーであるとすることができる。コンテンツ部品情報グループは、コンテンツ情報グループそれ自体又はそれのサブセットであるとすることができる。
一つの実施形態では、コンテンツ部品候補に関する情報には、コンテンツ部品情報グループの最上位にある情報パッケージ内のテキスト情報要素が含まれてもよい。
一つの実施形態では、コンテンツ部品候補は、算出された類似度が所定の閾値以上であるコンテンツ部品情報グループに対応したコンテンツ部品であるとすることができる。
一つの実施形態では、部品候補表示部が、更に、コンテンツ部品候補の数を表示することができる。
一つの実施形態では、部品候補表示部は、入力された検索条件が複数個存在し、それらの検索条件が階層関係(例えば親子関係)にある場合、上位(例えば親)の検索条件についてのコンテンツ部品候補に関する情報を優先的に表示することができる。
一つの実施形態では、部品登録部が、同一又は類似のコンテンツ部品情報グループの集まりである部品グループを作成することができる。部品検索部が、入力された検索条件と各部品グループとの類似度を算出することができる。部品候補表示部が、コンテンツ部品候補に関する情報として部品グループに関する情報を表示することができる。
ここで、検索条件と部品グループとの類似度としては、その部品グループに属する一のコンテンツ部品情報グループと検索条件との類似度であっても良いし、その部品グループに属する複数のコンテンツ部品情報グループと検索条件との複数の類似度を用いた所定の計算により算出された値(例えば複数の類似度の平均)であっても良い。
また、コンテンツ部品情報グループと類似する部品グループとしては、類似度が所定の閾値を越えている部品グループのうちの一の(例えば最も類似度が高い)部品グループであるとすることができる。
一つの実施形態では、部品登録部が、更に、一の部品グループについて複数のスタイルグループを作成することができる。スタイルグループは、同一又は類似のスタイルを有する複数のコンテンツ部品情報グループの集まりであるとすることができる。部品候補表示部が、部品グループに関する情報に加えスタイルグループに関する情報を表示することができる。
ここで、テキストのスタイルは、例えば、テキストのフォントサイズ、フォントタイプ(例えば、明朝、ゴシックなど)、フォントスタイル(例えば、通常、太字、斜体など)、フォントの色、或いはテキストの長さなど一以上のテキストスタイル属性により定義することができる。
また、スタイルが類似しているとは、スタイルに関する複数の要素(例えば、テキスト、テキストの並び順、テキストのフォントサイズ、フォントタイプなど)が所定の割合(例えば80%)以上に一致していることとすることができる。
一つの実施形態では、部品登録部が、新規のコンテンツファイルを記憶部に登録する際に、該新規のコンテンツファイルについてのコンテンツ部品情報グループを、そのコンテンツ部品情報グループと同一又は類似の部品グループに分類することができる。
一つの実施形態では、部品登録部が、登録性能よりも検索性能を重視することが入力された場合に、新規のコンテンツファイルを前記記憶部に登録する際に、該新規のコンテンツファイルについてのコンテンツ部品情報グループを、そのコンテンツ部品情報グループと同一又は類似の部品グループに分類することができる。
一つの実施形態では、部品検索部が、どの部品グループにも分類されていないコンテンツ部品情報グループと前記検索条件との類似度を算出することができる。部品登録部が、どの部品グループにも分類されていないコンテンツ部品情報グループに対応したコンテンツ部品がコンテンツ部品候補とされた場合に、そのコンテンツ部品情報グループをそれに該当する部品グループに分類することができる。
一つの実施形態では、部品登録部が、検索性能よりも登録性能を重視することが入力された場合に、どの部品グループにも分類されていないコンテンツ部品情報グループに対応したコンテンツ部品がコンテンツ部品候補とされた場合に、そのコンテンツ部品情報グループをそれに該当する部品グループに分類することができる。
一つの実施形態では、複数のコンテンツ部品情報グループが二以上の部品グループに分類されており、部品検索部が、前記入力された検索条件と各部品グループとの類似度を算出し、部品候補表示部が、コンテンツ部品候補に関する情報として、部品グループに関する情報を表示することができる。
一つの実施形態では、一の部品グループについて、複数のスタイルグループがあり、スタイルグループは、同一又は類似のスタイルを有する複数のコンテンツ部品情報グループの集まりであり、部品候補表示部が、部品グループに関する情報に加えスタイルグループに関する情報を表示することができる。
一つの実施形態では、第一の部品グループに属する既存部品サブツリー内の情報パッケージが、第一の部品グループとは別の第二の部品グループにも属していれば、その第二の部品グループが、第一の部品グループに含まれる部品グループであり、部品候補表示部が、第一の部品グループに含まれる第二の部品グループに関する情報を表示することができる。
一つの実施形態では、部品候補表示部が、スタイルグループに対応したコンテンツ部品情報グループの数を表示することができる。
一つの実施形態では、検索条件は、階層構造を持つ画面コンテンツの定義情報又はそれのサブセットであるとすることができる。
上述した複数の実施形態のうちの二以上の実施形態を組み合わせることができる。また、上述した各部(例えば、検索条件入力部、部品検索部、部品候補表示部、コンテンツ解析部、グルーピング部、パッケージグループ生成部、テキスト付与部及び部品登録部)は、各手段と言い換えてもよい。各部は、ハードウェア(例えば回路)、コンピュータプログラム、或いはそれらの組み合わせ(例えば、一部をコンピュータプログラムで実行し一部をハードウェア回路で実行すること)によって実現することもできる。各コンピュータプログラムは、コンピュータマシンに備えられる記憶資源(例えばメモリ)から読み込むことができる。その記憶資源には、CD−ROMやDVD(Digital Versatile Disk)等の記録媒体を介してインストールすることもできるし、インターネットやLAN等の通信ネットワークを介してダウンロードすることもできる。
以下、図面を参照して、本発明の幾つかの実施形態を詳細に説明する。
<第一の実施形態>。
画面コンテンツとして、Webコンテンツを例に採ることができる。Webコンテンツとしては、HTML(HyperText Markup Language)コンテンツ、独自形式のWebコンテンツ、あるいは文書作成アプリケーションで作成された電子化文書など、画像や動画を除くテキストを主体としたデジタルコンテンツとすることができる。第一の実施形態では、Webコンテンツとして、HTML形式の入力フォームを例に採ることができる。以下の説明では、入力フォームなどのようなWebコンテンツを、単に「コンテンツ」と呼ぶことにする。
第一の実施形態において行われる処理を、部品登録ステップと部品検索ステップとに大別することができる。
部品登録ステップでは、既存のコンテンツ中に含まれる要素(テキストや入力コントロール)の位置情報などのレイアウト情報を用いて要素間をグループ化するグルーピングステップと、各グループおよび要素に対してラベルを付与するラベル付与ステップと、それらグルーピングステップとラベル付与ステップの結果からコンテンツの構成を表すツリー(以下、コンテンツ構成ツリーと呼ぶ)を生成するコンテンツ構成ツリー生成ステップと、コンテンツ構成ツリーをコンテンツと関連付けてレポジトリに登録するコンテンツ登録ステップとが行われる。
部品検索ステップでは、階層構造を持つ新規コンテンツの定義情報のサブツリー(以下、クエリツリーと呼ぶ)と、レポジトリに蓄積されている各コンテンツ構成ツリーのサブツリー(以下、既存部品サブツリーと呼ぶ)との類似度を算出する部品検索ステップと、クエリツリーに対して類似度の高い(例えば所定の閾値以上の)既存部品サブツリーを、クエリツリーに対する部品候補として出力する部品候補出力ステップとが行われる。
以下、より詳細に説明する。
図1は、本発明の第一の実施形態に係るコンテンツ部品検索システムの全体構成例を示す。
コンテンツ部品検索システムは、一又は複数の計算機で構成することができる。コンテンツ部品検索システムには、例えば、CPU100、磁気ディスク装置101、主メモリ102、フロッピーディスクドライブ(以下、FDD103と呼ぶ)、及びこれらを結ぶバス104が備えられる。コンテンツ部品検索システムは、他の機器とネットワーク105を介して接続することもできる。
磁気ディスク装置101は、二次記憶装置の一つであり、コンテンツのソースを含むコンテンツファイル160とコンテンツ構成ツリー161が格納される。FDD103を介してフロッピーディスク106に格納されている情報が、磁気ディスク装置101あるいは主メモリ102へ読み込まれる。
主メモリ102には、システム制御処理部110、部品登録制御処理部111、部品検索制御処理部112、コンテンツ取得処理部121、コンテンツ内情報取得処理部122、コンテンツ構成ツリー生成処理部123、グルーピング処理部130、ラベル付与処理部131、部品登録処理部126、入出力定義情報取得処理部140、入出力定義情報解析処理部141、部品検索処理部142、部品候補出力処理部143が格納され、ワークエリア150が確保される。なお、本実施形態におけるシステム制御、部品登録制御、部品検索制御、コンテンツ取得、コンテンツ内情報取得、コンテンツ構成ツリー生成、グルーピング、ラベル付与、部品登録、入出力定義情報取得、入出力定義情報解析、部品検索および部品候補出力の各処理は、システム制御処理部110、部品登録制御処理部111、部品検索制御処理部112、コンテンツ取得処理部121、コンテンツ内情報取得処理部122、コンテンツ構成ツリー生成処理部123、グルーピング処理部130、ラベル付与処理部131、部品登録処理部126、入出力定義情報取得処理部140、入出力定義情報解析処理部141、部品検索処理部142および部品候補出力処理部143をCPU100で実行することにより実現するが、各処理を行なうプログラムとして集積回路化するなどしてハードウェアで実現することもできる。以下説明を簡略化するため、各種プログラムをCPU100が実行することで実現される各プログラムを各処理の主体として説明する。なお各処理部をハードウェアで実現した場合にはその各処理部が主体となって各処理を行なう。
システム制御処理部110は、部品登録制御処理部111および検索制御処理部121の制御を行なう。
部品登録制御処理部111は、コンテンツ取得処理部121、コンテンツ内情報取得処理部122、コンテンツ構成ツリー生成処理部123、グルーピング処理部130、ラベル付与処理部131および部品登録処理部126の制御を行なう。
コンテンツ構成ツリー生成処理部123は、グルーピング処理部130およびラベル付与処理部131の制御を行なう。
部品検索制御処理部112は、入出力定義情報取得処理部140、入出力定義情報解析処理部141、部品検索処理部142および部品候補出力処理部143の制御を行なう。
本実施形態では、これらの処理部を主メモリ102に格納するものとしたが、磁気ディスク装置101、フロッピーディスク106、MO、CD−ROM、DVD等の記憶媒体(図1には示していない)に格納し、駆動装置を介して主メモリ102に読み込み、CPU100によって実行することも可能である。
また、本実施形態では、コンテンツファイル160およびコンテンツ構成ツリー161は、磁気ディスク装置101に格納されるものとしたが、フロッピーディスク(登録商標)106、MO(Magneto-Optical disk)、CD−ROM、DVD等の記憶媒体(図1には示していない)に格納されるものとしてもよいし、あるいはネットワーク105を介して、他のシステムに接続された記憶装置(図1には示していない)に格納されるものとしてもよい。また、さらにはネットワーク105に直接接続された記憶媒体(図1には示していない)に格納されるものとしても構わない。
以下、本実施形態に係るコンテンツ部品検索システムで行われる処理の概要を説明する。
システム制御処理部110は、キーボード101(他種の入力装置でも良い)から入力されたコマンドを解析する。この結果が、登録実行のコマンドであると解析された場合には、システム制御処理部110が、部品登録制御処理部111を起動し、部品登録制御処理部111が、コンテンツファイル160およびコンテンツ構成ツリー161を磁気ディスク装置101へ登録する。また、検索実行のコマンドであると解析された場合には、システム制御処理部110が、部品検索制御処理部112を起動し、部品検索制御処理部112が、指定されたクエリツリー171(図11参照)に基づいて部品検索の処理を行なう。
以下、部品検索制御処理部112が行う処理の流れを説明する。
まず、部品検索制御処理部112は、入出力定義情報取得処理部140を起動し、入出力定義情報取得処理部140が、新規作成コンテンツの定義情報(以下、「入出力定義情報」と呼ぶ)170(図11参照)を取得し、取得された入出力定義情報170をワークエリア150に格納する。
次に、部品検索制御処理部112は、入出力定義情報解析処理部141を起動し、入出力定義情報解析処理部141が、入出力定義情報170から、ユーザ(例えば開発者)によって指定されたクエリツリー171を取得し、取得されたクエリツリー171を、ワークエリア150に格納する。
次に、部品検索制御処理部112は、部品検索処理部142を起動し、部品検索処理部142が、各コンテンツファイル160に含まれるすべての部品(以下、既存部品サブツリー174と呼ぶ)に対し、クエリツリー171との類似度を算出し、算出結果を評価結果183(図12参照)としてワークエリア150に格納する。
最後に、部品検索制御処理部112は、部品候補出力処理部143を起動し、部品候補出力処理部143が、クエリツリー171に対して類似度の高い既存部品サブツリー174を、クエリツリー171に対する部品候補として出力する。
入出力定義情報取得処理部140は、ユーザによって入力された入出力定義情報170をワークエリア150に格納する。入出力定義情報170は、例えば、図11に示すように、XML(Extensible Markup Language)形式で表すことができる。新規作成コンテンツの入力項目の構造情報をXMLの構造で表現し、入力項目のラベル(ラベルとは実質的に入力項目名を意味する)を、XMLのタグ名で表現し、入力コントロールの種類を、各エレメントのtype属性で表現することができる。なお、本実施形態では、入出力定義情報170のデータ形式を、XML形式としているが、入力項目の構造情報、入力項目のラベルおよび入力コントロールの種類を定義できるものならどのようなデータ形式であってもよい。また、入出力定義情報170は、ユーザから入力されるものとしたが、FDD103等のドライブを介してフロッピーディスク106、MO、CD−ROM、DVD等の記憶媒体(図1には示していない)に格納されているもの、あるいはネットワーク105を介して他のシステムに接続された記憶装置(図1には示していない)に格納されているもの、さらにはネットワーク105に直接接続された記憶媒体(図1には示していない)に格納されているものから入力されてもよい。
入出力定義情報解析処理部141は、入出力定義情報取得処理部140によって取得された入出力定義情報170から、ユーザによって指定された構造情報(以下、「ユーザ指定構造情報)と呼ぶ)172(図11参照)に対応するクエリツリー171を取得し、取得されたクエリツリー171をワークエリア150に格納する。なお、クエリツリー171は、入出力定義情報170のサブセットである。
部品検索処理部142が行う処理の流れを、図10及び図12を参照して説明する。
まず、部品検索処理部142は、入出力定義情報解析処理部141で取得されたすべてのクエリツリー171に対して、ステップ2010〜2011を繰り返す(ステップ2000)。
次に、部品検索処理部142は、クエリツリー171から、部品内情報177A(ラベル情報175Aおよび入力コントロール情報176Aを含んだ情報)を取得し、取得された部品内情報177Aを、ワークエリア150に格納する(ステップ2010)。
次に、部品検索処理部142は、磁気ディスク装置101に登録されているすべてのコンテンツファイル160に対して、ステップ2012を繰り返す(ステップ2011)。
次に、部品検索処理部142は、該コンテンツファイル160に対応するコンテンツ構成ツリー161に含まれるすべての既存部品サブツリー174に対して、ステップ2113〜2015を繰り返す(ステップ2012)。
次に、部品検索処理部142は、該既存部品サブツリー174の部品内情報177B(ラベル情報175Bと入力コントロール情報176Bを含んだ情報)を取得し、取得された部品内情報177Bを、ワークエリア150に格納する(ステップ2013)。
次に、部品検索処理部142は、クエリツリー171の部品内情報177Aと既存部品サブツリー174の部品内情報177Bから、類似度算出のためのベクトル空間とベクトルを表現したテーブル形式のベクトル情報182(ラベル情報178、入力コントロール情報179、クエリツリーベクトル情報180および既存部品サブツリーベクトル情報181を含んだ情報)を生成し、生成されたベクトル情報182を、ワークエリア150に格納する(ステップ2014)。
最後に、部品検索処理部142は、ベクトル情報182を用いて、該クエリツリー171に対する該既存部品サブツリー174の類似度を(式1)により算出し(ステップ2015)、その類似度算出結果を、該クエリツリー171に対する各既存部品サブツリー174の評価結果183(コンテンツID情報1831、ノード番号情報1832および類似度情報1833を含んだ情報)を、ワークエリア150に格納する。類似度は、ベクトル情報182からベクトル空間法のよる余弦尺度により算出される。
なお、ステップ2015では類似度の算出式におけるベクトル空間を、類似度を算出するクエリツリーと既存部品サブツリーのみが含まれる空間(次元)で計算するものとしたが、磁気ディスク装置101に含まれるすべてのコンテンツ160およびクエリツリーに関する共通空間(次元)で計算するものとしてもよい。
まず、部品候補出力処理部143は、部品検索処理部142によって算出された評価結果183から、各クエリツリー171に対して、類似度の降順で既存部品サブツリー174に対応する部品の候補に関する情報の一覧(以下、「部品候補一覧」と呼ぶ)を部品候補一覧表示画面187(図13参照)に表示する。なお、部品候補一覧には、各部品候補について、部品ID(例えば、“コンテンツID_コンテンツ構成ツリーのノード番号”で表現される部品の識別子)、類似度、および既存部品サブツリーのルートノードに格納されているラベルが含まれる。
次に、部品候補出力処理部143は、部品候補一覧よりユーザによって選択された部品候補に対して、コンテンツファイル160から、選択された部品に対応するコードを取得し、取得したコードを、ワークエリア150に格納する。
最後に、部品候補出力処理部143は、上記で取得されたコードを用いて、ユーザによって選択された部品を、プレビュー画面184(図13参照)に表示する。
以上が、部品候補出力処理部143の処理手順である。
なお、部品候補一覧よりユーザによって部品候補が選択されることにより該部品候補がプレビュー画面184に表示されるものとしたが、部品候補出力処理部143は、ユーザ操作を介さずにクエリツリー171に対して類似度が最も高い既存部品サブツリーに対応する部品をプレビュー画面184に表示してもよい。
また、ユーザによって指定されたクエリツリーが複数個存在する場合は、クエリツリーの情報(以下、「クエリツリー情報」と呼ぶ)として、複数のクエリツリー間の関係をクエリツリー情報画面186(図13参照)に表示してもよい。
また、部品候補一覧において、或る閾値以上の類似度を持たない既存部品サブツリーについては、部品候補として含まれなくてよい。この際、クエリツリー情報表示画面186に、各クエリツリーに対して検索された部品数(既存部品サブツリーの数)が表示されてもよい。
また、ユーザによって指定された複数のクエリツリー間に階層関係(例えば親子関係)が存在する場合(入出力定義情報170に含まれるすべてのサブツリーをクエリツリー171とした場合も含む)、上位(例えば親)のクエリツリーの部品候補から優先的に部品候補一覧表示画面187に表示されてもよい。優先的に表示するとは、例えば、上位のクエリツリーの部品候補の類似度がそれよりも下位のクエリツリーの部品候補の類似度より低くても、上位のクエリツリーの部品候補が、下位のクエリツリーの部品候補よりも、降順で上位に位置することを言う。
また、現在表示されている部品候補一覧に対するクエリツリー171の内容が判断しやすいように、部品候補出力処理部143が、入出力定義情報表示画面185に表示される入出力定義情報において、クエリツリー171の部分が強調表示(例えば網掛け表示)してもよい。
以上が、部品検索制御処理部112が行う処理についての説明である。
次に、部品登録制御処理部111が行う処理について説明する。
まず、部品登録制御処理部111は、コンテンツ取得処理部121を起動し、コンテンツ取得処理部121が、FDD104を介してフロッピーディスク108に格納されているコンテンツファイル160を読み込む。
次に、部品登録制御処理部111は、コンテンツ内情報取得処理部122を起動し、コンテンツ内情報取得処理部122が、コンテンツファイル160のソース中に含まれるテキストや入力コントロール(例えばテキストボックスやラジオボタン等)と、これらのコンテンツ内要素の位置情報やサイズ(例えば、テキストの場合はフォントサイズ、入力コントロールの場合は領域サイズ)を取得する。
次に、部品登録制御処理部111は、コンテンツ構成ツリー生成処理部123を起動し、コンテンツ構成ツリー生成処理部123が、コンテンツ内情報取得処理部122によって抽出されたコンテンツ内の要素情報を用いて、要素間のグルーピング、および要素やグループに対するラベルを付与することで、コンテンツ構成ツリー161を生成する。
最後に、部品登録制御処理部111は、部品登録処理部126を起動し、部品登録処理部126が、コンテンツファイル160とコンテンツファイル160に対応するコンテンツ構成ツリー161を磁気ディスク装置101へ登録する。
コンテンツ取得処理部121は、FDD104を介してフロッピーディスク108に格納されているコンテンツファイル160を読み込み、ワークエリア150に格納する。なお、コンテンツファイル160はフロッピーディスク108に格納されているものとしたが、MO、CD−ROM、DVD等の記憶媒体(図1には示していない)に格納されるものとしてもよいし、ネットワーク105を介して、他のシステムに接続された記憶媒体(図1には示していない)に格納されるものとしてもよい。
コンテンツ内情報取得処理部122は、まず、コンテンツ取得処理部121によって取得されたコンテンツファイル160の中から、磁気ディスク装置101や主メモリ102に格納されたルールに基づいて、テキスト情報要素や入力コントロール種類情報要素(以下、これらを「コンテンツ内情報」と呼ぶことがある)を抽出する。抽出された全てのテキスト情報要素が記録されたテキストリスト情報162と、抽出された全ての入力コントロール種類情報要素が記録された入力コントロールリスト情報163とが、ワークエリア150に格納される。ここでいう「テキスト」とは、コンテンツファイルが例えばHTMLファイルの場合、画面上に表示されないタグなどではなく、実際に画面上で表示される文字列のことをいう。また、ここでいう「入力コントロール」とは、コンテンツファイルが例えばHTMLファイルの場合、INPUTタグ、SELECTタグおよびTEXTAREAタグで表現されたものなど、ユーザからの指定を受け付ける要素をいう。
なお、テキストリスト情報162や入力コントロールリスト情報163は、ワークエリア150に格納されるが、磁気ディスク装置101に格納されてもよい。コンテンツファイルの中のどのようなものをテキストとして抽出するかを示す情報や、コンテンツファイルの中のどのようなものを入力コントロールとして抽出するかを示す情報は、主メモリ102または磁気ディスク装置101に格納されている。
次に、コンテンツ内情報取得処理部122は、抽出されたコンテンツ内要素の配置位置情報をコンテンツファイルの中から抽出する。ここで、配置位置情報は、コンテンツ内要素がコンテンツ内での位置と占める範囲の定義を表す情報である。具体的には、例えば、テキストの配置位置情報には、基準位置情報とフォントサイズ情報とが含まれ、入力コントロールの配置位置情報には、基準位置情報と領域サイズ情報とが含まれる。テキストの基準位置情報やフォントサイズ情報は、テキストリスト情報162に記録され、入力コントロールの基準位置情報や領域サイズ情報は、入力コントロールリスト情報163に記録される。なお、テキストリスト情報162は、図5に例示するように、例えばテーブルであり、コンテンツファイルから検出されたテキスト毎に、テキスト番号700(例えば通し番号)、テキスト情報要素710、基準位置情報720(例えばコンテンツの所定位置を原点とした場合の基準位置の座標)、およびフォントサイズ730が記録される。また、入力コントロールリスト情報163は、図6に例示するように、例えばテーブルであり、コンテンツファイルから検出された入力コントロール毎に、入力コントロール番号800(例えば通し番号)、入力コントロール種類情報要素810(例えばタグ付きの情報)、基準位置情報820、および領域サイズ830(例えば、基準位置を中心とした幅及び高さのサイズ)が記録される。
コンテンツ構成ツリー生成処理部123は、まず、グルーピング処理部130を起動し、グルーピング処理部130が、コンテンツ内情報取得処理部122によって抽出された入力コントロールリスト情報163を用いて、コンテンツファイル160に含まれる入力コントロールのグルーピングを行ない、そのグルーピング結果(例えば図8参照)をワークエリア150に格納する。
次に、コンテンツ構成ツリー生成処理部123は、ラベル付与処理部131を起動し、ラベル付与処理部131が、グルーピング処理部130によって生成されたグルーピング結果に対して、テキストリスト情報162や入力コントロールリスト情報163に格納されている配置位置情報を用いて、各入力コントロールの名前やグルーピングによって生成されたグループの名前(以下、まとめてラベルと呼ぶ)を付与することで、最終的なコンテンツ構成ツリー161を生成し、その生成されたコンテンツ構成ツリー161をワークエリア150に格納する。
なお、コンテンツ構成ツリー161は、各ノードに、ノード属性情報として、ノード番号、ラベル、基準点、親ノード番号(直近の上位のノード番号)およびコントロール種類を持つ。コンテンツ構成ツリーの概念図と各ノードの属性情報の格納例を図9に示す。図9には、コンテンツ構成ツリーの上位部分が示されており、下位部分は図示が省略されている。コンテンツ構成ツリー161は、ワークエリア150に格納されるが、磁気ディスク装置101に格納されてもよい。
部品登録処理部126は、まず、各コンテンツファイル160にコンテンツIDを付与する。コンテンツIDは、主メモリ102または磁気ディスク装置101に格納されているルールに基づいて生成され付与される。
次に、部品登録処理部126は、同コンテンツにおけるコンテンツファイル160とコンテンツ構成ツリー161を関連付けた上で、それぞれを磁気ディスク装置101へ登録する。
図2は、グルーピング処理部130が行う処理の流れの一例を示す。
グルーピング処理部130は、まず、コンテンツ内情報取得処理部122によって抽出された入力コントロールリスト情報163に含まれるN個の入力コントロールに対して、ステップ301〜ステップ302を、n=1〜(N−1)まで繰り返し実行する(ステップ300)。
次に、グルーピング処理部130は、磁気ディスク装置101又は主メモリ102に格納された値Mに基づいて、M個の階層レベルに対して、ステップ302を、m=2〜(M−1)まで繰り返し実行する(ステップ301)。なお、階層レベルmとは、階層レベル1がコンテンツ全体を表し、mが大きいほど詳細な内容に関するグルーピングを行ない、最下位階層レベル(つまりm=M−1)では、1グループ1入力コントロールとなる。
次に、グルーピング処理部130は、階層レベルmにおけるグルーピング条件を、階層レベルmに関し、n番目とn+1番目の入力コントロール間が同じグループに属するか否かの判定を行ない、判定結果をワークエリア150に格納する(ステップ302)。なお、階層レベルmにおいて、n番目とn+1番目の入力コントロール間が同じグループと判定され、さらにn+1番目とn+2番目の入力コントロール間が同じグループと判定された場合、n番目〜n+2番目の入力コントロールは階層レベルmにおいて同じグループとみなす。すなわち、同じグループと判定された入力コントロールペアが複数個存在し、入力コントロールペアにおける一方の入力コントロールが別の入力コントロールペアにおける他方の入力コントロールとなっている場合、複数の入力コントロールペアにおける入力コントロールが同一のグループとみなされる。なお、n番目の入力コントロールとは、コンテンツ中でn番目に入力される入力コントロール(例えば、nは図6の入力コントロール番号800)を表す。
最後に、グルーピング処理部130は、ステップ302によって階層レベル別にグルーピングされた結果をツリー構造で管理するために、コンテンツ構成ツリー161における各ノードに属性情報として親ノード番号を格納する(ステップ303)。なお、コンテンツ構成ツリー161は、各ノードの属性情報として、ノード番号、ラベル、コンテンツ内で該当する領域(入力コントロールが占める範囲)の基準点、親ノードのノード番号、および、入力コントロール種類(コントロール種類)を有するが、グルーピング処理部130の処理完了時点では、ラベルおよび基準点は格納されない。
ここで、ステップ302で行なわれるn番目とn+1番目の入力コントロール間のグルーピング方法について詳しく説明する。
n番目とn+1番目の入力コントロール間のグルーピング方法については、n番目とn+1番目の入力コントロール間の配置位置関係によって、以下の8つのケースで判定ルール(以下、グルーピング条件と呼ぶ)を決めて判定を行なう。なお、以下の説明で出てくる基準点は、入力コントロールの左上を表す。また、最右端、最左端、最上端および最下端は、基準点と領域サイズ830から定まる、入力コントロールの最も端の点を表す。
まず、n番目の入力コントロールの基準点に対してn+1番目の入力コントロールの基準点が真右に位置する場合(以下、第1のケースと呼ぶ)、n番目の入力コントロールの最右端とn+1番目の入力コントロールの最左端との水平距離が、第1のケースにおける階層レベルmでのグルーピング条件を満たすとき、n番目とn+1番目の入力コントロールは、階層レベルmで同じグループに属するとみなされる。
n番目の入力コントロールの基準点に対してn+1番目の入力コントロールの基準点が真下に位置する場合(以下、第2のケースと呼ぶ)、n番目の入力コントロールの最下端とn+1番目の入力コントロールの最上端との垂直距離が、第2のケースにおける階層レベルmでのグルーピング条件を満たすとき、n番目とn+1番目の入力コントロールは、階層レベルmで同じグループに属するとみなされ。
n番目の入力コントロールの基準点に対してn+1番目の入力コントロールの基準点が右下に位置する場合(以下、第3のケースと呼ぶ)、n番目の入力コントロールの最右端とn+1番目の入力コントロールの最左端との水平距離が第3のケースにおける階層レベルmでのグルーピング条件を満たし、かつn番目の入力コントロールの最下端とn+1番目の入力コントロールの最上端との垂直距離が第3のケースにおける階層レベルmでのグルーピング条件を満たすとき、n番目とn+1番目の入力コントロールは、階層レベルmで同じグループに属するとみなされる。
n番目の入力コントロールの基準点に対してn+1番目の入力コントロールの基準点が右上に位置する場合(以下、第4のケースと呼ぶ)、n番目の入力コントロールの最右端とn+1番目の入力コントロールの最左端との水平距離が第4のケースにおける階層レベルmでのグルーピング条件を満たすとき、かつn番目の入力コントロールの最上端とn+1番目の入力コントロールの最下端との垂直距離が第4のケースにおける階層レベルmでのグルーピング条件を満たすとき、n番目とn+1番目の入力コントロールは、階層レベルmで同じグループに属するとみなされる。
n番目の入力コントロールの基準点に対してn+1番目の入力コントロールの基準点が左下に位置する場合(以下、第5のケースと呼ぶ)、n番目の入力コントロールの最下端とn+1番目の入力コントロールの最上端との垂直距離が第5のケースにおける階層レベルmでのグルーピング条件を満たすとき、n番目とn+1番目の入力コントロールは、階層レベルmで同じグループに属するとみなされる。
その他、n番目の入力コントロールの基準点に対してn+1番目の入力コントロールの基準点が真左に位置する場合(以下、第6のケースと呼ぶ)、n番目の入力コントロールの基準点に対してn+1番目の入力コントロールの基準点が真上に位置する場合(以下、第7のケースと呼ぶ)、n番目の入力コントロールの基準点に対してn+1番目の入力コントロールの基準点が左上に位置する場合(以下、第8のケースと呼ぶ)、n番目とn+1番目の入力コントロールは、階層レベル1を除くすべての階層レベルにおいて同じグループに属さないとみなされる。
図7は、グルーピング条件930を格納するグルーピング条件リスト情報900の例を示す図である。グルーピング条件情報900は、例えばテーブルであり、各ケースについて、ケース番号910、n番目の入力コントロールに対するn+1番目の入力コントロールの配置位置関係を表す情報(以下、「位置関係情報」と呼ぶ)920、およびグルーピング条件930を有する。たとえば、第1のケースの場合、ケース番号910には“1”、位置関係情報920には“真右”、グルーピング条件930には“n番目の最右端とn+1番目の最左端との距離が100px未満”、といった情報を格納する。
グルーピング条件920は、階層レベル毎に設定される。このため、例えば、グルーピング条件リスト情報900が、一の階層レベルにつき一つである場合、各階層レベルに対応した各グルーピング条件リスト情報900が用意される。グルーピング条件リスト情報900は、例えば、主メモリ102または磁気ディスク装置101に格納されている。
なお、図7で示したグループピング条件930は、例えば、一般的な入力フォーム(コンテンツ)に基づいて、n番目とn+1番目の入力コントロール間の相対距離に関する閾値が設定されたものとすることができる。しかし、それに限らず、例えば、コンテンツファイル160に対して実際にn番目とn+1番目の入力コントロール間の相対距離を抽出した上で、その平均値に基づいて動的にグルーピング条件930中の相対距離の閾値が設定されてもよい。具体的には、たとえば、第2のケースの場合、グルーピング条件として、“n番目の最下端とn+1番目の最上端との垂直距離が、[垂直方向に関して、隣接する入力コントロール間の平均間隔]以内”としてもよい。このような動的な閾値設定(条件設定)により、最適なグルーピング条件の設定が容易になることや、コンテンツ間の作成基準における開発者の個人差を吸収することができる。
また、ステップ302では、入力コントロールの位置情報を用いてグルーピングを行なったが、コンテンツ内情報取得処理部122によって生成されたテキストリスト情報162のフォントサイズ情報を用いて、ある閾値以上のフォントサイズを持つテキストの位置を階層レベルmにおけるn番目とn+1番目の入力コントロール間をグループの境界をみなすといった方法をとってもよい。
また、コンテンツ内情報取得処理部122によって生成されたテキストリスト情報162のH1などの文書構造情報を用いて、階層レベルmにおけるn番目とn+1番目の入力コントロール間をグループの境界をみなすといった方法をとってもよい。これらフォントサイズや文書構造情報と、位置情報を併用してグルーピング処理を行なうことで、グルーピングの精度が高くなる。
図3は、ラベル付与処理部131が行う処理の流れの一例を示す。
ラベル付与処理部131は、まず、コンテンツ構成ツリー161のM個の階層レベルに対し、ステップ410〜ステップ411および415をm=M〜1まで繰り返す(ステップ400)。
次に、ラベル付与処理部131は、階層レベルが最下位階層レベルであるかどうか(m=Mであるかどうか)を判定する(ステップ410)。
ステップ410の判定の結果、階層レベルが最下位階層レベル(m=M)である場合、ラベル付与処理部131は、コンテンツ全体に含まれるN個の入力コントロールに対し、ステップ412〜ステップ414をn=1〜Nまで繰り返し実行する(ステップ411)。
次に、ラベル付与処理部131は、n番目の入力コントロールの基準点を領域の左上として設定し、ワークエリア150に格納する(ステップ412)。
次に、ラベル付与処理部131は、n番目の入力コントロールの基準点に対し、テキストリスト情報162に格納されているコンテンツ中のテキストの中から上方向と左方向(距離が同じ場合は左より上優先)で最も近い距離にあるテキストを、n番目の入力コントロールのラベルとして抽出し、そのラベルをコンテンツ構成ツリー161における階層レベルMのn番目のノードの属性情報として、ワークエリア150に格納する(ステップ413)。
次に、ラベル付与処理部131は、ラベルを含めたn番目の入力コントロールの基準点を、ラベル領域の左上とし、その基準点をコンテンツ構成ツリー161における階層レベルMのn番目のノードの属性情報として、ワークエリア150に格納する(ステップ414)。なお、ステップ413でラベルが抽出できなかった場合には、ラベル付与処理部131は、ステップ412で設定した入力コントロールの左上を基準点とする。
次に、ラベル付与処理部131は、ステップ410の判定の結果、階層レベルが最下位階層レベルでない場合、階層レベルmに含まれるN個のグループに対し、ステップ415〜ステップ418をn=1〜Nまで繰り返し実行する(ステップ415)。
次に、ラベル付与処理部131は、n番目のグループに含まれる要素(子ノード)の中で、最も左上(例えば、距離が同じ場合は左より上優先)の基準点をもつ要素の基準点をn番目のグループの基準点として、ワークエリア150に格納する(ステップ416)。
次に、ラベル付与処理部131は、ステップ416で設定されたn番目のグループの基準点に対し、テキストリスト情報162に格納されているコンテンツ中のテキストの中から上方向と左方向(距離が同じ場合は左より上優先)で最も近い距離にあるテキストであって、未だラベルとして抽出されていないテキストを、n番目のグループのラベルとして抽出し、そのラベルをコンテンツ構成ツリー161における該ノードの属性情報として、ワークエリア150に格納する(ステップ417)。
なお、未だラベルとして抽出されていないテキストがn番目のグループではないグループに属してしまう場合や、未だラベルとして抽出されていないテキストが無い場合には、ラベル付与処理部131は、n番目のグループの基準点のノードのラベルを、n番目のグループのラベルとする。
次に、ラベル付与処理部131は、ラベルを含めたn番目のグループの基準位置を、ラベル領域の左上とし、その基準位置をコンテンツ構成ツリー161における該ノードの属性情報として、ワークエリア150に格納する(ステップ418)。
ラベル付与処理部131は、グルーピング結果を表すノードツリーのリーフからルートにかけてボトムアップ式に順次にラベルを付与していくことができる。
なお、ステップ413では、n番目の入力コントロールのラベルをテキストリスト情報162に格納されているコンテンツ中のテキストの中から、入力コントロールの基準点に対して上方向と左方向(距離が同じ場合は左より上優先)で最も近い距離にあるテキストとしたが、ラジオボタンやチェックボックスについては入力コントロールの基準点に対して右方向と下方向(距離が同じ場合は下より右優先)で最も近い距離にあるテキストとしてもよい。
また、隣接する入力コントロール間が間隔なく配置されているグループについては、n行×m列のテーブル構造とみなし、1行目の各列に付与されたラベルを、n行目以降の各列にも同じラベル付与する。例えば、1行目の1列目の入力コントロールに付与されたラベルは、2行目の1列目の入力コントロールに付与されるラベルとしても使われる。
また、本実施形態におけるグループのラベル抽出方法は、グループ(ノード)の基準位置に対し、テキストリスト情報162に格納されているコンテンツ中のテキストの中から上方向と左方向で最も近い距離にあるテキストをラベルとして抽出するものとしたが、距離に関する閾値を抽出条件として設定してもよい。これにより、誤ったラベル付与が少なくなる。
また、本実施形態におけるグループのラベル抽出方法は、グループ(ノード)の基準点に対し、テキストリスト情報162に格納されているコンテンツ中のテキストの中から上方向と左方向で最も近い距離にあるテキストをラベルとして抽出するものとしたが、グループの中に含まれる要素(子ノード)のラベルの中から代表値として抽出してもよいし、他のコンテンツによるトレーニングデータによって、トレーニングデータ中でラベル付与したいグループと類似するグループに付与されたラベルを用いてもよい。これにより、コンテンツ中にラベルに該当するテキストが存在しない場合でも、各コンテンツ内要素やグループにラベルを付与することができる。
以上が、部品登録制御処理部111によって行われる処理の説明である。
以下、部品検索制御処理部112及び部品登録制御処理部111によって行われる処理について、更に詳細に説明する。まず、部品検索制御処理部112の具体的な処理を説明する。
図11は、入出力定義情報解析処理部141の具体的な処理を説明した図である。
入出力定義情報解析処理部141は、入出力定義情報取得処理部140によって取得された入出力定義情報170から、ユーザによって指定されたユーザ指定構造情報172に対応するサブツリーを抽出し、クエリツリー171を取得する。本図の例では、ユーザ指定構造情報172として“Applicant Information”が指定されており、入出力定義情報170から“Applicant Information”の部分のサブツリーがクエリツリー171として取得されている。
図12は、部品検索処理部142の具体的な処理を説明した図である。
部品検索処理部142は、磁気ディスク装置101に登録されているすべてのコンテンツファイル160に含まれるすべての既存部品サブツリー174に対して、1つのクエリツリー171との類似度を算出する。なお、既存部品サブツリー174は、コンテンツ構成ツリー161のサブセットであり、最小単位として、コンテンツ構成ツリー161のリーフであることがある。
図12の例では、“Applicant Information”の部分のクエリツリー171と、図4に示すコンテンツ500(コンテンツファイル160が示すコンテンツ)におけるコンテンツ構成ツリー161の既存部品サブツリー174(図9で示すコンテンツ構成ツリー1100のノード番号2のサブツリー)の類似度算出処理の詳細な具体例を示している。
まず、部品検索処理部142は、クエリツリー171から部品内情報177A(ラベル情報175Aと入力コントロール情報174Aを含んだ情報)を取得し、同様に、既存部品サブツリー174から、部品内情報177B(ラベル情報175Bと入力コントロール情報174Bを含んだ情報)を取得する。本図の例では、クエリツリー171からは、7個のラベル情報要素(テキスト情報要素)および入力コントロール種類情報要素が取得され、既存部品サブツリー174からは、8個のラベル情報要素および入力コントロール種類情報要素が取得される。
次に、部品検索処理部142は、各部品内情報177から、類似度算出に必要なベクトル空間とベクトルを生成するために、ベクトル情報182として、ラベル情報178、入力コントロール情報179、クエリツリーベクトル180および既存部品サブツリーベクトル181を生成する。本図の例では、ベクトル空間を表す次元として、言い換えれば、ラベル情報178と入力コントロール情報179として、部品内情報177A及び177Bを用いて、(Name・text、Address・text、Telephone Number・text、Company Name・text、Year・select、Month・select、Day・select、First・text、Last・text、Email Address・text)が生成される(上記カッコ内では、ラベル情報要素・入力コントロール種類情報要素、となっている)。また、生成されたベクトル空間におけるクエリツリーベクトル180として(1、1、1、1、1、1、1、0、0、0)、既存部品サブツリーベクトル181として(0、1、1、0、1、1、1、1、1、1)が生成されている。各ベクトルの要素については、例えば、ラベル“Name”と入力コントロール種類“text”との組合せが存在する場合は“1”、その組合せが存在しない場合は“0”となる。
次に、部品検索処理部142は、生成されたベクトル情報182から、(式1)によりクエリツリー171に対する既存部品サブツリー174の類似度を算出し、コンテンツID情報1831、ノード番号情報1832及び類似度情報1833を含んだ評価結果183を生成し、ワークエリア150に格納する。
本図の例では、クエリツリー171に対する既存部品サブツリー174の類似度として“0.67”が算出され、該算出結果は、評価結果183のコンテンツID情報1831として“0001”、ノード番号情報1832として“2”、類似度情報1833として“0.67”が格納される。
図13は、部品候補出力処理部143の具体的な処理を説明した図である。
部品候補出力処理部143は、部品検索処理部143によって生成された類似度算出結果(評価結果183)から、部品候補一覧表示187を出力する。本図の例では、コンテンツID0001〜0003のコンテンツに含まれる部品に対して、類似度の降順でクエリツリー171に対する部品候補の一覧が部品候補一覧表示画面187に表示される。その一覧によれば、第1位の部品候補は、部品IDが“0001_2”、類似度が“0.67”、ラベルが“Applicant Information”の部品である。
また、本図の例では、部品のプレビューをするためのプレビューボタンが部品候補一覧表示画面187に各部品について表示される。ユーザが第1位の部品候補(部品ID:0001_2)のプレビューボタンを押下することで、部品候補出力処理部143は、第1位の部品候補に対応したコードを該部品候補を含んだコンテンツのコンテンツファイルから取得し、取得したコードに基づき、プレビュー画面184に、第1位の部品候補の部品イメージを表示する。
また、本図の例では、入出力定義情報表示画面185が表示され、入出力定義情報表示画面185で、現在出力されている部品候補一覧に対応する入出力定義情報170中のクエリツリー171部分が、網掛けで示されている。
また、本図の例では、複数のクエリツリー171として、“Applicant Information”、“Date of Birth”および“Service”が指定されており、それらのクエリツリー間の関係(例えば階層関係)が、クエリツリー情報表示画面186に表示される。クエリツリー情報表示画面186から、クエリツリー“Applicant Information”を親としクエリツリー“Date of Birth”を子とした親子関係があることがわかる。また、これら3つのクエリツリー171の中で、部品候補が存在しかつ最上位階層レベルであるクエリツリー“Applicant Information”に対する部品候補が、部品候補一覧表示187に優先的に表示される。
また、本図の例では、類似度の閾値が“0.50”で設定されており、部品候補一覧表示画面187には、類似度が0.50以上の4件の部品が部品候補として表示されている。すなわち、部品候補出力処理部143は、類似度の閾値が“0.50”未満の部品を部品候補として表示しない。なお、類似度の閾値に代えて又は加えて、類似度が高い部品から上位所定件数の部品のみが表示されても良い。
また、クエリツリー情報表示画面186に、各クエリツリー171に対する部品候補数が表示される。その画面186からは、クエリツリー“Applicant Information”に対しては4件の部品候補が存在することがわかる。また、クエリツリー“Service”に対しては、0件、すなわち部品候補がないことがわかる。
また、図13によれば、入出力定義情報表示画面185、プレビュー画面184、クエリツリー情報表示画面186及び部品候補一覧表示画面187の組合せにより一つの表示画面が構成されているが、それらの画面は互いに離れていても重なっても良い。
以上が、部品検索御処理部112の具体的な処理である。開発者は、部品候補一覧の中から所望の部品候補を選択し、その部品候補をそのまま或いは編集することで、新規のコンテンツを作成することができる。開発者は、その新規のコンテンツを表すコンテンツファイルを、磁気ディスク装置101に登録することができる。
次に、部品登録制御処理部111の具体的な処理を説明する。
コンテンツ取得処理部121とコンテンツ内情報取得処理部122の具体的な処理例を図4、図5および図6を用いて説明する。
図4は、コンテンツ500の一例として、クライアント端末からアクセスされたHTMLコンテンツのカンファレンス申し込みフォームの例を示す。
まず、コンテンツ内情報取得処理部122は、コンテンツ取得処理部121によって取得されたコンテンツ500のHTMLソース(コンテンツファイル160)から、テキスト情報要素およびそれらテキストの配置位置情報(例えば基準位置情報やフォントサイズ)を抽出し、テキスト番号700、テキスト情報710、基準位置情報720およびフォントサイズ730をテキストリスト情報162に記録する。テキストリスト情報162の具体例を図5に示す。図5の例では、テキストリスト情報162に、全部で13個のテキスト情報要素が記録されている(例えば、1番目のテキスト情報要素710として、“○○ Conference Form”が記録され、基準位置情報720として“X:177px Y:35px”が記録され、フォントサイズ730として“+4”が記録される)。
次に、コンテンツ内情報取得処理部122は、コンテンツ取得処理部121によって取得されたコンテンツ500のHTMLソースから、INPUTタグとSELECTタグ(入力コントロールの種類を表す情報要素)、およびそれら入力コントロールの配置位置情報(例えば基準位置情報及び領域サイズ)を抽出し、入力コントロール番号800、入力コントロール種類情報要素810、基準位置情報820および領域サイズ830を入力コントロールリスト情報163へ格納する。入力コントロールリスト情報163の具体例を図6に示す。図6の例では、入力コントロールリスト情報163に、全部で15個の入力コントロール種類情報要素が記録される(例えば、1番目の入力コントロール種類情報要素810として、“<INPUT type=”text”>”が記録され、基準位置情報820として“X:315px Y:161px”が記録され、領域サイズ830として“width:73px height:20px”が記録される)。
図4に示すコンテンツ500に対し、5つの階層レベルを持つコンテンツ構成ツリーを生成する場合のコンテンツ構成ツリー生成処理部123の具体的な処理の流れを、図5〜図9を用いて説明する。
グルーピング処理部130は、図6に示す入力コントロールリスト情報163を読み込み、各階層レベル(2〜M−1)に対して、入力順が隣り合う入力コントロール間が同じグループに属するか否かを、主メモリ102または磁気ディスク装置101に格納されたグルーピング条件リスト900に基づいて判定する。
図7は、階層レベル2におけるグルーピング条件リスト900の例である。図5および図6の例では、階層レベル2のグルーピング処理に関して、まず、図6に示す入力コントロールリスト情報163より、1番目の入力コントロールに対する2番目の入力コントロールの位置関係は“真右”であることから、図7に示すグルーピング条件リスト900における第1のケースが用いられる。
そして、入力コントロールリスト情報163に示されている基準位置情報と領域サイズより、1番目の入力コントロールの最右端と2番目の入力コントロールの最左端との水平距離が52pxであることから、1番目の入力コントロールと2番目の入力コントロールの配置位置関係は、グルーピング条件900における第1のケースの条件である“n番目の入力コントロールの最右端とn+1番目の入力コントロールの最左端との水平距離が100px未満”を満たす。この結果、1番目の入力コントロールと2番目の入力コントロールは階層レベル2において同じグループとみなされる。
次に、入力コントロールリスト情報163より、2番目の入力コントロールに対する3番目の入力コントロールの位置関係は“左下”であることから、グルーピング条件900における第5のケースが用いられる。そして、入力コントロールリスト情報163に示されている基準位置情報と領域サイズより、2番目の入力コントロールの最下端と3番目の入力コントロールの最上端との垂直距離が15pxであることから、2番目の入力コントロールと3番目の入力コントロールの配置位置関係は、グルーピング条件900における第5のケースの条件である“n番目の入力コントロールの最下端とn+1番目の入力コントロールの最上端との垂直距離が20px未満”を満たす。この結果、2番目の入力コントロールと3番目の入力コントロールは階層レベル2において同じグループとみなされる。
次に、入力コントロールリスト情報163により、9番目の入力コントロールに対する10番目の入力コントロールの位置関係は“左下”であることから、グルーピング条件900における第5のケースが用いられる。そして、入力コントロールリスト情報163に示されている基準点と領域サイズの情報より、9番目の入力コントロールの最下端と10番目の入力コントロールの最上端との垂直距離が108pxであることから、9番目の入力コントロールと10番目の入力コントロールの配置位置関係は、グルーピング条件900における第5のケースの条件である“n番目の入力コントロールの最下端とn+1番目の入力コントロールの最上端との垂直距離が20px未満”を満たさない。この結果、9番目の入力コントロールと10番目の入力コントロール間は、階層レベル2において異なるグループ、すなわちグループの境界とみなされる。
この結果、1番目から9番目までの入力コントロールが、階層レベル2における1つのグループとみなされ、10番目の入力コントロールが次のグループの先頭とされる。
このように、入力順が隣接するすべての入力コントロール間に対して、上記のように各階層レベルでグルーピング判定を行ない、グループを生成していく。そして、グルーピング結果は、ノード番号、ラベル、基準点、親ノード番号およびコントロール種類を各ノードの属性情報として持つ図8に示すようなツリー構造で管理され、グルーピング処理部130の処理が終了した時点におけるコンテンツ構成ツリー1000が生成される。
図8では、1番目から9番目までの入力コントロールをノード番号5〜9およびノード番号13〜17のノードとし、これを束ねるグループをブランチノードとしてノード番号2とする。また、ノード番号2〜4の3つのブランチノードはコンテンツ全体を表す階層レベル1のルートノード(ノード番号1)に束ねられる。コンテンツ構成ツリーのデータ構造は、例えば、リーフからルート方向へ順次1つ上位階層のノードのデータ格納領域へのポインタを指定してツリー構造を形成する。また、ルートからリーフ方向へ順次1つ下位階層のノードのデータ格納領域へのポインタを指定して、ツリー構造を形成することもできる。また、ルートからリーフ方向、リーフからルート方向の両方のポインタをノードが有することもできる。
なお、図8で示すようにコンテンツ構成ツリー1000の各ノードの属性情報であるラベルと基準点は、グルーピング処理部130の実行完了時点ではまだ格納されない。
また、本実施形態では、入力コントロールのみを対象としてグルーピングを行なっているが、入力コントロールだけでなく、一般的にWebコンテンツに対してはテキストや画像などをグルーピング処理の対象としてもよい。
また、本実施形態では、コンテンツ構成ツリー生成処理部123が、グルーピング処理部130を起動し、グルーピング処理部130が、グループの生成とコンテンツ構成ツリー1000の生成を行っているが、グルーピング処理部130はグループの生成だけ行い、コンテンツ構成ツリー生成処理部123が、コンテンツ構成ツリー1000の生成を行ってもよい。
ラベル付与処理部131は、階層レベルM(最下位階層レベル)から階層レベル1の順で、図8に示すコンテンツ構成ツリー1000の各ノードにおけるラベルの抽出および基準点の設定を行なう。
ラベル付与処理部131は、階層レベルが階層レベルM(最下位階層レベル)のリーフノードの場合、各入力コントロールの基準位置を領域の左上とした上で、テキストリスト情報162および入力コントロールリスト情報163を用いて、n番目の入力コントロールの基準点に対し、上方向あるいは左方向(距離が同じ場合は左より上優先)で、配置位置的に最も近いテキストをn番目の入力コントロールのラベルとして抽出し、ラベルを含めたn番目の入力コントロールの基準点を再設定する。
図5および図6の例では、入力コントロールリスト情報163より3番目の入力コントロールの基準点“X:285px Y:196px”に対し、テキスト情報162より6番目のテキストの基準点“X:100px Y:192px”が位置的に最も近いため、3番目の入力コントロールのラベルとして、6番目のテキスト“Address”が抽出され、抽出結果は、ラベル付与処理部131の処理実行後におけるコンテンツ構成ツリー1100(図9参照)のノード番号6のノードに属性情報として格納されている。さらに、ラベルを含めた3番目の入力コントロール(ノード番号6)の基準位置を、6番目のテキストの基準位置“X:100px Y:192px”として再設定され、コンテンツ構成ツリー1100のノード番号6のノードに属性情報として格納されている。
このように、コンテンツ500に含まれるすべての入力コントロールに対して、上述と同様の処理が行なわれることで、階層レベルM(最下位階層レベル)の各ノードのラベル名および基準位置が、コンテンツ構成ツリー1100の各ノードの属性情報として格納される。
なお、本具体例では、n番目の入力コントロールのラベルをテキストリスト情報162に格納されているコンテンツ中のテキストの中から、入力コントロールの基準点に対して上方向と左方向(距離が同じ場合は左より上優先)で最も近い距離にあるテキストとしたが、ラジオボタンやチェックボックスについては入力コントロールの基準点に対して右方向と下方向(距離が同じ場合は下より右優先)で最も近い距離にあるテキストとされてもよい。
次に、ラベル付与処理部131は、階層レベルが階層レベルM(最下位層レベル)以外のブランチノードの場合、テキストリスト情報162および入力コントロールリスト情報163を用いて、ノード番号nの基準点に対し、上方向あるいは左方向(距離が同じ場合は左より上優先)で位置的に最も近いテキストであって、未だラベルとして抽出されていないテキストをノード番号nのラベルとして抽出し、ラベルを含めたノード番号nの基準点を再設定する。
図5および図6の例では、図8に示すコンテンツ構成ツリー1000のノード番号2に関して、ノード番号2に属する要素(子ノード)の中で、最も左上(距離が同じ場合は左より上優先)の基準位置をもつノード番号5の基準点“X:100px Y:158px”がノード番号2の基準位置に設定される。そのノード番号2の基準点に対し位置的に最も近いテキストの基準位置は、テキストリスト情報162の4番目のテキスト情報“First”であるが、これはすでにノード番号:5のラベルに使用されている。そこで、テキストリスト情報162の2番目のテキストの基準位置“X:90px Y:118px”が、未だラベルとして抽出されておらず位置的に最も近いテキスト情報要素であるため、ノード番号2のラベルとして、2番目のテキスト“Applicant Information”が抽出され、抽出結果がコンテンツ構成ツリー1100のノード番号2のノードに属性情報として格納される。さらに、ラベルを含めたノード番号2の基準位置をラベル(2番目のテキスト)の基準位置“X:90px Y:118px”として再設定され、図9で示すコンテンツ構成ツリー1100のノード番号2のノードに属性情報として格納される。
このように、階層レベルが階層レベルM(最下位階層レベル)以外のすべてのノードに対して、上述と同様の処理が行われることで、階層レベルが階層レベルM(最下位階層レベル)以外の各ノードのラベルおよび基準位置が、コンテンツ構成ツリー1100の各ノードの属性情報として格納される(なお、前述したように、図9のコンテンツ構成ツリーは一部が図示省略されている)。
なお、本具体例におけるグルーピング処理部130では、グルーピング方法として、各入力コントロールの基準位置情報を用いて行ったが、図5に示すテキストリスト情報162のフォントサイズ情報を用いて、或る閾値以上のフォントサイズを持つテキストの位置を階層レベルmにおける入力コントロール間のグループ境界とみなすという方法をとってもよい。たとえば、フォントサイズが“+3”以上あるテキストの位置の直前を階層レベル2におけるグループの境界とみなすというグルーピング条件が設定されていた場合に、図5および図6の例では、テキストリスト情報162の2番目のテキスト“Applicant Information”と13番目のテキスト“Elective Conference”と26番目のテキスト”Payment”が“+3”のフォントサイズを持つので、入力コントロールリスト情報163の1番目と2番目と、9番目と10番目と、12番目と13番目の入力コントロール間が階層レベル2におけるグループの境界とみなされ、1番目〜9番目、10番目〜12番目および13番目〜15番目の入力コントロールが階層レベル2における1つのグループとみなされる。
以上が、部品登録制御処理部111の具体的な処理の流れである。
上述した第一の実施形態によれば、コンテンツを複数の部品に分け、複数の部品をそれぞれ表す複数の既存部品サブツリーもリポジトリ(例えば磁気ディスク装置101)に格納され、各既存部品サブツリーも、検索の対象となる。これにより、コンテンツファイルそれ自体のみを検索対象とすることに比べて、ユーザが作成しようとするコンテンツにより近いコンテンツとしての部品の検索でき、以って、ユーザの負担を軽減することができる。
また、上述した第一の実施形態によれば、クエリツリー及び既存部品サブツリーに、テキスト情報要素に加えて入力コントロール種類情報要素が含まれており、テキスト情報要素だけでなく入力コントロール種類情報要素をも基に、クエリツリーと既存部品サブツリーの類似度が算出される。これにより、テキストのみが検索キーとして入力される検索方法に比べて、ユーザが作成しようとするコンテンツにより近いコンテンツとしての部品を検索することができ、以って、以って、ユーザの負担を軽減することができる。
また、上述した第一の実施形態によれば、コンテンツファイルをリポジトリに登録するだけで、コンテンツ部品を表す既存部品サブツリーをリポジトリに蓄積できるとともに、それら蓄積された既存部品サブツリーに対して、人手によってあらかじめメタ情報を付与しなくても、開発者が所望するコンテンツ部品を検索することができる。
また、上述した第一の実施形態によれば、同一のコンピュータシステムや異なるコンピュータシステム(コンピュータシステムは例えば電子申請システム)でも、コンテンツ(例えば入力フォーム)のデザインの統一が図れる。
<第二の実施形態>。
次に、本発明の第二の実施形態について説明する。なお、以下、第一の実施形態の相違点を主に説明し、第一の実施形態との共通点については説明を省略或いは簡略する。
第二の実施形態では、レポジトリに登録される全ての既存部品サブツリーが、部品検索前に(具体的には部品登録の際に)、機能別およびスタイル別にグルーピングされ、部品候補一覧では、機能別およびスタイル別に部品候補に関する情報が提示される。この結果、複数の部品候補に関する情報を、機能単位およびスタイル単位で表示することができる。
第一の実施形態と異なる点は、図14に示すとおり、部品登録処理部126に、機能別クルーピング処理部127とスタイル別グルーピング128が追加されている点と、部品検索処理部142と部品候補出力処理部143の処理がそれぞれ一部変更されている点である(変更後の部品登録処理部126、部品検索処理部142および部品候補出力処理部143を、それぞれ部品登録処理部126c、部品グループ検索処理部142cおよび部品候補出力処理部143cと呼ぶ)。
以下、第二の実施形態で行われる処理を、第一の実施形態で行われる処理と異なる部分を主に説明する。
図15は、機能別グルーピング処理部127が行う処理の流れの一例を示す。
まず、機能別グルーピング処理部127は、磁気ディスク装置101又はワークエリア150に登録されている本処理を実行していないすべてのコンテンツファイル160に対して、ステップ2511およびステップ2517〜2519を繰り返す(ステップ2510)。
次に、機能別グルーピング処理部127は、該コンテンツファイル160に対応するコンテンツ構成ツリー161に含まれるすべてのサブツリー(既存部品サブツリー174)に対して、ステップ2512〜2513を繰り返す(ステップ2511)。
次に、機能別グルーピング処理部127は、該既存部品サブツリーの部品内情報177B(ラベル情報175Bと入力コントロール情報176Bを含んだ情報)を取得し、取得した部品内情報177Bをワークエリア150に格納する(ステップ2512)。
次に、機能別グルーピング処理部127は、すべての機能グループ188に対して、ステップ2514〜2516を繰り返す(ステップ2513)。なお、機能グループとは、同一又は類似の機能を持つ部品に対応した既存部品サブツリーの集まりである。
次に、機能別グルーピング処理部127は、該機能グループ188の部品内情報177C(ラベル情報175Cと入力コントロール情報176Cを含んだ情報)を取得し、取得された部品内情報177C(図19参照)を、ワークエリア150に格納する(ステップ2514)。
次に、機能別グルーピング処理部127は、該既存部品サブツリー174の部品内情報177Bと該機能グループ188の部品内情報177Cとから、類似度算出のためのベクトル空間とベクトルを表現したテーブル形式のベクトル情報182を生成し、生成したベクトル情報182をワークエリア150に格納する(ステップ2515)。
次に、機能別グルーピング処理部127は、ベクトル情報182を用いて、該既存部品サブツリーに対する該機能グループの類似度を式2により算出する。類似度は、ベクトル情報182からベクトル空間法のよる余弦尺度(式2)により算出し、図18に例示する機能グループ別類似度算出結果189(機能グループID情報1891と類似度情報1892を含んだ情報)を、ワークエリア150に格納する(ステップ2516)。
次に、機能別グルーピング処理部127は、該既存サブツリー174に対して、閾値以上の類似度を持つ機能グループ188が存在するか否かを判定する(ステップ2517)。
ステップ2517の判定の結果、閾値以上の類似度を持つ機能グループ188が存在する場合は、機能別グルーピング処理部127は、該既存部品サブツリー174を、最も高い類似度を持つ機能グループ188のメンバとし、該既存部品サブツリー174に対応する該コンテンツ構成ツリー161のノード195(図22参照)に機能グループIDを格納する(ステップ2518)。
ステップ2517の判定の結果、閾値以上の類似度を持つ機能グループ188が存在しない場合は、機能別グルーピング処理部127は、該既存部品サブツリーをメンバとする新たな機能グループを生成し、機能グループIDを付与した上で(ステップ2519)、磁気ディスク装置101又はワークエリア150に、その既存部品サブツリーを登録する。なお、機能グループIDは、主メモリ102または磁気ディスク装置101に格納されているルールに基づいて機能グループIDを生成して付与することができる。また、一の機能グループについて、その機能グループに最後にメンバとされた既存部品サブツリーを、代表の既存部品サブツリーとすることができる。代表の既存部品サブツリーがどれであるかは、例えば、既存部品サブツリーのルートノードに代表であることを表すコード(以下、代表コード)を含めることで、特定することができる(代表となる既存部品サブツリーが変わる場合には、既存の代表の既存部品サブツリーのルートノードから代表コードを削除することができる)。
図16は、スタイル別グルーピング処理部128が行う処理の流れの一例を示す。
まず、スタイル別グルーピング処理部128は、磁気ディスク装置101又はワークエリア150に登録されている本処理を実行していないすべての機能グループ188に対して、ステップ2611を繰り返す(ステップ2610)。
次に、スタイル別グルーピング処理部128は、該機能グループに含まれるすべての既存部品サブツリーに対して、ステップ2612〜2613を繰り返す(ステップ2611)。
次に、スタイル別グルーピング処理部128は、該既存部品サブツリーに対応するコンテンツファイル160のソースから、該既存部品サブツリーに対応した部品のスタイル情報を取得し(ステップ2612)、取得したスタイル情報を、ワークエリア150に格納する。なお、類似性を比較する部品間のテキスト数が二以上である場合、図20に例示するスタイル情報193(二以上のテキストとそれら二以上のテキストのコンテンツにおける並び順(図20では、一番左が先頭))が取得される。また、類似性を比較する部品間のテキスト数が1である場合、図21に例示するスタイル情報194(ラベル情報1941、type情報1942、size情報1943、font−size情報1944、color情報1945およびmaxlength情報1946を含んだ情報)が取得される。なお、スタイル情報193及び194は、HTMLソース(コンテンツファイル)の属性情報等から構築することができるが、ソースから抽出できる他の情報要素から構築されても良い。また、スタイル情報194に含まれる情報要素は、一のテキストに関する属性を表す情報要素であれば何でもよい。また、類似性を比較する部品間のテキスト数が二以上であっても、各テキストについてスタイル情報194が作成され、スタイル情報194同士の比較が行われても良い。
次に、スタイル別グルーピング処理部128は、すべてのスタイルグループ190に対して、ステップ2614〜2617を繰り返す(ステップ2613)。なお、スタイルグループとは、画面上に表示されるスタイルが同一又は類似している既存部品サブツリーの集まりである。
次に、スタイル別グルーピング処理部128は、該スタイルグループからスタイル情報193又は194を取得し、取得したスタイル情報193又は194を、ワークエリア150に格納する(ステップ2614)。
次に、スタイル別グルーピング処理部128は、既存部品サブツリーのスタイル情報193又は194とスタイルグループ190のスタイル情報193又は194とを比較し、スタイル情報が完全一致するか否かを判定する(ステップ2615)。
ステップ2615の判定の結果、それぞれのスタイル情報が完全一致した場合は、スタイル別グルーピング処理部128は、該部品を該スタイルグループ190のメンバとし、該既存部品サブツリー174に対応する該コンテンツ構成ツリー161のノード195(図22参照)に、スタイルグループIDを格納する(ステップ2516)。
ステップ2615の判定の結果、それぞれのスタイル情報が完全一致しない場合は、スタイル別グルーピング処理部128は、該既存部品サブツリーをメンバとする新たなスタイルグループを生成し、スタイルグループIDを付与した上で(ステップ2617)、磁気ディスク装置101又はワークエリア150に登録する。なお、スタイルグループIDは、主メモリ102または磁気ディスク装置101に格納されているルールに基づいて機能グループIDを生成して付与することができる。また、一のスタイルグループについて、最後にメンバとされた既存部品サブツリーを代表の既存部品サブツリーとすることができる。
なお、ステップ2615の類似性判定処理では、既存部品サブツリーおよび該スタイルグループ190のそれぞれのスタイル情報が互いに完全一致しないと類似しているとみなさないとしたが、条件を詳細に設けて、小さな差異については吸収して類似しているとみなしてもよい。具体的には、例えば、スタイル情報193同士の比較において、テキストが完全一致であれば並び順が違っていても、比較対象の既存部品サブツリーが比較対象のスタイルグループのメンバとされても良いし、或いは、並び順が完全一致であれば所定数のテキストが違っていても、比較対象の既存部品サブツリーが比較対象のスタイルグループのメンバとされても良い。また、例えば、スタイル情報194同士の比較において、所定割合以上の情報要素が互いに一致していれば、比較対象の既存部品サブツリーが比較対象のスタイルグループのメンバとされても良い。
なお、機能別グルーピング処理部127およびスタイル別グルーピング処理部128の処理結果は、図22に例示する既存部品グルーピング情報196、すなわち、機能グループID情報1961、スタイルグループID情報1962、部品ID情報1963(スタイルグループに含まれる既存部品サブツリーに対応した部品のID)および出現数情報1964(スタイルグループに含まれる既存部品サブツリーの数)が含まれている情報であっても良い。既存部品グルーピング情報196は、磁気ディスク装置101又はワークエリア150に格納されてもよい。
図17は、部品グループ検索処理部142cが行う処理の流れの一例を示す。
まず、部品グループ検索処理部142cは、入出力定義情報解析処理部141で取得されたすべてのクエリツリー171に対して、ステップ2710〜2711を繰り返す(ステップ2700)。
次に、部品グループ検索処理部142cは、該クエリツリー171の部品内情報177Aを取得し、取得された部品内情報177Aをワークエリア150に格納する(ステップ2710)。
次に、部品グループ検索処理部142cは、磁気ディスク装置101又はワークエリア150に登録されているすべての機能グループ188に対して、ステップ2712〜2713を繰り返す。
次に、部品グループ検索処理部142cは、該機能グループ188の部品内情報177Cを取得し、取得された部品内情報177Cをワークエリア150に格納する(ステップ2712)。
最後に、部品グループ検索処理部142cは、該クエリツリー171に対する該機能グループ188の類似度を算出し、図23に例示する機能グループ別類似度算出結果189(機能グループID情報1891と類似度情報1892を含んだ情報)をワークエリア150に格納する(ステップ2713)。このステップ2713では、機能別グルーピング処理部127の処理流れにおけるステップ2516と実質的に同じ処理を行う(例えば、(式2)で類似度を算出する)ことができる。
部品候補出力処理部143cは、部品グループ検索処理部142cで生成された機能グループ別類似度算出処理結果189と、機能別グルーピング処理部127とスタイル別グルーピング処理部128によって生成された既存部品グルーピング情報196とを用いて、クエリツリー171に対する機能グループ188に関する情報および機能グループ188内におけるスタイルグループに関する情報の一覧(以下、部品グループ候補一覧)を、部品グループ候補一覧表示画面197に表示することができる。この画面197は、例えば、第一の実施形態における部品候補一覧表示画面187に代わりに用意された画面である。
部品グループ候補一覧には、機能グループのID、クエリツリー171に対する機能グループ188の類似度、該機能グループに含まれるサブ機能グループのID、該機能グループ188に含まれるスタイルグループのIDおよび該スタイルグループに含まれる部品数が含まれる。また、各スタイルグループの代表部品をプレビューするためのプレビューボタンが表示される。なお、該機能グループに含まれるサブ機能グループのIDは、該機能グループに含まれる既存部品サブツリー174内のノード195に記録されている機能グループIDである。すなわち、第一の機能グループに属する既存部品サブツリー内のノードに、第一の機能グループとは別の第二の機能グループのIDが記録されていれば、その第二の機能グループが、第一の機能グループのサブ機能グループとなる。
以下、部品登録処理部126cの具体的な処理を、図18〜図22を用いて説明する。
図18は、機能別グルーピング処理部127の具体的な処理の説明図である。
機能別グルーピング処理部127は、磁気ディスク装置101に登録されているすべてのコンテンツファイル160に含まれるすべての既存部品サブツリー174について、登録されている機能グループ188との類似度を算出することで、各既存部品サブツリー174に対応する部品がどの機能グループに属すかを決定する。
図18の例では、グルーピング対象の既存部品サブツリー174が、3つの機能グループ188(ID“001”〜“003”)の中のどの機能グループに属するかを決定するために、該既存部品サブツリー174に対する各機能グループ188の類似度が算出される。具体的には、機能グループID“001”については類似度“0.50”が算出され、機能グループID“002”については類似度“0.67”が算出され、機能グループID“003”については類似度“0.42”が算出され、それぞれ機能グループID情報1891と類似度情報1892が機能グループ別類似度算出結果189に格納される。この結果、例えば類似度の閾値が“0.50”の場合、該既存部品サブツリー174は、類似度が最も高いID“002”の機能グループのメンバに追加される。また、類似度の閾値が“0.70”の場合、該既存部品サブツリー174の部品は、どの機能グループにも属さないものとして、該既存部品サブツリー174の部品をメンバとする新たな機能グループ(ID“004”)が生成される。
図19は、機能別グルーピング処理部127における類似度算出の具体的な処理の説明図である。
まず、機能別グルーピング処理部127は、既存部品サブツリー174から部品内情報177Bを取得し、機能グループ188から部品内情報177Cを取得する。図19の例では、部品内情報177Bは、図12の部品内情報177Aと同じ内容であり、部品内情報177Cは、図12の部品内情報177Bと同じ内容である。このため、これらの部品内情報177B及び177Cを基に作成されたベクトル情報182を参照して上記(式2)を利用して算出された類似度は、0.67となる。機能別グルーピング処理部127は、機能グループ別類似度算出結果189に、機能グループID情報1891“002”と、類似度情報1892“0.67”とを記録する。
なお、グルーピング対象の既存部品サブツリー174と機能グループ188との類似度算出では、機能グループ188における代表の既存部品サブツリーとグルーピング対象の既存部品サブツリー174とが比較されても良い。或いは、グルーピング対象の既存部品サブツリー174は、機能グループ188における二以上の(例えば全ての)既存部品サブツリー174と比較され、算出された二以上の類似度の平均が、グルーピング対象の既存部品サブツリー174と機能グループ188との類似度とされても良い。
以上のように、機能グループとグルーピング対象の既存部品サブツリー174と
図20は、類似性を比較する部品間のテキスト数が二以上である場合のスタイル別グルーピング処理部128の具体的な処理の説明図である。
まず、スタイル別グルーピング処理部128は、コンテンツファイル160(ソース)から、グルーピング対象の既存部品サブツリーのスタイル情報193を取得する。スタイル情報193は、テキスト(例えば入力項目名)と順番を表現した情報であり、本図の例では、“氏名”、“住所”及び“電話番号”といった3つの入力項目名が、“氏名”、“住所”、“電話番号”の順でコンテンツ上にレイアウトされていることを示す。
次に、スタイル別グルーピング処理部128は、スタイルグループ190についても、スタイルグループ190の代表既存部品ツリーからスタイル情報193を取得する。本図の例では、スタイルグループID“001”について、スタイル情報193として、“性” 名 住所 電話番号”が取得され、スタイルグループID“002”について、スタイル情報193として、“氏名 電話番号 住所”が取得され、スタイルグループID“003”について、スタイル情報193として、“氏名 住所 電話番号”が取得される。
次に、スタイル別グルーピング処理部128は、グルーピング対象の既存部品サブツリー174のスタイル情報193と各スタイルグループ190の各スタイル情報193とを比較し、完全一致するかどうかを判定する。本図の例では、3つのスタイルグループ190のうち、スタイルグループID“001”については入力項目名が異なり、スタイルグループID“002”については入力項目名の順番が異なり、スタイルグループID“003”に対応したスタイル情報193のみが、グルーピング対象の既存部品サブツリー174のスタイル情報193と完全一致することになる。このため、判定結果を表す情報であるスタイル別類似性判定結果192には、グルーピング対象の既存部品サブツリー174はスタイルグループID“003”のスタイルグループ190のメンバとなることが示される。
図21は、類似性を比較する部品間のテキスト数が1である場合のスタイル別グルーピング処理部128の具体的な処理の説明図である。
まず、スタイル別グルーピング処理部128は、コンテンツファイル160(ソース)から、グルーピング対象の既存部品ツリー174のスタイル情報194を取得する。スタイル情報194には、一つの入力項目名(テキスト)のスタイルに関する属性を示す情報要素が含まれ、本図の例では、ラベル情報1941“氏名”、type情報1942“text”、size情報1943“10”、font−style情報1944“normal”、font−size情報1945“medium”、color情報1946“black”、およびmaxlength情報1947“10”が含まれる。
スタイル別グルーピング処理部128は、各スタイルグループ190についても、スタイルグループ190の代表既存部品サブツリーからスタイル情報194を取得する。本図の例では、スタイルグループID“001”に対応したスタイル情報194には、ラベル情報1941“名前”、type情報1942“text”、size情報1943“10”、font−style情報1944“normal”、font−size情報1945“medium”、color情報1946“black”およびmaxlength情報1947“10”が含まれる。以下、スタイルグループID“002”と“003”についても、同様にスタイル情報194が取得される。
次に、スタイル別グルーピング処理部128は、グルーピング対象の既存部品サブツリー174のスタイル情報194とスタイルグループ190のスタイル情報194とを比較し、それらが互いに完全一致するかどうかを判定する。本図の例では、スタイルグループID“001”はラベル情報1941が異なり、スタイルグループID“002”はfont−size情報1944が異なり、スタイルグループID“003”のスタイル情報194のみが、グルーピング対象の部品のスタイル情報194とすべての情報が一致している。スタイル別グルーピング処理部128は、そのことを検出し、スタイル別類似性判定結果192に、グルーピング対象の既存部品ツリー174はID“003”のスタイルグループのメンバとなることを記録する。
なお、本図には示されていないが、仮にグルーピング対象の既存部品サブツリーのスタイル情報がどのスタイルグループのスタイル情報193或いは194とも一致しなかった場合は、グルーピング対象の既存部品サブツリーをメンバとする新たなスタイルグループを生成し、スタイルグループIDを付与した上で磁気ディスク装置101又はワークエリア150に登録することができる。また、この場合、グルーピング対象の既存部品サブツリーは新たに生成されたスタイルグループの代表既存部品サブツリーとなる。
また、機能別グルーピング処理部127とスタイル別グルーピング処理部128のグルーピング結果は、グルーピング対象の既存部品サブツリーに対応するコンテンツ構成ツリー161のノード195の中に機能グループIDとスタイルグループIDとして格納される。図22の例では、コンテンツ構成ツリー161のノード195に、機能グループID“002”とスタイルグループID“003”がそれぞれ格納されている。
また、前述したように、機能別グルーピング処理部127とスタイル別グルーピング処理部128のグルーピング結果は、部品候補出力処理部143cにおける情報取得の高性能化のために、既存部品グルーピング情報196(機能グループID情報1961、スタイルグループID情報1962、部品ID情報1963及び出現数情報1964を含んだ情報)が磁気ディスク装置101又はワークエリア150に格納されてもよい。本図の例では、既存部品グルーピング情報196の2レコード目の情報として、機能グループID情報1961“001”、スタイルグループID情報1962“002”、部品ID情報1963“0031_3、0065_2”および出現数情報1964“2”がそれぞれ格納されている。また、部品ID情報1963で先頭に格納された(下線で示された)部品IDについては、そのスタイルグループにおける代表既存部品サブツリーであることを示している。代表既存部品サブツリーがどれであるかを示す方法としては、代表既存部品サブツリーに対応した部品IDを先頭に格納することに代えて、下線で示すなど、他の方法を採用することができる。
以上が、部品登録処理部126cの具体的な処理である。
部品検索処理部142は、ユーザによって指定されたクエリツリー171に対して、磁気ディスク装置101又はワークエリア150に登録されているすべての機能グループ188との類似度を算出する。クエリツリー171に対する機能グループ188の類似度算出については、図19で示したグルーピング対象の既存部品サブツリーから部品内情報177Bを取得する処理が、クエリツリー171から部品内情報177Aを取得する処理に変わる以外は、図19で示した処理例を同じである。
図23は、部品候補出力処理部143cの具体的な処理の説明図である。
部品候補出力処理部143cは、部品グループ検索処理部142cで生成された機能グループ別類似度算出結果189と、機能別グルーピング処理部127とスタイル別グルーピング処理部128によって生成された既存部品グルーピング情報196から、クエリツリー171に対する機能グループ188に関する情報および機能グループ188内におけるスタイルグループ190に関する情報の一覧を部品グループ候補一覧表示画面197に表示する。図23の例では、第1位の機能グループとして、機能グループID“002”、クエリツリー171に対する機能グループ188の類似度“0.67”、該機能グループに含まれるサブ機能グループのID“004 005”が表示されている。サブ機能グループIDは、機能グループに含まれる既存部品サブツリー174におけるノード195内の、その機能グループのID以外の機能グループIDである。また、第1位の機能グループ(ID:002)の中に含まれるスタイルグループの一覧として、スタイルグループID“001”、“002”および“003”が表示されており、それぞれのスタイルグループに含まれる部品数(出現数)として“30”、“2”および“1”がそれぞれ表示されている。
また、本図の例では、各スタイルグループの代表既存部品サブツリーが表す部品をプレビューするためのプレビューボタンが設けられている。部品候補出力処理部143cは、或るプレビューボタンが押下された場合、そのプレビューボタンに対応するスタイルグループ内の代表既存部品サブツリーが表すコードをソースから取得し、取得したコードを基に、代表既存部品サブツリーに対応した部品のイメージを表示することができる。
以上が、本発明の第二の実施形態についての説明である。
上述した第二の実施形態によれば、検索前に機能及びスタイルごとに既存部品サブツリーをグルーピングしておくことで、クエリツリーに対する部品候補を、機能およびスタイルの観点で重複することなく、異なる機能およびスタイルの部品ごとに一覧表示することができる。この結果、ユーザは効率よく所望の部品を部品候補一覧表示から探し出すことができる。
<第三の実施形態>。
次に、本発明の第三の実施形態について説明する。
第三の実施形態では、第一の実施形態における部品検索方法で既存部品サブツリーの集合を或る程度絞った上で、その集合における各既存部品サブツリーについて、第二の実施形態で説明した機能別およびスタイル別のグルーピング処理を行なう。
本実施形態において、第一の実施形態と異なる点は、図24に示すとおり、部品候補出力処理部143に機能別クルーピング処理部127、スタイル別グルーピング128、部品グループ検索処理部142cおよび部品候補出力処理部143cを追加する点である(変更後の部品候補出力処理部143を部品候補出力制御処理部144と呼ぶ)。
以下、第一の実施形態及び第二の実施形態と異なる処理を主に説明する。
部品候補出力制御処理部144は、まず、部品検索処理部142によって算出された各既存部品サブツリーの類似度に対して、磁気ディスク装置101又はワークエリア150に格納されている類似度の閾値と比較し、閾値以上の類似度を持つ既存部品サブツリーを抽出する。以下、抽出された既存部品サブツリーの集合を「一次検索結果部品集合」と呼ぶ。
次に、部品候補出力制御処理部144は、機能別グルーピング処理部127を実行し、機能別グルーピング処理部127が、一次検索結果部品集合における各既存部品サブツリーについて、機能別にグルーピングを行なう。機能別グルーピング処理部127の処理手順は、処理対象が一次検索結果部品集合における既存部品サブツリーとなる他は、第二の実施形態と同様である。
次に、部品候補出力制御処理部144は、スタイル別グルーピング処理部128を実行し、スタイル別グルーピング処理部128が、登録された全ての機能グループ188に対して、スタイル別にグルーピングを行なう。スタイル別グルーピング処理部128の処理手順は、処理対象が一次検索結果部品集合に対して機能別にグルーピングされた各機能グループ188となる他は、第二の実施形態と同様である。
次に、部品グループ検索処理部142cを実行し、ステップ3410によって登録されたすべて機能グループ188に対して、クエリサブツリー171との類似度を算出する。部品グループ検索処理部142cの処理手順は、処理対象が一次検索結果部品集合に対して機能別にグルーピングされた各機能グループ188となる他は第二の実施形態と同様である。
次に、部品候補出力制御処理部144は、部品候補出力処理部143cを実行し、部品候補出力処理部143cが、生成された機能グループ別類似度算出結果189と、機能別グルーピング処理部127とスタイル別グルーピング処理部128によって生成された既存部品グルーピング情報196から、クエリツリー171に対する部品グループ候補一覧を部品グループ候補一覧表示画面197に表示する。部品候補出力処理部143cの処理手順は、部品候補出力の対象が一次検索結果部品集合となる他は、第二の実施形態と同様である。
第三の実施形態で行われる処理は、機能別およびスタイル別のグルーピングの処理対象が一次検索結果部品集合となる他は、第二の実施形態と略同様である。
以上、第三の実施形態によれば、機能別およびスタイル別のグルーピングの処理対象を、第一の実施形態による部品検索方法によって、ある程度絞った部品集合とすることで、新規に作成しようとしているコンテンツの分野の中で使われている部品グループのみを出力することができる。この結果、ユーザは効率よく所望の部品を部品グループ候補一覧から探し出すことができる。
<第四の実施形態>。
第四の実施形態では、テキストの類似度と入力コントロールの類似度とを別々に算出し、それらの類似度に基づいて、クエリツリーと既存部品サブツリー(或いは機能グループ)との類似度を算出することができる。具体的には、例えば、下記(式3)
クエリツリーと既存部品サブツリー(或いは機能グループ)との類似度=α(テキストの類似度)+β(入力コントロールの類似度)…(式3)
で算出することができる。α及びβは、それぞれ、余弦尺度を用いて求めることができる。
例えば、クエリツリーに、5つのテキスト(入力項目名)として、氏名、住所、電話番号及びメールアドレスがあり、8つの入力コントロールとして、5つのテキストボックス、チェックリスト、ラジオボタン、プルダウンがあるとする。一方、比較対象の既存部品サブツリーに、7つのテキストとして、氏名、性、名、メールアドレス、職業、住所及び電話番号があり、6つの入力コントロールとして、5つのテキストボックス、プルダウンがあるとする。このため、クエリツリーと比較対象の既存部品サブツリーとの間で、テキストについては、氏名、住所、電話番号及びメールアドレスの4つが一致し、入力コントロールについては、5つのテキストボックスとプルダウンの6つが一致する。
また、テキスト及び入力コントロールの8つのセットうち、クエリツリーについては、一致するセットとして3つあり、比較対象の既存部品サブツリーについては一致するセットとして7つあり、クエリツリーと比較対象の既存部品サブツリーとの間で互いに一致するセットが3つあるとする。
この場合、第一乃至第三の実施形態によれば、類似度が0.57として算出される。なぜなら、余弦尺度((式1)及び(式2))において、分子が、12+12+12=3となり、分母が、{(12+12+12+12)の平方根}×{(12+12+12+12+12+12+12)の平方根}となるからである。
しかし、第四の実施形態では、上記(式3)を用いて類似度が求められる。具体的には、例えば、αは0.76であり、βは0.96となり、そのため、類似度は、1.72となる。αが0.76となる理由は、余弦尺度において、分子が、12+12+12+12=4となり、分母が、{(12+12+12+12)の平方根}×{(12+12+12+12+12+12+12)の平方根}となるからである。βが0.96となる理由は、余弦尺度において、分子が、52+12=26となり、分母が、{(52+12+12+12)の平方根}×{(52+12)の平方根}となるからである。
なお、α及びβは、余弦尺度により算出されることとしたが、他の方法により算出されても良い。
<第五の実施形態>。
第五の実施形態は、第二と第三の実施形態の組合せであり、且つ、登録性能を重視するか検索性能を重視するかの入力を受け付ける機能がコンテンツ部品検索システムに設けられる。コンテンツ部品検索システムでは、登録性能を重視することが開発者から入力された場合には、第三の実施形態で説明したように、一次検索結果部品集合について機能別及びスタイル別のグルーピング処理が行われ、検索性能を重視することが開発者から入力された場合は、第二の実施形態で説明したように、新規に登録されるコンテンツの各部品を表す各既存部品サブツリーについて、機能別及びスタイル別のグルーピング処理が行われる。
以上、本発明の幾つかの実施形態を説明したが、これらの実施形態は本発明の説明のための例示にすぎず、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。例えば、既存部品サブツリーや評価結果などの格納先は、主メモリ又は磁気ディスク装置に限らず、他種の記憶資源であってもよい。
100…中央演算処理装置(CPU) 101…磁気ディスク装置 102…主メモリ 103…フロッピーディスクドライブ(FDD) 104…バス 105…ネットワーク 106…フロッピーディスク 110…システム制御処理部 111…部品登録制御処理部 112…部品検索制御処理部 112c…部品検索制御処理部 121…コンテンツ取得処理部 122…コンテンツ内要素情報取得処理部 123…コンテンツ構成ツリー生成処理部 126…部品登録処理部 126c…部品登録処理部 127…機能別グルーピング処理部 128…スタイル別グルーピング処理部 130…グルーピング処理部 131…ラベル付与処理部 140…入出力定義情報取得処理部 141…入出力定義情報解析処理部 142…部品検索処理部 142c…部品グループ検索処理部 143…部品候補出力処理部 143c…部品候補出力処理部 144…部品候補出力制御処理部 150…ワークエリア 160…コンテンツファイル 161…コンテンツ構成ツリー