(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-01
(45)【発行日】2022-04-11
(54)【発明の名称】大量な文書コーパスにおけるトークン・マッチング
(51)【国際特許分類】
G06F 16/33 20190101AFI20220404BHJP
G06F 40/242 20200101ALI20220404BHJP
【FI】
G06F16/33
G06F40/242
(21)【出願番号】P 2021507838
(86)(22)【出願日】2019-08-21
(86)【国際出願番号】 US2019047527
(87)【国際公開番号】W WO2020041486
(87)【国際公開日】2020-02-27
【審査請求日】2021-02-15
(32)【優先日】2018-08-22
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-02-10
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】303039534
【氏名又は名称】ネットアップ,インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】リーボヴィッツ,ガイ
【審査官】後藤 彰
(56)【参考文献】
【文献】特表2009-535747(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 40/00-40/58
(57)【特許請求の範囲】
【請求項1】
複数のエンティティを含む辞書を、サーバによって、受信するステップであり、各エンティティは、1トークンとnトークンとの間の長さを有する、ステップと、
n個のブルームフィルタ(BF)ペアを含む確率的データ表現モデルを、前記サーバによって、自動的に構築するステップであり、各BFペアは、1からnまでインデックス付けされている、ステップと、
前記複数のエンティティのデータ表現を、前記サーバによって、前記確率的データ表現モデルに自動的に設定するステップと、
トークンへと分割されたテキストコーパスを、前記サーバによって、受信するステップと、
前記テキストコーパスにおける各トークンを、前記サーバによって、前記設定された確率的データ表現モデルに対して自動的にマッチングするステップと、
を含む、方法。
【請求項2】
iでインデックス付けされた各BFペアに関して、前記BFペアにおける第1のBFに、少なくとも(i+1)個のトークンを有する前記複数のエンティティから最初のi個のトークンが設定され、かつ、前記BFペアにおける第2のBFに、正確にi個のトークンを有する前記複数のエンティティから全てのトークンが設定される、
請求項1に記載の方法。
【請求項3】
前記マッチングは、さらに、
マッチングを決定するために、1からnまでのインデックス付けの順番で各BFペアを逐次的に照会するステップ、を含む、
請求項1に記載の方法。
【請求項4】
各BFペアは、指定された数のハッシュ関数を有しており、
指定された数それぞれは、エラー確率を最小化するように計算された最適な数に等しい、
請求項1に記載の方法。
【請求項5】
各BFペアは、指定された数のハッシュ関数を有しており、
指定された数それぞれは、エラー確率を最小化するように計算された最適な数より少ない、
請求項1に記載の方法。
【請求項6】
各BFペアは、指定された数のハッシュ関数を有しており、
指定された数それぞれは、エラー確率を最小化するように計算された最適な数より少なく、
前記指定された数は、さらに、前記BFペアのインデックス付けが増加するにつれて、減少する、
請求項1に記載の方法。
【請求項7】
コンピューティング・システムであって、
マシンで実行可能なコードを有するマシンで読取り可能な媒体を含むメモリであり、トークン・マッチングの方法を実行するための命令が保管されている、メモリと、
前記メモリに結合されたプロセッサであり、前記マシンで実行可能なコードを実行するように構成されている、プロセッサと、を含み、
前記マシンで実行可能なコードが実行されると、前記プロセッサに、
複数のエンティティを含む辞書を受信し、各エンティティは、1トークンとnトークンとの間の長さを有しており、
n個のブルームフィルタ(BF)ペアを含む確率的データ表現モデルを自動的に構築し、各BFペアは、1からnまでインデックス付けされており、
前記複数のエンティティのデータ表現を、前記確率的データ表現モデルに自動的に設定し、
トークンへと分割されたテキストコーパスを受信し、かつ、
前記テキストコーパスにおける各トークンを前記設定された確率的データ表現モデルに対して自動的にマッチングする、
ようにさせる、
システム。
【請求項8】
iでインデックス付けされた各BFペアに関して、前記BFペアにおける第1のBFに、少なくとも(i+1)個のトークンを有する前記複数のエンティティから最初のi個のトークンが設定され、かつ、前記BFペアにおける第2のBFに、正確にi個のトークンを有する前記複数のエンティティから全てのトークンが設定される、
請求項7に記載のシステム。
【請求項9】
前記マシンで実行可能なコードは、さらに、前記プロセッサに、
マッチングを決定するために、1からnまでのインデックス付けの順番で各BFペアを逐次的に照会する、
ようにさせる、
請求項7に記載のシステム。
【請求項10】
各BFペアは、指定された数のハッシュ関数を有しており、
指定された数それぞれは、エラー確率を最小化するように計算された最適な数に等しい、
請求項7に記載のシステム。
【請求項11】
各BFペアは、指定された数のハッシュ関数を有しており、
指定された数それぞれは、エラー確率を最小化するように計算された最適な数より少ない、
請求項7に記載のシステム。
【請求項12】
各BFペアは、指定された数のハッシュ関数を有しており、
指定された数それぞれは、エラー確率を最小化するように計算された最適な数より少なく、
前記指定された数は、さらに、前記BFペアのインデックス付けが増加するにつれて、減少する、
請求項7に記載のシステム。
【請求項13】
非一時的なマシンで読取り可能な媒体であって、マシンで実行可能なコードを含む方法を実行するための命令を保管しており、少なくとも1つのマシンによって命令が実行されると、前記マシンに、
複数のエンティティを含む辞書を受信し、各エンティティは、1トークンとnトークンとの間の長さを有しており、
n個のブルームフィルタ(BF)ペアを含む確率的データ表現モデルを自動的に構築し、各BFペアは、1からnまでインデックス付けされており、
前記複数のエンティティのデータ表現を、前記確率的データ表現モデルに自動的に設定し、
トークンへと分割されたテキストコーパスを受信し、かつ、
前記テキストコーパスにおける各トークンを前記設定された確率的データ表現モデルに対して自動的にマッチングする、
ようにさせる、
非一時的なマシンで読取り可能な媒体。
【請求項14】
iでインデックス付けされた各BFペアに関して、前記BFペアにおける第1のBFに、少なくとも(i+1)個のトークンを有する前記複数のエンティティから最初のi個のトークンが設定され、かつ、前記BFペアにおける第2のBFに、正確にi個のトークンを有する前記複数のエンティティから全てのトークンが設定される、
請求項13に記載の非一時的なマシンで読取り可能な媒体。
【請求項15】
前記非一時的なマシンで読取り可能な媒体は、さらに、前記マシンに、
マッチングを決定するために、1からnまでのインデックス付けの順番で各BFペアを逐次的に照会する、
ようにさせる、マシンで実行可能なコードを含む、
請求項13に記載の非一時的なマシンで読取り可能な媒体。
【請求項16】
各BFペアは、指定された数のハッシュ関数を有しており、
指定された数それぞれは、エラー確率を最小化するように計算された最適な数に等しい、
請求項13に記載の非一時的なマシンで読取り可能な媒体。
【請求項17】
各BFペアは、指定された数のハッシュ関数を有しており、
指定された数それぞれは、エラー確率を最小化するように計算された最適な数より少ない、
請求項13に記載の非一時的なマシンで読取り可能な媒体。
【請求項18】
各BFペアは、指定された数のハッシュ関数を有しており、
指定された数それぞれは、エラー確率を最小化するように計算された最適な数より少なく、
前記指定された数は、さらに、前記BFペアのインデックス付けが増加するにつれて、減少する、
請求項13に記載の非一時的なマシンで読取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習の分野に関する。
【背景技術】
【0002】
テキスト分析、もしくは、大量の構造化されていないデータから構造化された情報を抽出することは、今日の企業において重要な見地になっている。テキスト分析における一般的なタスクは「辞書マッチング(dictionary matching、DM)」であり、これは非構造化テキストにおける単語とパターンの特定な集合(set)の検出である。電子メール、Webエンティティ、およびマシン・データログといった、構造化されていないテキストデータの量のこれまでの増加に伴い、DMのタスクを計算効率的な方法で実行することが、ますます重要になってきている。しかしながら、DM演算子(DM operators)が、テキスト分析のかなりの時間を要する部分を占めることがしばしばである。なぜなら、これらの演算子は、テキストコーパス(text corpora)をスキャンするが、一方で、後続のステップは、文書の結果および部分だけに作用するからである。従って、DMのタスクにおける計算(computing)およびメモリの要求を低減することは、非常に価値があり得る。
【0003】
前述の関連技術の例、および、それに関連する制限は、例示的であり、かつ、排他的ではないものとして意図されている。関連技術の他の制限は、明細書を読み、かつ、図面を学習することによって、当業者にとった明らかになるだろう。
【発明の概要】
【0004】
以下の実施形態、および、その態様は、システム、ツール、および、方法と関連して説明され、かつ、図示されており、それらは、範囲を限定するものではなく、例示的であり、かつ、説明的であるように意図されている。
【0005】
いくつかの実施形態において、以下のステップを含む方法が提供される。設定段階(populating stage)においては、複数のエンティティを含む辞書を受信するステップであり、ここで、各エンティティは、1トークンとnトークンとの間の長さを有するステップと、n個のブルームフィルタ(Bloom filter、BF)ペアを含む確率的データ表現モデルを自動的に構築するステップであり、ここで、各BFペアは1からnまでインデックス付けされているステップと、前記エンティティのデータ表現を前記確率的データ表現モデルに自動的に設定するステップであり、ここでは、iでインデックス付けされた各BFペアに関して、(1)前記BFペア内の第1のBFに、少なくとも(i+1)個のトークンを有する全てのエンティティの最初のi個のトークンが設定され、かつ、(2)前記BFペア内の第2のBFに、正確にi個のトークンを有する全てのエンティティが設定される、ステップと、を含む。マッチング段階(matching stage)においては、テキストコーパスを受信するステップであり、ここで、前記テキストコーパスはトークンへと分割されているステップと、前記テキストコーパスにおける各トークンを前記設定された確率的データ表現モデルに対して自動的にマッチングするステップであり、ここで、前記マッチングは、前記各BFペアを前記インデックスの順番で逐次的に照合して、一致を決定する、ステップと、を含む。
【0006】
いくつかの実施形態においては、また、少なくとも1つのハードウェアプロセッサ、および、プログラム命令が保管された非一時的なコンピュータで読取り可能な記憶媒体を含む、システムも提供される。本プログラム命令は、少なくとも1つのハードウェアプロセッサによって実行可能であり、設定段階においては、複数のエンティティを含む辞書を受信し、ここで、各エンティティは、1トークンとnトークンとの間の長さを有しており、n個のブルームフィルタ(BF)ペアを含む確率的データ表現モデルを自動的に構築し、ここで、各BFペアは1からnまでインデックス付けされており、前記エンティティのデータ表現を前記確率的データ表現モデルに自動的に設定し、ここでは、iでインデックス付けされた各BFペアに関して、(1)前記BFペア内の第1のBFに、少なくとも(i+1)個のトークンを有する全てのエンティティの最初のi個のトークンが設定され、かつ、(2)前記BFペア内の第2のBFに、正確にi個のトークンを有する全てのエンティティが設定されている。マッチング段階においては、テキストコーパスを受信し、ここで、前記テキストコーパスはトークンへと分割されており、そして、前記テキストコーパスにおける各トークンを前記設定された確率的データ表現モデルに対して自動的にマッチングする。ここで、前記マッチングは、前記各BFペアを前記インデックスの順番で逐次的に照合して、一致を決定することを含む。
【0007】
いくつかの実施形態においては、さらに、そこで具現化されるプログラム命令を有する非一時的なコンピュータで読取り可能な記憶媒体を含むコンピュータプログラム製品が提供される。本プログラム命令は、少なくとも1つのハードウェアプロセッサによって実行可能であり、設定段階においては、複数のエンティティを含む辞書を受信し、ここで、各エンティティは、1トークンとnトークンとの間の長さを有しており、n個のブルームフィルタ(BF)ペアを含む確率的データ表現モデルを自動的に構築し、ここで、各BFペアは1からnまでインデックス付けされており、前記エンティティのデータ表現を前記確率的データ表現モデルに自動的に設定し、ここでは、iでインデックス付けされた各BFペアに関して、(1)前記BFペア内の第1のBFに、少なくとも(i+1)個のトークンを有する全てのエンティティの最初のi個のトークンが設定され、かつ、(2)前記BFペア内の第2のBFに、正確にi個のトークンを有する全てのエンティティが設定されている。マッチング段階においては、テキストコーパスを受信し、ここで、前記テキストコーパスはトークンへと分割されており、そして、前記テキストコーパスにおける各トークンを前記設定された確率的データ表現モデルに対して自動的にマッチングする。ここで、前記マッチングは、前記各BFペアを前記インデックスの順番で逐次的に照合して、一致を決定することを含む。
【0008】
いくつかの実施形態において、各BFペアは、指定された数のハッシュ関数を有し、ここで、前記指定された数は、エラー確率を最小化するために計算された最適な数に等しい。
【0009】
いくつかの実施形態において、前記指定された数は、最適な数より少ない。いくつかの実施形態において、前記指定された数は、前記BFペアのインデックス付けが増加すると、さらに減少する。
【0010】
上述の例示的な態様および実施形態に加えて、さらなる態様および実施形態が、図面を参照し、かつ、以下の詳細な説明を検討することによって、明らかになる。
【図面の簡単な説明】
【0011】
例示的な実施形態が、参照図に示されている。図において示されているコンポーネントおよび特徴(features)の寸法は、一般的に、簡便性および表現の明確性のために選択されており、そして、必ずしも縮尺通りに示されてはいない。図面は、以下に列挙されている。
【
図1A】
図1Aは、文書トークン化(document tokenization)プロセスを示している。
【
図1B】
図1Bは、マルチグラム(multi-gram)・トークン・マッチング・プロセスを示している。
【
図2】
図2は、ブルームフィルタ(Bloom filter)のオペレーションを模式的に示している。
【
図3】
図3は、一つの実施形態に従って、ブルームフィルタ・ペアを含む逐次確率的データ表現(sequential probabilistic data presentation)を示している。
【
図4】
図4は、一つの実施形態に従って、逐次確率的データ表現を使用して、大きなテキストコーパスに対してトークンの辞書を自動的にマッチングする方法における機能ステップに係るフローチャートである。
【発明を実施するための形態】
【0012】
ここにおいて開示されているのは、辞書エンティティの逐次確率的データ表現を使用して、大きなテキストコーパスに対するエンティティの辞書の自動的、高速、かつ、効率的なマッチングのための方法、システム、およびコンピュータプログラム製品である。開示される方法は、高精度であり、かつ、大規模なマッチング・オペレーションが可能であり、一方で、時間、メモリ、および、計算リソースの必要性を低減している。
【0013】
ここで使用されるように、「辞書マッチング(DM)」は、また、「トークン・マッチング」としても参照され、テキストにおける所与のトークンの全ての出現を発見するタスクである。この問題の最も基本的なインスタンスは、正確なトークン・マッチング問題、すなわち、テキストにおけるパターンの出現を正確に全て見つける問題である。近似(approximate)トークン・マッチング(ファジィ(fuzzy)トークン・マッチングとしても、また、知られているもの)は、パターンの近似マッチングを見つける技術である。典型的には、テキストコーパスについてDMが実行される前に、「トークン化」の前処理段階が実行され、テキストを、例えば、単語(words)および文(sentences)へと分割する。トークンは、処理のための有用な意味単位(semantic unit)として一緒にグループ化される、文書中のキャラクタ・シーケンス(character sequence)のインスタンスとして定義され得る。トークン化プロセスは、所定の句読点を除去しながら、
図1Aに示されるように、テキストを、例えばホワイトスペースにおいて分割することによって、行うことができる。他の場合に、トークン化は、特殊文字、または、より複雑なパターン、例えば、アポストロフィ、ハイフネーション、ポゼッション(possessions)、略語、および、短縮形を取り扱うための追加のストラテジを含み得る。トークン化器(tokenizer)の出力は、一式のタプル(tuples)であってよく、それぞれが、テキストデータの中でトークンの開始および終了オフセットから構成されている。
【0014】
トークンのシーケンスで構成されるパターンは、マルチトークンパターンとして参照される。例えば、
図1Bに示されるように、個人のフルネームを含んでいる辞書において、2つの別個の辞書エンティティは、“Samuel Adams”および“Samuel Adams Johns”であってよい。テキスト入力が文字列“Samuel Adams Johns”を含む場合に、DMタスクは、可能な一致としての“Samuel Adams”の誤検知(false positive)を拒否しながら、フルネームだけの一致を返すことが期待されている。
【0015】
上述のように、DMのタスクは、典型的には、非常にメモリ集中型(memory-extensive)である。なぜなら、全ての可能な一致を見つけるために、オペレーションは、メモリにおいて大きなテキストコーパスを保持し、そして、スキャンしなければならないからである。DMタスクのメモリ要求は、
図1Bに示されるように、マルチトークン・パターン・マッチングが必要とされる場合、および、別個の辞書エンティティと一致し得るサブストリングをストリングが含んでいる場合には、さらに、より複雑になる可能性がある。
【0016】
従って、いくつかの実施形態において、本発明は、辞書及び/又はテキストコーパスのサイズを拡大する際に、低いメモリ要求および低いエラー率を維持するために、空間効率の良い(space-efficient)確率的データ表現の組み合わせを使用する。いくつかの実施形態において、ブルーム(Bloom)及び/又は類似フィルタのペア(pair)の特定の逐次構造が、各トークンについて確率的データ表現を辞書に保管するために使用され得る。ここで、フィルタのペアは、データ構造の照会(querying)の最中に計算および誤検知エラーの数を低減するために構成される方法において相互依存的(interdependent)である。
【0017】
以下の説明は、大量のエンティティの確率的表現を保管するために、ブルームフィルタ(BF)の逐次相互依存的ペアの使用に焦点を当てている。しかしながら、様々な実施形態において、ブルームフィルタの異なる構造、ブルームフィルタの異なるタイプ、及び/又は、他の確率的データ表現フィルタ及び/又はモデルの異なるタイプが使用され得る。
【0018】
BFは、集合メンバーシップ(set membership)を決定するためにハッシュ変換を使用する方法であり、そして、テキスト分析およびDMタスクといった、大きなデータセットについて高速な集合メンバーシップテストが必要とされるところで特に有用である。BFは確率的な方法なので、エラー率を有しており、これは包含(inclusion)の側だけに発生する(すなわち、誤検知エラー)。真のメンバーは、集合に属していないとして決して報告されないが、いくつかの非メンバーが、メンバーとして報告されることがある。
【0019】
BFは、データセットを表すベクトル(フィルタ)を計算するために、ハッシュ変換を使用する。集合(set)におけるメンバーシップは、潜在的なメンバーに対するハッシュの結果をベクトルと比較することによってテストされ得る。例えば、所与のn個の要素の集合S、
S={x1,x2,・・・,xn}
は、mビットのアレイB,
B=[b1,b2,b3,b4,・・・,bm-1,bm]
によって表され得る。
【0020】
BFは、範囲{1,・・・,m}にわたり一様に分布すると仮定されているk個の独立したハッシュ関数h
1・・・h
kを使用する。
図2を参照すると、集合Sを設定する(populate)ためには、全てのS
x∈Sが、以下を使用して、BF Bに対して追加される必要がある。
1≦i≦kそれぞれについて、B[h
i(x)]=1
【0021】
照会の最中に、要素yがBF B内にあるかどうかを確認する。
1≦i≦kそれぞれについて、全てのB[hi(y)]==1である場合には、真(True)を返し、そうでない場合には、偽(False)を返す。
【0022】
BFは、タスクについて許容される誤検知率の関数として、時間効率における固有の改善を提供する。より具体的に、単純なBFの予想される複雑性は、挿入(insertion)と照会(querying)のために測定され、かつ、フィルタによって「保管すること”storing“」に割り当てられたハッシュ関数の数kに依存する。ハッシュ関数に依存している単純なBFは、集合の中にアイテムを設定するか、または、照会するために固定の定数O(k)の時間量を必要とするだろう。ここで、この時間定数は、集合の中のアイテムの数とは独立している。
【0023】
k個のハッシュ関数を使用し、n個の要素をmビットで保管している単一のBFが与えられると、期待される誤検知確率は以下のとおりである。
【数1】
【0024】
従って、許容可能な誤検知率の特定の値が与えられると、ハッシュ関数kの最適数、並びに、ビットベクトルの長さmは、次のように導出され得る。
【数2】
【0025】
この結果を説明するために、0.01の誤検知確率を伴う100万アイテムの集合を表すBFは、9,585,059ビット(1.14MB)、および、7個のハッシュ関数を必要とするだけである。
【0026】
しかしながら、DMのタスクについて、全てのエンティティを同時に保持するための単一のBF及び/又は類似の確率的データ表現の使用は、多くの制限を課すものである。
・テキスト内で見つかった全ての可能性あるトークンを、BF内の様々な長さの全ての可能性あるトークンとマッチングするための、著しく長い照会時間。
および、
・(
図1Bを参照して上述したように)サブトークンを含むトークンの存在が考慮されない場合の、多数の冗長な計算。
である。
【0027】
従って、いくつかの実施形態において、本発明は、逐次的BF(sequential BF)の構造を使用することを提供し、ここでは、BFの設定(populating)においてサブトークン化が考慮される。単一のBFストレージモデルと比較して、本発明のマルチBF、逐次照会モデルは、より速い設定および照会時間、並びに、マッチングにおけるより少ない誤検知エラーを提供する。
【0028】
本発明の作動原理が、
図3に関して詳細に説明されている。例えば、1から4トークンまでの長さを有するエンティティを伴う辞書の典型的な例において、本発明は、4ペアのBFを含むBF構造を構築するために構成されている。異なる長さを伴うエンティティを含む辞書について、BFペアの数は、予想される最も長いトークンの長さと一致する。いくつかの実施形態において、各ペアにおける第1のBFはBF
i
Contとして示されてよく、そして、各ペアにおける第2のBFはBF
i
Stopとして示されてよい。ここで、iは、1からnまでのインデックス番号と等しい。
図3に示されるように、BFの設定の最中に、
・1と(n-1)との間のインデックスiを有する全てのペアにおける第1のBFは、少なくとも(n+1)個のトークンを有する全てのエンティティの第1のi個のトークンを用いて設定される。従って、例えば、エンティティ“Bank of England”(n=3)の場合に、BF
1
Contは“Bank”を保管し、かつ、BF
2
Contは“Bank of”を保管する。そして、
・i=nでインデックスされたペアにおける第2のBFは、正確にn個のトークンを含む全てのエンティティを保管する。従って、例えば、BF
3
Stopは“Bank of England”(n=3)を保管する。
【0029】
いくつかの実施形態において、上述のように、一旦、BFが全てのエンティティを用いて設定されると、所与のトークン・マッチング・タスクのために、BFは、現在のトークンで始まる全ての可能性あるエンティティをマッチングするために、逐次的に照会される。例えば、
図3に示されるように、3グラム(3-gram)の用語“Bank of England”をマッチングすることは、以下のBFを逐次的に照会することを含む。
(i)BF
1
Contにおける“Bank”、
(ii)BF
2
Contにおける“Bank of”、および、
(iii)BF
3
Stopにおける“Bank of England”である。
【0030】
同様に、4グラム(4-gram)の用語“United Nations Secretary General”をマッチングすることは、以下のBFを逐次的に照会することを含む。
(i)BF1
Contにおける“United”、
(ii)BF2
Contにおける“United Nations”、
(iii)BF3
Contにおける“United Nations Secretary”、および、
(iv)BF4
Stopにおける“United Nations Secretary General”である。
【0031】
理解されるように、「高次(“high order”)」BF(すなわち、BF4
ContおよびBF4
Stopといった、より長いエンティティを表すもの)は、マルチグラム(multi-gram)トークンの相対的なスパース性(sparsity)のせいで、頻繁に照会されることがより少なそうである。
【0032】
いくつかの実施形態において、トークンの所与の集合の平均トークン長さq*は、少なくとも部分的に、BF設定時間(populating time)およびBF照会時間(querying time)の両方と、以下のように、相関され得る。
・設定:長さqの単一トークンに関して、0からq-2でインデックス付けされたBFContフィルタに対する期待される(q-1)個のBF挿入、および、全てのBFStopフィルタに対する1個のBF挿入が存在し、構造内の全てのBFに対して合計でq個の挿入である。
・照会:長さqのトークンの正確な一致に関して、マッチングプロセスは、0からq-2まで全てのBFContおよび全てのBFStopを照会する。合計で2q個の照会である。部分的な一致に関して、照会プロセスは、nグラム(n-gram)トークンがもはや類似していないところまで、全てのBFContおよび全てのBFStopを照会する。いずれにせよ、照会の総数は(2q-1)個を超えない。
【0033】
従って、トークンの長さq*は、全てのトークンにわたる平均として直接的に導出され、トークンの設定および照会の両方の複雑性を制限する。さらに、q*は、また、辞書におけるトークンの分布にも依存し、複数の長さのトークン(multi-length-tokens)は、様々な辞書において異なる分布率を有してよく、いくつかの長さは、他の長さよりも頻繁に発生し得る、等。同様に、照会時間は、ある程度、トークン化の最中にテキストコーパス内で見つかったトークンの分布によって、変動し得る。究極的には、設定および照会の両方について予想される複雑性は、O(k・q*)である。q*は、典型的には、低い固定数、例えば、2と3との間であることが期待され、そして、大部分のユースケースにおいて、5より高くないので、予想される複雑性は、O(k)として表され得る。
【0034】
いくつかの実施形態において、逐次的にペアなBF構造は、さらに、全てのエンティティを表すために必要とされるハッシュ関数の数の著しい減少を可能にするために構成され得る。BFにおける複数のハッシュ関数の主な目的は、誤検知率を低減することであるので、本発明によって開示されるように、依存する照会のシーケンスを含む照会プロセスが、結果としてより少ない誤検知を生じ得ることが期待され得る。
【0035】
例えば、2つの単一のBFそれぞれが1%の誤検知率を有する場合には、両方の構造を含む照会における誤検知リターンの確率は、0.1%×0.1%、または、概ね0.01%まで、であろう。例えば、上述のように、
図3を参照すると、3グラムの用語“Bank of England”のマッチングは、3つの別個の対比を通じた、その用語の逐次的なマッチングを含んでいる。BF:BF
1
Cont,BF
2
Cont,およびBF
3
Stopである。この場合に、誤検知リターンについて、3つのBFは全て、誤検知の一致を返す必要がある。BFそれぞれは誤検知のリターンについて特定の確率を有しているので、3つのBF全てが同時に誤検知を返す可能性は著しく低減される。
【0036】
この全体的に低下した誤検知確率を利用するために、いくつかの実施形態において、BFContは、より少ない数のハッシュ関数を使用して構造化されてよく、これは、上述のように、より少ない設定および照会時間を結果として生じ得る。
【0037】
さらに、BFを構造化する場合に、より高い許容可能な誤検知率が、フィルタのオーダーが増加するにつれて、BFContに割り当てられ得る。例えば、6グラムのトークンをマッチングする場合に、BF4
ContおよびBF5
Contでは、より厳密でない誤検知率が使用され得る。なぜなら、間違った一致の可能性は、逐次的な照会の先行する連鎖によって既に低下しており、そして、BF6
Contの誤検知率によってさらに低減されるからである。従って、ハッシュ関数の全体的に低減された数、並びに、各構造によって照会されるトークンの低減された数は、トークン・マッチングの最中に照会される構造の増加した数を遅れずに(in time)に補償する。
【0038】
図4は、逐次確率的データ表現を使用して、大きなテキストコーパスに対してトークンの辞書を自動的にマッチングする方法のフローチャートである。400においては、nグラムで長さ1からnまでのトークンを含む辞書が受信される。402においては、例えば、n個のBFのペアを使用して、構造を表す逐次確率的データが構築される。
【0039】
404において、少なくとも(i+1)個のトークンを有する全てのエンティティのうち最初のi個のトークンは、iでインデックス付けされたBFペアの第1のBF内に保管される。406においては、正確にi個のトークンを含む全てのエンティティが、iでインデックス付けされたBFペアの第2のBF内に保管される。
【0040】
いくつかの実施形態において、本発明の例示的に実装されるコンピュータプログラムコードは、以下のコンピュータ命令を含み得る。
【数3】
【0041】
408においては、トークン化されたテキストコーパスからトークンが受信される。410においては、各テキストコーパストークンがBF構造に対して逐次的にマッチングされ、一致を特定する。いくつかの実施形態において、本発明の例示的な照会コンピュータプログラムコードは、以下のコンピュータ命令を含み得る。
【数4】
【0042】
本発明は、システム、方法、及び/又は、コンピュータプログラム製品であり得る。コンピュータプログラム製品は、コンピュータで読取り可能な記憶媒体(または、メディア)を含み、本発明の態様をプロセッサに実行させるためのコンピュータで読取り可能なプログラム命令をその上に有している。
【0043】
コンピュータで読取り可能な記憶媒体は、命令実行装置による使用のための命令を保持し、かつ、保管することができる有形の装置であってよい。コンピュータで読取り可能な記憶媒体は、例えば、これらに限定されるわけではないが、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、または、これらの適切な組み合わせであってよい。コンピュータで読取り可能な記憶媒体のより具体的な例に係る非網羅的リストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピー(登録商標)ディスク、記録された命令を有する機械的に符号化されたデバイス、および、前述のものに係る任意の適切な組み合わせ、を含む。コンピュータで読取り可能な記憶媒体は、ここにおいて使用されるように、それ自体、一時的な信号であると解釈されるべきではない。電波または他の自由に伝搬する電磁波、導波管または他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、または、電線を通じて伝送される電気信号、といったものである。むしろ、コンピュータで読取り可能な記憶媒体は、非一時的(すなわち、非揮発性)媒体である。
【0044】
ここにおいて記載のコンピュータで読取り可能なプログラム命令は、コンピュータで読取り可能な記憶媒体から各計算/処理装置へ、もしくは、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、及び/又は、無線ネットワークを介して、外部コンピュータまたは外部記憶装置へダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、及び/又は、エッジサーバを含み得る。各計算/処理装置におけるネットワークアダプタカードまたはネットワークインターフェイスは、ネットワークからコンピュータで読取り可能なプログラム命令を受信し、そして、それぞれの計算/処理装置におけるコンピュータで読取り可能な記憶媒体に保管するために、コンピュータで読取り可能なプログラム命令を転送する。
【0045】
本発明のオペレーションを実行するためのコンピュータで読取り可能なプログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、もしくは、Java、Smalltalk、C++、等といった、オブジェクト指向プログラミング言語、および、「C」プログラミング言語または類似のプログラミング言語といった、従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれたソースコードまたはオブジェクトコードのいずれか、であり得る。コンピュータで読取り可能なプログラム命令は、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、スタンドアロンのソフトウェアパッケージとして、実行され、ユーザのコンピュータ上で部分的に、かつ、リモートコンピュータ上で部分的、もしくは、リモートコンピュータまたはサーバ上で全体的に、実行され得る。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、もしくは、外部コンピュータに対して(例えば、インターネットサービスプロバイダを使用するインターネットを介して)接続が行われてよい。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、または,
プログラマブル論理アレイ(PLA)を含む、電子回路は、本発明の態様を実行するために、電子回路をパーソナライズすることにように、コンピュータで読取り可能なプログラム命令の状態情報を利用することによって、コンピュータで読取り可能なプログラム命令を実行し得る。
【0046】
本発明の態様は、本発明の実施形態に従った方法、装置(システム)、および、コンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して、ここにおいて説明されている。フローチャート図及び/又はブロック図の各ブロック、および、フローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータで読み取り可能なプログラム命令によって実装され得ることが理解されよう。
【0047】
これらのコンピュータで読取り可能なプログラム命令は、マシンを生成するように、汎用コンピュータ、専用コンピュータ、または、他のプログラマブルデータ処理装置のプロセッサに提供されてよく、その結果、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図のブロックにおいて指定された機能/動作を実行する。これらのコンピュータで読取り可能なプログラム命令は、また、コンピュータ、プログラマブルデータ処理装置、及び/又は、他の装置を特定の方法で機能させることができるコンピュータで読取り可能な記憶媒体に保管されてもよく、その結果、そこに保管された命令を有するコンピュータで読取り可能な記憶媒体は、フローチャート及び/又はブロック図のブロックにおいて指定された機能/動作の態様を実施する命令を含む製造物品を構成する。
【0048】
コンピュータで読取り可能なプログラム命令は、また、コンピュータ、他のプログラマブル装置、または、コンピュータ実装プロセスを生成するための他の装置に一連の動作ステップを実行させるように、コンピュータ、他のプログラマブルデータ処理装置、または、他の装置へとロードされてよく、その結果、コンピュータ、他のプログラマブル装置、または、他の装置において実行される命令は、フローチャート及び/又はブロック図のブロックにおいて指定された機能・動作を実施する。
【0049】
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に従った、システム、方法、および、コンピュータプログラム製品の可能な実施に係るアーキテクチャ、機能性、および、オペレーションを説明している。この点について、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実装するための1つ以上の実行可能な命令を含む、モジュール、セグメント、または、命令の一部を表すことができる。いくつかの代替的な実装において、ブロックに示される機能は、図に示された順序から外れて発生してよい。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されてよく、もしくは、包含される機能性に応じて、ときどき、逆の順序でブロックが実行されてよい。ブロック図及び/又はフローチャート図の各ブロック、および、ブロック図及び/又はフローチャート図におけるブロックの組み合わせは、指定された機能または動作を実施するか、もしくは、特定目的のハードウェアおよびコンピュータ命令の組み合わせを実行する特定目的のハードウェアベースのシステムによって実施され得ることにも、また、留意されたい。
【0050】
本発明の様々な実施形態の記載は、説明の目的のために提示されてきたが、開示される実施形態について網羅的または限定するように意図されたものではない。多くの変更および変形が、説明された実施形態の範囲および精神から逸脱することなく、当業者にとっては明らかであろう。ここにおいて使用される用語は、実施形態の原理、市場で見出される技術に対する実際的な適用または技術的な改善を最もよく説明するため、もしくは、ここにおいて開示される実施形態を当業者などが理解できるように選択されたものである。