(57)【特許請求の範囲】
【請求項１】
テーブルの１つまたは複数の件名列を検出するためのプロセッサーにより実行される方法であって、
前記テーブルから指定された数の列を候補件名列として選択するステップであって、各候補件名列は前記テーブルの真の件名列の候補であり、各候補件名列は複数の値を含む、ステップを備え、
各候補件名列については、
前記候補件名列における値が複数の他のテーブル内の真の件名列においても出現する頻度を決定することを含む、前記候補件名列の値について共起を決定するステップと、
決定された共起に基づいて前記候補件名列のスコアを計算するステップであって、計算されたスコアは前記候補件名列が真の件名列である尤度を指示する、ステップと、さらに
前記候補件名列の計算された前記スコアに従って、前記候補件名列を前記テーブルの真の件名列または前記テーブルの非件名列のうち一つとして分類するステップ
を備える方法。
【請求項２】
前記テーブルから指定された数の列を候補件名列として選択するステップは、前記テーブルの指定された数の左端の列を候補件名列として選択するステップを備える請求項１に記載の方法。
【請求項３】
前記テーブルの指定された数の左端の列を候補件名列として選択するステップは、前記テーブルの指定された数の左端の非数値列を候補件名列として選択するステップを備える請求項２に記載の方法。
【請求項４】
前記テーブルから指定された数の列を候補件名列として選択するステップは、前記指定された数の列内のセル値の個別性に基づいて、前記テーブルから指定された数の列を候補件名列として選択するステップを備える請求項１に記載の方法。
【請求項５】
前記テーブルから指定された数の列を候補件名列として選択するステップは、リレーショナルテーブルまたはＷｅｂテーブルのうち一つから指定された数の列を選択するステップを備える請求項１に記載の方法。
【請求項６】
前記候補件名列の値について共起を決定するステップは、前記候補件名列の各値について共起率を計算するステップを備え、前記共起率は、前記複数の他のテーブルの全体に出現する前記値の頻度に対する、前記複数の他のテーブルの真の件名列に出現する前記値の頻度を示す、請求項１に記載の方法。
【請求項７】
前記候補件名列のスコアを計算するステップは、各値に対する共起率からの前記候補件名列のスコアを計算するステップを備え、前記共起率は、前記複数の他のテーブルの全体に出現する前記値の頻度に対する、前記複数の他のテーブルの真の件名列に出現する前記値の頻度を示す、請求項１に記載の方法。
【請求項８】
前記候補件名列のスコアを計算するステップは、ナレッジベースにおける値の出現に基づいて、前記候補件名列のスコアを計算するステップを備える、請求項１に記載の方法。
【請求項９】
コンピューターシステムにおける、１つまたは複数の行を含むテーブルの列ヘッダーを検出するためのプロセッサーにより実行される方法であって、
前記テーブルを定義するデータから前記テーブルの候補列名のセットを構築するステップを備え、
候補列名の前記セット内の各候補列名については、
前記候補列名の候補列名頻度を、その他のテーブルのセットから、同じく前記候補列名を候補列名として含む１つまたは複数のその他のテーブルを識別することによって計算するステップと、
前記候補列名の非候補列名頻度を、その他のテーブルの前記セットから、前記候補列名を候補列名以外として含む第２の１つまたは複数のその他のテーブルを識別することによって計算するステップとを備え、さらに
前記行に含まれる候補列名の少なくとも指定されたしきい値が、非候補列名頻度よりも大きい候補列名頻度を有する場合、前記テーブルの行を列ヘッダーとして選択するステップ
を備える方法。
【請求項１０】
候補列名のセットを構築するステップの前に、前記テーブルを定義する前記データが列ヘッダーを明示的に定義しないことを決定するステップをさらに備える請求項９に記載の方法。
【請求項１１】
前記テーブルを定義する前記データが列ヘッダーを明示的に定義しないことを決定するステップは、前記テーブルを定義する前記データがハイパーテキストマークアップ言語（ＨＴＭＬ）＜ｔｈ＞タグを含まず、ハイパーテキストマークアップ言語（ＨＴＭＬ）＜ｔｈｅａｄ＞タグを含まないことを決定するステップを備える請求項１０に記載の方法。
【請求項１２】
候補列名のセットを構築するステップの前に、前記テーブルに明示的に定義された列ヘッダーが不足していることを決定するステップをさらに備える請求項９に記載の方法。
【請求項１３】
前記テーブルの候補列名のセットを構築するステップは、前記テーブルの第１の行に含まれる列名から前記テーブルの候補列名のセットを構築するステップを備える請求項９に記載の方法。
【請求項１４】
前記テーブルの候補列名のセットを構築するステップは、リレーショナルＷｅｂテーブルの候補列名のセットを構築するステップを備える請求項９に記載の方法。
【請求項１５】
前記テーブルの行を列ヘッダーとして選択するステップは、前記テーブルの第１の行を前記列ヘッダーとして選択するステップを備える請求項９に記載の方法。
【請求項１６】
選択された行の少なくとも１つの列が前記少なくとも１つの列に含まれるセル値の上位語であることを推論するステップをさらに備える請求項９に記載の方法。
【請求項１７】
コンピューターシステムにおける、１つまたは複数の行を含むテーブルの列ヘッダーを検出するためのプロセッサーにより実行される方法であって、
前記テーブルの候補列名のセットを構築するステップと、
前記候補列名のセット内の各候補列名については、
前記候補列名の候補列名頻度を、その他のテーブルのセットから、同じく前記候補列名を候補列名として含む１つまたは複数のその他のテーブルを識別することによって計算するステップと、
前記候補列名のセットに含まれる列が、前記列に含まれるセル値に基づく列に含まれる前記セル値の上位語であることを推論するステップと、さらに
推論に基づいて前記列を前記テーブルの列ヘッダーとして含む前記行と、前記行の前記候補列名に対する前記候補列名の頻度を選択するステップとを備える方法。
【請求項１８】
候補列名の前記セットに含まれる列が、前記列に含まれるセル値の上位語であることを推論するステップは、候補列名の前記セットに含まれる列が前記列に含まれるセル値の上位語であることをナレッジベースを参照することにより推論するステップを備える請求項１７に記載の方法。
【請求項１９】
候補列名の前記セットに含まれる列が前記列に含まれるセル値の上位語であることをナレッジベースを参照することにより推論するステップは、１つまたは複数の概念属性および１つまたは複数のインスタンス属性を前記ナレッジベースから抽出するステップを備える請求項１８に記載の方法。
【請求項２０】
前記列を前記テーブルの列ヘッダーとして含む前記行を選択するステップの前に、候補列名の前記セットに含まれる別の列について、前記列ヘッダーのセルタイプと前記列内のその他のセルのセルタイプが異なることを決定するステップをさらに備える請求項１８に記載の方法。
【請求項２１】
１つまたは複数のプロセッサーと、
前記１つまたは複数のプロセッサーに結合されたシステムメモリであって、前記システムメモリは前記１つまたは複数のプロセッサーにより実行可能な命令を格納する、システムメモリと、を備え、
テーブルの１つまたは複数の件名列を検出するために、前記１つまたは複数のプロセッサーは
前記テーブルから指定された数の列を候補件名列として選択し、各候補件名列は、前記テーブルの真の件名列の候補であり、各候補件名列は、複数の値を含み、
各候補件名列については、
前記候補件名列における値が複数の他のテーブル内の真の件名列にも出現する頻度を決定することを含む、前記候補件名列の値に対する共起を決定し、
決定された共起によって前記候補件名列のスコアを計算し、計算されたスコアは前記候補件名列が真の件名列である尤度を指示しており、さらに
前記候補件名列の計算された前記スコアに従って、前記候補件名列を、前記テーブルの真の件名列または前記テーブルの非件名列のうち一つとして分類するための、前記システムメモリに格納された前記命令を実行する、システム。
【請求項２２】
前記１つまたは複数のプロセッサーが、前記テーブルから指定された数の列を件名列候補として選択するための前記命令を実行することは、前記１つまたは複数のプロセッサーが、前記テーブルの指定された数の左端の列を候補件名列として選択するための前記命令を実行することを備える請求項２１に記載のシステム。
【請求項２３】
前記１つまたは複数のプロセッサーが、前記テーブルから指定された数の列を候補件名列として選択するための前記命令を実行することは、前記１つまたは複数のプロセッサーが、前記指定された数の列内のセル値の個別性に基づいて前記テーブルから指定された数の列を候補件名列として選択するための前記命令を実行することを備える請求項２１に記載のシステム。
【請求項２４】
前記１つまたは複数のプロセッサーが、前記候補件名列のスコアを計算するための前記命令を実行することは、前記１つまたは複数のプロセッサーが、各値に対する共起率から前記候補件名列のスコアを計算するための前記命令を実行することを備え、前記共起率は、前記値が前記複数の他のテーブル全体に出現する頻度に対する、前記値が前記複数の他のテーブルの真の件名列に出現する頻度を示す、請求項２１に記載のシステム。
【請求項２５】
前記１つまたは複数のプロセッサーが、前記候補件名列のスコアを計算するための前記命令を実行することは、前記１つまたは複数のプロセッサーが、ナレッジベースにおける前記値の出現によって前記候補件名列のスコアを計算するための前記命令を実行することを備える、請求項２１に記載のシステム。
【請求項２６】
１つまたは複数のプロセッサーと、
前記１つまたは複数のプロセッサーに結合されるシステムメモリであって、前記システムメモリは前記１つまたは複数のプロセッサーにより実行可能な命令を格納する、システムメモリと、を備え、
１つまたは複数の行を含むテーブルの列ヘッダーを検出するために、前記１つまたは複数のプロセッサーは、
前記テーブルを定義するデータから前記テーブルの候補列名のセットを構築し、
候補列名の前記セット内の各候補列名については、
前記候補列名の候補列名頻度を、その他のテーブルのセットから、同じく前記候補列名を候補列名として含む１つまたは複数のその他のテーブルを識別することによって計算し、
前記候補列名の非候補列名頻度を、その他のテーブルの前記セットから、前記候補列名を候補列名以外として含む第２の１つまたは複数のその他のテーブルを識別することによって計算し、さらに
行に含まれる候補列名の少なくとも指定されたしきい値が、非候補列名頻度よりも大きい候補列名頻度を有する場合、前記テーブルの前記行を列ヘッダーとして選択するための前記システムメモリに格納された前記命令を実行するシステム。
【請求項２７】
前記１つまたは複数のプロセッサーは、候補列名のセットを構築する前に、前記テーブルに明示的に定義された列ヘッダーが不足していることを決定するための前記命令を実行することをさらに備える請求項２６に記載のシステム。
【請求項２８】
前記１つまたは複数のプロセッサーは、前記テーブルの候補列名のセットを構築するための前記命令を実行することは、前記１つまたは複数のプロセッサーが前記テーブルの候補列名のセットを前記テーブルの第１の行に含まれる列名から構築するための前記命令を実行することを備える請求項２６に記載のシステム。
【請求項２９】
前記１つまたは複数のプロセッサーは、前記選択された行の少なくとも１つの列が前記少なくとも１つの列に含まれるセル値の上位語であることを推論するための前記命令を実行することをさらに備える請求項２６に記載のシステム。
【請求項３０】
１つまたは複数のプロセッサーと、
前記１つまたは複数のプロセッサーに結合されたシステムメモリであって、前記システムメモリは前記１つまたは複数のプロセッサーにより実行可能な命令を格納する、システムメモリと、を備え、
１つまたは複数の行を含むテーブルの列ヘッダーを検出するために、前記１つまたは複数のプロセッサーは,
前記テーブルの候補列名のセットを構築し、
候補列名の前記セット内の各候補列名については、
前記候補列名の候補列名頻度を、その他のテーブルのセットから、同じく前記候補列名を候補列名として含む１つまたは複数のその他のテーブルを識別することによって計算し、
候補列名の前記セットに含まれる列が前記列に含まれるセル値の上位語であることを前記列に含まれるセル値に基づいて推論し、また
前記行の前記候補列名に対する推論及び前記候補列名頻度に基づいて前記列を含む行を前記テーブルの列ヘッダーとして選択するための前記システムメモリに格納された前記命令を実行する、システム。
【請求項３１】
前記１つまたは複数のプロセッサーが、候補列名の前記セットに含まれる列が前記列に含まれるセル値の上位語であることを推論するための前記命令を実行することは、前記１つまたは複数のプロセッサーが候補列名の前記セットに含まれる列が前記列に含まれるセル値の上位語であることをナレッジベースを参照することにより推論するための前記命令を実行することを備える請求項３０に記載のシステム。
【請求項３２】
前記１つまたは複数のプロセッサーが候補列名の前記セットに含まれる列が前記列に含まれるセル値の上位語であることをナレッジベースを参照することにより推論するための前記命令を実行することは、前記１つまたは複数のプロセッサーが１つまたは複数の概念属性および１つまたは複数のインスタンス属性を前記ナレッジベースから抽出するための前記命令を実行することを備える請求項３０に記載のシステム。
【請求項３３】
前記１つまたは複数のプロセッサーが、前記列を含む行を前記テーブルの列ヘッダーとして選択する前に、候補列名の前記セットに含まれる別の列について、前記列ヘッダーのセルタイプと前記列内のその他のセルのセルタイプが異なることを決定するための前記命令を実行することをさらに備える請求項３０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[0001]該当なし。
【背景技術】
【０００２】
[0002]１．背景技術および関連技術
[0003]コンピューターシステムおよび関連する技術は、社会の多くの側面に影響を及ぼす。実際、情報を処理するコンピューターシステムの能力は、我々が暮らす様式および働く様式を変えてきた。今ではコンピューターシステムは、コンピューターシステムの出現以前には手作業で行われていた多くの作業（たとえば、文書処理、日程計画、会計処理など）を日常的に実行する。より最近になって、コンピューターシステムは、相互に結合され、他の電子デバイスに結合されて、コンピューターシステムと他の電子デバイスが電子データを転送することができる有線および無線のコンピューターネットワークを形成するようになった。それに応じて、多くのコンピューティングタスクの実行は、多数のさまざまなコンピューターシステムおよび／または多数のさまざまなコンピューティング環境にわたり分散されている。
【０００３】
[0004]検索エンジンは、インターネットを含むネットワーク上で使用され、ユーザーの関心対象となる情報を見つけ出すことができる。検索エンジンは通常、インターネットのようなネットワーク上のＷｅｂページを継続的にクロールしてコンテンツにインデックスを作成するクローラーを使用する。コンテンツを見つけ出すために、ユーザーは、１つまたは複数の検索語を検索エンジンに提示する。検索エンジンは、１つまたは複数の検索語に関連するコンテンツを含むとみなされるページを識別する。次いで、検索エンジンは、識別されたページへのリンクをユーザーに返す。すると、ユーザーは、対応するページのコンテンツを閲覧するためにリンクを選択（たとえば、「クリック」）することができる。
【０００４】
[0005]構造化データ検索システム（ＳＤＳＳ）は、インターネットのようなネットワークを同様にクロールして、構造化された情報にインデックスを作成する。構造化された情報は、リレーショナルデータベースのテーブルまたはＷｅｂページから抽出されたＨＴＭＬテーブルを含むことができる。構造化されたデータを見つけ出すため、ユーザーは、１つまたは複数の検索語をＳＤＳＳに提示する。ＳＤＳＳは、１つまたは複数の検索語に関連するコンテンツを含むとみなされる、テーブルのような、構造化されたデータを識別する。次いで、検索エンジンは、構造化データをユーザーに返す。その後、ユーザーは、構造化データを自分のアプリケーションに組み入れることができる。
【０００５】
[0006]テーブルのような構造化されたデータに、効果的にインデックスを作成するため、構造化されたデータについて少なくとも多少の理解が必要となる。ネットワーク上の一部のテーブルは、それらの件名列および列ヘッダーを明示的に定義することができる。ＳＤＤＳは、これらのタイプのテーブルに比較的効率的にインデックスを作成することができる。ネットワーク上のその他のテーブルは、その件名列および／または列ヘッダーを明示的には定義しないこともある。ＳＤＳＳは、これらの他のタイプのテーブルにインデックスを作成することができない場合もある。
【０００６】
[0007]インターネット上のコンテンツ生成の多様性により、インターネット上のテーブルのかなりの部分には、明示的に定義された件名列（ｓｕｂｊｅｃｔ  ｃｏｌｕｍｎ）および／または明示的に定義された列ヘッダーが不足している。ＳＤＳＳは、明示的な件名列および／または明示的に定義された列ヘッダーが不足しているテーブルにインデックスを作成することができない場合があるので、ユーザーの検索に応答してそのようなテーブルを返す可能性は極めて低い。したがって、ユーザーが、明示的な件名列が不足している、および／または明示的に定義された列ヘッダーが不足しているテーブルを見つけ出すことは、たとえそのようなテーブルのコンテンツが有用であったとしても、非常に困難となる場合もある。
【発明の概要】
【課題を解決するための手段】
【０００７】
[0008]本発明は、検索のテーブルを理解するための方法、システム、およびコンピュータープログラム製品に及ぶ。本発明の態様は、テーブルの件名列を識別するステップ、その他のテーブルを使用してテーブルの列ヘッダーを検出するステップ、およびナレッジベースを使用してテーブルの列ヘッダーを検出するステップを含む。
【０００８】
[0009]この概要は、発明を実施するための形態において以下でさらに説明される簡略化された形で一連の概念を紹介するために提供される。この課題を解決するための手段は、請求の範囲に係る主題の主要特徴または重要特徴を特定することを意図されておらず、また請求の範囲に係る主題の範囲を決定する際の補助として使用されることも意図されてはいない。
【０００９】
[0010]本発明の追加の特徴および利点は、後段の説明において示され、部分的には説明から明らかとなるか、または本発明の実施により理解されるであろう。本発明の特徴および利点は、添付の特許請求の範囲において具体的に指摘される機器および組合せを用いて実現され取得されてもよい。本発明のこれらおよび他の特徴は、後続の説明および添付の特許請求の範囲からより完全に明らかとなるか、または以下に示される本発明の実施により理解されよう。
【００１０】
[0011]本発明の前述ならびに他の利点および特徴が取得され得る方法を説明するため、上記で簡単に説明された本発明のさらに具体的な説明は、添付の図面において例示されるその特定の実施態様を参照することによって行われるであろう。それらの図面が本発明の一部の実施態様を示すに過ぎず、したがってその範囲を限定するものとみなされるべきではないことを理解すれば、本発明は、添付の図面を使用することでさらなる具体性および詳細をもって記述され説明されるであろう。
【図面の簡単な説明】
【００１１】
【図１】[0012]構造化データの１つまたは複数のデータセットからの１つまたは複数のインデックスの構築を容易にする例示のコンピューターアーキテクチャを示す図である。
【図２】[0013]テーブルの件名列の識別を容易にする例示のコンピューターアーキテクチャを示す図である。
【図３】[0014]テーブルの件名列を識別するための例示の方法を示す流れ図である。
【図４】[0015]テーブルの列ヘッダーの検出を容易にする例示のコンピューターアーキテクチャを示す図である。
【図５】[0016]テーブルの列ヘッダーを検出するための例示の方法を示す流れ図である。
【図６】[0017]例示のテーブルを示す図である。
【図７】[0018]インスタンスのセットから概念を推論するために使用されるさまざまな式を示す図である。
【図８】[0019]例示のヘッダー行を示す図である。
【図９】[0020]抽出された属性の典型性スコアを計算するために使用されるさまざまな式を示す図である。
【図１０】[0021]例示のテーブルを示す図である。
【図１１】[0022]テーブルの理解を容易にする例示のアーキテクチャを示す図である。
【発明を実施するための形態】
【００１２】
[0023]本発明は、検索のテーブルを理解するための方法、システム、およびコンピュータープログラム製品に及ぶ。本発明の態様は、テーブルの件名列を識別するステップ、その他のテーブルを使用してテーブルの列ヘッダーを検出するステップ、およびナレッジベースを使用してテーブルの列ヘッダーを検出するステップを含む。
【００１３】
[0024]本発明の実施態様は、たとえば、後段においてさらに詳細に説明される、１つまたは複数のプロセッサーおよびシステムメモリのような、コンピューターハードウェアを含む専用または汎用コンピューターを備えるかまたは利用することができる。本発明の範囲内の実施態様はまた、コンピューター実行可能命令および／またはデータ構造を搬送または格納するための物理およびその他のコンピューター可読媒体を含む。そのようなコンピューター可読媒体は、汎用または専用コンピューターシステムによってアクセスされ得る任意の使用可能な媒体であってもよい。コンピューター実行可能命令を格納するコンピューター可読媒体は、コンピューターストレージ媒体（デバイス）である。コンピューター実行可能命令を搬送するコンピューター可読媒体は、送信媒体である。したがって、限定的ではなく、一例として、本発明の実施態様は、コンピューターストレージ媒体（デバイス）および送信媒体という少なくとも２つの明瞭に異なる種類のコンピューター可読媒体を備えることができる。
【００１４】
[0025]コンピューターストレージ媒体（デバイス）は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、ソリッドステートドライブ（「ＳＳＤ」）（たとえば、ＲＡＭベース）、フラッシュメモリ、相変化メモリ（「ＰＣＭ」）、その他のタイプのメモリ、その他の光ディスクストレージ、磁気ディスクストレージまたはその他の磁気ストレージデバイス、もしくはコンピューター実行可能命令またはデータ構造の形態をとる望ましいプログラムコード手段を格納するために使用され得る、汎用または専用コンピューターによってアクセスされ得る任意の他の媒体を含む。
【００１５】
[0026]「ネットワーク」は、コンピューターシステムおよび／またはモジュールおよび／またはその他の電子デバイスの間の電子データのトランスポートを可能にする１つまたは複数のデータリンクとして定義される。情報がネットワークまたは別の通信接続（有線、無線、または、有線もしくは無線の組合せのいずれか）を介してコンピューターに転送または提供される場合、コンピューターは、適正に、接続を送信媒体とみなす。送信媒体は、コンピューター実行可能命令またはデータ構造の形態をとる望ましいプログラムコード手段を搬送するために使用され得る、汎用または専用コンピューターによってアクセスされ得るネットワークおよび／またはデータリンクを含むことができる。上記の組合せも、コンピューター可読媒体の範囲に含まれるものとする。
【００１６】
[0027]さらに、さまざまなコンピューターシステムコンポーネントに到達すると、コンピューター実行可能命令またはデータ構造の形態をとるプログラムコード手段は、送信媒体からコンピューターストレージ媒体（デバイス）に（またはその逆に）自動的に転送されてもよい。たとえば、ネットワークまたはデータリンクを介して受信されたコンピューター実行可能命令またはデータ構造は、ネットワークインターフェイスモジュール（たとえば、「ＮＩＣ」）内のＲＡＭにバッファされてもよく、次いでコンピューターシステムＲＡＭおよび／またはコンピューターシステムにおいてより揮発性の低いコンピューターストレージ媒体（デバイス）に最終的に転送されてもよい。したがって、コンピューターストレージ媒体（デバイス）は、送信媒体も（または主としても）利用するコンピューターシステムコンポーネントに含まれ得ることを理解されたい。
【００１７】
[0028]コンピューター実行可能命令は、たとえば、プロセッサーにおいて実行されるとき、汎用コンピューター、専用コンピューター、または専用処理デバイスに、特定の機能または機能のグループを実行させる命令およびデータを備える。コンピューター実行可能命令は、たとえば、アセンブリ言語、またはソースコードのような、バイナリ、中間形式の命令であってもよい。主題は構造的特徴および／または方法論的動作に固有の用語で説明されたが、添付の特許請求の範囲に定義された主題が上記で説明された特徴または動作に必ずしも限定されないことを理解されたい。より正確に言えば、説明された特徴および動作は、特許請求の範囲を実施する例示の形態として開示される。
【００１８】
[0029]当業者であれば、本発明が、パーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、メッセージプロセッサー、ハンドヘルドデバイス、マルチプロセッサーシステム、マイクロプロセッサーベースまたはプログラマブル家庭用電化製品、ネットワークＰＣ、マイクロコンピューター、メインフレームコンピューター、携帯電話、ＰＤＡ、タブレット、ページャー、ルーター、スイッチなどを含む、多くのタイプのコンピューターシステム構成を備えるネットワークコンピューティング環境において実施され得ることを理解するであろう。本発明はまた、ネットワークを通じて（有線データリンク、無線データリンク、または有線データリンクと無線データリンクとの組合せのいずれかによって）リンクされるローカルコンピューターシステムおよびリモートコンピューターシステムが共にタスクを実行する分散システム環境において実施されてもよい。分散システム環境において、プログラムモジュールは、ローカルおよびリモートのメモリストレージデバイスに配置されてもよい。
【００１９】
[0030]本発明はまた、クラウドコンピューティング環境において実施されてもよい。この説明および後段の特許請求の範囲において、「クラウドコンピューティング」は、構成可能コンピューティングリソースの共有プールへのオンデマンドネットワークアクセスを可能にするモデルとして定義される。たとえば、クラウドコンピューティングは、構成可能コンピューティングリソースの共有プールへのユビキタスで便利なオンデマンドアクセスを提供するために市場において採用されてもよい。構成可能コンピューティングリソースの共有プールは、仮想化を介して迅速にプロビジョニングされ、少ない管理労力またはサービスプロバイダの相互作用によりリリースされ、それに応じて拡大縮小されてもよい。
【００２０】
[0031]クラウドコンピューティングモデルは、たとえば、オンデマンドセルフサービス、幅広いネットワークアクセス、リソースプーリング、迅速な弾力性（ｅｌａｓｔｉｃｉｔｙ）、メジャードサービス（ｍｅａｓｕｒｅｄ  ｓｅｒｖｉｃｅ）などのような、さまざまな特性で構成されてもよい。クラウドコンピューティングモデルはまた、たとえば、サービスとしてのソフトウェア（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）（「ＳａａＳ」）、サービスとしてのプラットフォーム（Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）（「ＰａａＳ」）、およびサービスとしてのインフラストラクチャ（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）（「ＩａａＳ」）のような、さまざまなサービスモデルを公開することができる。クラウドコンピューティングモデルはまた、プライベートクラウド、コミュニティクラウド、パブリッククラウド、ハイブリッドクラウドなどのような、さまざまな配置モデルを使用して配置されてもよい。この説明および特許請求の範囲において、「クラウドコンピューティング環境」とは、クラウドコンピューティングが採用される環境である。
【００２１】
[0032]これらの説明および後段の特許請求の範囲において、「テーブル」とは、縦方向の列および横方向の行のモデルを使用するデータ要素（値）のセットとして定義される。行と列との各交差点は、セルを表す。行は、たとえばキーインデックスとして識別される、指定された列サブセットに表示される値によって識別されてもよい。テーブルは、データベース、Ｗｅｂページ、キュレーションされたデータセット内に見られ、画像（たとえば、ホワイトボード）から取り込まれ、その他のファイル（たとえば、Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ（「ＰＤＦ」）ファイル）に見られるか、またはその他のソースなどに見られる。本発明の態様は、これらのソースのいずれかからのテーブルを理解するために使用され得る。
【００２２】
[0033]テーブルの１つまたは複数の列は、件名列であってもよい。件名列は、テーブルが関連するエンティティの名前を含む。テーブルのその他の列は、件名列のエンティティの関係またはプロパティを表す。件名列は、近似キーとして表示されてもよい。
【００２３】
[0034]テーブルの行は、列ヘッダーであってもよい。テーブルの列ヘッダーは、テーブルの列の名前を含む。
[0035]図１０を一時的に参照すると、図１０は、テーブル１０００を表す。テーブル１０００は、件名列１０２１「郡名」および列ヘッダー１０２２を有する。
【００２４】
[0036]本発明の態様は、テーブルの件名列を識別するステップ、その他のテーブルを使用してテーブルの列ヘッダーを検出するステップ、およびナレッジベースを使用して列ヘッダーを検出するステップを含む。
【００２５】
[0037]インデックス構築アーキテクチャ
[0038]図１は、構造化データの１つまたは複数のデータセットからの１つまたは複数のインデックスの構築を容易にする例示のコンピューターアーキテクチャ１００を示す。図１を参照すると、コンピューターアーキテクチャ１００は、テーブル抽出および分類モジュール１０１、テーブル理解モジュール１０２、テーブル注釈モジュール１０３、特徴計算モジュール１０４、インデックス構築モジュール１０６、Ｗｅｂスナップショット１１１、キュレーションされたデータセット１１２、クリックログ１１３、ナレッジベース１１４、ならびにインデックス１２１、１２２、および１２３を含む。テーブル抽出および分類モジュール１０１、テーブル理解モジュール１０２、テーブル注釈モジュール１０３、特徴計算モジュール１０４、インデックス構築モジュール１０６、Ｗｅｂスナップショット１１１、キュレーションされたデータセット１１２、クリックログ１１３、ナレッジベース１１４、ならびにインデックス１２１、１２２、および１２３の各々は、たとえば、ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、およびインターネットのようなネットワークを介して相互に接続されてもよい（またはネットワークの一部であってもよい）。したがって、テーブル抽出および分類モジュール１０１、テーブル理解モジュール１０２、テーブル注釈モジュール１０３、特徴計算モジュール１０４、インデックス構築モジュール１０６、Ｗｅｂスナップショット１１１、キュレーションされたデータセット１１２、クリックログ１１３、ナレッジベース１１４、ならびにインデックス１２１、１２２、および１２３、加えて任意の他の接続されたコンピューターシステムおよびそれらのコンポーネントの各々は、メッセージ関連データを作成し、ネットワークを介してメッセージ関連データ（たとえば、インターネットプロトコル（「ＩＰ」）データグラム、および伝送制御プロトコル（「ＴＣＰ」）、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）、簡易メール転送プロトコル（「ＳＭＴＰ」）などのようなＩＰデータグラムを利用するか、またはその他の非データグラムプロトコルを使用するその他の上位レイヤプロトコル）を交換することができる。
【００２６】
[0039]一般に、コンピューターアーキテクチャ１００は、Ｗｅｂスナップショット１１１、および場合によっては１つまたは複数のキュレーションされたデータセット１１２も活用して、インデックス１２１、１２２、および１２３の１つまたは複数を構築することができる。コンピューターアーキテクチャ１００は、Ｗｅｂスナップショット１１１および／または１つまたは複数のキュレーションされたデータセット１１２からテーブル（たとえば、Ｗｅｂテーブル）を抽出し、抽出されたテーブルを理解および注釈付けして、インデックス１２１、１２２、および１２３の１つまたは複数をテーブルの理解／注釈に基づいて構築することができる。次いで、インデックス１２１、１２２、および１２３は、ユーザークエリーに対する候補結果を取得し、関連性に基づいて候補結果テーブルをランク付けするために、インデックスサーブコンポーネントによって使用されてもよい。インデックス１２１、１２２、および１２３の各々は、たとえば、トークンを識別子にマップし、トークンの文書頻度逆数を含む文字列マッピングインデックス、ユーザークエリーの上位ランク付けテーブルを取得するために使用され得るキーワード（逆）もしくは特徴インデックス、または取得したテーブルのプレビュー／スニペットを生成し、要求時に完全なテーブルを取り出すために使用され得るテーブルコンテンツインデックスのような、さまざまなタイプのインデックスであってもよい。
【００２７】
[0040]コンピューターアーキテクチャ１００内で、テーブル抽出および分類モジュール１０１は、Ｗｅｂスナップショット１１１および／またはキュレーションされたデータセット１１２を入力として受信することができる。Ｗｅｂスナップショット１１１は、テーブル（たとえば、Ｗｅｂテーブル）をハイパーテキストマークアップ言語（ＨＴＭＬ）形式で含むことができる。キュレーションされたデータセット１１２は、たとえば、ｄａｔａ．ｇｏｖまたはＷｏｒｌｄ  Ｂａｎｋからのデータのような、サイト固有の形式でテーブルを含むことができる。Ｗｅｂスナップショット１１１およびキュレーションされたデータセット１１２は、サイトをスクレーピングし、それらのサイトの形式を理解し、テーブルを抽出するラッパーおよび／またはクローラーを使用して作成されてもよい。たとえば、Ｗｅｂスナップショット１１１は、インターネットのスクレーピングから作成されてもよい。したがって、Ｗｅｂスナップショット１１１は、Ｗｅｂテーブルを含むことができる。Ｗｅｂテーブルは、リレーショナルまたは非リレーショナルであってもよい。一部のテーブルは、件名列および列ヘッダーを明示的に定義することができる。その他のテーブルは、件名列および／または列ヘッダーの明示的な定義が不足していることもある。
【００２８】
[0041]テーブル抽出および分類モジュール１０１は、Ｗｅｂスナップショット１１１および／またはキュレーションされたデータセット１１２からテーブルを抽出することができる。テーブル抽出および分類モジュール１０１は、たとえば、ナビゲーション／レイアウトの目的で使用されるテーブルのような、値のないテーブルを除去することができる。残りのテーブルから、テーブル抽出および分類モジュール１０１は、リレーショナルテーブルおよび／または非リレーショナルテーブルとしてテーブルを分類することができる。１つの態様において、テーブル抽出および分類モジュール１０１はまた、非リレーショナルテーブルを除去する。テーブル抽出および分類モジュール１０１は、コンピューターアーキテクチャ１００内の他のモジュールが使用するように、テーブル（たとえば、リレーショナルテーブル）を出力することができる。
【００２９】
[0042]クリックログ１１３は、複数のネットワークユーザーについてログが記録されたリンク選択情報（「クリック」）を含むことができる。インターネットの場合、クリックログ１１３は、さらに多数のユーザーについてのリンク選択情報を含むことができる。ナレッジベース１１４は、ナレッジベースのさまざまなクラスを含むことができる。ナレッジベースの１つのクラスは、たとえば、Ｗｅｂスナップショット１１１および／またはキュレーションされたデータセット１１２内のＷｅｂテーブルのような、エンティティおよび／またはエンティティ間の関係に関する構造化情報を含むことができる。たとえば、ナレッジベースは、エンティティ名、エンティティタイプ、エンティティ属性、およびエンティティ属性の値を含む、テーブルエンティティに関する情報を含むことができる。ナレッジベースのもう１つのクラスは、（たとえば、テキストパターンを使用して）Ｗｅｂドキュメントから抽出されるものである。
【００３０】
[0043]テーブル理解モジュール１０２は、テーブル抽出および分類モジュール１０１によって抽出されたテーブル（たとえば、Ｗｅｂテーブル、リレーショナルテーブルなど）を入力として受信することができる。テーブル理解モジュール１０２は、テーブルを理解するために多種多様なテーブル理解アルゴリズムを使用することができる。一部のテーブルは、明示的に定義された件名列および／または明示的に定義された列ヘッダーが不足している場合がある。そのようなものとして、テーブル理解アルゴリズムは、テーブルがそのような情報を明示的に定義していない場合、テーブルの件名列を識別するように、および／またはテーブルの列ヘッダーを検出するように構成されてもよい。テーブル理解モジュール１０２は、クリックログ１１３およびナレッジベース１１４を使用して、テーブルの理解を支援することができる。テーブル理解モジュール１０２は、テーブルの識別された件名列および検出された列ヘッダーを出力することができる。
【００３１】
[0044]テーブル注釈モジュール１０３は、テーブル抽出および分類モジュール１０１によって抽出されたテーブル（たとえば、Ｗｅｂテーブル、リレーショナルテーブルなど）を受信することができる。テーブル注釈モジュール１０３はまた、テーブルの識別された件名列および検出された列ヘッダーを（たとえば、テーブル理解モジュール１０２から）受信することができる。テーブル注釈モジュール１０３は、多種多様なテーブル注釈アルゴリズムを使用して、テーブルに関連付けられていると明示的には定義されていない関連コンテンツでテーブルに注釈を付けることができる。たとえば、テーブルを含むＷｅｂページ上で、＜ｔａｂｌｅ＞および＜／ｔａｂｌｅ＞タグ内のコンテンツ（たとえば、セル値および列名）は、キーワードおよびデータ探知検索をサポートする際に有用となり得る。
【００３２】
[0045]しかし、＜ｔａｂｌｅ＞および＜／ｔａｂｌｅ＞タグ内にないキーワードおよびデータ探知検索をサポートする際に有用な追加のコンテンツがあってもよい。たとえば、追加のコンテンツは、＜ｔａｂｌｅ＞および＜／ｔａｂｌｅ＞タグの外部のＷｅｂページ上にあってもよく、追加のコンテンツはＷｅｂページへのリンクを含む他のＷｅｂページ内にあってもよく、追加のコンテンツは、クリックログデータ内にあってもよい、などである。そのようなものとして、テーブル注釈アルゴリズムは、この追加のコンテンツを識別して、対応するテーブルに追加のコンテンツで注釈を付けるように構成されてもよい。その後、インデックス構築モジュール１０６は、この追加のコンテンツならびに＜ｔａｂｌｅ＞および＜／ｔａｂｌｅ＞タグ内のコンテンツにわたり逆インデックスを生成することができる。
【００３３】
[0046]テーブル注釈モジュール１０３は、クリックログ１１３およびナレッジベース１１４を使用して、追加のコンテンツの識別および対応するテーブルへの追加のコンテンツでの注釈付けを支援することができる。テーブル注釈モジュール１０３は、対応する追加のコンテンツで注釈を付けられたテーブルを出力することができる。
【００３４】
[0047]特徴計算モジュール１０４は、テーブル（たとえば、Ｗｅｂテーブル、リレーショナルテーブルなど）を受信することができる。特徴計算モジュール１０４は、テーブルの（静的）特徴を計算するためにさまざまな特徴計算アルゴリズムを使用することができる。計算された（静的）特徴は、ランク付けに使用されてもよい。たとえば、特徴計算モジュール１０４は、関連するランク付けに使用するためにＷｅｂテーブルの静的（つまり、クエリに非依存の）特徴を計算することができる。ランク付けは、多くのＷｅｂテーブルが検索クエリを満足する場合に、より優れた（たとえば、より有名な、より評判のよい、またはより関連性のある）Ｗｅｂテーブルの表面化を支援するために使用されてもよい。特徴計算モジュール１０４は、テーブルの計算された（静的）特徴を出力することができる。
【００３５】
[0048]特徴計算モジュール１０４は、注釈付きまたは注釈なしのテーブルと共に使用されてもよい。特徴計算モジュール１０４が注釈付きテーブルを受信すると、さまざまな特徴計算アルゴリズムは、注釈に含まれる追加のコンテンツを使用して（静的）特徴を計算することができる。
【００３６】
[0049]インデックス構築モジュール１０６は、テーブル（たとえば、Ｗｅｂテーブル、リレーショナルテーブルなど）を受信することができる。インデックス構築モジュール１０６は、さまざまなインデックス構築アルゴリズムを使用して、受信したテーブルからインデックス１２１、１２２、および１２３の１つまたは複数を構築することができる。インデックス構築モジュール１０６は、注釈付きまたは注釈なしのテーブルを受信することができる。インデックス構築モジュール１０６が注釈付きテーブルを受信すると、さまざまなインデックス構築アルゴリズムは、インデックスを構築する場合に、注釈に含まれる追加のコンテンツを使用することができる。インデックス構築モジュール１０６はまた、テーブルの計算された（静的）特徴にアクセスすることができる。インデックス構築モジュール１０６がテーブルの計算された（静的）特徴にアクセスすると、さまざまなインデックス構築アルゴリズムは、インデックスを構築する場合に、計算された（静的）特徴を使用することができる。
【００３７】
[0050]次いで、インデックスは、キーワード検索およびデータ探知データ検索を含む検索を容易にするために使用されてもよい。キーワード検索は、ユーザーが「アフリカ諸国のＧＤＰ」のようなキーワードクエリを検索エンジン（またはその他の類似するシステムもしくはモジュール）に入力することを含む。検索エンジン（またはその他の類似するシステムもしくはモジュール）は、ユーザーの情報ニーズを適切に満たすランク付けされたテーブルのリストを返す。データ探知データ検索は、ユーザーが（たとえば、スプレッドシートから）エンティティのセット、およびオプションとして追加のキーワードを検索エンジン（またはその他の類似するシステムもしくはモジュール）に指定することを含む。検索エンジン（またはその他の類似するシステムもしくはモジュール）は、指定されたエンティティのセットに対する要求された情報を含むテーブルを返す。
【００３８】
[0051]件名列の識別
[0052]図２は、テーブルの件名列の識別を容易にする例示のコンピューターアーキテクチャ２００を示す。図２を参照すると、コンピューターアーキテクチャ２００は、候補列選択モジュール２０１、スコア計算モジュール２０２、および件名列選択モジュール２０３を含む。候補列選択モジュール２０１、スコア計算モジュール２０２、および件名列選択モジュール２０３の各々は、たとえばローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、および、さらにはインターネットなどのような、ネットワークを介して相互に接続されてもよい（またはネットワークの一部であってもよい）。したがって、候補列選択モジュール２０１、スコア計算モジュール２０２、および件名列選択モジュール２０３、ならびに任意の他の接続されたコンピューターシステムおよびそれらのコンポーネントの各々は、メッセージ関連データを作成し、ネットワークを介してメッセージ関連データ（たとえば、インターネットプロトコル（「ＩＰ」）データグラム、および伝送制御プロトコル（「ＴＣＰ」）、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）、簡易メール転送プロトコル（「ＳＭＴＰ」）などのようなＩＰデータグラムを利用するか、またはその他の非データグラムプロトコルを使用するその他の上位レイヤプロトコル）を交換することができる。
【００３９】
[0053]候補列選択モジュール２０１、スコア計算モジュール２０２、および件名列選択モジュール２０３は、テーブル理解モジュール１０２に含まれてもよい。あるいは、候補列選択モジュール２０１、スコア計算モジュール２０２、および件名列選択モジュール２０３は、テーブル理解モジュール１０２の外部で動作することができる。
【００４０】
[0054]候補列選択モジュール２０１は、テーブル（たとえば、Ｗｅｂテーブル）を受信して、テーブルの１つまたは複数の列を候補件名列として選択するように構成される。候補選択モジュール２０１は、１つまたは複数の選択考慮事項に基づいて、列を候補件名列として選択することができる。候補列選択モジュール２０１は、ある列を、いくつの他の列がテーブルの左側から引き離しているかを検討することができる。少なくとも一部のテーブルでは、左端の列が件名列であることが多い。
【００４１】
[0055]候補列選択モジュール２０１は、列が数値列または非数値列であるかどうかを検討することができる。少なくとも一部のテーブルでは、件名列は非数値であることが多い。そのようなものとして、候補列選択モジュールは、列が数値または非数値であるかどうかを検討することができる。候補列選択モジュール２０１は、列が数値であるかどうかのスコアを計算することができる。先行および後続のトークンは、列の値から除去されてもよい。たとえば、収益または価格情報を伴う列は、＄またはｍｉｌを先行／後続トークンとして含むことがある。これらのトークンは、代表データを公開するために除去されてもよい。列の場合、数値であるセルの数の割合が計算されてもよい。たとえば、列が１００セルを有し、８０セルが数値の値を有する場合、セルの８０％が数値である。指定されたしきい値を超える数値セルを有すると決定された列は、件名列としてのさらなる検討から除外されてもよい。
【００４２】
[0056]したがって、非数値列について、候補列選択モジュール２０１は、ある列を、いくつの他の列がテーブルの左から引き離しているかを検討することができる。
[0057]候補列選択モジュール２０１は、列内のセル値の個別性を検討することができる。少なくとも一部のテーブルでは、件名列は近似キーである（つまり、件名列は、ほぼ個別の値を含むが、一部重複を含むこともある）。セルの合計数に対する個別のセル値の数の比率、最も繰り返される値の出現数などを含む、個別性の複数の異なる測度が、列について検討されてもよい。
【００４３】
[0058]スコア計算モジュール２０２は、候補列の値が他のテーブルの件名列においてどのくらいの頻度で共起（ｃｏ−ｏｃｃｕｒ）するかを決定するように構成される。少なくとも一部のテーブルでは、テーブルの列は、件名列のエンティティのプロパティ／関係である。たとえば、首都の列は、対応する件名列の州のプロパティ／関係であってもよい。そのようなものとして、真の件名列の値は、非件名列の値とより頻繁に比較される列名と共起することができる。
【００４４】
[0059]スコア計算モジュール２０２は、各候補列について列スコアを計算することができる。１つの態様において、スコア計算モジュール２０２は、指定された個別性しきい値（たとえば、７）を超えるＮ（たとえば、３つ）の左端の非数値列を、候補件名列として選択する。各候補件名列について、スコア計算モジュール２０２は、候補件名列の各値が他の（複数の）テーブルのセットにわたり各列名と共に何回出現するかを計算する。各値／列名について、共起の回数は、他の（複数の）テーブルのセットにわたる値の出現回数で除算されて、共起率が得られる。たとえば、値が５０のテーブルの件名列において出現し、合計５００のテーブルで出現する場合、共起率は５０／５００＝０．１（または１０％）である。
【００４５】
[0060]スコア計算モジュール２０２は、列内の各値について共起率を使用して、列の列スコアを計算することができる。たとえば、Ｖ１、Ｖ２、．．．、Ｖｎは、列内の値のセットを表すことができる。Ｃ１、Ｃ２、．．．、Ｃｍは、列名であってもよい。したがって、ｆ（Ｖｉ、Ｃｊ）は、件名列においてＶｉを含む可能性の高いテーブルの共起率を表し、ここでＣｊは列の名前である。１つまたは複数の集約関数は、列のｆ（Ｖｉ、Ｃｊ）のすべてから列の列スコアを計算するために使用されてもよい。一部の値および列名は、末尾値／列名であってもよいので、たとえより高いｆ（Ｖｉ、Ｃｊ）を伴う少数の値／列名であっても、より高い全体スコアに寄与することができる。１つの集約関数は、列の共起率の指定された上位数の平均をとることによって、列の列スコアを計算する。
【００４６】
[0061]代替として、および／または組合せて、スコア計算モジュール２０２はまた、ナレッジベース内のテーブル（たとえば、Ｗｅｂテーブル）のエンティティおよび列名の共起を検討することもできる。テーブル（たとえば、Ｗｅｂテーブル）の列は、件名列のエンティティのプロパティ／関係である。そのようなものとして、列名は、ナレッジベース内の同じ概念／タイプ内で出現することができる。スコア計算モジュール２０２は、エンティティおよび列名との重複を取り込む任意の潜在的概念（つまり、エンティティと重複するもの）について概念スコアを計算することができる。最も適切な（たとえば、最も高い）概念スコアを伴う列が、選択されてもよい。
【００４７】
[0062]スコア計算モジュール２０２はまた、ナレッジベースを使用して、候補件名列名の値が、テーブルと一致するナレッジベースの属性を有するかどうか決定することができる。テーブルと一致するナレッジベース属性は、テーブル内の複数の件名列を識別するために使用されてもよい。たとえば、スコア計算モジュール２０２は、テーブル内のエンティティ−属性の関係を学習することができる。つまり、テーブルは州に関するものであってもよく、さらに列「州都」を有してもよく、「州都」列の次に州都人口である人口列（州人口には異なる列があってもよい）を有してもよい。
【００４８】
[0063]件名列選択モジュール２０３は、列および／または列の概念スコアを受信するように構成される。受信したスコアから、件名列選択モジュール２０３は、１つまたは複数の列を、件名列として選択することができる。たとえば、列スコアおよび／または概念スコアに基づいて、件名列選択モジュール２０３は、列を、件名列として、または非件名列として分類することができる。
【００４９】
[0064]図３は、テーブルの件名列を識別するための例示の方法３００を示す流れ図である。方法３００は、コンピューターアーキテクチャ２００のコンポーネントおよびデータに関して説明される。
【００５０】
[0065]方法３００は、件名列候補として、テーブルから指定された数の列を選択するステップであって、各件名列候補は、テーブルの件名列の候補であり、各件名列候補は、複数の値を含む、ステップ（３０１）を含む。たとえば、候補列選択モジュール２０１は、テーブル２１１（たとえば、Ｗｅｂテーブル）にアクセスすることができる。示されているように、テーブル２１１は、列２２１、２２２、２２３、２２４、２２５などを含む。各列は、複数の値を含む。列２２１は、値２２１Ａ、２２１Ｂ、２２１Ｃ、２２１Ｄなどを含む。列２２２は、値２２２Ａ、２２２Ｂ、２２２Ｃ、２２２Ｄなどを含む。列２２３は、値２２３Ａ、２２３Ｂ、２２３Ｃ、２２３Ｄなどを含む。列２２４は、値２２４Ａ、２２４Ｂ、２２４Ｃ、２２４Ｄなどを含む。列２２５は、値２２５Ａ、２２５Ｂ、２２５Ｃ、２２５Ｄなどを含む。
【００５１】
[0066]候補列選択モジュール２０１は、列２２１および２２３を、候補件名列として選択することができる。たとえば、列２２１および２２３は、テーブル２２１の左端のＮ個の非数値列内にあってもよく、列２２１および２２３の値はまた、個別性しきい値を満たすことができる。候補列選択モジュール２０１は、列２２１および２２３を、スコア計算モジュール２０２に送信することができる。一方、列２２２は数値列である、および／または列２２２の値は十分に個別ではない場合もある。そのようなものとして、列２２２は、候補件名列が検討されない。
【００５２】
[0067]スコア計算モジュール２０２は、候補列選択モジュール２０１から列２２１および２２３を受信することができる。
[0068]方法３００は、各件名列候補について、複数の他のテーブルにわたり１つまたは複数の列名とペアにされている複数の値から任意の値の出現を識別するステップ（３０２）を含む。たとえば、列２２１について、スコア計算モジュール２０２は、テーブルセット２１２内のテーブルのいずれかの列名とペアにされている値２２１Ａ、２２１Ｂ、２２１Ｃ、２２１Ｄなどの任意の出現を識別することができる。同様に、列２２３について、スコア計算モジュール２０２は、テーブルセット２１２内のテーブルのいずれかの列名とペアにされている値２２３Ａ、２２３Ｂ、２２３Ｃ、２２３Ｄなどの任意の出現を識別することができる。１つの態様において、テーブルセット２１２は、複数のリレーショナルＷｅｂテーブルを含む。
【００５３】
[0069]方法３００は、各件名列候補について、識別された出現に基づいて件名候補列のスコアを計算するステップであって、計算されたスコアは、候補列が件名列である尤度を指示する、ステップ（３０３）を含む。たとえば、スコア計算モジュール２０２は、列２２１のスコア２３１を計算することができ、列２２３のスコア２３３を計算することができる。
【００５４】
[0070]一部の態様において、代替として、および／または組合せて、スコア計算モジュール２０２は、それぞれスコア２３１および２３３を計算する場合、ナレッジベース２１４の同じ概念／タイプ内のエンティティでの列２２１および２２３の値の出現を検討する。
【００５５】
[0071]スコア計算モジュール２０２は、列２２１／スコア２３１および列２２３／スコア２３３を、件名列選択モジュール２０３に送信することができる。件名列選択モジュール２０３は、スコア計算モジュール２０２から列２２１／スコア２３１および列２２３／スコア２３３を受信することができる。
【００５６】
[0072]方法３００は、計算されたスコアに従って、件名列候補の少なくとも１つを、テーブルの件名列として選択するステップ（３０４）を含む。たとえば、件名列選択モジュール２０３は、スコア２３１および２３３に従って、列２２３を件名列として分類することができる。列２２３の件名列としての選択は、テーブル注釈モジュール１０３、特徴計算モジュール１０４、およびインデックス構築モジュール１０６の１つまたは複数に送信されてもよい。
【００５７】
[0073]一部の実施態様において、複数の件名列が識別される。たとえば、テーブルは、たとえばさまざまな言語で、省略形を使用して、などのような、テーブルの件名を参照する複数の方法を含むことができる。また、件名列は、たとえば姓および名のように、複数の列の間で分割される場合もある。
【００５８】
[0074]件名列検出の場合、Ｗｅｂテーブルのコーパスにおける列名のペアの共起もまた活用される。候補件名列の列名ペアが多少定期的に出現する場合、これが件名列およびその件名に属する属性である尤度は増大している。実際のセル値もまた、同様に検討されてもよい。
【００５９】
[0075]そのようなものとして、件名列を識別することは、次いでその他の列が件名列の属性であることが決定され得るので、有用である。ユーザーは、固有の属性を検索することができる。ユーザーが、各自のテーブルを有する場合、件名列検索は、データ探知データ検索について実行されてもよい。たとえば、ユーザーは、特定の件名に関連するスプレッドシートで作業している場合もある。ユーザーは、特定の件名をカバーし、母集団を有するテーブルを検索するために、「人口を追加」を入力することができる。
【００６０】
[0076]テーブルを使用する列ヘッダー検出
[0077]図４は、テーブルの列ヘッダーの検出を容易にする例示のコンピューターアーキテクチャ４００を示す。図４を参照すると、コンピューターアーキテクチャ４００は、候補列名構築モジュール４０１、頻度計算モジュール４０２、および列ヘッダー検出モジュール４０３を含む。候補列名構築モジュール４０１、頻度計算モジュール４０２、および列ヘッダー検出モジュール４０３の各々は、たとえばローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、およびインターネットなどのような、ネットワークを介して相互に接続されてもよい（またはネットワークの一部であってもよい）。したがって、候補列名構築モジュール４０１、頻度計算モジュール４０２、および列ヘッダー検出モジュール４０３、ならびに任意の他の接続されたコンピューターシステムおよびそれらのコンポーネントの各々は、メッセージ関連データを作成し、ネットワークを介してメッセージ関連データ（たとえば、インターネットプロトコル（「ＩＰ」）データグラム、および伝送制御プロトコル（「ＴＣＰ」）、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）、簡易メール転送プロトコル（「ＳＭＴＰ」）などのようなＩＰデータグラムを利用するか、またはその他の非データグラムプロトコルを使用するその他の上位レイヤプロトコル）を交換することができる。
【００６１】
[0078]候補列名構築モジュール４０１、頻度計算モジュール４０２、および列ヘッダー検出モジュール４０３は、テーブル理解モジュール１０２に含まれてもよい。あるいは、候補列名構築モジュール４０１、頻度計算モジュール４０２、および列ヘッダー検出モジュール４０３は、テーブル理解モジュール１０２の外部で動作することができる。
【００６２】
[0079]候補列名構築モジュール４０１は、テーブル定義データから候補列名を構築するように構成される。テーブル定義データは、テーブルを定義するデータ、およびテーブルから導かれたデータを含むことができる。候補列名構築モジュール４０１は、明示的列ヘッダー（たとえば、＜ｔｈ＞または＜ｔｈｅａｄ＞ハイパーテキストマークアップ言語（ＨＴＭＬ）タグ内）で出現する列名、および／またはテーブル内のデータの第１行で出現する列名を含む候補列名のセットを作成することができる。
【００６３】
[0080]頻度計算モジュール４０２は、任意のテーブルで（たとえば、テーブルセット４２４で）列名またはセル値として出現する各文字列について出現の頻度を計算するように構成されてもよい。頻度計算モジュール４０２は、文字列を候補列名として含むテーブルの数（ＣＣＮＦｒｅｑ）、および文字列をそれ以外の場合に含む（つまり、候補列名としてではなく）テーブルの数（Ｎｏｎ−ＣＣＮＦｒｅｑ）を計算することができる。
【００６４】
[0081]列ヘッダー検出モジュール４０３は、テーブル内の文字列に対するＣＣＮＦｒｅｑおよびＮｏｎ−ＣＣＮＦｒｅｑに基づいて列ヘッダーとしてテーブルの行を検出するように構成されてもよい。たとえば、データの第１行の文字列（値）が、Ｎｏｎ−ＣＣＮＦｒｅｑよりも高いＣＣＮＦｒｅｑを有する場合、第１行は列ヘッダーである可能性がより高い。
【００６５】
[0082]さらに具体的には、たとえば、Ｖ１、Ｖ２、．．．、Ｖｎは、テーブルの第１のデータ行内の値を表すことができる。ＣＣＮＦｒｅｑ（Ｖｉ）は、Ｖｉが出現するテーブルの数を、明示的列ヘッダー（たとえば、＜ｔｈ＞または＜ｔｈｅａｄ＞内）として、またはデータの第１行（たとえば、列ヘッダーが明示的に定義されない場合）として指示する。Ｎｏｎ−ＣＣＮＦｒｅｑ（Ｖｉ）は、明示的ヘッダーまたはデータの第１行として以外に、Ｖｉが出現するテーブルの数を指示する。行は、ＣＣＮＦｒｅｑ（Ｖｉ）＞Ｎｏｎ−ＣＣＮＦｒｅｑ（Ｖｉ）である値Ｖｉの割合が指定されたしきい値（たとえば、５）を超える場合に、列ヘッダーとして選択されてもよい。一部の態様において、列ヘッダー検出モジュール４０３は、式４５７に従って列ヘッダーを選択する。式４５７において、θは、列ヘッダーの検出に関連付けられている厳密性に応じて異なってもよい。
【００６６】
[0083]列ヘッダー検出モジュール４０３はまた、テーブルが、明示的に定義された列名を有するかどうか、および／または値Ｖ１、Ｖ２、．．．、Ｖｎのいずれかが数値であるかどうかを検討することもできる。テーブルが明示的に定義された列名を有する場合、明示的に定義された列名以外の名前を含む行は、列ヘッダーになる可能性がより低い。同様に、行が数値を含む場合、行が列ヘッダーになる可能性はより低い。
【００６７】
[0084]候補セル内の個々のトークンの頻度もまた、検討されてもよい。１つの態様において、頻度計算モジュール４０２は、任意のテーブルで（たとえば、テーブルセット４２４で）列名またはセル値として出現する文字列（たとえば、候補列名）の各トークンについて出現の頻度を計算するように構成されてもよい。たとえば、トークン「平均」および「降水量」は、文字列「平均降水量」から識別されてもよい。「平均」および「降水量」の頻度は、これらのトークンがその他の場所において出現し得るので、別個に計算されてもよい。たとえば、「降水量」は、列名として単独で出現する可能性もある。「平均」は、列名「平均気温」に出現する可能性もある。
【００６８】
[0085]頻度計算モジュール４０２はまた、トークンレベル頻度に適切な集約関数を実施することができる。
[0086]列ヘッダー検出モジュール４０３は、テーブル内のトークンに対するＣＣＮＦｒｅｑおよびＮｏｎ−ＣＣＮＦｒｅｑに基づいて列ヘッダーとしてテーブルの行を検出するように構成されてもよい。
【００６９】
[0087]図５は、テーブルの列ヘッダーを検出するための例示の方法５００を示す流れ図である。方法５００は、コンピューターアーキテクチャ４００のコンポーネントおよびデータに関して説明される。
【００７０】
[0088]方法５００は、テーブルを定義するデータからテーブルの候補列名のセットを構築するステップ（５０１）を含む。たとえば、候補列名構築モジュール４０１は、テーブル４１１およびテーブル定義４１２を受信することができる。テーブル定義４１２は、テーブル４１１の一部のプロパティを定義することができる。示されているように、テーブル４１１は、行４２１（第１の行）、４２２、４２３などを含む。各行は、潜在的に列名である値を含む。行４２１は、値４２１Ａ、４２１Ｂ、４２１Ｃなどを含む。行４２２は、値４２２Ａ、４２２Ｂ、４２２Ｃなどを含む。行４２３は、値４２３Ａ、４２３Ｂ、４２３Ｃなどを含む。
【００７１】
[0089]テーブル定義４１２から、候補列名構築モジュール４０１は、列名がテーブル４１１について明示的に定義されていないと決定することができる。そのようなものとして、候補列名構築モジュール４０１は、行４２１（第１の行）の値から候補列名のセットを構築することができる。たとえば、候補列名構築モジュール４０１は、候補列名４２１Ａ、候補列名４２１Ｂなどを構築することができる。
【００７２】
[0090]候補列名構築モジュール４０１は、候補列名４２１Ａ、候補列名４２１Ｂなどを、頻度計算モジュール４０２に送信することができる。頻度計算モジュール４０２は、候補列名構築モジュール４０１から、候補列名４２１Ａ、候補列名４２１Ｂなどを受信することができる。
【００７３】
[0091]方法５００は、候補列名のセット内の各候補列名について、候補列名の候補列名頻度を、その他のテーブルのセットから、同じくその候補列名を候補列名として含む１つまたは複数のその他のテーブルを識別することによって計算するステップ（５０２）を含む。たとえば、頻度モジュール４０２は、候補列名４２１Ａの候補頻度４１１を計算することができ、候補列名４２１Ｂの候補頻度４１３を計算することができるなどである。候補頻度４１１を計算するために、頻度モジュール４０２は、テーブルセット４２４（たとえば、Ｗｅｂテーブルのセット）から、同じく候補列名４２１Ａを候補列として含む１つまたは複数のテーブルを識別することができる。同様に、候補頻度４１３を計算するために、頻度モジュール４０２は、テーブルセット４２４から、同じく候補列名４２１Ｂを候補列として含む１つまたは複数のテーブルを識別することができる。同様の計算は、その他の候補列名の候補頻度（つまり、行４２１のその他の値）を計算するために行われてもよい。
【００７４】
[0092]方法５００は、候補列名のセット内の各候補列名について、候補列名の非候補列名頻度を、その他のテーブルのセットから、その候補列名を候補列名以外として含む第２の１つまたは複数のその他のテーブルを識別することによって計算するステップ（５０３）を含む。たとえば、頻度モジュール４０２は、候補列名４２１Ａの非候補頻度４１２を計算することができ、候補列名４２１Ｂの非候補頻度４１４を計算することができるなどである。非候補頻度４１２を計算するために、頻度モジュール４０２は、テーブルセット４２４から、候補列名４２１Ａを含むが候補列名としては含まない１つまたは複数のテーブルを識別することができる。同様に、非候補頻度４１３を計算するために、頻度モジュール４０２は、テーブルセット４２４から、同じく候補列名４２１Ｂを含むが候補列名としては含まない１つまたは複数のテーブルを識別することができる。同様の計算は、その他の候補列名の非候補頻度（つまり、行４２１のその他の値）を計算するために行われてもよい。
【００７５】
[0093]頻度計算モジュール４０２は、候補列名４２１Ａを、候補頻度４１１および非候補頻度４１２と共に、列ヘッダー検出モジュール４０３に送信することができる。同様に、頻度計算モジュール４０２は、候補列名４２１Ｂを、候補頻度４１３および非候補頻度４１４と共に、列ヘッダー検出モジュール４０３に送信することができる。列ヘッダー検出モジュール４０３は、候補列名４２１Ａを、候補頻度４１１および非候補頻度４１２と共に、頻度計算モジュール４０２から受信することができる。同様に、列ヘッダー検出モジュール４０３は、候補列名４２１Ｂを、候補頻度４１３および非候補頻度４１４と共に、頻度計算モジュール４０２から受信することができる。列ヘッダー検出モジュール４０３はまた、テーブル定義データ４１２およびテーブル４１１にアクセスすることができる。
【００７６】
[0094]方法５００は、行に含まれる候補列名の少なくとも指定されたしきい値が、非候補列名頻度よりも大きい候補列名頻度を有する場合、テーブルの行を列ヘッダーとして選択するステップ（５０４）を含む。たとえば、列ヘッダー検出モジュール４０３は、行４２１を、列ヘッダーまたはテーブル４２１として検出することができる。列ヘッダー検出モジュール４０３は、行４２１内の候補列名の指定されたしきい値（たとえば、５）が、非候補頻度よりも大きい候補頻度を有することを決定することができる。たとえば、候補列名４２１Ａについて、列ヘッダー検出モジュール４０３は、候補頻度４１１が非候補頻度４１２よりも大きいことを決定することができる。同様に、候補列名４２１Ｂについて、列ヘッダー検出モジュール４０３は、候補頻度４１３が非候補頻度４１４よりも大きいことを決定することができる。
ナレッジベースを使用する列ヘッダー検出
[0095]Ａ．概念化を使用してヘッダーが正しいかどうかを検出する
[0096]ナレッジベースを使用して、列ヘッダーは検出されてもよい、および／または列ヘッダー検出が改善されてもよい（たとえば、行を列ヘッダーとして選択する際の信頼性が高まる）。一般に、概念は、インスタンスのセットから推論されてもよく、「概念化」と称されてもよい。概念化は、ナレッジベースに基づいてもよい。一部の態様において、概念化は、ヘッダーが正しいかどうかを決定するために使用される。図６を参照すると、図６は、例示のテーブル６００（たとえば、Ｗｅｂテーブル）を示す。テーブル６００内で、列ヘッダー６０２「国」は、値オーストラリア、米国、南アフリカなどから推論されてもよい。そのようなものとして、列ヘッダー６０２は、列６０１内の値の上位語または概念である。したがって、列ヘッダー６０２「国」は、正しい列ヘッダーである可能性が高い。
【００７７】
[0097]図７を参照すると、図７は、インスタンスのセットから概念を推論するために使用されるさまざまな式を示す。ナレッジベース（たとえば、ナレッジベース１１４内）は、数千万の概念−インスタンスのペアを含むことができる。式７０１は、観察されるインスタンスのセットを表す。観察されるインスタンスについて、インスタンスを説明するより代表的な概念のセットが抽象化されてもよい。概念の確率は、式７０２に示される単純ベイズモデルを使用して推定されてもよい。式７０２において、ｃｋは概念であり、式７０３に示されるように、ここでＰ（ｅｉ、ｃｋ）は、インスタンスおよび概念の共起に比例し、Ｐ（ｃｋ）は、ｃｋの観察される頻度にほぼ比例する。式７０２において、ノイズを除去して、概念の多様性を導入するために、ラプラススムージングが使用される。
【００７８】
[0098]式７０１、７０２、および７０３に基づいて、より大きい事後確率を伴う概念が、観察されるインスタンスを説明する可能性がより高い概念としてランク付けされる。たとえば、インスタンス「中国」、「ロシア」、「インド」、および「米国」を所与として、国が概念として提示されてもよい。しかし、「中国」、「インド」、および「ロシア」を所与として、進行成長市場が概念として提示されてもよい。
【００７９】
[0099]Ｂ．属性データおよび属性概念化技法の使用
[0100]名前を含むヘッダー行は、同じ概念に属し得るより明らかな列名を含むことができる。図８を参照すると、図８は、例示の列ヘッダー８００を示す。列ヘッダー８００の列名は、同じ概念に属すことができる。
【００８０】
[0101]一般に、列名は、列ヘッダーから抽出されて、列名リストを生成することができる。次いで、列名リスト内の列名が同じ上位語に概念化され得るかどうかが決定されてもよい。概念ベースおよびインスタンスベースの属性抽出の構文パターンは、文書を処理して属性を抽出するためにＷｅｂコーパスで使用されてもよい。概念ベースの抽出の構文パターンは、ｔｈｅ□ａ□ｏｆ（ｔｈｅ／ａ／ａｎ）□ｃ□［ｉｓ］のように表されてもよい。インスタンスベースの抽出の構文パターンは、ｔｈｅ□ａ□ｏｆ（ｔｈｅ／ａ／ａｎ）□ｉ□［ｉｓ］のように表されてもよい。
【００８１】
[0102]構文パターン内で、□ａ□は、構文パターンと一致するテキストから取得されるべきターゲット属性であり、□ｃ□は、属性が取得されるべき概念であり、□ｉ□は、概念□ｃ□のインスタンス（下位概念またはエンティティ）である。□ｃ□および□ｉ□はいずれも、ナレッジベース意味ネットワークを形成することができる。たとえば、概念□ｃ□＝ｗｉｎｅの属性を見つけるとする。「．．．ｔｈｅ  ａｃｉｄｉｔｙ  ｏｆ  ａ  ｗｉｎｅ  ｉｓ  ａｎ  ｅｓｓｅｎｔｉａｌ  ｃｏｍｐｏｎｅｎｔ  ｏｆ  ｔｈｅ  ｗｉｎｅ．．．（ワインの酸味はワインの本質的な要素）」という文から、□ａ□＝ａｃｉｄｉｔｙは、ワインの候補属性である。さらに、「ｔｈｅ  ｔａｓｔｅ  ｏｆ  Ｂｏｒｄｅａｕｘ  ｉｓ．．．（ボルドーの風味は）」という文から、□ａ□＝ｔａｓｔｅは、「Ｂｏｒｄｅａｕｘ」の属性である。ナレッジベースから、「Ｂｏｒｄｅａｕｘ」がワインの概念のインスタンスであることが決定されてもよい。したがって、□ａ□＝ｔａｓｔｅはまた、ワインの候補属性である。
【００８２】
[0103]属性のリストにより、概念にとって各属性がどの程度重要であるか、および／またはどの程度典型的であるかが決定されてもよい。そのようなものとして、典型性スコアが、属性について計算されてもよい。さらに具体的には、
Ｐ（ｃ｜ａ）は、属性ａを所与として、概念ｃがどの程度典型的であるかを示す。
Ｐ（ａ｜ｃ）は、概念ｃを所与として、属性ａがどの程度典型的であるかを示す。
【００８３】
[0104]典型性スコアを計算するため、概念ベースの抽出からの属性、およびインスタンスベースの抽出からの属性、という２つの事例が検討されてもよい。
[0105]図９は、抽出された属性の典型性スコアを計算するために使用されるさまざまな式を示す図である。概念ベースの抽出の場合、（ｃ、ａ、ｎ（ｃ、ａ））の形式を伴う属性リストが取得されてもよい。このリストをｃによりグループ分けすることで、ｃに関して観察された属性のリストおよびそれらの頻度分布が決定されてもよい。この情報により、典型性スコアＰ（ａ｜ｃ）は、式９０１において示されるように取得されてもよい。
【００８４】
[0106]インスタンスベースの抽出の場合、（ｉ、ａ、ｎ（ｃ、ａ））の形式を伴う１つまたは複数の属性リストが取得されてもよい。各々異なるインスタンスベースのリストは、たとえば、それぞれＷｅｂ文書、クエリログ、およびナレッジベースのような、異なるデータコーパスから取得されてもよい。別個の典型性スコアは、各々異なるインスタンスベースのリストから計算されてもよい。次いで、インスタンスベースのリストについての別個の典型性スコアは、概念ベースのリストの典型性スコアと集計されてもよい。インスタンスベースのパターンを概念と結び付けるために、Ｐ（ａ｜ｃ）は、式９０２において示されるように展開されてもよい。
【００８５】
[0107]式９０２における展開により、Ｐ（ａ｜ｉ、ｃ）およびＰ（ｉ｜ｃ）は、典型性スコアを決定するために計算されてもよい。たとえば、インスタンスベースのパターン「ｔｈｅ  ａｇｅ  ｏｆ  Ｇｅｏｒｇｅ  Ｗａｓｈｉｎｇｔｏｎ（ジョージワシントンの年齢）」を検討する。インスタンスベースのパターンは、「Ｇｅｏｒｇｅ  Ｗａｓｈｉｎｇｔｏｎ」が大統領という概念のインスタンスであることを認識して、大統領という概念の年齢の典型性スコア付けに寄与することができる。式９０２において、Ｐ（ａ｜ｉ、ｃ）は、その基礎をなす概念が大統領である場合に「Ｇｅｏｒｇｅ  Ｗａｓｈｉｎｇｔｏｎ」の年齢の属性典型性を定量化し、一方Ｐ（ｉ｜ｃ）は、大統領という概念に対して「Ｇｅｏｒｇｅ  Ｗａｓｈｉｎｇｔｏｎ」がどの程度代表的であるかを表す。
【００８６】
[0108]この単純化の仮定の下に、Ｐ（ａ｜ｉ、ｃ）は、式９０３において示されるように計算されてもよく、Ｐ（ｉ｜ｃ）は、式９０４において示されるように計算されてもよい。式９０３および９０４に基づいて、Ｐ（ｃ｜ｉ）は、ナレッジベースから取得されてもよい。Ｐ（ｃ｜ｉ）は、所与のインスタンスｉに対して概念ｃがどの程度可能性があるかを表す。Ｐ（ｃ｜ｉ）＝１は、概念−インスタンスがナレッジベース内で観察され、Ｐ（ｃ｜ｉ）＝０は、それ以外の場合である。
【００８７】
[0109]典型性スコアにより、推論を実行するためにマシンが使用され得る。つまり、属性のセットに基づいて、より可能性の高い概念を見出すことである。たとえば、式９０５において示されるように概念ｃを見出すことであり、ここでＡは属性のシーケンスである。概念の確率は、式９０６に示されるように単純ベイズモデルを使用して推定されてもよい。
【００８８】
[0110]Ｃ．列ヘッダーを検出するための発見的ルールの使用
[0111]発見的ルールもまた、列ヘッダーを検出するために使用され得る。たとえば、ヘッダー行のセルタイプがその他のセルのセルタイプと異なる場合、ヘッダー行は列名ヘッダーである可能性が高い。図１０を参照すると、図１０は、例示のテーブル１０００（たとえば、Ｗｅｂテーブル）を示す。テーブル１０００内で、セル１０１３、１０１４、１０１５、１０１６、および１０１７は、文字列であるが、列１００３、１００４、１００５、１００５、および１００７の他のセル内の値は数字である。したがって、セル１０１３、１０１４、１０１５、１０１６、および１０１７は、列ヘッダー（すなわち、列ヘッダー１０２２）の一部である可能性が高い。そのようなものとして、たとえ行が列ヘッダーとして明示的には定義されていない場合であっても、列ヘッダー１０２２を列ヘッダーとして識別することが可能である。
【００８９】
[0112]列内のセル内のトークンの長さおよび／または数と、その他のセル内のトークンの長さおよび／または数との対比も、検討されてもよい。たとえば、セル１０１１は、「郡」および「名」という２つのトークンを含む。件名列１０２１内のその他のセルは、１つのトークンを含む。同様に、セル１０１２は、「郡」および「庁所在地」という２つのトークンを含む。列１００２内のその他のセルは、１つのトークンを含む。したがって、セル１０１１および１０１２は、列ヘッダー（たとえば、列ヘッダー１０２２）の一部である可能性が高い。
【００９０】
[0113]列内のセルおよびその他のセルの内容が、同じかまたは異なる正規表現で要約されるかどうかもまた、検討されてもよい。たとえば、列１０１３は、セル値「設立年」、「１８５４」、「１８３９」、「１７６０」などを含む。しかし、「設立年」は、「１８５４」、「１８３９」、「１７６０」などの各々を要約する最小一致正規表現とは異なる最小一致正規表現で要約される。したがって、セル１０１３は、列ヘッダー（たとえば、列ヘッダー１０２２）の一部である可能性が高い。
【００９１】
[0114]もう１つの例において、列は、セル値「社会保障番号」、「１２３−４５−６７８」、「３４５−６７−８９０１」、「６７８−９０−１２３４」を含むことができる。すべてのセルは、同じ数の文字を有する。しかし、「社会保障番号」は、「１２３−４５−６７８」、「３４５−６７−８９０１」、「６７８−９０−１２３４」の各々を要約する最小一致正規表現とは異なる最小一致正規表現で要約される。そのようなものとして、「社会保障番号」を含むセルは、列ヘッダーの一部である可能性が高い。
【００９２】
[0115]複数行の列ヘッダー
[0116]本発明の態様は、複数行の列ヘッダーを検出するために使用されてもよい。たとえば、一部のテーブルは、行に相当するページごとに複製されたヘッダー行を有する。その他のテーブルは、複数のヘッダー行を使用し、ここで１つの行はより一般的であり、別の行はより具体的である。たとえば、テーブルは、第１および第２の列に及ぶセル値「気温」を伴う行を有することができる。テーブルは、第１の列にセル値「平均」、第２の列に「最高」を伴うもう１つの行を有することができる。候補列名構築モジュール４０１、頻度計算モジュール４０２、および列ヘッダー検出モジュール４０３は、テーブルの複数のヘッダー行を検出するように構成されてもよい。
【００９３】
[0117]テーブルの理解
[0118]図１１は、テーブルの理解を容易にする例示のアーキテクチャ１１００を示す。図１１を参照すると、コンピューターアーキテクチャ１１００は、件名列検出器１１０１および列ヘッダー検出器１１０２を含む。件名列検出器１１０１および列ヘッダー検出器１１０２の各々は、たとえばローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、およびインターネットなどのような、ネットワークを介して相互に接続されてもよい（またはネットワークの一部であってもよい）。したがって、件名列検出器１１０１および列ヘッダー検出器１１０２、ならびに任意の他の接続されたコンピューターシステムおよびそれらのコンポーネントの各々は、メッセージ関連データを作成し、ネットワークを介してメッセージ関連データ（たとえば、インターネットプロトコル（「ＩＰ」）データグラム、および伝送制御プロトコル（「ＴＣＰ」）、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）、簡易メール転送プロトコル（「ＳＭＴＰ」）などのようなＩＰデータグラムを利用するか、またはその他の非データグラムプロトコルを使用するその他の上位レイヤプロトコル）を交換することができる。
【００９４】
[0119]一般に、件名列検出器１１０１は、テーブルの１つまたは複数の件名列を検出することができる。１つまたは複数の件名列を検出するために、件名列検出器１１０１は、コンピューターアーキテクチャ２００のモジュールの１つまたは複数を実施すること、および説明される任意の関連するアルゴリズムを使用することができる。一般に、列ヘッダー検出器１１０２は、テーブルの列ヘッダーを検出するように構成される。列ヘッダーを検出するために、列ヘッダー検出器１１０２は、コンピューターアーキテクチャ４００のモジュールの１つまたは複数を実施すること、および説明される任意の関連するアルゴリズムを使用することができる。
【００９５】
[0120]件名列検出器１１０１および列ヘッダー検出器１１０２は、テーブル理解モジュール１０２に含まれてもよい。あるいは、件名列検出器１１０１および列ヘッダー検出器１１０２は、テーブル理解モジュール１０２の外部で動作することができる。
【００９６】
[0121]示されているように、テーブル１１１１（たとえば、Ｗｅｂテーブル）は、列１１１２Ａ〜１１１２Ｆおよび行１１１３Ａ〜１１１３Ｍを含む。件名列検出器１１０１および列ヘッダー検出器１１０２の各々は、テーブル１１１１にアクセスすることができる。
【００９７】
[0122]件名列検出器１１０１は、テーブル１１１１の件名列を検出することができる。テーブル１１１１の件名列を決定するために、件名列検出器１１０１は、列１１１２Ａ、１１１２Ｄ、および１１１２Ｅ（左端の３つの非数値列）を検討することができる。説明されているアルゴリズムのいずれかを使用して、件名列検出器１１０１は、列１１１２Ａ、１１１２Ｄ、および１１１２Ｅの各々のスコアを計算することができる。たとえば、列スコアは、他のテーブルの列名を伴うテーブル値の共起、および／またはナレッジベース内のテーブルエンティティおよび列名の共起から計算されてもよい。計算されたスコアに基づいて、列１１１２Ａ、１１１２Ｂ、および１１１２Ｅから列は、テーブル１１１１の件名列として検出されてもよい。たとえば、列１１１２Ａは、テーブル１１１１の件名列として選択されてもよい。
【００９８】
[0123]列ヘッダー検出器１１０２は、テーブル１１１１のヘッダー行を検出することができる。テーブル１１１１の列ヘッダーを決定するために、列ヘッダー検出器１１０２は、たとえば、Ｗｅｂテーブルを使用する列ヘッダー検出、ナレッジベースを使用する列ヘッダー検出、概念化、発見的教授法などのような、説明されているアルゴリズムのいずれかを使用して、テーブル１１１１の行を列ヘッダーとして検出することができる。たとえば、列ヘッダー検出器１１０２は、データ定義テーブル１１１１からテーブル１１１１の候補列名のセットを構築することができる。列ヘッダー検出器１１０２候補は、各候補列名について列名頻度および非候補列名頻度を計算することができる。列ヘッダー検出器１１０２候補は、計算された頻度に基づいて、テーブル１１１１の行を列ヘッダーとして選択することができる。たとえば、行１１１３Ａは、テーブル１１１１の列ヘッダーとして検出されてもよい。
【００９９】
[0124]本発明の実施態様は、リレーショナルデータベース内のテーブル、またはＷｅｂページから抽出されたＨＴＭＬテーブルのような構造化された情報にインデックスを作成し、ユーザーが構造化された情報（テーブル）を検索できるようにする構造化データ検索システム（ＳＤＳＳ）において使用されてもよい。ＳＤＳＳは、構造化された情報にわたりインデックスを作成し、複数の検索メカニズムを提供することができる。１つの検索メカニズムは、ユーザーが「アフリカ諸国のＧＤＰ」のようなキーワードクエリをＳＤＳＳに提示する、キーワード検索である。ＳＤＳＳは、ユーザーの情報ニーズを適切に満たすランク付けされたテーブルのリストを返す。もう１つのメカニズムは、ユーザーが（たとえば、スプレッドシートに存在する）エンティティのセット、およびオプションとして追加のキーワードをＳＤＳＳに指定する、データ探知データである。ＳＤＳＳは、そのエンティティのセットに対して要求された情報を含むテーブルを返す。
【０１００】
[0125]本発明は、その精神または本質的特徴を逸脱することなくその他の特定の形態で実施されてもよい。説明される実施態様は、あらゆる点で、限定的ではなく、単に例示的なものとしてみなされるべきである。したがって、本発明の範囲は、上記の説明によってではなく、添付の特許請求の範囲によって指示される。特許請求の範囲の等価の意味および範囲内に入るすべての変更は、それらの範囲内に包含されるものとする。
【図１】
0006434542.tif 000002
【図２】
0006434542.tif 000003
【図３】
0006434542.tif 000004
【図４】
0006434542.tif 000005
【図５】
0006434542.tif 000006
【図６】
0006434542.tif 000007
【図７】
0006434542.tif 000008
【図８】
0006434542.tif 000009
【図９】
0006434542.tif 000010
【図１０】
0006434542.tif 000011
【図１１】
0006434542.tif 000012