【文献】
濱崎 雅弘,Linked Open DataのためのSPARQLクエリ共有システムの提案,一般社団法人 人工知能学会 第29回全国大会論文集CD−ROM [CD−ROM] 2015年度 人工知能学会全国大会(第29回)論文集,日本,社団法人人工知能学会,2015年 6月 2日,p.1−4
(58)【調査した分野】(Int.Cl.,DB名)
前記アプリケーションコンテキストデータは、プロジェクトメタデータ、ワークシートメタデータ、およびユーザメタデータのうちの少なくとも1つを含む、請求項1に記載の方法。
前記アプリケーションコンテキストデータは、プロジェクトメタデータ、ワークシートメタデータ、およびユーザメタデータのうちの少なくとも1つを含む、請求項8に記載の装置。
コンピュータ可読命令を記憶する少なくとも1つの非一時的なコンピュータ可読記憶媒体であって、前記コンピュータ可読命令は、1つ以上のコンピューティングデバイスに実行されたとき、前記1つ以上のコンピューティングデバイスの少なくとも1つに、
コンテキストデータから、データベースオペレーション履歴データエントリおよびトレーニングコンテキストデータエントリをキャプチャすることによって、コンテキストデータのプロファイリングを行うステップであって、前記コンテキストデータはデータ解析アプリケーション内のテーブル上で実行されるデータベースオペレーションに応答して前記データ解析アプリケーションの1つまたは複数のインスタンスから受信されたエントリを含む、ステップと、
第1のセットのユーザについて、複数のテーブル上で実行される複数のデータベースオペレーションに対してプロファイリングされたデータベースオペレーション履歴データおよびプロファイリングされたコンテキストデータを維持するステップと、
データ解析アプリケーションの第2のセットのユーザに、少なくとも1つのデータベースオペレーションまたは少なくとも1つのオペランド、の1つ以上を推薦するよう構成された複数の予測モデルを生成するステップであって、前記予測モデルのそれぞれは、プロファイルされたコンテキストデータからのコンテキストデータフィールドに対応する複数の特徴と、推薦のための複数の対応するデータベースオペレーションまたは複数のオペランドのいずれかとを含む、ステップと、
アプリケーションコンテキストデータを含むアプリケーションログエントリを受信するステップであって、前記アプリケーションログエントリはデータ解析アプリケーションのインスタンス内のテーブル内の列を選択する第2のセットのユーザに応答して受信される、ステップと、
前記アプリケーションコンテキストデータに少なくとも部分的に基づいて、前記複数の予測モデル内の1つ以上の予測モデルを選択するステップと、
前記アプリケーションコンテキストデータを前記1つ以上の選択された予測モデルへ入力することにより、1つ以上の確率リストを生成するステップであって、前記確率リストのそれぞれは、前記複数のデータベースオペレーションまたは前記複数のオペランドに関連付られた複数の確率値を含む、ステップと、
前記1つ以上の確率リストに少なくとも部分的に基づいて、1つ以上の推奨を決定するステップであって、前記1つ以上の推奨における各推奨は、データベースオペレーションまたはオペランドを含む、ステップと、
ユーザへの提示のためにデータ解析アプリケーションのインスタンスに前記1つ以上の推奨を送信するステップと、
を実行させる、記憶媒体。
前記アプリケーションコンテキストデータは、プロジェクトメタデータ、ワークシートメタデータ、およびユーザメタデータのうちの少なくとも1つを含む、請求項15に記載の記憶媒体。
【発明を実施するための形態】
【0010】
システムのアーキテクチャ
図1は、一実施形態による、データ解析アプリケーションにおいて、データベースオペレーションの履歴ログから予測モデルを生成し、データに対するデータベースオペレーションを推奨するコンピューティング環境100の高レベルブロック図である。
【0011】
示されるように、コンピューティング環境100は、データリポジトリ102、データ解析サーバ104、およびデータ解析アプリケーション125を含む。
【0012】
複数のデータリポジトリ102(本明細書では個別にデータリポジトリ102とも呼ぶ)は、データを管理するための1つまたは複数のシステムを含む。各データリポジトリ102は、データリポジトリ102内に格納されたデータにアクセスして更新するためのチャネルを提供する。データリポジトリ102内のデータは、ユーザ、ユーザのグループ、エンティティ、および/またはワークフローに関連付けられ得る。例えば、データリポジトリ102は、特定のエンティティに関連付けられたすべての個人に関連付けられたデータを記憶する顧客関係管理(CRM)システムまたは人事(HR)管理システムとすることができる。データリポジトリ102は、ETLプロセスのためのデータソースまたはエクスポートターゲットとすることができる。データソースの例は、データベース、アプリケーション、およびローカルファイルを含む。同様に、これらのソースは、データをエクスポートするためのターゲットとして機能することができる。共通のエクスポートターゲットは、TABLEAU、SALESFORCE WAVE、およびEXCELである。
【0013】
データ解析アプリケーション125は、ユーザがデータ解析サーバ104によってデータリポジトリ102から抽出されたデータを操作し、単一のテーブル又は多数のテーブルに対して実行されるべきデータベースオペレーションを選択及び指定することを可能にするソフトウエアアプリケーションであり、この機能を実行するための1つの手段である。一実施形態では、データ解析アプリケーション125がテーブルのセットであるプロジェクトの形でユーザにデータを提供する。データ解析アプリケーション125の様々なモジュールは、汎用コンピュータシステムのネイティブコンポーネントまたは標準コンポーネントではなく、コンピュータシステムの汎用機能を超えて拡張する、本明細書で説明する特定の機能を提供する。さらに、モジュールの機能および動作はコンピュータシステムによる実装を必要とするほど十分に複雑であり、したがって、いかなる実際的な実施形態でも、人間の心の中の精神的なステップによって実行することはできない。これらの構成要素の各々は、以下により詳細に記載される。データ解析アプリケーション125はデバイス非依存であり、したがって、デスクトップアプリケーション、モバイルアプリケーション、またはウェブベースのアプリケーションとすることができる。その様々な機能を実行するために、データ解析アプリケーション125は、ユーザインタフェース(UI)モジュール122およびデータベースオペレーションUIモジュール124を含む。
【0014】
いくつかの実施形態では、データ解析アプリケーション125は、様々なオンサイトおよび外部のソースおよびターゲット、ならびに本明細書で説明されるプロセスに関与する強化サービスと共に、より大きなクラウドアーキテクチャの一部である。
【0015】
UIモジュール122はUIにおいて表示するためのデータを受信し、受信したデータに対応するユーザインタフェースを生成し、受信したデータをテーブルにポピュレートし、予測モデルに基づいてデータリファインメントの推奨を表示し、テーブルの1つまたは複数の列に関連付けられた列サマリを生成し、これらの機能を実行するための1つの手段である。生成されたユーザインタフェースは、データ解析アプリケーション125のユーザがテーブルエントリを操作すること、およびデータベースオペレーションをデータに適用することを含めて、テーブルを見ること、およびテーブルと対話することを可能にする。
【0016】
データベースオペレーションUIモジュール124はUIモジュール122によって生成されたテーブル内のデータに適用するための1つ以上のデータベースオペレーション制御を提供し、この機能を実行するための1つの手段である。具体的には、データベースオペレーションUIモジュール124がデータ解析アプリケーション125のユーザがテーブルに関連付けられたデータベースオペレーションを選択し、指定し、および/またはデータベースオペレーションの適用を引き起こすことを可能にする制御を提供する。
【0017】
一実施形態によれば、UIモジュール122およびデータベースオペレーションUIモジュール124によって提供されるユーザインタフェースは、グラフィカルに表現されたデータセクション、情報セクション、および様々なグラフィカルに表現されたデータベースオペレーション制御を含む。UIのデータ部は、解析用のテーブルを表示するためのものである。UIの情報セクションは、テーブルに関するプロファイル情報を表示するためのものである。プロファイル情報は、コンテキストデータなどのテーブルの特徴を記述する。UIの複合データ制御は、テーブル間の少なくとも1つの一致する列に基づいて2つのテーブルを複合テーブルに統合するコマンドを受信するユーザインタフェース要素である。UIの推薦制御は、予測モデルを用いてデータベースオペレーション推薦モジュール114により決定された推薦データベースオペレーションを表示するユーザインタフェース要素である。UIは、
図4および
図6に関して以下により詳細に説明される。
【0018】
データベースオペレーションUIモジュール124は、実行された各データベースオペレーションに対して、表示されたテーブルに対して実行された各データベースオペレーションをデータ解析サーバ104内のデータベースオペレーション履歴モジュール112に送信する。各データベースオペレーションは、オペレーション識別子によって表され、オペレーション識別子は例えば、名前、ID番号、およびデータベースオペレーションに含まれていたオペランドを示すオペレーション記述によって、オペレーションを一意に識別する。データベースオペレーション履歴モジュール112は、データに適用されたデータベースオペレーションをデータベースオペレーション履歴記憶部120に記憶する。経時的にデータに適用されるデータベースオペレーションはデータベースオペレーション履歴ストア120に取り込まれ、データベースオペレーション履歴内の任意のステップはアンドゥ、リドゥ、または異なるデータに適用することができる。データベースオペレーションは後述するように、ログの形式で格納することができる。
【0019】
データ解析サーバ104はデータをデータリポジトリ102から抽出し、データを処理し、処理されたデータをデータ解析アプリケーション125に提供して、データをユーザに表示し、ユーザによって操作できるようにする。これらの機能を実行するために、データ解析サーバ104は、データ抽出モジュール108と、データプロファイリングモジュール110と、データベースオペレーション履歴モジュール112とを含む。さらに、これらの機能に関連するデータを記憶するために、データプロファイリングサーバ104は、リポジトリデータストア116、プロファイリングデータストア118、およびデータベースオペレーション履歴ストア120を含む。分析サーバ104の様々なモジュールは、汎用コンピュータシステムのネイティブコンポーネントまたは標準コンポーネントではなく、コンピュータシステムの汎用機能を超えて拡張する、本明細書で説明する特定の機能を提供する。さらに、モジュールの機能および動作はコンピュータシステムによる実装を必要とするほど十分に複雑であり、したがって、いかなる実際的な実施形態でも、人間の心の中の精神的なステップによって実行することはできない。これらの構成要素の各々は、以下により詳細に記載される。
【0020】
データ抽出モジュール108は抽出されるべきデータリポジトリ102内のデータを識別し、そのデータをデータリポジトリ102から取り出し、そのデータをリポジトリデータストア116に格納するように構成され、そのための1つの手段である。動作中、データ抽出モジュール108は、データを抽出する1つまたは複数のデータリポジトリ102を識別する。データ抽出モジュール108はまた、抽出されるべき識別されたデータリポジトリ102に記憶された特定のデータを識別する。データリポジトリ102および/またはそこに格納された特定のデータの識別は、データプロファイリング動作を行うユーザから受け取った命令に基づいて行うことができる。あるいは、そのような識別がデータを抽出する外部データソースを指定する1つまたは複数のビジネスロジック定義に基づいて行うことができる。
【0021】
データ抽出モジュール108は、データリポジトリ102によって提供されるデータアクセスチャネルを介してデータリポジトリ102から識別されたデータを抽出する。一実施形態では、データ・アクセス・チャネルは、データ抽出モジュール108がデータ・リポジトリ102と安全に通信して、データ・リポジトリ102との間でデータを取り出し、送信することを可能にする安全なデータ転送プロトコルである。データがデータリポジトリ102から抽出されると、データ抽出モジュール108は、データをリポジトリデータストア116に格納する。
【0022】
データプロファイリングモジュール110はデータリポジトリ102から抽出され、リポジトリデータストア116に格納されたデータを処理して、データのすべての列、行、および領域を完全にプロファイリングし、そうするための1つの手段である。列、行、およびデータフィールドのプロファイリングは、データタイプ、データドメイン、およびエントリ長、固有値パーセント、および空白値パーセントなどのデータ値に関する他の情報を識別することを含む。
【0023】
データベース運用履歴部112は、セル、テーブル、プロジェクトに適用されるデータベース運用の履歴を受け取り、格納する手段の一つである。動作中、データベース動作がセル、テーブル、またはプロジェクトに適用されるとき、データベース動作履歴モジュール112は、適用された特定のデータベース動作と、どのデータに適用されたかを、データベース動作履歴ストア120に記憶する。したがって、経時的にデータに適用されるデータベースオペレーションは、データベースオペレーション履歴ストア120に取り込まれる。
【0024】
本明細書で使用されるデータベースオペレーションは、ETLシステムのプログラムコードによってサポートされ、変換または変更されたデータセットを生成するために特定のデータに対して実行されるプログラム操作である。データベースオペレーションは、テーブルまたはプロジェクトに対して実行することができる。特定のデータベースオペレーションには、ジョイン(コンバイン)、結合(マージ)、フィルタ、フォーミュラ、ルックアップ、列分割、列追加(データ拡張)、パターン認識および不整合修正、データクレンジング、データ整合、データ標準化が含まれる。データベース演算は、数学的演算、数式などのデータに対する演算をさらに含むことができる。データベースオペレーションには以下のものがある。
【0026】
データベースオペレーション履歴モジュール112はさらに、抽出されたデータに関するコンテキストデータを受信し、作成し、管理するように構成される。コンテキストデータは、テーブルまたはプロジェクトに対して実行されているデータベースオペレーションに関連して収集または生成されるテーブルおよび/またはプロジェクトに関する情報である。コンテキストデータは、プロジェクトメタデータ、テーブルメタデータ、列メタデータ、およびユーザメタデータを含む。コンテキストデータは、データベースオペレーション履歴ストア120に格納されてもよい。
【0027】
プロジェクトメタデータフィールドは、以下を含む。
【表2】
【0028】
テーブルメタデータフィールドは以下を含む。
【表3】
【0029】
列メタデータフィールドフィールドは以下を含む。
【表4】
【0030】
一実施形態では、コンテキストデータは、プロジェクトメタデータ、テーブルメタデータ、列メタデータ、ユーザメタデータ、および操作を含むログファイルに含まれる。ログファイル内のログエントリは、テーブルまたはプロジェクト上で実行されているデータベースオペレーションに応答して生成され、JavaScript Object Notation(JSON)で表すことができる。ログエントリは、コンテキストおよび操作履歴データを以下の形式で表現する。
{<user metadata><project metadata><worksheets metadata><column metadata><operation specifics>}
【0031】
ログ・エントリは、データベースオペレーション履歴記憶装置120に記憶することができる。ログエントリの例を以下に示す:
【0032】
ログエントリ例1
【数1】
【数2】
【0033】
ログエントリ例1では、ユーザメタデータが「userLogger」セクションに含まれる。このセクションの「type」サブセクションは、データがユーザメタデータ(「...UserContextlmp」)であることを示す。このセクションの「data」サブセクションは、データベースオペレーションが実行されたときにデータ解析アプリケーション125のユーザを一意に識別するユーザ識別子値(「user_id」:197)を含む。
【0034】
プロジェクトメタデータは「projectLogger」セクションに含まれる。このセクションの「type」サブセクションは、データがプロジェクトコンテキストデータ(「...ProjectContextlmp」)であることを示す。「data」サブセクションは、データベースオペレーションが実行されたプロジェクトの特徴を含む。この特徴は、プロジェクト識別子(「project_id」:2312)、プロジェクト名(「project_name」:「test−log」)、プロジェクト内のテーブルの数(「num_worksheets」:1)、ジョインされたワークシートの数(「num_join_worksheetsL」:0)、接合されたワークシートの数(「num_union_worksheets」:0)、および集合ワークシートの数(「num_agg_worksheets」:0)を含む。
【0035】
テーブルメタデータは、「sheetLogger」セクションに含まれる。このセクションの「type」サブセクションは、データがテーブルメタデータ(「SheetContextlmpl」)であることを示す。「data」サブセクションは、データベースオペレーションが実行されたテーブルの特性を含む。この特性は、テーブル識別子(「ws_id」:2313)、テーブル名(「ws_name」:「dp_user_session.csv」)、テーブルタイプ(「ws_type」:「NORMAL」)、テーブル内の行数(「ws_rows」:31275)、テーブルサイズ(「ws_curr_size」:6)、テーブル内の固有の列数(「ws_unique_cols」:3)、テーブル内のテキストの列数(「ws_text_cols」:3)、日付形式の列数(「ws_date_cols」:0)、数の列数(「ws_numeric_cols」:3)、空白の列数(「ws_blank_cols」:0)、隠れ列数(「ws_hidden_cols」:0)、派生列数(「ws_derived_cols」:0)、およびテーブル上で実行される操作のリスト(「recipe」:「deleteHeaderRows;」)を含む。
【0036】
列メタデータは「columnLogger」セクションに含まれる。このセクションの「type」サブセクションは、データが列メタデータ(「...ColumnContextImpl」)であることを示す。「data」サブセクションは、データベースオペレーションが実行された列の特性を含む。この特性は、列識別子(「column_id」:2327)、列名(「column_name」:「D」)、列データ型(「column_datatype」:「Integer」)、列内のヌル値のパーセンテージ(「column_nulls」:0.0)、列内の一意の値のパーセンテージ(「column_unique」:99.81)、トリミングのパーセンテージ、列内の可能な値(「column_trimmable」:0.0)、列内の外れ値のパーセンテージ(「column_outlier」:36.175859312554996)、列の値のパターン(「column_pattern」:「<NUMBER>」)、列のドメイン(「column_domain」:「None」)、列の選択された領域(「column_selection」:「None」)、列の最大値(「column_maxvalue」:「1427703590101」)、および列の最小値(「column_minvalue」:「14030217779000」)を含む。
【0037】
データベースオペレーション履歴データは、「operationLogger」セクションに含まれる。このセクションの「type」サブセクションは、データがオペレーション履歴データ(「OperationContextImpl」)であることを示す。このセクションの「data」サブセクションは、どのデータベースオペレーションが実行されたかを識別するオペレーション識別子(「operation」:「expr:」)と、データベースオペレーションに含まれたオペランドを示すオペレーション記述(「operation_description」:「expr(((C3/60)/60)/24000)+DATE(1970,1,1)」)とを含む。この例では、オペレーションが、タイムスタンプミリ秒を日数に変換するために使用され、それらを日付1/1/1970に追加して、タイムスタンプの日付を取得する。
【0038】
ログエントリ例2
【数3】
【数4】
【0039】
ログエントリ1の例は、1つのテーブルに対して実行されたデータベースオペレーションに対応する。ログエントリ2の例は、2つのテーブルに対して実行されたデータベースオペレーションに対応する。2つのテーブルに対して実行されるデータベースオペレーションは、2つのテーブルからの列を結合するジョイン(join)および結合(union)操作を含む。ログエントリ2の例では、SheetLoggerセクションで指定されているように、テーブルID762および689を有するテーブルに対して完全外部ジョイン操作が実行された。ログエントリ2の例は、2組のテーブルデータおよび2組の列データを有し、各組は、ジョイン操作が実行された2つのテーブルのうちの1つに対応する。
【0040】
データ解析サーバ104のユーザモジュール115は、ユーザがデータ解析サーバ104とのアカウントを管理することを可能にする。ユーザモジュール115はさらに、データ解析アプリケーション125に関連するユーザ活動に対応するユーザ情報を受信し、記憶する。ユーザ情報はユーザの好み、ユーザに関連するコンピューティングデバイスに関する情報、様々なグループ(例えば、企業(enterprise)、組織(organization)など)とのユーザの関連、およびトレーニングユーザおよび/またはガイド付きユーザとしてのユーザのステータスを含み得る。トレーニングユーザはデータ解析アプリケーション125のユーザであり、そのデータベースオペレーションは、ガイド付きユーザにデータベースオペレーションを推薦するための予測モデルをトレーニングするために使用される。ガイド付きユーザは、トレーニングされた予測モデルからデータベースオペレーションの推奨を受信するデータ解析アプリケーション125のユーザである。ガイド付きユーザの1つ以上のセットはトレーニングユーザに関連するデータを使用してガイド付きユーザの推薦が生成されるように、トレーニングユーザの1つ以上のセットに関連付けられてもよい。
【0041】
ガイド付きユーザおよび/またはトレーニングユーザとしてのユーザのステータス、ならびにガイド付きユーザのセットとトレーニングユーザとの間の関連付けは、システム管理者、他のユーザによって指定されてもよいし、自動的に指定されてもよい。例えば、グループ(例えば、組織または企業)は、データ解析アプリケーション125の上級ユーザをトレーニングユーザとして、経験の少ないユーザをガイド付きユーザとして指定することができる。トレーニングユーザのセットはまた、地理的領域またはデータ解析アプリケーション125による熟練度の尺度などのユーザ特性に基づいて、ユーザモジュール115によって自動的に決定されてもよい。ガイド付きユーザは、トレーニングユーザに関連付けられたトレーニングデータがガイド付きユーザに対する推薦を生成するために使用されるように、トレーニングユーザに関連付けられてもよい。結果として、トレーニングユーザの知識および経験は、データ解析サーバ104によって活用されて、ガイド付きユーザに有用な推薦を提供し得る。グループからのトレーニングユーザのセットを同じグループからのガイド付きユーザのセットに関連付けることにより、システムはユーザに、そのグループに特に関連する推薦を提供することができ、グループ内のユーザがグループ全体の一貫性を維持し、独自の情報(例えば、方程式、関数、およびデータ)を保護しながら、生産性を高めることができるようになる。
【0042】
一実施形態では、トレーニングユーザおよびガイド付きユーザの複数のセットが存在する。特定のユーザは同時にトレーニングユーザおよびガイド付きユーザとすることができ、複数の組のトレーニングユーザおよび/またはガイド付きユーザに属することができる。ユーザはあるタイプのプロジェクト(例えば、会計)に関してはトレーニングユーザであってもよいが、別のタイプのプロジェクト(例えば、マーケティング)に関してはガイド付きユーザであってもよい。トレーニングユーザおよび/またはガイド付きユーザとしてのユーザのステータス、ならびにトレーニングユーザとガイド付きユーザとの間の任意の関連付けは、ユーザデータストア117に格納され得る。ユーザモジュール115は、特定のプロジェクトについて、ユーザのステータスを、ガイド付きユーザまたはトレーニングユーザのいずれかとして決定することができる。ユーザがガイド付きユーザである場合、ユーザモジュール115はさらに、推薦を生成するためにトレーニングユーザのどのセットが使用されるべきかを決定することができる。
【0043】
データベースオペレーション推薦モジュール114は、コンテキストデータおよびデータベースオペレーション履歴データに基づいて、ユーザに対して推薦されるデータベースオペレーションを決定する。データベースオペレーション推薦モジュール114は、予測モデルに基づいてデータベースオペレーションを推薦する。データベースオペレーションは、予測モデルによっても決定されるオペランドを含む。オペランドは、関数入力などのデータベースオペレーションのための入力またはパラメータである。様々な実施形態では、予測モデルがデータベース動作履歴データおよびコンテキストデータを使用することによってトレーニングされ得る機械学習アルゴリズムである。ロジスティック回帰、ニューラルネットワーク、決定木モデル、およびサポートベクトルマシンモデルを含む、様々な予測モデルが当技術分野で周知である。モデルは入力の特定のセット(例えば、コンテキストデータ)が与えられると、特定のデータベースオペレーションが適切である確率を予測し、可能性のあるデータベースオペレーションのうちの1つまたは複数、および任意選択で、推奨された操作に対応するオペランドを推奨する。予測モデルは、データベース動作履歴データおよびコンテキストデータを使用してトレーニングされる機械学習アルゴリズムとすることができる。一実施形態では、多項ロジスティック分類器または他の適切な汎用機械学習技法などの識別モデルが使用される。方程式、パラメータ、および他のモデル特性は、データベースオペレーション推奨ストア121に格納され得る。データベースオペレーション推奨を生成するための3つのモデル例について、
図2を参照して以下に説明する。
【0044】
図2は、一実施形態によるデータベースオペレーション推薦モジュール114のより詳細な図を示す。モデル構築モジュール205は予測モデルを構築し、モデルトレーニングモジュール210はトレーニングユーザからのトレーニングデータを使用して予測モデルをトレーニングし、推薦生成モジュール220は、トレーニングされた予測モデルを使用して、ガイド付きユーザに対する推薦のためのデータベース動作を決定する。一実施形態では、モデルが多項ロジスティック分類子を使用する。ログエントリからプロファイルされたメタデータフィールドによって表されるような特定のコンテキストデータが与えられると、多項式ロジスティック分類子を使用するモデルは、それぞれの確率を有するデータベース演算のリストを生成する。モデルは、トレーニングデータを用いてトレーニングされる。一実施形態では、トレーニングデータがトレーニングユーザのセットに関する格納されたデータベースオペレーション履歴データおよびコンテキストデータを含む。この実施形態では、モデルトレーニングモジュール210が例えばユーザデータストア117からモデルのトレーニングユーザを決定し、データベース動作履歴ストア120からトレーニングデータを取り出す。
【0045】
モデル構築モジュール205は予測モデルを構築し、この機能を実行するための1つの手段である。多項ロジスティック分類器は、所与の情報に基づいて事象が発生する確率の推定値を提供する。多項ロジスティック分類器は、以下の形式をとる:
【0047】
ここで、P(c|d)は、特徴Fによって特徴付けられる条件dが与えられた場合に生じるクラスcによって特徴付けられる事象の確率の推定値である。クラスcは、演算またはオペランドのいずれかである特定の予測モデルの出力に対応し、特徴Fは、関連するコンテキストデータに対応する。F
i(d,c)は特徴iの観測の尺度であり、F値が高いほど、特徴の存在の相対的な尺度が高いことを示す。λ
i,cは、クラスcに対応する特徴iの特徴重みである。特定の特徴に対する高いλ
i,cは、F値がクラスcに対する強力な指標であることを示す。特徴は、異なるクラスcに対して異なるF値またはλ値を有することができる。P(c|d)によって表される確率は、クラスcについて、クラスの全ての特徴にわたる観測の尺度と特徴の重みとの積の合計の指数(exponential)を決定し、その値を全てのクラスにわたる同じ値の合計で割ることによって、計算される。
【0048】
一実施形態では、モデル構築モジュール205が3つのモデルを構築する:演算モデル(OPモデル)、オペランドモデル(OPDモデル)、列演算モデル(OPCモデル)である。3つのモデルの各々は、トレーニングユーザーからのトレーニングデータを使用してモデルトレーニングモジュール210によってトレーニングされる。3つのモデルの各々は、推薦生成モジュール220によって使用されて、推薦されたデータベースオペレーションおよび/またはオペランドと、コンテキストデータに基づく関連する相対確率とのリストを生成する。
【0049】
OPモデルは、単一テーブルデータベースオペレーションの推奨データベースオペレーションのリストおよび関連する確率を生成する。OPモデルの機能は、列メタデータフィールドである。
【0050】
OPDモデルは、単一テーブルデータベースオペレーションのための推奨データベースオペレーションのためのオペランドのリストおよび関連する確率を生成する。OPDモデルの特徴は、列メタデータフィールドおよびデータベースオペレーションである。一実施形態では、OPDモデルがOPモデルと併せて使用され、OPモデルによって決定されたデータベースオペレーションのためのオペランドを決定する。OPDモデルは、OPDモデルによって決定された推奨オペランドが決定された演算に対応するように、OPモデルによって決定されたデータベース演算を入力として取り込む。
【0051】
OPCモデルは、2テーブルデータベースオペレーションのための推奨データベースオペレーションのリストおよび関連する確率を生成する。OPCモデルの特徴は、2つのテーブルの各々および2つの列の各々についてのメタデータである。
【表5】
【0052】
各モデルについて、モデルトレーニングモジュール210は、多項ロジスティック分類器に含める特徴としてどのコンテキストデータフィールドが選択されるかを決定する。モデルトレーニングモジュール210はさらに、選択された各特徴に対する特徴重みを決定する。すべてのメタデータフィールドが演算および/またはオペランドを予測するわけではないので、すべてのメタデータフィールドがモデルの特徴として使用されるわけではない。一実施形態では、モデルトレーニングモジュール210が複数のデータベース動作履歴エントリにわたって、取られる特定のデータベース動作または使用されるオペランドを予測するモデル特徴として使用するコンテキストデータフィールドを選択する。モデルトレーニングモジュール210は、各コンテキストデータフィールドについて予測性の尺度を計算し、予測性の尺度は例えば、情報利得であってもよい。各クラスについて、モデルトレーニングモジュール210は、格納されたコンテキストデータに基づいて、可能な特徴のリスト内の各特徴についての情報利得を計算する。モデルトレーニングモジュール210は、閾値情報ゲイン値を超える特徴を選択し、モデルに含める。所与のクラスについて、特徴に関する情報利得は、以下の式によって計算することができる。
IG(C|F)=Entropy(C)−Entropy(C|F)
ここで、IG(C|F)は情報利得であり、Entropy(C)はクラスCのエントロピーであり、Entropy(C|F)は特徴の存在を仮定したクラスCの条件付きエントロピーである。
【0053】
一実施形態では、モデルトレーニングモジュール210が情報利得を計算する前に、コンテキストデータを前処理する。一実施形態では、モデルトレーニングモジュール210がコンテキストデータを再サンプリングして、各クラスにわたるデータエントリの分布をより均一にし、その結果、より少ない頻度のデータベースオペレーションがモデルにおいて過少に表されないようにする。再サンプリング技術は、アンダーサンプリング法、オーバーサンプリング法、またはハイブリッド法を含むことができる。一実施形態では、リサンプリングがSMOTE(Synthetic Minority Oversampling Technique)を用いて実行される。様々な実施形態では、すべてのデータを数値表現に変換すること、データの正規化、および数値の2進数への量子化など、他の前処理ステップがコンテキストデータに対して実行される。
【0054】
図3は、OPモデルなどの予測モデルをトレーニングする際に使用するための特徴およびクラスを示すデータエントリの例示的なテーブルである。
図3の例では、列301〜308に示される特徴が、データベースオペレーションが実行された列に対応する列メタデータエントリの選択されたセットである。
【0055】
列301は、表4で識別される「column_id」メタデータフィールドからの値を含む。
【0056】
列302は、表4で識別される「column_type」メタデータフィールドからの値を含む。
【0057】
列303は、表4で識別される「column_nulls」メタデータフィールドからの値を含む。
【0058】
列304は、表4で識別される「column_unique」メタデータフィールドからの値を含む。
【0059】
列305は、表4で識別される「Column_pattern」メタデータフィールドからの値を含む。
【0060】
列306は、表4で識別される「column_domain」メタデータフィールドからの値を含む。
【0061】
列307は、表4で識別される「column_maxvalue」メタデータフィールドからの値を含む。
【0062】
列308は、表4で識別される「column_minvalue」メタデータフィールドからの値を含む。
【0063】
ここでのモデルのクラスは列310に示される表1に識別されるように、列上で実行されたデータベースオペレーションの名前である。表5に示されるように、これらの特定の例示的な特徴およびクラスは、OPモデルをトレーニングするために使用される。
図3の例は14個のデータエントリを示すが、実際には上述した予測モデルが数百、数千、数百万またはそれ以上のデータエントリを用いてトレーニングすることができる。様々な実施形態において、データエントリを構成するコンテキストデータおよびデータベースオペレーション履歴データの断片は、
図2に関して上述したように、モデルトレーニングモジュール210によってログエントリから選択される。データエントリは、データベースオペレーション推薦ストア121に格納されてもよい。
【0064】
推薦生成モジュール220は、トレーニングされた予測モデルを使用して、ガイド付きユーザに対する推薦のためのデータベースオペレーションおよび/またはオペランドのリストを、それぞれの相対確率と共に決定する。推薦生成モジュール220は、例えばログファイルの形式でコンテキストデータを受信する。推薦生成モジュール220は関連コンテキストデータを、予測モデルに入力され得るフォーマットでキャプチャするように、ログファイルをプロファイルする。推薦生成モジュール220は推薦を生成するために、適切な予測モデルにコンテキストデータを入力する。様々な実施形態では、使用される予測モデルが単一テーブル推奨の場合にはOPモデルおよびOPDモデルであり、マルチテーブル推奨の場合にはOPCモデルである。推薦生成モジュール220は、様々なイベントの発生時に、定期的な間隔で、または任意の他の適切な時間に、推薦を生成することができる。一実施形態では、推薦生成モジュール220がデータ解析アプリケーション125のユーザインタフェースにおける列の選択を検出し、それに応答してその列に対する推薦を生成するプログラムコードを実行する。このような推薦を生成するためのプロセスは、
図5に関して以下に説明される。
【0065】
推薦生成モジュール220は、生成された1つまたは複数のリストから1つまたは複数の推薦データベースオペレーションおよび/またはオペランドを選択する。一実施形態では、推薦生成モジュール220が予測モデルによって計算されるように、最も高い相対確率を有する推薦を選択する。例えば、選択された列に対する単一シート推薦に対して、推薦生成モジュール220は、OPモデルによって決定される3つの最も確からしいデータベースオペレーションと、OPDモデルによって決定される各オペレーションに対する1つの最も確からしいオペランドとを選択することができる。
【0066】
推薦生成モジュール220はユーザに表示するために、データ解析アプリケーション125に推薦を提供する。一実施形態では、推奨が動作のテキスト記述として提供される。各データベースオペレーションのテキスト記述は、データベースオペレーション推薦ストア121に格納することができる。推薦生成モジュール220はユーザに表示するためにデータ解析アプリケーション125に提供するために、推薦されたデータベースオペレーションのためのテキスト記述を取り出してもよい。
【0067】
図4は、一実施形態による、データ解析アプリケーションにおいてデータを閲覧および操作するためのユーザインタフェース400の一例を示す。例示的なユーザインタフェースは、データセクション410、情報セクション415、およびコントロール417を含む。
【0068】
データセクション410は、閲覧および操作のためのテーブルを表示する。データセクション410は1つ以上のデータソース(例えば、102)から抽出されたデータでポピュレート(populated)される。この例では、2つのテーブルタブ405が示され、「MDM顧客データ(MDM Customer Data)」と題するテーブルがデータセクション410に表示される。ユーザは、テーブルタブ405を使用してプロジェクト内の他のテーブルにナビゲートすることができる。
図4の例では、列「first_name」407が選択される。
【0069】
情報セクション415は、テーブルおよび選択されたデータに関するプロファイル情報を表示する。情報セクション415において、オーバービューカード420は選択された列(first name)の情報オーバービュー(例えば、タイプ、固有値のパーセンテージ、ブランク値のパーセンテージ、列内の名前の最小長、列内の名前の最大長、およびドメインの数)を提供する。ドメインカード425は、テーブル405内のすべてのドメインに関する情報、およびどのくらいの行が各ドメインに対応するかについての情報を含む。値頻度カード430は、選択されたファーストネーム列407における種々の名前の値の頻度、並びに名前の各時間がどのように発生するかをリストする。
【0070】
提案カード435は、データベースオペレーション推奨モジュール114によって決定された推奨データベースオペレーションを実行するための提案をユーザに提供する。図示の例では、提案されたデータベース動作がファーストネーム(first name)として検証される。システムは、インタフェースのユーザにこれらのインテリジェントな提案を提供するのを助けるために、上述のデータプロファイリングを使用する。提案カード435については、
図5および
図6に関して以下でより詳細に説明する。
【0071】
コントロール317は、ユーザが表示されたデータおよびテーブルを操作することを可能にし、データおよびテーブルに対してデータベースオペレーションを実行することを含む。データおよびテーブルは、データエントリとの対話(セル内容の編集、セルの右クリック、方程式の挿入など)または提案カード335などの情報セクション内の要素との対話などの他の方法で操作することもできる。
【0072】
図5Aは一実施形態による、データ解析アプリケーションのガイド付きユーザに対してデータベースオペレーションを決定し推奨するための予測モデルを構築し、トレーニングするための方法を示すフローチャートである。データ解析サーバ104は、データ解析アプリケーション125のユーザをトレーニングするためのコンテキストデータおよびデータベースオペレーション履歴データを維持する(500)。データ解析サーバ104はある期間にわたって、データ解析アプリケーション125のインスタンスからのコンテキストデータおよびデータベースオペレーション履歴データを、例えば、
図1に関して上述したようなログファイルとして受信および格納することによって、コンテキストデータおよびデータベースオペレーション履歴データを維持する。一実施形態では、データ解析アプリケーション125がデータベースオペレーションを検出すると、ログファイルをデータベースオペレーション履歴モジュール112に送信する。別の実施形態では、データベースオペレーション履歴モジュール112がデータ解析アプリケーション125を継続的に監視し、データベースオペレーションを検出すると、データベースオペレーション履歴データおよび対応するコンテキストデータを受信し、記憶する。
【0073】
図1に関して上述したように、ガイド付きユーザおよび/またはトレーニングユーザとしてのユーザのステータス、ならびにガイド付きユーザとトレーニングユーザとの組の間の関連付けは、システム管理者、他のユーザによって、または自動的に指定することができる。
【0074】
ステップ505および510では、ガイド付きユーザに推薦を提供する際に使用するために、1つまたは複数の予測モデルが構築され、トレーニングされる。データベースオペレーション推奨モジュール114は、予測モデルを構築する(505)。予測モデルは、演算モデル(OP)、オペランドモデル(OPD)、列演算モデル(OPC)、またはそれらの任意の組合せとすることができる。予測モデルを構築することは、そのデータベースオペレーションがモデルのトレーニングデータとして使用されるトレーニングユーザを決定することを含む。予測モデルを構築することは、モデルクラスを決定することをさらに含む。例えば、予測モデルがOPモデルである場合、クラスはデータベースオペレーションである。予測モデルがOPDモデルである場合、クラスはオペランドである。予測モデルがOPCモデルである場合、クラスは結合および和演算、または定義された2テーブル演算である。予測モデルを構築するステップは上記の表5に関して説明したように、可能なモデル特徴を決定するステップをさらに含む。予測モデルを構築するステップは、データベース動作推薦ストア121からモデル方程式を検索するステップをさらに含む。ステップ505の終わりに、モデルはそのトレーニングされていない形式で存在する。
図2に関して説明した方程式は各クラスについて組み立てられるが、特徴重みは未知であるか、またはデフォルト値に設定される。この形態では、モデルが決定されたトレーニングユーザに対応する適切なコンテキストデータを用いてトレーニングする準備ができている。
【0075】
モデルトレーニングモジュール210は、決定されたトレーニングユーザからの維持されたデータベースオペレーション履歴データおよびコンテキストデータを使用して、モデルをトレーニングする(510)。モデルトレーニングモジュール210は、プロファイリングデータストア118およびデータベースオペレーション履歴ストア120から、トレーニングユーザに対応するデータベースオペレーション履歴データおよびトレーニングコンテキストデータを検索する。
図2に関して上述したように、モデルトレーニングモジュール210は、どのコンテキストデータが特定のデータベースオペレーションまたはオペランドを予測するかを決定する。モデルトレーニングモジュール210は、
図2に関して上述したように、各モデル特徴に対する特徴重みを決定する。特徴重みおよび他のパラメータは、データベースオペレーション推薦ストア121に格納され、必要に応じて使用のために取り出され得る。一実施形態では、モデルトレーニングモジュール210が
図2に関して上述したように、モデルをトレーニングする前にコンテキストデータを前処理する。一旦、モデルがトレーニングされると、モデルは、特徴のセット(データ解析アプリケーションから受信したコンテキストデータ)に基づいてクラス(オペレーションまたはオペランド)の確率を決定するために使用され得る。
【0076】
ステップ505および510は定期的な間隔で、継続的に、またはどれだけの新しいトレーニングデータが利用可能であるかなどの要因に応じて、行われ得る。ステップ505および510は、データベース動作推奨モジュール114によって生成される各予測モデルに対して繰り返されてもよい。
図2に関して上述したように、OPDモデルはOPモデルによって決定されたデータベースオペレーションのためのオペランドを決定するために、OPモデルと共に使用することができる。OPDモデルはOPDモデルによって決定された推奨オペランドが決定された演算に対応するように、OPモデルによって決定されたデータベース演算を入力として取り込むことができる。
【0077】
図5Bは、一実施形態による、データ解析アプリケーションのガイド付きユーザにデータベースオペレーションを推薦するためにトレーニングされた予測モデルを使用する方法を示すフローチャートである。推薦生成モジュール220は、ガイド付きユーザのデータ解析アプリケーション125からアプリケーションコンテキストデータを受信する(550)。一実施形態では、アプリケーション・コンテキスト・データがデータ解析アプリケーション内に表示されたテーブル内で選択された列など、データ解析アプリケーション125との検出された対話に応答して受信される。データ解析アプリケーション125は対話を検出し、コンテキストデータを含むアプリケーションログエントリを作成し、アプリケーションログエントリをデータ解析サーバ104に送信する。一実施形態では、推薦生成モジュール220が、アプリケーションログエントリをプロファイルして、トレーニングされた予測モデルへの入力として使用することができるフォーマットで、コンテキストデータを取り込む。
【0078】
推薦生成モジュール220は、コンテキストデータに基づいて、推薦を生成するために使用する1つ以上のモデルを選択する(555)。例えば、コンテキストデータが、プロジェクトが1つのテーブルを有することを示す場合、推薦生成モジュール220は、OPモデルおよびOPDモデルを使用して、推薦を生成する。コンテキストデータが、プロジェクトが複数のテーブルを有することを示す場合、推薦生成モジュール220は、OPモデル、OPDモデル、およびOPCモデルを使用して、推薦を生成する。
図2および
図5Aに関して上述したように、OPDモデルは、OPモデルの出力を入力として使用して、OPモデルによって決定された推奨演算のリストに対応するオペランドを決定することができる。
【0079】
推薦生成モジュール220は、選択された予測モデルおよび受信されたコンテキストデータを使用して、ガイド付きユーザに推薦するためのデータベースオペレーションおよび/またはオペランドのリストを生成する(560)。様々な実施形態では、生成された推奨のリストがOPモデル、OPDモデル、およびOPCモデル、ならびに他の予測モデルのうちの1つまたは複数によって決定される演算およびオペランドを含む。推薦生成モジュール220は、ステップ555で選択された各モデルを使用して、各モデルクラスに関連する確率を決定する。生成された推奨のリストは、決定された確率に基づいている。例えば、OPモデルまたはOPCモデルが使用される場合、推薦生成モジュール220はモデルによって決定されるような多数の最も確からしいデータベースオペレーションを選択し、案内されたユーザに推薦として提供する。OPDモデルも使用される場合、OPモデルによって決定された選択されたデータベース演算は、選択されたデータベース演算のための最も可能性の高いオペランドの数を決定するためにOPDモデルへの入力として使用される。
【0080】
推薦生成モジュール220は、ガイド付きユーザに提示するために、推薦のリストをデータ解析アプリケーション125に送信する(535)。一実施形態では、各推奨データベースオペレーションがデータ解析アプリケーション125のデータベースオペレーションを一意に識別するオペレーション識別子を含む。別の実施形態では、各推奨データベースオペレーションがデータ解析アプリケーション125のユーザに提示するためのデータベースオペレーションのテキスト名または説明をさらに含む。データベースオペレーション、オペレーション識別子、ならびにテキスト名および説明は、データベースオペレーション推薦ストア121に格納され、推薦されたデータベースオペレーションをデータ解析アプリケーション125に送る前に、データベースオペレーション推薦モジュール114によって検索され得る。
【0081】
図6は、一実施形態による、選択された列に応答して提供される推奨を備えた、
図3の例示的なユーザインタフェースを示す。例示的なユーザインタフェースでは、例えばユーザ入力に応答して、列650が選択される。データ解析アプリケーション125は列選択を検出し、データ解析サーバ104に通知する。データ解析サーバ104は、列650の選択に応答して、データ解析アプリケーション125からコンテキストデータを受信する。一実施形態では、データベースオペレーション推薦モジュール114がユーザのステータスを、ユーザデータストア117からの特定のプロジェクトに対するガイド付きユーザと決定し、コンテキストデータをOPモデル(単一の列が選択されるため)およびOPCモデルに渡す。OPモデルは演算のリストを出力し、OPCモデルは、1つ以上のオペランドを出力する。データベースオペレーション推奨モジュール114は、推奨されるデータベースオペレーション、および適切な場合にはオペランドを決定し、その推奨をデータ解析アプリケーション125に送る。
図6の例では、ユーザが異なる方法でフォーマットされた電話番号を含むように見える列を選択している。したがって、提供される2つの推奨は、OPモデルによって決定された電話番号をフォーマットする動作と、OPDモデルによって決定された適用する特定の形式のフォーマットのオペランドとを含む。
【0082】
図7は、データ解析アプリケーションにおいて、データ解析サーバから受信した推奨データベースオペレーションおよびオペランドを提示するための方法を示すフローチャートである。データ解析アプリケーション125は、データ解析サーバ104から推奨データベースオペレーションおよびオペランドを受信する(700)。
図5に関して上述したように、データベース動作は、データ解析アプリケーション125のユーザインタフェースに提示するためのテキスト名または記述を含むことができる。UIモジュール122は、データ解析サーバ104によって提供されるテキスト名および説明を使用して、推奨データベースオペレーションおよびオペランドに対応するユーザインタフェース要素を生成する(710)。UIモジュール122は、データ解析アプリケーション125のユーザインタフェースを介して、データ解析アプリケーションのユーザに1つ以上の推奨データベースオペレーションを提示する(720)。
【0083】
図6に戻ると、提案カード435は推奨データベースオペレーションを含む。列650は、異なる方法でフォーマットされた電話番号を含む。提案カード435上の推奨660A〜Cは、セルまたは列内の電話番号をフォーマットすることを含む。推奨650AおよびBは、共通のデータベースオペレーション(電話番号のフォーマット)を有するが、異なるオペランド(電話番号の出力フォーマット)を有する。データ解析アプリケーションのユーザは、推奨660A〜Cのうちの1つを選択して、データに対して指示されたデータベースオペレーションを実行することができる。
【0084】
追加構成の考慮事項
本明細書で説明するシステムは、クラウドベースのコンピュータ実装を含む、単一のコンピュータまたはコンピュータのネットワークを使用して実装することができる。コンピュータは、好ましくは1つまたは複数の高性能CPUおよび1Gまたはそれ以上のメインメモリ、ならびに500Gbから2Tbのコンピュータ可読永続ストレージを含み、LINUXまたはその変形などのオペレーティングシステムを実行するサーバクラスコンピュータである。本明細書で説明するシステムの動作は、コンピュータストレージにインストールされ、本明細書で説明する機能を実行するために、そのようなサーバのプロセッサによって実行されるハードウェアおよびコンピュータプログラムの組み合わせによって制御することができる。システム100はネットワークインターフェースおよびプロトコル、データ入力のための入力デバイス、ならびに表示、印刷、または他のデータの提示のための出力デバイスを含む、本明細書で説明される動作に必要な他のハードウェア要素を含むが、これらは実施形態の関連する詳細を不明瞭にすることを避けるために本明細書では示されない。
【0085】
上記の説明のいくつかの部分は、アルゴリズムのプロセスまたは動作に関して実施形態を説明する。これらのアルゴリズムの説明および表現は、データ処理技術の当業者によって一般的に使用され、彼らの作業内容を他の当業者に効果的に伝える。これらの動作は機能的、計算的、または論理的に説明されているが、プロセッサまたは等価の電気回路、マイクロコードなどによって実行される命令を含むコンピュータプログラムによって実施されるものと理解される。さらに、一般性を損なうことなく、これらの機能的オペレーションの配置をモジュールと呼ぶことも便利である場合があることが判明している。説明された動作およびそれらの関連するモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せで具現化されてもよい。
【0086】
本明細書で使用されるように、用語「モジュール」は、指定された機能を提供するために利用されるコンピュータプログラムロジックを指す。したがって、モジュールは、ハードウェア、ファームウェア、および/またはソフトウェアで実装することができる。一実施形態では、プログラムモジュールが記憶装置に格納され、メモリにロードされ、プロセッサによって実行される。本明細書で説明される物理的構成要素の実施形態は、本明細書で説明されるもの以外の他のおよび/または異なるモジュールを含むことができる。さらに、他の実施形態では、モジュールに起因する機能が他のモジュールまたは異なるモジュールによって実行することができる。さらに、この説明は、明瞭さおよび便宜のために「モジュール」という用語を省略することがある。
【0087】
本発明はまた、本明細書における動作を実行するための装置に関する。この装置は、必要な目的のために特別に構築されてもよく、またはコンピュータによってアクセスされ得るコンピュータ可読媒体上に格納されたコンピュータプログラムによって選択的に起動または再構成される汎用コンピュータを備えてもよい。そのようなコンピュータプログラムはフロッピー(登録商標)ディスク、光ディスク、CD−ROM、磁気−光ディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気または光カード、特定用途向け集積回路(ASIC)、または電子命令を記憶するのに適した任意のタイプのコンピュータ可読記憶媒体を含む任意のタイプのディスクなどのコンピュータ可読記憶媒体に記憶することができ、それぞれがコンピュータシステムバスに結合されるが、これらに限定されない。さらに、本明細書で言及するコンピュータは単一のプロセッサを含むことができ、または計算能力を高めるために複数のプロセッサ設計を使用するアーキテクチャとすることができる。
【0088】
本明細書で使用される「1つの実施形態」または「一実施形態」への言及は、実施形態に関連して説明された特定の要素、機能、構成、または特徴が少なくとも1つの実施形態に含まれることを手段する。明細書の様々な場所における「一実施形態では」という語句の出現は、必ずしもすべてが同じ実施形態を指すとは限らない。
【0089】
本明細書において用いられるとき、「備える(comprises)」、「備える(comprising)」、「含む(includes)」、「含める(including)」、「有する(has)」、「有する(having)」という用語またはそれらの任意の他の活用形は、非限定的な包含をカバーするものとする。例えば、一連の要素を含むプロセス、方法、物品、または装置は、それらの要素のみに必ずしも限定されず、特に明記されていないかあるいはかかるプロセス、方法、物品、または装置に固有の他の要素を含めてもよい。更に、明確に逆のことを表さない限り、「または」は包括的「or」を指し、排他的「or」を意味しない。例えば、条件AまたはBは、以下のいずれか1つによって満たされる:Aが真であり(または存在する)かつBが偽である(または存在しない)、Aが偽であり(または存在しない)かつBが真である(または存在する)、AおよびBの両方が真である(または存在する)。
【0090】
さらに、「1つの(a)」または「1つの(an)」の使用は、本明細書の実施形態の要素および構成要素を説明するために使用される。これは、単に便宜上、かつ本開示の一般的な意味を与えるためになされる。本明細書は1つまたは少なくとも1つを含めるように読まれるべきであり、複数でないことを意図することが明白でない限り、単数形は複数形も含める。
【0091】
本開示を読めば、当業者は、識別子空間にわたるエンティティの類似性を決定するためのシステムおよびプロセスのためのさらに追加の代替の構造および機能設計を理解するであろう。したがって、特定の実施形態および用途を図示し、説明したが、本発明は、本明細書に開示される正確な構成および構成要素に限定されず、当業者には明らかな様々な修正、変更、および変形が添付の特許請求の範囲に定義される精神および範囲から逸脱することなく、本明細書に開示される方法および装置の構成、動作、および詳細において行われてもよいことを理解されたい。