IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 6センス インサイツ,インコーポレイテッドの特許一覧

特許7105356エンティティのアカウントへのマッピング
<>
  • 特許-エンティティのアカウントへのマッピング 図1
  • 特許-エンティティのアカウントへのマッピング 図2
  • 特許-エンティティのアカウントへのマッピング 図3
  • 特許-エンティティのアカウントへのマッピング 図4A
  • 特許-エンティティのアカウントへのマッピング 図4B
  • 特許-エンティティのアカウントへのマッピング 図5
  • 特許-エンティティのアカウントへのマッピング 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-13
(45)【発行日】2022-07-22
(54)【発明の名称】エンティティのアカウントへのマッピング
(51)【国際特許分類】
   H04L 51/48 20220101AFI20220714BHJP
   H04L 61/4511 20220101ALI20220714BHJP
   H04L 51/52 20220101ALI20220714BHJP
   G06Q 30/00 20120101ALN20220714BHJP
【FI】
H04L51/48
H04L61/4511
H04L51/52
G06Q30/00 300
【請求項の数】 20
(21)【出願番号】P 2021180904
(22)【出願日】2021-11-05
(62)【分割の表示】P 2020542804の分割
【原出願日】2018-12-12
(65)【公開番号】P2022031685
(43)【公開日】2022-02-22
【審査請求日】2021-11-05
(31)【優先権主張番号】62/609,753
(32)【優先日】2017-12-22
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】520221017
【氏名又は名称】6センス インサイツ,インコーポレイテッド
(74)【代理人】
【識別番号】100114775
【弁理士】
【氏名又は名称】高岡 亮一
(74)【代理人】
【識別番号】100121511
【弁理士】
【氏名又は名称】小田 直
(74)【代理人】
【識別番号】100202751
【弁理士】
【氏名又は名称】岩堀 明代
(74)【代理人】
【識別番号】100208580
【弁理士】
【氏名又は名称】三好 玲奈
(74)【代理人】
【識別番号】100191086
【弁理士】
【氏名又は名称】高橋 香元
(72)【発明者】
【氏名】バジャリア,ヴァイラル
(72)【発明者】
【氏名】シャハ,プレマル
(72)【発明者】
【氏名】ヴィジェイヴァーギア,ニチン
(72)【発明者】
【氏名】チャン,ダスティン
【審査官】白井 亮
(56)【参考文献】
【文献】米国特許出願公開第2016/142272(US,A1)
【文献】米国特許出願公開第2016/239868(US,A1)
【文献】米国特許出願公開第2017/364931(US,A1)
【文献】特表2010-535390(JP,A)
【文献】特開2001-142907(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 51/48
H04L 61/4511
H04L 51/52
G06Q 30/00
(57)【特許請求の範囲】
【請求項1】
匿名インターネットプロトコル(IP)アドレスを匿名でなくするための方法であって、サーバプラットフォームの少なくとも1つのハードウェアプロセッサを用いて、
各々がオンラインアクティビティを表し、IPアドレスおよびイベント情報を備える、複数のソースからの複数のイベントを受信し、
前記複数のイベントのサブセットを、各々が、前記複数のイベントのサブセットによって共有された前記IPアドレスをアカウントに関連付け、前記イベントのサブセットに関する複数の統計に関連付けられた複数のマッピングに凝集し、
前記複数のマッピングの各々に関して、前記関連付けられた複数の統計に基づいて前記マッピングに関する信頼値を計算し、
前記複数のマッピングに関する前記信頼値に基づいて、前記複数のマッピングの最終サブセットを選択し、
要求されるIPアドレスを備える1または複数の要求に、前記要求されるIPアドレスに関して前記マッピングの最終サブセットを検索し、前記マッピングの最終サブセット内の前記要求されるIPアドレスに関連付けられたアカウントの指示を返信することによって応答する
ことを備える方法。
【請求項2】
前記複数のイベントにわたり前記イベント情報を正規化するために、前記少なくとも1つのハードウェアプロセッサを用いることを更に備える、請求項1に記載の方法。
【請求項3】
前記複数のイベントの各々に関する前記イベント情報は、ドメイン名を備える、請求項1に記載の方法。
【請求項4】
前記複数のイベントの各々に関して、前記イベント情報は、前記イベントの前記IPアドレスに関連付けられた地理的領域を備える、請求項1に記載の方法。
【請求項5】
各アカウントは、企業名を備える、請求項1に記載の方法。
【請求項6】
前記複数のマッピングに関する前記信頼値に基づいて前記複数のマッピングの最終サブセットを選択することは、各々が同じIPアドレスを異なるアカウントに関連付ける2つ以上のマッピングの少なくとも1つのセットに関して、
前記2つ以上のマッピングの中で最大信頼値を有する前記2つ以上のマッピングのうちの1つを決定することと、
前記2つ以上のマッピングに関する前記信頼値の合計を計算することと、
前記最大信頼値と前記信頼値の前記合計との比を計算することと、
前記比が閾値を超過しない場合、前記マッピングの最終サブセットから前記2つ以上のマッピングを除外することと
を備える、請求項1に記載の方法。
【請求項7】
前記閾値は、1と前記最大信頼値との差で乗算された一定値を備える、請求項6に記載の方法。
【請求項8】
前記関連付けられた複数の統計に基づいて各マッピングに関する信頼値を計算することは、
前記マッピングが導出されたイベントのタイミングを示す時間信頼値を計算することと、
前記マッピングが導出された前記イベントの頻度を示す統計的信頼値を計算することと、
ソース信頼値を計算することであって、前記ソース信頼値は前記複数のソースの1つまたは複数の精度を示し、かつ前記複数のソースはマッピングが導出されたイベントであって、受信されたイベントの源である、前記ソース信頼値を計算することと、
前記時間信頼値、前記統計的信頼値、および前記ソース信頼値に基づいて前記信頼値を計算することと
を備える、請求項1に記載の方法。
【請求項9】
1または複数のソースから新たなイベントセットが受信された後、前記少なくとも1つのハードウェアプロセッサを用いて、
前記新たなイベントセットのサブセットを新たなマッピングセットに凝集し、
前記新たなイベントセット内のIPアドレスを含む、前記マッピングの最終サブセットの一部を抽出し、
併合されるマッピングセット内の各マッピングに関して、前記マッピングに関する前記複数の統計および前記信頼値を再計算することによって、前記新たなマッピングセットを前記マッピングの最終サブセットの前記抽出された部分と併合し、
前記マッピングの最終サブセットを前記併合されたマッピングセットで更新する
ことを更に備える、請求項1に記載の方法。
【請求項10】
前記複数のイベントの各々は、持続性イベントプールに格納され、前記新たなイベントセットは、前記マッピングの最終サブセットが更新されるまで、前記持続性イベントプールに格納されない、請求項9に記載の方法。
【請求項11】
前記少なくとも1つのハードウェアプロセッサを用いて、
要求されるIPアドレスを備えるユーザ要求を受信するための1または複数の入力を備えるグラフィカルユーザインタフェースを生成し、
前記ユーザ要求の受信に応答して、前記要求を表す問合せを問合せの待ち行列に加え、
その後、前記問合せが前記待ち行列の最前列に到達すると、前記問合せに基づいて前記複数のマッピングの前記最終サブセットにクエリを行い、
前記問合せの結果を受信した後、前記問合せの前記結果の視覚表現を備えるグラフィカルユーザインタフェースを生成する
ことを更に備える、請求項1に記載の方法。
【請求項12】
匿名インターネットプロトコル(IP)アドレスを匿名でなくするためのシステムであって、
少なくとも1つのハードウェアプロセッサと、
前記少なくとも1つのハードウェアプロセッサによって実行されると、
各々がオンラインアクティビティを表し、IPアドレスおよびイベント情報を備える、複数のソースからの複数のイベントを受信し、
前記複数のイベントのサブセットを、各々が、前記複数のイベントのサブセットによって共有された前記IPアドレスをアカウントに関連付け、前記イベントのサブセットに関する複数の統計に関連付けられた複数のマッピングに凝集し、
前記複数のマッピングの各々に関して、前記関連付けられた複数の統計に基づいて前記マッピングに関する信頼値を計算し、
前記複数のマッピングに関する前記信頼値に基づいて、前記複数のマッピングの最終サブセットを選択し、
要求されるIPアドレスを備える1または複数の要求に、前記要求されるIPアドレスに関して前記マッピングの最終サブセットを検索し、前記マッピングの最終サブセット内の前記要求されるIPアドレスに関連付けられたアカウントの指示を返信することによって応答する、1または複数のソフトウェアモジュールと
を備えるシステム。
【請求項13】
各アカウントは、企業名を備える、請求項12に記載のシステム。
【請求項14】
前記複数のマッピングに関する前記信頼値に基づいて前記複数のマッピングの最終サブセットを選択することは、各々が同じIPアドレスを異なるアカウントに関連付ける2つ以上のマッピングの少なくとも1つのセットに関して、
前記2つ以上のマッピングの中で最大信頼値を有する前記2つ以上のマッピングのうちの1つを決定することと、
前記2つ以上のマッピングに関する前記信頼値の合計を計算することと、
前記最大信頼値と前記信頼値の前記合計との比を計算することと、
前記比が閾値を超過しない場合、前記マッピングの最終サブセットから前記2つ以上のマッピングを除外することと
を備える、請求項12に記載のシステム。
【請求項15】
前記閾値は、1と前記最大信頼値との差で乗算された一定値を備える、請求項14に記載のシステム。
【請求項16】
前記関連付けられた複数の統計に基づいて各マッピングに関する信頼値を計算することは、
前記マッピングが導出されたイベントのタイミングを示す時間信頼値を計算することと、
前記マッピングが導出された前記イベントの頻度を示す統計的信頼値を計算することと、
ソース信頼値を計算することであって、前記ソース信頼値は前記複数のソースの1つまたは複数の精度を示し、かつ前記複数のソースはマッピングが導出されたイベントであって、受信されたイベントの源である、前記ソース信頼値を計算することと、
前記時間信頼値、前記統計的信頼値、および前記ソース信頼値に基づいて前記信頼値を計算することと
を備える、請求項12に記載のシステム。
【請求項17】
1または複数のソースから新たなイベントセットが受信された後、前記少なくとも1つのハードウェアプロセッサを用いて、
前記新たなイベントセットのサブセットを新たなマッピングセットに凝集し、
前記新たなイベントセット内のIPアドレスを含む、前記マッピングの最終サブセットの一部を抽出し、
併合されるマッピングセット内の各マッピングに関して、前記マッピングに関する前記複数の統計および前記信頼値を再計算することによって、前記新たなマッピングセットを前記マッピングの最終サブセットの前記抽出された部分と併合し、
前記マッピングの最終サブセットを前記併合されたマッピングセットで更新する
ことを更に備える、請求項12に記載のシステム。
【請求項18】
前記複数のイベントの各々は、持続性イベントプールに格納され、前記新たなイベントセットは、前記マッピングの最終サブセットが更新されるまで、前記持続性イベントプールに格納されない、請求項17に記載のシステム。
【請求項19】
前記少なくとも1つのハードウェアプロセッサを用いて、
要求されるIPアドレスを備えるユーザ要求を受信するための1または複数の入力を備えるグラフィカルユーザインタフェースを生成し、
前記ユーザ要求の受信に応答して、前記要求を表す問合せを問合せの待ち行列に加え、
その後、前記問合せが前記待ち行列の最前列に到達すると、前記問合せに基づいて前記複数のマッピングの前記最終サブセットにクエリを行い、
前記問合せの結果を受信した後、前記問合せの前記結果の視覚表現を備えるグラフィカルユーザインタフェースを生成する
ことを更に備える、請求項12に記載のシステム。
【請求項20】
プロセッサによって実行されると、前記プロセッサに、
各々がオンラインアクティビティを表し、IPアドレスおよびイベント情報を備える、複数のソースからの複数のイベントを受信させ、
前記複数のイベントのサブセットを、各々が、前記複数のイベントのサブセットによって共有された前記IPアドレスをアカウントに関連付け、前記イベントのサブセットに関する複数の統計に関連付けられた複数のマッピングに凝集させ、
前記複数のマッピングの各々に関して、前記関連付けられた複数の統計に基づいて前記マッピングに関する信頼値を計算させ、
前記複数のマッピングに関する前記信頼値に基づいて、前記複数のマッピングの最終サブセットを選択させ、
要求されるIPアドレスを備える1または複数の要求に、前記要求されるIPアドレスに関して前記マッピングの最終サブセットを検索し、前記マッピングの最終サブセット内の前記要求されるIPアドレスに関連付けられたアカウントの指示を返信することによって応答させる
命令が格納された非一時的コンピュータ可読媒体。

【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、参照によってその全体が本明細書に組み込まれる、2017年12月22日に出願された米国仮特許出願第62/609,753号に対する優先権を主張するものである。
【0002】
本明細書で説明される実施形態は、一般に、匿名インターネットエンティティ(たとえばIPアドレス、ドメイン、クッキー、および/またはデバイス)を既知のアカウント(たとえば企業名)にマッピングし、それによってオンライン訪問者または連絡先を匿名でなくすることに向けられる。
【背景技術】
【0003】
インターネット通信の環境において生じる1つの重要かつ周知の問題は、インターネットユーザが事実上匿名性を保つことができる能力である。この匿名性は、自由な発言のためには良いと思われるが、ビジネスには適さない。たとえば、ウェブサイトへの訪問者が、自身を正確に識別することを選択しない限り、ウェブサイトのオペレータは、その訪問者のアイデンティティに関してほとんど知ることがない。
【0004】
多くの場合、ウェブサイトのオペレータが訪問者に関して知る全てのことは、訪問者のブラウジングデバイスによって用いられたインターネットプロトコル(IP)アドレス、訪問者のドメイン(たとえばIPアドレスが関連付けられたドメイン)、および/または利用可能であれば1または複数の「クッキー」(ウェブサイトへの訪問中にそのウェブサイトによってユーザのデバイスに格納されたデータ)である。これは一般に、たとえば訪問者に製品またはサービスを売り込むために訪問者との連絡を開始するには不十分な情報である。
【0005】
対照的に、実店舗において、店主は、たとえば製品またはサービスの売込みを開始するために、訪問者に物理的に接近してその訪問者との連絡を瞬時に開始し得る。したがって、インターネットは、マーケティングおよび商取引のために便利ではあるが、訪問者が匿名性を保つ点で店主にとって問題を提示する。これは、単純に実店舗環境には存在しない問題である。
【0006】
したがって、インターネットによって訪問者に与えられた独自の匿名性の覆いに穴をあける解決策が必要である。好適には、そのような解決策は、店主が、匿名であるはずのインターネット訪問者に関する連絡先情報を決定することを可能にするものである。そのような解決策は、たとえば、参照によって本明細書に組み込まれる2013年2月7日に出願された米国特許公報第2013/0204663号において説明されるような、予測的マーケティング方法にとって特に有利であり得る。
【発明の概要】
【課題を解決するための手段】
【0007】
実施形態において、匿名インターネットプロトコル(IP)アドレスを匿名でなくするための方法が開示される。この方法は、サーバプラットフォームの少なくとも1つのハードウェアプロセッサを用いて、各々がオンラインアクティビティを表しIPアドレスおよびイベント情報を備える複数のソースからの複数のイベントを受信し、複数のイベントのサブセットを、各々が、複数のイベントのサブセットによって共有されたIPアドレスをアカウントに関連付け、イベントのサブセットに関する複数の統計に関連付けられた複数のマッピングに凝集し、複数のマッピングの各々に関して、関連付けられた複数の統計に基づいてマッピングに関する信頼値を計算し、複数のマッピングに関する信頼値に基づいて、複数のマッピングの最終サブセットを選択し、要求されるIPアドレスを備える1または複数の要求に、要求されるIPアドレスに関してマッピングの最終サブセットを検索し、マッピングの最終サブセット内の要求されるIPアドレスに関連付けられたアカウントの指示を返信することによって応答することを備える。方法は更に、複数のイベントにわたりイベント情報を正規化するために、少なくとも1つのハードウェアプロセッサを用いることを備えてよい。複数のイベントの各々に関するイベント情報は、ドメイン名を備えてよい。複数のイベントの各々に関して、イベント情報は、イベントのIPアドレスに関連付けられた地理的領域を備えてよい。各アカウントは、企業名を備えてよい。
【0008】
実施形態において、複数のマッピングに関する信頼値に基づいて複数のマッピングの最終サブセットを選択することは、各々が同じIPアドレスを異なるアカウントに関連付ける2つ以上のマッピングの少なくとも1つのセットに関して、2つ以上のマッピングの中で最大信頼値を有する2つ以上のマッピングのうちの1つを決定することと、2つ以上のマッピングに関する信頼値の合計を計算することと、最大信頼値と信頼値の合計との比を計算することと、比が閾値を超過しない場合、マッピングの最終サブセットから2つ以上のマッピングを除外することと、を備える。閾値は、1と最大信頼値との差で乗算された一定値を備えてよい。
【0009】
実施形態において、関連付けられた複数の統計に基づいて各マッピングに関する信頼値を計算することは、マッピングが導出されたイベントのタイミングを示す時間信頼値を計算することと、マッピングが導出されたイベントの頻度を示す統計的信頼値を計算することと、マッピングが導出されたイベントが受信された源である複数のソースの1または複数の精度を示すソース信頼値を計算することと、時間信頼値、統計的信頼値、およびソース信頼値に基づいて信頼値を計算することとを備える。複数の統計は、スパンおよび遅延を備えてよく、スパンは、マッピングが導出されたイベントが発生した期間を示し、遅延は、マッピングが導出された直近のイベントが発生してからの期間を示し、時間信頼値は、
【数1】
と計算される。
【0010】
複数の統計は、拡散および強度を備えてよく、拡散は、マッピングが導出されたイベントが発生した期間の数を示し、強度は、マッピングが導出されたイベントの数を示し、統計的信頼値は、
weightstrength×log1000(strength)+weightspread×log100(spread)
と計算され、式中、weightstrengthおよびweightspreadは、合計して1になる一定値である。たとえば、weightstrengthおよびweightspreadはともに0.5に等しくてよい。
【0011】
実施形態において、ソース信頼値は、
【数2】
と計算され、各source_confidenceは、マッピングが導出されたイベントが受信された源である1または複数のソースの1つに関するソース信頼値を表す。方法は更に、少なくとも1つのハードウェアプロセッサを用いて、複数のソースの各々に関して、複数のソースのうち少なくともN個によるイベントから各々が導出されたマッピングの真のセットを識別することであって、Nは2以上であることと、ソースから受信されたイベントから導出されたマッピングのソースセットとマッピングの真のセットとの間の重複を識別することと、マッピングのソースセットとマッピングの真のセットとの間の識別された重複に基づいて、ソースに関するソース信頼値を計算することとによって、ソースに関するソース信頼値を計算することを備えてよい。
【0012】
実施形態において、信頼値は、
weight(confsource+(1-confsource)confstat)+weight(conftime
と計算され、confsourceはソース信頼値であり、confstatは統計的信頼値であり、conftimeは時間信頼値であり、weightおよびweightは、合計して1になる一定値である。たとえば、weightは0.7に等しく、weightは0.3に等しい。
【0013】
実施形態において、方法は更に、1または複数のソースから新たなイベントセットが受信された後、少なくとも1つのハードウェアプロセッサを用いて、新たなイベントセットのサブセットを新たなマッピングセットに凝集し、新たなイベントセット内のIPアドレスを含む、マッピングの最終サブセットの一部を抽出することと、併合されるマッピングセット内の各マッピングに関して、マッピングに関する複数の統計および信頼値を再計算することによって、新たなマッピングセットをマッピングの最終サブセットの抽出された部分と併合し、マッピングの最終サブセットを併合されたマッピングセットで更新することを更に備える。複数のイベントの各々は、持続性イベントプールに格納されてよく、新たなイベントセットは、マッピングの最終サブセットが更新されるまで、持続性イベントプールに格納されなくてよい。
【0014】
実施形態において、方法は更に、少なくとも1つのハードウェアプロセッサを用いて、要求されるIPアドレスを備えるユーザ要求を受信するための1または複数の入力を備えるグラフィカルユーザインタフェースを生成し、ユーザ要求の受信に応答して、要求を表す問合せを問合せの待ち行列に加え、その後、問合せが待ち行列の最前列に到達すると、問合せに基づいて複数のマッピングの最終サブセットにクエリを行い、問合せの結果を受信した後、問合せの結果の視覚表現を備えるグラフィカルユーザインタフェースを生成することを更に備える。
【0015】
方法は、たとえばサーバなどのプロセッサベースのシステムの実行可能ソフトウェアモジュール、および/または非一時的コンピュータ可読媒体に格納された実行可能命令において具体化され得る。
【0016】
本発明の詳細は、その構造および動作の両方に関し、同様の参照番号が同様の部分を示す添付図面の検討によって部分的に収集され得る。
【図面の簡単な説明】
【0017】
図1】実施形態に係る、本明細書で説明されるプロセスの1または複数が実装され得るインフラストラクチャ例を示す。
図2】実施形態に係る、本明細書で説明されるプロセスの1または複数が実行され得る処理システム例を示す。
図3】実施形態に係る、匿名エンティティを既知のアカウントにマッピングするためのプロセスを示す。
図4A-4B】複数のソースに関するソース信頼値を決定するためのプロセスを示す。
図5】実施形態に係る、図3に示すプロセスの1つの実装例における様々なデータ構造間のインタラクションを示す。
図6】実施形態に係る、ウェブサービスの1つの実装例における様々なデータ構造間のインタラクションを示す。
【発明を実施するための形態】
【0018】
実施形態において、匿名エンティティ(たとえばIPアドレス、ドメイン、クッキー、および/またはデバイス)を既知のアカウント(たとえば企業)にマッピングするためのシステム、方法、および非一時的コンピュータ可読媒体が開示される。本説明の閲読後、当業者には、様々な代替実施形態および代替用例が明らかになる。ただし、本発明の様々な実施形態がここで説明されるが、これらの実施形態は、限定ではなく、例および実例として提示されるものにすぎないことが理解される。よって、この様々な実施形態の詳細な説明は、添付の特許請求の範囲に記載されるような本発明の範囲または幅を限定するものとして解釈されてはならない。
【0019】
1.システム概観
【0020】
1.1.インフラストラクチャ
【0021】
図1は、実施形態に従って、匿名エンティティ(たとえばIPアドレス、ドメイン、クッキー、および/またはデバイス)を既知のアカウント(たとえば企業)にマッピングするシステムが動作し得るインフラストラクチャ例を示す。インフラストラクチャは、本明細書で説明される様々な機能、プロセス、方法、および/またはソフトウェアモジュールの1または複数をホストおよび/または実行するプラットフォーム110(たとえば1または複数のサーバデバイス)を備えてよい。プラットフォーム110は、専用サーバを備えてよく、あるいは代わりに、1または複数のサーバの共有リソースを利用するクラウドインスタンスを備えてよい。これらのサーバまたはクラウドインスタンスは、同じ場所にあり、および/または地理的に分散してよい。またプラットフォーム110は、サーバアプリケーション112および/または1または複数のデータベース114を備えてよく、または通信可能に接続され得る。加えて、プラットフォーム110は、1または複数のネットワーク120を介して1または複数のユーザシステム130に通信可能に接続され得る。またプラットフォーム110は、1または複数のネットワーク120を介して1または複数の外部システム140(たとえばデータソース、ウェブサイト、ウェブサービス、他のプラットフォームなど)にも通信可能に接続され得る。
【0022】
ネットワーク(複数も可)120は、インターネットを備えてよく、プラットフォーム110は、たとえばハイパーテキスト転送プロトコル(HTTP)、セキュアHTTP(HTTPS)、ファイル転送プロトコル(FTP)、FTPセキュア(FTPS)、SSH FTP(SFTP)などの標準的な伝送プロトコル、ならびにプロプライエタリプロトコルを用いて、インターネットを介してユーザシステム(複数も可)130および外部システム(複数も可)140と通信してよい。プラットフォーム110は、単一セットのネットワーク(複数も可)120を介して様々なシステムに接続されるものとして示されるが、理解すべき点として、プラットフォーム110は、1または複数のネットワークの様々なセットを介して様々なシステムに接続され得る。たとえばプラットフォーム110は、インターネットを介してユーザシステム130および/または外部システム140のサブセットに接続され得るが、イントラネットを介して1または複数の他のユーザシステム130および/または外部システム140に接続されてもよい。なお、少数のユーザシステム130および外部システム140、1つのサーバアプリケーション112、および1セットのデータベース(複数も可)114が示されるが、理解すべき点として、インフラストラクチャは、任意の数のユーザシステム、外部システム、サーバアプリケーション、およびデータベースを備えてよい。
【0023】
ユーザシステム(複数も可)130は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォンまたは他のモバイルフォン、サーバ、ゲーム機、テレビ、セットトップボックス、電子キオスク、店頭端末、現金自動支払機などを限定ではなく含む、有線および/または無線通信機能を有する任意の種類(複数も可)のコンピューティングデバイスを備えてよい。
【0024】
プラットフォーム110は、1または複数のウェブサイトおよび/またはウェブサービスをホストするウェブサーバを備えてよい。ウェブサイトが提供される実施形態において、ウェブサイトは、たとえばハイパーテキストマークアップ言語(HTML)または他の言語で生成されたウェブページを含む、1または複数のユーザインタフェースを備えてよい。プラットフォーム110は、ユーザシステム(複数も可)130からの要求に応答して、これらのユーザインタフェースを送信または提供する。いくつかの実施形態において、これらのユーザインタフェースは、ウィザード形式で提供されてよく、この場合、2つ以上のユーザインタフェースが連続的に提供されてよく、連続したユーザインタフェースの1または複数が、ユーザまたはユーザシステムと1または複数の先行するユーザインタフェースとのインタラクションに依存してよい。プラットフォーム110への要求およびユーザインタフェースを含むプラットフォーム110からの応答はともに、標準的な通信プロトコル(たとえばHTTP、HTTPSなど)を用いて、インターネットを含み得るネットワーク(複数も可)120を介して通信され得る。これらのユーザインタフェースまたはウェブページは、プラットフォーム110にローカルおよび/または遠隔にアクセス可能な1または複数のデータベース(たとえばデータベース(複数も可)114)に格納されたデータを備える要素、またはデータから導出された要素を含む、たとえばテキスト、画像、映像、アニメーション、参照(たとえばハイパーリンク)、フレーム、入力(たとえばテキストボックス、テキストエリア、チェックボックス、ラジオボタン、ドロップダウンメニュー、ボタン、フォームなど)、スクリプト(たとえばJavaScript)などのコンテンツおよび要素の組み合わせを備えてよい。またプラットフォーム110は、ユーザシステム(複数も可)130からの他の要求にも応答してよい。
【0025】
プラットフォーム110は、1または複数のデータベース(複数も可)114を更に備え、通信可能に結合され、または他の方法でアクセスを有してよい。たとえばプラットフォーム110は、1または複数のデータベース114を管理する1または複数のデータベースサーバを備えてよい。プラットフォーム110で実行しているユーザシステム130またはサーバアプリケーション112は、データベース(複数も可)114に格納されるデータ(たとえばユーザデータ、フォームデータなど)を提示し、および/またはデータベース(複数も可)114に格納されたデータへのアクセスを要求してよい。クラウドベースのデータベースインスタンスおよびプロプライエタリデータベースを含む、MySQL(登録商標)、Oracle(登録商標)、IBM(登録商標)、Microsoft SQL(登録商標)、Sybase(登録商標)、Access(登録商標)などを限定ではなく含む任意の適切なデータベースが利用され得る。データは、たとえばFTPを介してHTTPにサポートされた周知のPOST要求を用いて、プラットフォーム110へ送信され得る。このデータならびに他の要求はたとえば、プラットフォーム110によって実行される、たとえばサーブレットまたは他のソフトウェアモジュール(たとえばサーバアプリケーション112)などのサーバ側ウェブ技術によって処理され得る。
【0026】
ウェブサービスが提供される実施形態において、プラットフォーム110は、外部システム(複数も可)140からの要求を受信し、ジャバスクリプトオブジェクト表記(JSON)、拡張可能マークアップ言語(XML)、および/または他の任意の適切なまたは所望のフォーマットで応答を提供してよい。そのような実施形態において、プラットフォーム110は、ユーザシステム(複数も可)130および/または外部システム(複数も可)140がウェブサービスとインタラクトし得る方法を定義するアプリケーションプログラミングインタフェース(API)を提供してよい。したがって、ユーザシステム(複数も可)130および/または(それ自体がサーバであり得る)外部システム(複数も可)140は、自身のユーザインタフェースを定義し、本明細書で説明されるバックエンドプロセス、方法、機能、格納などを実装または提供することをウェブサービスに依拠してよい。たとえば、そのような実施形態において、1または複数のユーザシステム(複数も可)130で実行しているクライアントアプリケーション132は、本明細書で説明される様々な機能、プロセス、方法、および/またはソフトウェアモジュールの1または複数または1または複数の一部を実行するために、プラットフォーム110で実行しているサーバアプリケーション112とインタラクトしてよい。クライアントアプリケーション132は「シン」であってよく、この場合、処理は主に、プラットフォーム110でサーバアプリケーション112によってサーバ側で実行される。シンクライアントアプリケーションの基本的な例はブラウザアプリケーションであり、これは単にユーザシステム(複数も可)130においてウェブページを要求、受信、および表示するのみであり、一方、プラットフォーム110におけるサーバアプリケーションは、ウェブページの生成およびデータベース機能の管理を請け負う。あるいは、クライアントアプリケーション132は「シック」であってよく、この場合、処理は主に、ユーザシステム(複数も可)130によってクライアント側で実行される。理解すべき点として、クライアントアプリケーション132は、特定の実装の設計目的に依存して、この「シン」と「シック」との間のスペクトルに沿ったどの点においても、プラットフォーム110におけるサーバアプリケーション112に対して一定量の処理を行う。いずれの場合も、(たとえばアプリケーション112が全ての処理を行う場合)プラットフォーム110または(たとえばアプリケーション132が全ての処理を行う場合)ユーザシステム(複数も可)130のいずれかに全体が常駐し、あるいは(たとえばサーバアプリケーション112およびクライアントアプリケーション132の両方が処理を行う場合)プラットフォーム110およびユーザシステム(複数も可)130に分散し得る、本明細書で説明されるアプリケーションは、本明細書で説明されるプロセス、方法、またはアプリケーション(複数も可)の機能の1または複数を実装する1または複数の実行可能なソフトウェアモジュールを備えてよい。
【0027】
1.2.処理デバイス例
【0028】
図2は、本明細書で説明される様々な実施形態と関連して用いられ得る有線または無線システム例200を示すブロック図である。たとえば、システム200は、本明細書で説明される(たとえば、アプリケーションまたはアプリケーションの1または複数のソフトウェアモジュールを格納および/または実行するための)機構、プロセス、方法、または機能の1または複数として、またはこれとともに用いられてよく、本明細書で説明されるプラットフォーム110、ユーザシステム(複数も可)130、外部システム(複数も可)140、および/または処理デバイスを表してよい。システム200は、サーバまたは任意の従来のパーソナルコンピュータ、または有線または無線データ通信機能を有する他の任意のプロセッサイネーブル型デバイスであってよい。当業者には明らかであるように、他のコンピュータシステムおよび/またはアーキテクチャも用いられ得る。
【0029】
システム200は、好適には、たとえばプロセッサ210などの1または複数のプロセッサを含む。たとえば入力/出力を管理するための補助プロセッサ、浮動小数点数学演算を行うための補助プロセッサ、信号処理アルゴリズムの高速実行に適したアーキテクチャを有する専用マイクロプロセッサ(たとえばデジタル信号プロセッサ)、メイン処理システムに従属するスレーブプロセッサ(たとえばバックエンドプロセッサ)、二重または多重プロセッサシステムのための追加のマイクロプロセッサまたはコントローラ、またはコプロセッサなどの追加のプロセッサが提供され得る。そのような補助プロセッサは、個別のプロセッサであってよく、またはプロセッサ210に統合され得る。システム200とともに用いられ得るプロセッサの例は、限定ではなく、Pentium(登録商標)プロセッサ、Core i7(登録商標)プロセッサ、およびXeon(登録商標)プロセッサを含み、これらは全て、カリフォルニア州サンタクララのIntel社から入手可能である。
【0030】
プロセッサ210は、好適には、通信バス205に接続される。通信バス205は、システム200のストレージと他の周辺構成要素との間の情報転送を容易にするためのデータチャネルを含んでよい。また、通信バス205は、プロセッサ210と通信するために用いられる信号のセットを提供してよく、データバス、アドレスバス、および制御バス(不図示)を含む。通信バス205は、たとえば、業界標準アーキテクチャ(ISA)、拡張業界標準アーキテクチャ(EISA)、マイクロチャネルアーキテクチャ(MCA)、周辺構成要素相互接続(PCI)ローカルバス、またはIEEE488汎用インタフェースバス(GPIB)、IEEE696/S-100などを含む電気電子技術者協会(IEEE)によって公布された規格など、任意の標準的または非標準的バスアーキテクチャを備えてよい。
【0031】
システム200は、好適には、メインメモリ215を含み、二次メモリ220も含んでよい。メインメモリ215は、たとえば本明細書で説明されるアプリケーションの機能および/またはモジュールの1または複数など、プロセッサ210で実行しているプログラムのための命令およびデータの格納を提供する。理解すべき点として、メモリに格納され、プロセッサ210によって実行されるプログラムは、C/C++、Java、Javascript、Perl、Visual Basic、.NETなどを限定ではなく含む任意の適切な言語に従って書かれ、および/またはこれに準拠してよい。メインメモリ215は、一般に、たとえばダイナミックランダムアクセスメモリ(DRAM)および/またはスタティックランダムアクセスメモリ(SRAM)などの半導体ベースのメモリである。他の半導体ベースのメモリ型式はたとえば、読取専用メモリ(ROM)を含む、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、ラムバスダイナミックランダムアクセスメモリ(RDRAM)、強誘電ランダムアクセスメモリ(FRAM)などを含む。
【0032】
二次メモリ220は、任意選択的に、内部メモリ225および/または取外し可能媒体230を含んでよい。取外し可能媒体230は、任意の周知の方式で読み出され、または書き込まれる。取外し可能媒体230は、たとえば、磁気テープドライブ、コンパクトディスク(CD)ドライブ、デジタルバーサタイルディスク(DVD)ドライブ、他の光学ドライブ、フラッシュメモリドライブなどであってよい。
【0033】
取外し可能記憶媒体230は、コンピュータ実行可能コード(たとえば開示されたソフトウェアモジュール)および/またはデータが格納された非一時的コンピュータ可読媒体である。取外し可能記憶媒体230に格納されたコンピュータソフトウェアまたはデータは、プロセッサ210による実行のためにシステム200に読み込まれる。
【0034】
代替実施形態において、二次メモリ220は、コンピュータプログラムまたは他のデータまたは命令がシステム200にロードされることを可能にするための他の同様の手段を含んでよい。そのような手段は、たとえば、外部記憶媒体245および通信インタフェース240を含んでよく、これにより、ソフトウェアおよびデータが外部記憶媒体245からシステム200へ転送されることが可能である。外部記憶媒体245の例は、外付けハードディスクドライブ、外付け光学ドライブ、外付け光磁気ドライブなどを含んでよい。二次メモリ220の他の例は、たとえばプログラマブル読取専用メモリ(PROM)、消去可能プログラマブル読取専用メモリ(EPROM)、電気的消去可能読取専用メモリ(EEPROM)、またはフラッシュメモリ(EEPROMと同様のブロック指向型メモリ)などの半導体ベースのメモリを含んでよい。
【0035】
上述したように、システム200は、通信インタフェース240を含んでよい。通信インタフェース240は、ソフトウェアおよびデータが、システム200と、外部デバイス(たとえばプリンタ)、ネットワーク、または他の情報源との間で転送されることを可能にする。たとえば、コンピュータソフトウェアまたは実行可能コードは、通信インタフェース240を介してネットワークサーバからシステム200へ転送され得る。通信インタフェース240の例は、ビルトインネットワークアダプタ、ネットワークインタフェースカード(NIC)、パーソナルコンピュータメモリカード国際協会(PCMCIA)ネットワークカード、カードバスネットワークアダプタ、無線ネットワークアダプタ、ユニバーサルシリアルバス(USB)ネットワークアダプタ、モデム、ネットワークインタフェースカード(NIC)、無線データカード、通信ポート、赤外線インタフェース、IEEE1394ファイアワイヤ、または、システム200をネットワークまたは他のコンピューティングデバイスとインタフェース接続する機能を有する他の任意のデバイスを含む。通信インタフェース240は、好適には、たとえばイーサネットIEEE802規格、ファイバチャネル、デジタル加入者線(DSL)、非同期デジタル加入者線(ADSL)、フレームリレー、非同期転送モード(ATM)、デジタル統合サービス網(ISDN)、パーソナル通信サービス(PCS)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、シリアルラインインターネットプロトコル/ポイントツーポイントプロトコル(SLIP/PPP)などの業界公布プロトコル規格を実装するが、カスタマイズドまたは非標準インタフェースプロトコルを同様に実装してもよい。
【0036】
通信インタフェース240を介して転送されたソフトウェアおよびデータは、一般に、電気通信信号255の形式である。これらの信号255は、通信チャネル250を介して通信インタフェース240へ提供され得る。実施形態において、通信チャネル250は、有線または無線ネットワーク、または任意の様々な多の通信リンクであってよい。通信チャネル250は、信号255を搬送し、ほんの数例としてワイヤまたはケーブル、光ファイバ、従来の電話線、セルラフォンリンク、無線データ通信リンク、無線周波数(「RF」)リンク、または赤外線リンクを含む様々な有線または無線通信手段を用いて実装され得る。
【0037】
コンピュータ実行可能コード(すなわち、たとえば開示されるアプリケーションなどのコンピュータプログラム、またはソフトウェアモジュール)は、メインメモリ215および/または二次メモリ220に格納される。またコンピュータプログラムは、通信インタフェース240を介して受信され、メインメモリ215および/または二次メモリ220に格納されてもよい。そのようなコンピュータプログラムは、実行されると、本明細書のどこかで説明するような開示される実施形態の様々な機能を行うようにシステム200を作動させる。
【0038】
本説明において、「コンピュータ可読媒体」という用語は、コンピュータ実行可能コード(たとえばソフトウェアおよびコンピュータプログラム)をシステム200へ提供するために用いられる任意の非一時的コンピュータ可読媒体を指すために用いられる。そのような媒体の例は、メインメモリ215、(内部メモリ225、取外し可能媒体230、および外部記憶媒体245を含む)二次メモリ220、および(ネットワーク情報サーバまたは他のネットワークデバイスを含む)通信インタフェース240と通信可能に結合された任意の周辺デバイスを含む。これらの非一時的コンピュータ可読媒体は、実行可能コード、プログラミング命令、およびソフトウェアをシステム200へ提供するための手段である。
【0039】
ソフトウェアを用いて実装される実施形態において、ソフトウェアは、コンピュータ可読媒体に格納され、取外し可能媒体230、I/Oインタフェース235、または通信インタフェース240によってシステム200へロードされ得る。そのような実施形態において、ソフトウェアは、電気通信信号255の形式でシステム200へロードされる。ソフトウェアは、プロセッサ210によって実行されると、好適には、プロセッサ210に、本明細書のどこかで説明される特徴および機能を行わせる。
【0040】
実施形態において、I/Oインタフェース235は、システム200の1または複数の構成要素と、1または複数の入力および/または出力デバイスとの間のインタフェースを提供する。入力デバイス例は、キーボード、タッチスクリーンまたは他のタッチ感知識デバイス、生体感知デバイス、コンピュータマウス、トラックボール、ペンベースのポインティングデバイスなどを限定ではなく含む。出力デバイスの例は、陰極線管(CRT)、プラズマディスプレイ、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ(LCD)、プリンタ、真空蛍光ディスプレイ(VFD)、表面電動型電子放出ディスプレイ(SED)、電解放出ディスプレイ(FED)などを限定ではなく含む。
【0041】
システム200は、音声ネットワークおよび/またはデータネットワークを介した無線通信を容易にする任意選択的な無線通信構成要素も含んでよい。無線通信構成要素は、アンテナシステム270、無線システム265、およびベースバンドシステム260を備えてよい。システム200において、RF信号は、無線システム265の管理下でアンテナシステム270によって無線で送信および受信される。
【0042】
一実施形態において、アンテナシステム270は、1または複数のアンテナと、アンテナシステム270に送信および受信信号経路を提供するための切換え機能を行う1または複数のマルチプレクサ(不図示)とを備えてよい。受信経路において、受信RF信号は、マルチプレクサから、受信RF信号を増幅し増幅信号を無線システム265へ送信する低雑音増幅器(不図示)へ結合され得る。
【0043】
代替実施形態において、無線システム265は、様々な周波数で通信するように構成された1または複数の無線装置を備えてよい。実施形態において、無線システム265は、復調器(不図示)および変調器(不図示)を1つの集積回路(IC)に結合してよい。復調器および変調器は、別々の構成要素であってもよい。入来経路において、復調器は、RF搬送波信号を少しずつ取り除いてベースバンド受信オーディオ信号を残し、これが、無線システム265からベースバンドシステム260へ送信される。
【0044】
受信信号がオーディオ情報を含む場合、ベースバンドシステム260は、信号を復号し、それをアナログ信号に変換する。その後、信号は増幅され、スピーカへ送信される。ベースバンドシステム260は、マイクロフォンからのアナログオーディオ信号も受信する。これらのアナログオーディオ信号は、デジタル信号に変換され、ベースバンドシステム260によって符号化される。またベースバンドシステム260は、送信のためにデジタル信号を符号化し、無線システム265の変調器部分へルート指定されるベースバンド送信オーディオ信号を生成する。変調器は、ベースバンド送信オーディオ信号をRF搬送波信号と混合し、アンテナシステム270へルート指定され、電力増幅器(不図示)を通過し得るRF送信信号を生成する。電力増幅器は、RF送信信号を増幅し、それをアンテナシステム270へルート指定し、アンテナシステム270で、信号は送信のためのアンテナポートに切り換えられる。
【0045】
またベースバンドシステム260は、中央処理ユニット(CPU)であり得るプロセッサ210にも通信可能に結合される。プロセッサ210は、データ記憶領域215および220へのアクセスを有する。プロセッサ210は、好適には、メインメモリ215または二次メモリ220に格納され得る命令(すなわち、たとえば開示されたアプリケーションまたはソフトウェアモジュールなどのコンピュータプログラム)を実行するように構成される。コンピュータプログラムは、ベースバンドプロセッサ260からも受信され、メインメモリ210または二次メモリ220に格納され、または受信時に実行され得る。そのようなコンピュータプログラムは、実行されると、開示された実施形態の様々な機能を行うようにシステム200を作動させる。たとえば、データ記憶領域215または220は、様々なソフトウェアモジュールを含んでよい。
【0046】
1.3.データ構造令
【0047】
「エンティティ」という用語は、本明細書において、アクティビティ中の訪問者または連絡先に関連付けられたデータを指すために用いられ得る。たとえばエンティティは、訪問者または連絡先のデバイス(たとえばユーザシステム130)によってオンライン通信のために用いられたIPアドレス、オンライン通信中の訪問者または連絡先に関連付けられた(たとえばウェブサイトおよび/またはeメールドメイン用の)ドメイン名、および/または閲覧中に訪問者のデバイスに格納されたクッキーを限定ではなく含んでよい。そのようなデータは、訪問者または連絡先に永続的に、半永続的に、または一時的に関連付けられてよく、通常、訪問者または連絡先を一意的に識別するものではない。たとえば、IPアドレスは、特定の訪問者のデバイスに常に関連付けられる静的IPアドレス、または1つのデバイスに一時的に割り当てられ、その後、インターネットサービスプロバイダ(ISP)によって異なるデバイスに再割当てされる動的IPアドレスであってよい。加えて、特定の訪問者は、複数のIPアドレス(たとえば、訪問者が勤務中である時の1つのIPアドレスおよび訪問者が在宅中である時の別のIPアドレス)を用いてよい。同様に、1つのドメイン名は、複数の訪問者または連絡先に関連付けられてよく、1つの訪問者または連絡先が複数のドメイン名に関連付けられてよい。他の例として、訪問者は、複数のクッキーに一度に経時的に関連付けられてよく、各クッキーは、(たとえば、デバイスのユーザによって手動で、満了期間後またはセッション終了後に自動的に、などで)削除されるまでの限られた時間のみ、訪問者のデバイスに存在し得る。
【0048】
「イベント」という用語は、本明細書において、任意のソースからの任意のアクティビティを指すために用いられ得る。アクティビティは、ウェブサイトのウェブページにアクセスすること、オンラインフォームに記入すること、電子取引サイトを介して商品を購入すること、店主または販売員に(たとえばオンラインフォーム、電子メール(eメール)メッセージ、インスタントメッセージングチャット、ショートメッセージサービス(SMS)テキスト、マルチメディアメッセージングサービス(MMS)メッセージなどを介して)連絡すること、および/または他の任意のオンラインインタラクションを限定ではなく含んでよい。アクティビティは、たとえば展示会またはセミナーに出席すること、顧客サービスコールセンターに電話をかけること、オフラインでの購入を行うことなどのオフラインアクティビティも含んでよい。ソースは、ウェブサイト、マーケティングオートメーションプラットフォーム(MAP)、クッキー追跡源、ベンダーデータなどを限定ではなく含んでよい。例として、ウェブサイトへの訪問者は、ウェブサイトのウェブページ内のオンラインフォームに記入してよく、このアクティビティは、訪問者を表すエンティティ(たとえば、ウェブサイトと通信するために訪問者のデバイスによって用いられたIPアドレス、訪問者のISPまたはエンタープライズに関連付けられたドメイン名、訪問者のデバイスに格納された追跡クッキーのコンテンツの一部または全体を表す文字列など)とともに、イベントとしてアプリケーションへ通信され得る。
【0049】
イベントは、訪問者を表すエンティティ(たとえばIPアドレス、ドメイン、および/またはクッキー)の表現およびアクティビティが発生した時間を表すタイムスタンプを備えるデータ構造(たとえばベクトル、リンクリスト、アレイ、区切られた文字列など)として実装され得る。理解すべき点として、このデータ構造は、訪問者をアカウントにマッピングすること、アクティビティを識別またはカテゴリ分けすることなどを支援し得る任意の追加のデータも備えてよい。たとえば、各イベントデータ構造は、アクティビティの表現、イベントおよび/またはアクティビティのソースを示すソース情報なども備えてよい。加えて、イベントは、たとえば訪問者が訪問中にフォームを提出または自身のアカウントにログインした場合、訪問者固有情報を備えてよい。そのような場合、ソースは、フォームに入力され、またはログインアカウントに関連付けられたユーザプロフィールから取得されたユーザ固有情報を、イベントに関して記録されたイベント情報に組み入れてよい。
【0050】
「マッピング」という用語は、本明細書において、エンティティとアカウント(たとえば企業名または他の企業識別子)との間の各関連を指すために用いられ得る。各マッピングは、エンティティが関連付けられたアカウントによって過去に用いられていること、したがって、そのエンティティによる現在または未来のアクティビティがそのアカウントによるオンラインアクティビティを表し得ることを確信する少なくとも何らかの理由が存在することを示す。マッピングは、エンティティの表現(たとえばIPアドレス、ドメイン、および/またはクッキー)およびアカウント識別子を備えるデータ構造として実装され得る。理解すべき点として、このデータ構造は、スパン、遅延、拡散、強度、ソース重み、重複、および/または信頼性を含む任意の追加のデータも備えてよい。
【0051】
実施形態において、各マッピングデータ構造は、スパン値を備え、またはスパン値に関連付けられる。スパン値は、それぞれのマッピングがアクティブであった期間を表す。たとえば、2017年1月1日、2017年3月3日、および2017年11月4日に発生した3つのイベントからマッピングが導出された場合、スパン値は、最初のイベントと最後のイベントとの間の日数(すなわち、2017年1月1日~2017年11月4日、すなわち307日)として計算され得る。理解すべき点として、スパン値は、任意の精度(たとえば日数、時間数、分数、秒数、ミリ秒数など)に従って計算され表現され得るが、簡潔性のために、本開示において日数で測定される。
【0052】
実施形態において、各マッピングデータ構造は、遅延値を備え、または遅延値に関連付けられる。遅延値は、それぞれのマッピングが最後にアクティブであった時からの期間を表す。たとえば、2018年1月1日に、2017年11月4日からマッピングに関してイベントが発生していない場合、遅延値は、2017年11月4日と2018年1月1日との間の日数(すなわち、58日)として計算され得る。理解すべき点として、遅延値は、任意の精度(たとえば日数、時間数、分数、秒数、ミリ秒数など)に従って計算され表現され得るが、簡潔性のために、本開示において日数で測定される。
【0053】
実施形態において、各マッピングデータ構造は、拡散値を備え、または拡散値に関連付けられる。拡散値は、マッピングがそのスパン値にわたりアクティブであった頻度を示す期間を表す。たとえば、2017年1月1日、2017年3月3日、および2017年11月4日に発生した3つ以上のイベントからマッピングが導出された場合、拡散値は3日であってよい。理解すべき点として、拡散値は、任意の精度(たとえばイベントが発生した日数、または日、時間、分、秒、ミリ秒単位のイベントの合計持続期間など)に従って計算および表現され得るが、簡潔性のために、本開示において日数で測定される。
【0054】
実施形態において、各マッピングデータ構造は、強度値を備え、または強度値に関連付けられる。強度値は、マッピングがそのスパン値にわたりアクティブであった頻度を表す。たとえば、2017年1月1日に発生した1つのイベント、2017年3月3日に発生した2つのイベント、および2017年11月4日に発生した3つのイベントからマッピングが導出された場合、6つのイベントが存在したため、強度値は6であってよい。ただし、強度値は、日数または他の時間量ではなく(たとえば1日に複数のイベントが発生し得る)、イベントの回数を示すので、拡散値とは異なる。理解すべき点として、拡散値が日数であるイベントにおいて、強度値は、拡散値と等しいかそれより大きくなり得るが、拡散値未満であってはならない。
【0055】
実施形態において、各マッピングデータ構造は、ソース重みを備え、またはソース重みに関連付けられる。ソース重みは、それぞれのマッピングが導出されたイベントのソース(複数も可)の相対的精度を表す。ソース重みの計算は、本明細書のどこかで説明される。
【0056】
実施形態において、各マッピングデータ構造は、重複値を備え、または重複値に関連付けられる。重複値は、それぞれのマッピングを確証するソースの数を表す。たとえば、3つの異なるソースから受信されたイベントからマッピングが導出された場合、あるいはマッピングが、他の2つの異なるソースから導出された他のマッピングに対応する場合、重複値は、合計3つのソース(または2つの対応するソース)である。
【0057】
実施形態において、各マッピングデータ構造は、本明細書のどこかで説明されるように、1または複数の要因(たとえばスパン、遅延、拡散、強度、ソース重み、および/または重複統計)に基づいて計算された信頼値を備え、または信頼値に関連付けられる。この文脈において、特定のマッピングに関する信頼値は、それぞれのエンティティを使用した、使用している、または使用する訪問者または連絡先が、それぞれのアカウントに関連付けられているという信頼性の尺度を表す。信頼値は、本明細書において主に、0~1の十進値として説明される。ただし、理解すべき点として、可能な信頼値の範囲は、信頼値に依拠する開示された任意の計算への対応する修正によって、任意の所望の値範囲に容易に変換することができる。
【0058】
「イベントプール」という用語は、本明細書において、全ての生イベントデータ構造が格納されるデータ構造を指すために用いられる。たとえば、イベントがソースから受信されるたびに、イベントの表現は、説明されたイベントデータ構造としてイベントプールに格納され得る。各イベントデータ構造は、たとえば、(たとえばイベントの基礎となるアクティビティが発生した日付および/または時間を示す)タイムスタンプ、エンティティ(たとえばIPアドレス、ウェブサイトおよび/またはeメールドメイン、および/またはクッキー)、イベントが受信されたおよび/またはイベントが発生したソース、イベントに関連付けられたeメールアドレスのハッシュ(ある場合)、企業名(ある場合)、(基礎となるアクティビティ中のユーザエントリ、またはユーザがアクティビティに関するアカウントにログインした場合、ユーザのプロフィールに基づく)地理的位置、および/またはエンティティがIPアドレスを含む場合、地理的IP位置(すなわち、異なるIPブロックは異なる国に割り当てられるので、各IPアドレスは国に関連付けられ得る)を備えてよい。各イベントデータ構造は、たとえば都市、州、郵便番号、グローバルポジショニングシステム(GPS)座標(たとえば緯度、経度、および/または標高)などといった追加の情報(たとえばユーザエントリまたはユーザプロフィールからの関連情報)も備えてよい。イベントプールへのエントリ前に、本明細書のどこかで説明されるように、各イベントデータ構造の1または複数のフィールドが正規化され得る。
【0059】
全ての単一イベントがイベントプールに個々に格納され、収集されるイベントの数は一般に膨大になるため、イベントプールは、対応して大きいものである。したがって、イベントをより凝集した状態に処理するために、アプリケーションは、「マッピングプール」を利用してよい。具体的には、「マッピングプール」という用語は、本明細書において、イベントプールに格納されたイベントを凝集してマッピングを形成するデータ構造を指すために用いられる。
【0060】
2.プロセス概観
【0061】
匿名エンティティを既知のアカウントにマッピングするためのプロセスの実施形態が、以下、詳しく説明される。理解すべき点として、説明されるプロセスは、たとえば本明細書で説明されるアプリケーション(たとえばサーバアプリケーション112、クライアントアプリケーション132、および/またはサーバアプリケーション112およびクライアントアプリケーション132を備える分散型アプリケーション)として1または複数のハードウェアプロセッサによって実行される1または複数のソフトウェアモジュールとして具体化されてよく、これは、プラットフォーム110のプロセッサ(複数も可)によって全体が実行されるか、ユーザシステム(複数も可)130のプロセッサ(複数も可)によって全体が実行されるか、またはアプリケーションのいくつかの部分またはモジュールがプラットフォーム110によって実行され、アプリケーションの他の部分またはモジュールがユーザシステム(複数も可)130によって実行されるようにプラットフォーム110およびユーザシステム(複数も可)130に分散され得る。説明されるプロセスは、ソースコード、オブジェクトコード、および/または機械コードで表された命令として実装され得る。これらの命令は、ハードウェアプロセッサ(複数も可)によって直接実行されてよく、あるいは、オブジェクトコードとハードウェアプロセッサとの間で動作する仮想機械によって実行され得る。加えて、開示されるアプリケーションは、1または複数の既存のシステムにおいて構成され、または既存のシステムとインタフェース接続され得る。
【0062】
あるいは、説明されるプロセスは、ハードウェア構成要素(たとえば汎用プロセッサ、集積回路(IC)、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブルロジックデバイス、ディスクリートゲートまたはトランジスタロジックなど)、ハードウェア構成要素の組み合わせ、またはハードウェア構成要素とソフトウェア構成要素との組み合わせとして実装され得る。ハードウェアとソフトウェアとの相互置換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップは、本明細書において、一般にそれらの機能の観点から説明される。そのような機能がハードウェアとして実装されるかソフトウェアとして実装されるかは、特定のアプリケーションおよびシステム全体に課された設計制約に依存する。当業者は、各特定のアプリケーションに関して様々な方法で説明される機能を実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱をもたらすものとして解釈されてはならない。加えて、構成要素、ブロック、モジュール、回路、またはステップにおける機能のグループ化は、説明を容易にするためである。特定の機能またはステップは、本発明から逸脱することなく、1つの構成要素、ブロック、モジュール、回路、またはステップから別の構成要素、ブロック、モジュール、回路、またはステップへ動かされ得る。
【0063】
図3は、実施形態に係る、匿名エンティティを既知のアカウントにマッピングするためのプロセス300を示す。プロセス300は、特定の構成および順序のステップによって示されるが、より少ない、多い、または異なるステップおよび異なる構成および/または順序のステップで実装されてよい。
【0064】
2.1.イベントプールへの収集
【0065】
ステップ310において、アプリケーションは、1または複数のソース(たとえば外部システム140および/またはプラットフォーム110における内部ソース)からのイベントを受信し、それらをイベントプールに収集する。本明細書のどこかで説明されるように、各イベントは、少なくともエンティティおよびタイムスタンプを備えるデータ構造として受信され得る。各イベントは、イベントプール内のデータ構造に格納されてよく、エンティティ(たとえばIPアドレス、ドメイン、および/またはクッキー)、タイムスタンプ、イベントのソースの識別子、および任意選択的に追加の情報(たとえば、エンティティ内のIPアドレスに関連付けられた地理的IP位置、企業またはユーザ名など)を備えてよい。
【0066】
特に、生イベントデータはノイジーであり得る。したがって、実施形態において、イベントデータは、イベントプールに入力される時、またはイベントプールに入力された後、正規化される。たとえば正規化は、地理的IP位置(たとえば、同じ国名の全バリエーションを、標準名称および/または文法技術を用いて単一の正規名に変換すること)、企業またはアカウント名(たとえば、同じ企業またはアカウント名の全バリエーションを、標準名称および/または文法技術を用いて単一の正規名に変換すること)、ドメイン名(たとえば、第2レベルドメイン名より前のドメイン名の任意の部分を破棄すること)、および/または他のフィールドに対し行われ得る。これらのフィールド値のバリエーションを識別するために、ファジーマッチングが用いられ得る。正規化は、後続する凝集プロセスを最大限にするために、イベントプール内の全てのエントリにおけるフィールドにわたり行われ得る。
【0067】
正規化の例として、マスタドメインの1または複数の別名(たとえば、abc.comはabc.go.comの別名)が、入来するイベントデータ内で検出され、イベントプールへの入力前に、マスタドメインに正規化される。有利な点として、これにより、同じドメインが異なるドメインとして分析されることが避けられる。実施形態において、別名セットは、以下の(たとえばアプリケーションによって実装された)技術の1または(全てを含む)複数を用いて構成され得る。
【0068】
(1)第2のドメイン(たとえばabc.go.com)にリダイレクトするかを確認するために第1のドメイン(たとえばabc.com)へ要求を送信する。第1のドメインへの要求が第2のドメインにリダイレクトする場合、第1のドメインは、第2のドメインの別名(たとえば、abc.comはabc.go.comの別名)である。
【0069】
(2)ドメインに関するドメインネームシステム(DNS)IPアドレスを(たとえばDNSルックアップを用いて)取得し、取得したIPアドレスに関連するドメインのセットを(たとえば、DNS IP⇒ドメインのセットとなるIP逆引きを用いて)構成する。ドメインのセットが構成されると、アプリケーションは、ドメインセット内の各ドメインへ要求を送信し、返信されたウェブページ間の類似性を(たとえば型式に基づいて)検査してよい。たとえば、IPアドレス1.1.1.1に関するドメインのセットが[a.com、b.com、c.com]である場合、a.com、b.com、c.comにおけるウェブページが取得され、取得したそれらのウェブページの型式が比較され得る。型式が同一または同様である場合、アプリケーションは、ドメインのセット[a.com、b.com、c.com]が別名のセットであることを決定し、ドメインのセットから1つのドメインをマスタドメインとして機能するように選択してよい。たとえば、アプリケーションは、マスタドメインとしてa.comをランダムに選択し、別名ドメインb.comおよびc.comに関連付けられた任意のイベントデータがマスタドメインa.comに関連付けられるように修正することによって、今後の全てのイベントデータをマスタドメインに正規化してよい(a.comに関連付けられた任意のイベントデータは、a.comに関連付けられたままである)。
【0070】
(3)互いの文字列距離に基づいて(たとえばイベントデータ内に見られる)ドメインセットを構成し、ドメインセット内の各ドメインへ要求を送信し、返信されたウェブページ間の類似性を(たとえば型式に基づいて)検査する。類似性マッチングは、上述の技術(2)における類似性マッチングと同じ、または異なってよい。たとえばアプリケーションは、ドメインネーム間の文字列距離に基づいて、互いに別名の可能性を表すJonBakery.com、JonBakes.com、およびJonBaker.comをドメインのセットとして識別してよい。JonBakery.com、JonBakes.com、およびJonBaker.comにおけるウェブページが取得され、取得したそれらのウェブページの型式が比較され得る。型式が同一または同様である場合、アプリケーションは、ドメインのセット[JonBakery.com、JonBakes.com、JonBaker.com]が別名のセットであることを決定し、ドメインのセットから1つのドメインをマスタドメインとして機能するように選択してよい。たとえば、アプリケーションは、マスタドメインとしてJonBaker.comをランダムに選択し、別名ドメインJonBakery.com.comおよびJonBakes.comに関連付けられた任意のイベントデータがマスタドメインJonBaker.comに関連付けられるように修正することによって、今後の全てのイベントデータをマスタドメインに正規化してよい(JonBaker.comに関連付けられた任意のイベントデータは、JonBaker.comに関連付けられたままである)。
【0071】
上述の技術(1)、(2)、および/または(3)を用いて別名であると決定されたドメインのセットは、単一の別名ドメインセットに併合され得る。その後、実施形態において、不当に多い数のドメインを有する併合された別名ドメインセット(たとえば、所定の閾値を超過するドメインの数を備えるセット)は、収集されたイベントデータからフィルタ除去される。具体的には、任意のフィルタ除去されたドメインセット内の任意のドメインに関連付けられたイベントデータは、イベントプールから除外され得る。これは、大規模な別名ドメインセットが、有効なアカウントに関連付けられたものではなく、ドメイン販売業者、ホスティングサービス、ソーシャルメディアプラットフォームなどによるリダイレクトを示しているためである。
【0072】
加えて、イベントデータは、1または複数の他の基準に基づいてフィルタ除去され得る。たとえば、ウェブサービスプロバイダ(たとえばアマゾン(登録商標)、グーグル(登録商標)、マイクロソフト(登録商標)など)に関連付けられたIPアドレスの範囲内のIPアドレスに関連付けられたイベントデータは、イベントプールから除外され得る。他の例として、ボット様式のアクティビティパターンが検出されたエンティティに関連付けられたイベントデータは、イベントプールから除外され得る。ボット様式のアクティビティパターンは、不当に多い数の要求、ウェブスクレイピング挙動、定期的なイベントなどを備えてよい。
【0073】
2.2.マッピングへの凝集
【0074】
ステップ320において、アプリケーションは、イベントプールに格納されたイベントを、マッピングプール内に凝集する。理解を容易にするために、このステップは、具体的な非限定的例を用いて説明される。イベントプールが、以下の表1に表されたエントリを備えるものとする。特に、エントリの全てのフィールドが必ずしも添付の表に示されるわけではなく、これらの表内のエントリは、実際のプールに存在するエントリのわずかな割合しか表さず、単一のエンティティのみに関してしか表さない。実際の実装のエントリは、表に示すものよりも多い、少ない、または異なるフィールド、および/または異なる表現のフィールド値を備えてよい。
【表1】
【0075】
この例において、IPアドレス1.1.1.1をxyz.comのドメインと関連付ける2つのイベントが、ソース1(たとえばデータベンダ)から受信されており、同じIPアドレスをabc.comのドメインと関連付ける2つのイベントが、ソース2から(たとえば、たとえばログインを報告するウェブサイトから直接)受信されており、同じIPアドレスをabc.comと関連付ける8つのイベントが、ソース3(たとえばマーケティングオートメーションプラットフォーム)から受信されている。2013年2月3日、イベントプールにおけるこれら12のイベントは、以下の表2に示すように、マッピングプール内の2つのエントリに凝縮され得る。
【表2】
【0076】
表2に示すように、イベントプールに格納された個々のイベントは全て、合致するエンティティを有する他のイベントと対応付けられ、IPアドレスをアカウント名と関連付けるマッピングプール内の単一エントリに凝集される。実施形態において、アカウント名は、ドメイン名から導出され得る(たとえば、「xyz.com」から「XYZ」、および「abc.com」から「ABC」)。凝集されたイベントの各セットに関して、統計(たとえばスパン値、遅延値、拡散値、強度値、および重複値)が計算され、マッピングプール内のエントリに含まれる。この場合、IPアドレス1.1.1.1および同じドメイン名「xyz.com」を有する2つのエントリは、21日のスパン値、14日の遅延値、2日の拡散値、2日の強度値、1つのソースの重複値、およびその1ソースの識別子を備えるリストとともに単一のエントリに結合されている。同様に、同じIPアドレスを有するが異なるドメイン名「abc.com」を有する10のエントリは、32日のスパン値、1日の遅延値、9日の拡散値、10日の強度値、2つのソースの重複、およびそれら2つのソースの各々に関する識別子を備えるリストとともに単一のエントリに結合されている。加えて、ドメイン名「xyz.com」は、正規化企業名「XYZ」を有するXYZ社と関連付けられており、ドメイン名「abc.com」は、正規化企業名「ABC」を有するABC社と関連付けられている。
【0077】
2.3.各マッピングに関する信頼性計算
【0078】
ステップ330において、アプリケーションは、マッピングプール内の各マッピングに関する信頼値を計算する。実施形態において、各マッピングに関する全体信頼値は、複数の異なる信頼性に基づいて計算される。たとえば信頼値は、時間信頼性、統計信頼性、および/またはソース信頼性の組み合わせであってよく、これらの各々は、各マッピング内の凝集情報に基づいて計算される。
【0079】
2.3.1.時間信頼性
【0080】
特定のマッピングに関する時間信頼性は、以下の式1を用いて計算され得る。
【数3】
式中、spanはマッピングに関連付けられたスパン値であり、delayはマッピングに関連付けられた遅延値である。
【0081】
式1は、高いスパン値を有するマッピングは、低いスパン値を有するマッピングよりも低速で衰退するはずだという理論に基づいて、シグモイド曲線を生成する。しかし、同時に、低いスパン値を有するマッピングもなお捕捉されなければならない。たとえば、特定のマッピングが昨日かつ昨日のみアクティブであった場合、それは新しいために高い時間信頼値(たとえば0.3)を有するが、その時間信頼値は、そのマッピングが今後再びアクティブにならなければ急速に低下する。逆に、この1か月アクティブではなかったが、この1か月より前の年全体にわたりアクティブであった競合するマッピングは、更に高い時間信頼値(たとえば0.8)を有し、それぞれの信頼値の観点から、新しいが一過性であるマッピングを超える。
【0082】
2.3.2.統計信頼性
【0083】
統計信頼性は、以下の式2を用いて計算され得る。
weightstrength×log1000(strength)+weightspread×log100(spread) [式2]
式中、strengthはマッピングに関連付けられた強度値であり、spreadはマッピングに関連付けられた拡散値であり、weightstrength+weightspread=1.0であり、実施形態において、weightstrength=weightspread=0.5である。
【0084】
式2は、たとえば強度および拡散などの統計に報酬を与えるために対数関数を用いる。実際、マッピングの大多数は、これらの統計に関して低い値を有し得る。したがって、これらの統計に関する高い値を有するマッピングは、それぞれの信頼値の観点から「報酬を受ける」。
【0085】
2.3.3.ソース信頼性
【0086】
特定のマッピングに関するソース信頼性は、原則的にマッピングが導出されたイベント(複数も可)を供給した各ソースが誤っている確率を減じる、以下の式3を用いて計算され得る。
【数4】
式中、Sはマッピングに関する重複値であり、source_confidenceは、マッピングを導出するために用いられたイベントが受信された各ソースに関連付けられた0~1の信頼値(たとえば、ソースの過去の信頼性または精度に基づく各ソースに関するグローバル信頼値)である。
【0087】
ソース信頼性は、全体信頼値における重要な変数であり得る。いくつかのソースは、確実性の高い方法論に基づく信頼できるデータを供給し得るが、他のソースは、非常にノイジーであり得る(たとえば大量の不正確なデータが正確なデータに混合している)。実施形態において、特定のソースに関するsource_confidence値は、N個の個別のソースがマッピングについて符合する場合、そのマッピングは真であるという仮定に基づいて決定され得る。Nは、2以上でなくてはならず、好適には、3より大きい。
【0088】
図4Aおよび図4Bは、実施形態に係る、イベントの各ソースに関するソース信頼値を決定するためのプロセス例400を示す。プロセス400は、特定の構成および順序のステップを用いて示されるが、より少ない、多い、または異なるステップおよび異なる構成および/または順序のステップで実装されてよい。
【0089】
ステップ410において、特定のソースの精度を評価するために、アプリケーションは、N(たとえば3)個以上のソースに基づくマッピングプールからマッピングのプールを作成することによって「真の」マッピングのセットを構成してよい。実施形態において、評価されるソースは、このプールから除外され得る。そのような実施形態において、ステップ410は、ソースが評価される度に「真の」マッピングの新たなプールが作成されるように、決定ブロック420の後に起こり得る。どちらの場合も、これらの選択されたマッピングは「真のセット」、すなわち、真であると推測されるマッピングのサブセットを表す。
【0090】
ステップ420において、アプリケーションは、考慮されるべき任意のソースが残っているかを決定する。理解すべき点として、イベントが取得された全てのソースが、プロセス400に従って評価され得る。考慮されるべき少なくとも1つのソースが残っている場合(すなわち、ステップ420における「はい」)、次のソースが現在のソースとして選択され、プロセス400はステップ430へ進む。そうではなく、考慮されるべきソースが残っていない場合(すなわち、ステップ420における「いいえ」)、プロセス400は終了する。
【0091】
ステップ430において、評価されている現在のソースから導出されたマッピングと、マッピングの真のセットとの間の重複または交わりが決定される。このマッピングの交わりは、実施形態に従って、図4Bに示される。
【0092】
ステップ440において、アプリケーションは、評価されている現在のソースからいくつの真のマッピングおよび/またはいくつの真ではないマッピングが導出されたかに基づいて、評価されている現在のソースに関する信頼の尺度を決定するために、この交わりを用いる。すなわち、真のセット内のマッピング(たとえばエンティティとアカウントとの両方におけるマッピング)と合致する、現在のソースから導出されたマッピングは、現在のソースから導出された真のマッピングであると推測される。決定された尺度はその後、評価されている現在のソースに関するソース信頼性(すなわち、式3におけるsource_confidenceの値)として、またはそれを求めるために用いられ得る。たとえば、ソース信頼性は、現在のソースから導出されたマッピングの総数に対する重複内の「真の」マッピングの数の比(たとえばパーセンテージ)であってよい。現在のソースに関してソース信頼性が決定された後、プロセス400はステップ420へ戻り、次のソースがあればそれを評価し、そうでなければ終了する。
【0093】
2.3.4.全体信頼性
【0094】
特定のマッピングに関する全体信頼性は、そのマッピングに関する時間信頼性、統計信頼性、およびソース信頼性の各々に基づいて、以下の式4を用いて計算され得る。
weight(confsource+(1-confsource)confstat)+weight(conftime) [式4]
式中、conftimeは計算された時間信頼性であり、confstatは計算された統計信頼性であり、confsourceは計算されたソース信頼性であり、weight+weight=1.0であり、実施形態において、weight=0.7およびweight=0.3である。
【0095】
2.4.マッピングのフィルタリングおよびクリーニング
【0096】
ステップ340において、計算された信頼値を有するマッピングは、フィルタされ、クリーニングまたは補正され得る。実施形態において、ステップ340は、ISPフィルタリングおよび/または位置クリーニングを備える。
【0097】
2.4.1.ISPフィルタリング
【0098】
通常、エンティティが、(たとえば、IPアドレスを様々な顧客に動的に割り当てる)ISPに属するIPアドレスを含む場合、その同一エンティティに関する多数の矛盾するマッピングが存在し得る。したがって、実施形態において、アプリケーションは、特定のエンティティに関する最大信頼値を有するマッピングに関する信頼値と、その特定のエンティティに関する全てのマッピングに関する全ての信頼値の合計との比を計算し、その後、この比を閾値と比較することによって、マッピングをフィルタする。たとえば、この比較は、以下の式5として表され得る。
【数5】
【0099】
したがって、たとえば最大信頼値が0.5である場合、その信頼値は、有効なマッピングとみなされるために、累積信頼値の25%を示す必要がある。最大信頼値が0.1であった場合、累積信頼値の45%を示す必要がある。この閾値は、信頼値の観点から明確に抜きんでた単一のマッピングがない場合に、相反するマッピングをフィルタ除去する。
【0100】
実施形態において、sum(confidenceentity)は、オーバーカウントを防ぐために、全ての信頼値ではなく、全ての異なる信頼値の合計を表し得る。具体的には、同じエンティティに関する2つ以上のマッピングは、同じ信頼値を有することになり得る。この場合、全ての(異なる信頼値および同一の信頼値を含む)信頼値の合計ではなく全ての異なる信頼値の合計で割ることで、ISPフィルタは、より控えめになり得る。あるいは、sum(confidenceentity)は、異なっていることにかかわらず全ての信頼値の合計を表してよい。
【0101】
実施形態において、式5が満たされない場合、特定のエンティティに関連付けられた全てのマッピングがフィルタ(たとえば破棄または無視)され得る。そうではなく、式5が満たされる場合、そのエンティティに関する最大信頼値を有するマッピングが保持され、そのエンティティに関連付けられた他の全てのマッピングがフィルタされ得る。原則的に、式5は、低い信頼性を有するマッピングほど、破棄を避けるために合計信頼値のうち大きなパーセンテージを必要とし、高い信頼性を有するマッピングは、それらが同じエンティティに関して不当な数のマッピングと競合しない限り、残ることを確実にする。
【0102】
2.4.2.位置クリーニング
【0103】
IPアドレスの範囲は特定の国に関連付けられるので、エントリがIPアドレスを含む場合、このIPアドレスは、関連付けられた国または他の地理的情報を決定するために用いられ得る。アプリケーションは、マッピングを補正またはクリーニングするために、この地理的情報を用いてよい。たとえば、イベントは、オンラインアクティビティ(たとえばウェブサイト訪問)を、(たとえばウェブサイトへのログインに基づいて)アカウントへの連絡先に関連付けてよい。この場合、連絡先が誤りである場合、マッピングは誤りである。加えて、その連絡先が、様々な支社を有する会社(たとえば多国籍企業、コンサルティング会社など)によって用いられている場合、連絡先は、1つの支社に関連するアクティビティを行うと同時に、そのアクティビティを他の支社(たとえば、連絡先が用いられている支社)にリンクすることであってよい。
【0104】
実施形態において、アプリケーションは、特定のソースからの特定のアカウントに関するイベントのどの部分が異なる国から入来しているかを決定することによって、これらの問題に対処する。具体的には、アプリケーションは、アカウントが正しくリンクされているか否かを決定するために、IPアドレスによってではなく、アカウントレベルで統計を収集してよい。例として、数千のIPアドレスが過去に米国内の「ABC,U.S.A」に関するアカウントにマッピングされている場合、新たなイベントにおいて受信された新たなIPアドレスの大多数もまた、米国内で起こったものであるはずだと推定される。
【0105】
実施形態において、アプリケーションは、以下のようにマッピングを補正、クリーニング、またはフィルタしてよい。
【0106】
(1)新たなイベントの大多数におけるIPアドレスが、既存のマッピング内の国とは異なる国と関連付けられている場合、既存のマッピング内の国を新しい異なる国に変更し、
【0107】
(2)マッピング内のアカウントが、多国籍オフィスを有する大企業を表し、イベントのIPアドレスが複数の異なる国と関連付けられており、明らかな大部分を占める単一の国がない場合、複数の国の各々について1つのマッピング、または主要な国の各々について1つのマッピングとなる(たとえば、比較的少数のイベントを有する国に関するマッピングを破棄する)ようにマッピングを複数のマッピングに分割し、および/または、
【0108】
(3)新たなイベント内のIPアドレスが、既存のマッピング内の国とは異なる国と関連付けられているが、ソースおよび/またはマッピング信頼値が低い場合、既存のマッピングを変更せず、新たなイベントに関する新たなマッピングを作成しない(すなわち、新たなイベントを破棄、無視、または他のようにフィルタする)。
【0109】
2.4.3.有効ドメインのチェック
【0110】
実施形態において、アカウントを識別するために用いられる鍵となるフィールドの1つは、ドメインである。イベントデータにおけるノイズによって、いくつかのマッピングは、無効および/または不良なドメインをアカウントにマッピングし得る。したがって、実施形態において、アプリケーションは、各ドメインへ要求を送信することによって、マッピング内の1または複数のドメインを検証してよい。たとえば、アプリケーションは、低信頼性マッピング内の各ドメイン名へ要求を送信することによって、低い信頼値(たとえば、所定の閾値を下回る信頼値)と関連付けられた各マッピング内のドメイン名を検証してよい。特定のマッピングと関連付けられたドメインへの要求が、有効なアカウントを示さないサイト(たとえばドメイン販売業者、ホスティングサービス、ソーシャルメディアプラットフォームなど)にリダイレクトされる場合、および/または、要求が、エラーまたはマッピングが不良である可能性が高いことを確信する他の何らかの理由をもたらす場合、マッピングは破棄され、または無効として除外され得る。
【0111】
2.5.マッピングの選択
【0112】
ステップ350において、各エンティティに関して、アプリケーションは、ステップ340においてフィルタおよびクリーニングされたマッピングから、ステップ330において決定された最も高い信頼値を有する残りのマッピングを選択する。実施形態において、アプリケーションは、信頼値が最小閾値を超過する場合のみ、マッピングを選択してよい。たとえば、いくつかの例において、特定の最小閾値を上回る信頼値を有するマッピングがない場合、アプリケーションは、最も高い信頼値を有するマッピングを含む、特定のエンティティに関する全てのマッピングを破棄してよい。
【0113】
実施形態において、最小閾値は、マッピングが用いられる特定のコンテキストに依存してよい。たとえば、プラットフォーム110のいくつかのコンテキストまたはユーザは、マッピングに関してより高いレベルの信頼性を必要とすることがあり、その場合、最小閾値は、より高く設定され得る。他のコンテキストまたはユーザは、そのような高いレベルの信頼性を必要としないことがあり、その場合、最小閾値はより低く設定され、または完全に削除され得る。
【0114】
実施形態において、プロセス300の出力は、エンティティとアカウントとの間の残りのマッピングの各々のグラフ、リスト、テーブル、または他の表現である。理解すべき点として、この表現は、ステップ340におけるフィルタリングおよびクリーニング、およびステップ350における選択および/または閾値化の後に残るマッピングのみを含む。表現は、データ構造として格納および/または送信され、グラフィカルユーザインタフェースにおいて表示され、他のアプリケーションへの(たとえばAPIを介した)入力として用いられるなどしてよい。実施形態において、表現は、エンティティによって索引を付された最終マッピングのデータベースである。エンティティ索引は、単一のエンティティが複数のアカウントにマッピングすることがないように、一次一意索引であってよい。
【0115】
また、実施形態において、最終マッピングの各々は、マッピング内に表現されたアカウントによって、アカウントに関する連絡先情報にリンクされ得る。たとえば、マッピング内のアカウント識別子は、そのアカウント識別子と関連付けられた連絡先情報を検索するために(たとえばデータベースへの索引として)用いられ得る。
【0116】
したがって、たとえば、ユーザは、ユーザのウェブサイトで、特定のIPアドレスからのオンラインアクティビティを目撃してよい。ユーザは、検索基準としてIPアドレスを用いて、アプリケーションを通して最終マッピングのクエリを開始してよく、それに応じてアプリケーションは、アカウント名(たとえば企業名)およびそのアカウントに関連付けられた連絡先情報をユーザに返信してよい。有利な点として、これによってユーザは、インターネットの本質的な匿名性によって連絡可能ではないはずのインターネット訪問者に連絡することが可能である。
【0117】
このルックアッププロセスは、自動化されてもよい。たとえば、ウェブサイトのオペレータは、ウェブサイトにおけるオンラインアクティビティにおいて(たとえばリアルタイムで、定期的になど)見られた各IPアドレスについて最終マッピングに自動的にクエリを行うためにアプリケーションのAPIを用いる第三者ソフトウェアを開発してよい。アプリケーションはその後、第三者ソフトウェアによる追加の処理および/またはウェブサイトオペレータによる使用のために、それらのIPアドレスに関連付けられたアカウント名および/または連絡先情報を自動的に返信してよい。
【0118】
2.6.実装例
【0119】
図5は、実施形態に係る、プロセス300の1つの実装例における様々なデータ構造間のインタラクションを示す。理解すべき点として、このプロセスは、開示されるアプリケーション(たとえばサーバアプリケーション112および/またはクライアントアプリケーション132)によって実装され得る。プロセスは、特定のデータ構造およびステップを用いて示されるが、より少ない、多い、または異なるデータ構造および/または異なるステップを用いて実装されてよい。
【0120】
ステップ310において収集されたイベントは最初、イベントプール560に格納される前に、イベントプールバッファ555に格納される。イベントがイベントプールバッファ555に追加されると、それらの各々は、それらが新しいことを示すステータスを付与され得る。加えて、イベントは、本明細書のどこかで説明されるように正規化され得る。
【0121】
ステップ505において、イベントプールバッファ555内のイベントは、本明細書のどこかで説明されるように、マッピングに凝集される。これらのマッピングは最初、ステップ520における滑らかな併合をもたらすために、小規模マッピングプールに格納される。加えて、ステップ510において、イベントプールバッファ555内のイベントにおける一意エンティティは、変更されたエンティティバッファ570に格納される。変更されたエンティティバッファ570は、イベントの日付によって区切られ得る。イベントプールバッファ内のイベントがマッピングに凝集されると、それらのステータスは、(たとえば、冗長な処理を防ぐために)それらが凝集されていること、および/またはそれらが凝集された時間を示すように変更され得る。
【0122】
ステップ515において、既存のマッピングプール575に格納されたマッピングは、分割されたマッピングプール580を生成するために、変更されたエンティティバッファ570に格納されたエンティティで分割される。これは、マッピング内のエンティティに基づいてマッピングプール575を分類すること、または変更されたエンティティバッファ570に格納されたそれらのエンティティに関してのみマッピングを抽出することを伴ってよい。
【0123】
ステップ520において、小規模マッピングプール565は、変更されたマッピングプール585を生成するために、分割されたマッピングプール580と併合される。この併合は、小規模マッピングプール565および分割されたマッピングプール580の両方に存在する各マッピングに関して、本明細書のどこかで説明されるように、結合された統計値および新たな信頼値を計算すること、およびマッピングに関する新たなエントリを、結合された統計値および信頼値とともに変更されたマッピングプール585に追加することを備えてよい。統計および信頼値の計算を容易にするために、プールは、アカウント(たとえば企業名)およびドメインの両方で分割され得る。小規模マッピングプール565のみに存在するマッピングは、単純に、それぞれの統計および信頼値とともに、変更されたマッピングプール585に追加され得る。
【0124】
ステップ525において、マッピングプール575は、変更されたマッピングプール585内のエントリで更新される。たとえば、変更されたマッピングプール585内のエントリは、マッピングプール575内の任意の対応するエントリを書き換えてよい。加えて、ステップ530において、ステップ505において凝集された(たとえば、凝集されたことを示すステータスを有する)イベントプールバッファ555内のイベントは、イベントプール560へ移される。
【0125】
理解すべき点として、プロセス300のこの実装は、新たなイベントがイベントプールバッファ555に追加されると定期的に(たとえば、特定の時間間隔で、イベントプールバッファ555が所定のサイズに到達した時になど)行われ得る。加えて、実施形態において、マッピングプール575および/またはイベントプール560への全ての変更は、監査目的で、および/または必要であればマッピングプール575および/またはイベントプール560を以前の状態に復元または巻き戻しするために、(たとえば日付およびデータによって)ログを取られ得る。
【0126】
2.7.ウェブサービス例
【0127】
本明細書のどこかで説明されるように、プラットフォーム110は、たとえばサーバアプリケーション112の一部としてウェブサービスを実装してよい。図6は、実施形態に係る、ウェブサービスの実装の一例における様々なデータ構造間のインタラクションを示す。プロセスは、特定のデータ構造およびステップを用いて示されるが、より少ない、多い、または異なるデータ構造および/または異なるステップを用いて実装されてよい。
【0128】
図示するように、プラットフォーム110は、問合せの待ち行列682とインタラクトとするためのユーザインタフェース690および問合せを提示するためのユーザインタフェース695を備えるグラフィカルユーザインタフェースを提供するウェブサーバ680を備えてよい。ユーザは、ユーザインタフェース690および695の許可に基づいて、それらの1または両方へのアクセスを有してよい。たとえば、管理ユーザは、クライアントによって提示された問合せの待ち行列を管理するためにユーザインタフェース690へのアクセスを有してよく、複数のクライアントユーザは、問合せを提示するためのユーザインタフェース695へのアクセスを有してよい。
【0129】
ステップ605において、ユーザインタフェース690のユーザは、(たとえば、待ち行列682内の全ての問合せを閲覧するために)待ち行列682に関する情報への要求を提示してよい。要求は(たとえばネットワーク(複数も可)120を介して)ウェブサーバ680へ送信され、それに応じて、ステップ610において、ウェブサーバ680は、待ち行列686にクエリを行う。このクエリに応答して、ステップ615において、待ち行列682の表現がウェブサーバ680へ返信される。ウェブサーバ680は、その後、待ち行列682のレンダリング可能な表現を生成するために待ち行列682の表現を解析し、待ち行列682のレンダリング可能な表現を、(たとえば、ユーザのユーザシステム130のディスプレイ上での)ユーザへの視覚的提示のためにユーザインタフェース690へ返信する。
【0130】
ステップ625において、ユーザインタフェース695のユーザは、問合せを提示してよい。この問合せは、マッピングプール575内のマッピングのエンティティ、アカウント名、および/または他の任意の索引可能なフィールドを備えてよい。たとえば、特定のIPアドレスからのアクティビティの増加に気付いたユーザは、その匿名であったIPアドレスを特定の企業に結び付け、その後ユーザが(たとえばマーケティングまたは販売目的で)その企業へ直接接触して連絡することができるようにしたいと望み得る。したがってユーザは、ユーザインタフェース695を介して、匿名であったIPアドレスにマッピングされている企業名に関する問合せを提示してよい。問合せは、ウェブサーバ680へ(たとえばネットワーク(複数も可)120を介して)送信される。ウェブサーバ680は、問合せを(たとえば、それがフォーマット要件、情報要件などを満たすことを確実にするために)検証し、問合せが待ち行列682に既に存在するか否かをチェックしてよい。問合せが有効と認められない場合、ウェブサーバ680は、ユーザインタフェース695にエラーメッセージを返信してよい。そうではなく、問合せが有効と認められ、待ち行列682に未だ存在しない場合、ステップ630において、ウェブサーバ680は、この問合せを待ち行列682に追加する。問合せが待ち行列682に既に存在する場合、ウェブサーバ680は、この問合せを破棄してよい。あるいは、ウェブサーバ680は、冗長であるか否かにかかわらず、有効と認められた全ての問合せを待ち行列682に追加してもよい。理解すべき点として、ウェブサーバ680は、問合せを待ち行列682に追加すると、ユーザインタフェース695からの問合せを解析し、待ち行列682に追加するための新たなフォーマットに問合せを構成してよい。
【0131】
ステップ636において、待ち行列682の最前列にある問合せは、問合せランナ684へ提供される。問合せランナ684は、問合せをマッピングプール575へのクエリに変換するソフトウェアモジュールを備えてよい。したがって、ステップ640において、問合せランナ684は、マッピングプール575にクエリを行い、ステップ645において、クエリの結果を受信する。ステップ650において、問合せランナ684は、プラットフォーム110のローカルキャッシュを備え得る結果686にクエリの結果を格納する。クエリの結果は、JSONまたは他の任意の適当なフォーマットで結果686に格納され得る。
【0132】
ステップ655において、ユーザインタフェース695のユーザは、過去の(たとえばステップ625において提示された)問合せの結果への要求を提示してよい。結果は(たとえばネットワーク(複数も可)120を介して)ウェブサーバ680へ送信され、それに応じて、ステップ660において、ウェブサーバ680は、結果686にクエリを行う。クエリに応答して、ステップ665において、問合せの結果は(もしあれば)ウェブサーバ680へ返信される。ウェブサーバ680はその後、結果のレンダリング可能な表現を生成するために結果を解析し、結果のレンダリング可能な表現を、(たとえばユーザのユーザシステム130のディスプレイ上での)ユーザへの視覚的提示のためにユーザインタフェース695へ返信する。ウェブサーバ680は、報告のために格納されたテンプレートを用いて結果のレンダリング可能な表現を構成してよい。
【0133】
代替または追加の実施形態において、ユーザインタフェース695と同様に使用するためにAPIが存在してよい。たとえば、アプリケーションは、APIを介して(たとえばステップ625と同様に)問合せを提示し、それに応じて(たとえばステップ670と同様に)それらの問合せへの結果を受信してよい。この方法では、プラットフォーム110の様々なユーザのための問合せプロセスを自動化するために、(たとえば外部システム140によって実行される)第三者ソフトウェアが用いられ得る。
【0134】
開示される実施形態の上記説明は、当業者が本発明を製造または利用することができるように提供される。これらの実施形態への様々な修正は、当業者には容易に明らかであり、本明細書で説明される一般原理は、本発明の主旨および範囲から逸脱することなく他の実施形態に適用され得る。したがって、本明細書に提示された説明および図面は、本発明の目下好適な実施形態を表すものであり、本発明によって幅広く意図される主題事項を表すものであることが理解される。また、本発明の範囲は、当業者に明らかになり得る他の実施形態を全て包括するものであり、したがって本発明の範囲は限定されないことも理解される。
【0135】
たとえば「A、B、またはCの少なくとも1つ」、「A、B、またはCの1または複数」、「A、B、およびCの少なくとも1つ」、「A、B、およびCの1または複数」、および「A、B、C、またはそれらの任意の組み合わせ」など、本明細書で説明される組み合わせは、A、B、および/またはCの任意の組み合わせを含み、複数のA、複数のB、または複数のCを含んでよい。具体的には、たとえば「A、B、またはCの少なくとも1つ」、「A、B、またはCの1または複数」、「A、B、およびCの少なくとも1つ」、「A、B、およびCの1または複数」、および「A、B、C、またはそれらの任意の組み合わせ」などの組み合わせは、Aのみ、Bのみ、Cのみ、AおよびB、AおよびC、BおよびC、またはAおよびBおよびCであってよく、そのような任意の組み合わせは、その構成要素であるA、B、および/またはCの1または複数の要素を含んでよい。たとえば、AおよびBの組み合わせは、1つのAおよび複数のB、複数のAおよび1つのB、または複数のAおよび複数のBを備えてよい。
図1
図2
図3
図4A
図4B
図5
図6