(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-21
(45)【発行日】2022-01-18
(54)【発明の名称】一致するコンテンツを特定するためのシステムおよび方法
(51)【国際特許分類】
G06F 16/483 20190101AFI20220111BHJP
G06F 16/908 20190101ALI20220111BHJP
H04N 21/24 20110101ALI20220111BHJP
H04N 21/835 20110101ALI20220111BHJP
G06F 21/10 20130101ALI20220111BHJP
G06F 21/16 20130101ALI20220111BHJP
【FI】
G06F16/483
G06F16/908
H04N21/24
H04N21/835
G06F21/10
G06F21/16
(21)【出願番号】P 2019519956
(86)(22)【出願日】2016-10-20
(86)【国際出願番号】 US2016057979
(87)【国際公開番号】W WO2018004719
(87)【国際公開日】2018-01-04
【審査請求日】2019-08-07
(32)【優先日】2016-06-27
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2016-10-11
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2016-10-11
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2016-10-11
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】508178054
【氏名又は名称】メタ プラットフォームズ, インク.
(74)【代理人】
【識別番号】110002974
【氏名又は名称】特許業務法人World IP
(72)【発明者】
【氏名】ビロブロフ、セルジー
(72)【発明者】
【氏名】アンバー、エラン
【審査官】三橋 竜太郎
(56)【参考文献】
【文献】特開2011-243204(JP,A)
【文献】特表2014-519759(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06Q 10/00-99/00
H04N 7/1-21/858
G06F 21/10-21/88
(57)【特許請求の範囲】
【請求項1】
コンピューティング・システムが、テスト・コンテンツ・アイテムの1以上の第1フィンガープリントおよび参照コンテンツ・アイテムの1以上の第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの少なくとも1つの部分を前記参照コンテンツ・アイテムの少なくとも1つの部分に対して評価する工程であって、前記第1フィンガープリントは第1タイプのメディアに対応する、工程と、
前記コンピューティング・システムが、少なくとも1つの検証基準が満たされていると決定する工程と、
前記コンピューティング・システムが、前記テスト・コンテンツ・アイテムの1以上の第2フィンガープリントおよび前記参照コンテンツ・アイテムの1以上の第2フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程であって、前記第2フィンガープリントは、前記第1タイプのメディアとは異なる第2タイプのメディアに対応する、工程と、
を含む、
テスト・コンテンツ・アイテムを特定するためのコンピュータ実装方法。
【請求項2】
前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程は、
前記コンピューティング・システムが、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分に対応する前記1以上の第2フィンガープリントを取得する工程と、
前記コンピューティング・システムが、前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対応する前記1以上の第2フィンガープリントを取得する工程と、
前記コンピューティング・システムが、前記テスト・コンテンツ・アイテムの前記第2フィンガープリントおよび前記参照コンテンツ・アイテムの前記第2フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致すると決定する工程と、
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
少なくとも1つの検証基準が満たされていると決定する工程は、
前記コンピューティング・システムが、前記テスト・コンテンツ・アイテムの前記第1フィンガープリントおよび前記参照コンテンツ・アイテムの前記第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致していないと決定する工程
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
少なくとも1つの検証基準が満たされていると決定する工程は、
前記コンピューティング・システムが、前記テスト・コンテンツ・アイテムの前記第1フィンガープリントおよび前記参照コンテンツ・アイテムの前記第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致すると決定する工程
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
少なくとも1つの検証基準が満たされていると決定する工程は、
前記コンピューティング・システムが、閾値期間中、前記テスト・コンテンツ・アイテムと前記参照コンテンツ・アイテムとの間に一致がないと決定されたと決定する工程
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
少なくとも1つの検証基準が満たされていると決定する工程は、
前記コンピューティング・システムが、閾値数のフレームについて、前記テスト・コンテンツ・アイテムと前記参照コンテンツ・アイテムとの間に一致がないと決定されたと決定する工程
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記第1フィンガープリントおよび前記第2フィンガープリントは、音声フィンガープリント、映像フィンガープリント、およびサムネイル・フィンガープリントのうちの1つに対応する、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記第1フィンガープリントは音声フィンガープリントに対応し、前記第2フィンガープリントは映像フィンガープリントに対応する、請求項1に記載のコンピュータ実装方法。
【請求項9】
前記第1フィンガープリントはサムネイル・フィンガープリントに対応し、前記第2フィンガープリントは映像フィンガープリントに対応する、請求項1に記載のコンピュータ実装方法。
【請求項10】
前記コンピューティング・システムが、前記テスト・コンテンツ・アイテムの1以上の第3フィンガープリントおよび前記参照コンテンツ・アイテムの1以上の第3フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程をさらに含み、前記第3フィンガープリントは、前記第1タイプのメディアおよび前記第2タイプのメディアとは異なる第3タイプのメディアに対応する、
請求項1に記載のコンピュータ実装方法。
【請求項11】
少なくとも1つのプロセッサと、
命令を記憶するメモリと、を備える
テスト・コンテンツ・アイテムを特定するためのシステムであって、
前記命令が前記少なくとも1つのプロセッサによって実行されたときに、前記システムに、
テスト・コンテンツ・アイテムの1以上の第1フィンガープリントおよび参照コンテンツ・アイテムの1以上の第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの少なくとも1つの部分を前記参照コンテンツ・アイテムの少なくとも1つの部分に対して評価する工程であって、前記第1フィンガープリントは第1タイプのメディアに対応する、工程と、
少なくとも1つの検証基準が満たされていると決定する工程と、
前記テスト・コンテンツ・アイテムの1以上の第2フィンガープリントおよび前記参照コンテンツ・アイテムの1以上の第2フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程であって、前記第2フィンガープリントは、前記第1タイプのメディアとは異なる第2タイプのメディアに対応する、工程と、
を行わせる、システム。
【請求項12】
前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程は、前記システムに、
前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分に対応する前記1以上の第2フィンガープリントを取得する工程と、
前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対応する前記1以上の第2フィンガープリントを取得する工程と、
前記テスト・コンテンツ・アイテムの前記第2フィンガープリントおよび前記参照コンテンツ・アイテムの前記第2フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致すると決定する工程と、
をさらに行わせる、請求項11に記載のシステム。
【請求項13】
少なくとも1つの検証基準が満たされていると決定する工程は、前記システムに、
前記テスト・コンテンツ・アイテムの前記第1フィンガープリントおよび前記参照コンテンツ・アイテムの前記第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致していないと決定する工程
をさらに行わせる、請求項12に記載のシステム。
【請求項14】
前記命令は、前記システムに、
一致に関する少なくとも1つの通知を受信したにも関わらず、第2ライブ・コンテンツ・ストリームの放送者が前記第2ライブ・コンテンツ・ストリームを提供し続けていると決定する工程と、
前記テスト・コンテンツ・アイテムの前記第1フィンガープリントおよび前記参照コンテンツ・アイテムの前記第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致していると決定する工程と、
をさらに行わせる、請求項11に記載のシステム。
【請求項15】
前記命令は、前記システムに、
第1ライブ・コンテンツ・ストリームのパブリッシャに少なくとも1つの通知を提供する工程
をさらに行わせ、当該少なくとも1つの通知を提供する工程は、
閾値期間中、前記テスト・コンテンツ・アイテムと前記参照コンテンツ・アイテムとの間に一致がないと決定されたと決定する工程
をさらに行わせる、請求項14に記載のシステム。
【請求項16】
コンピューティング・システムの少なくとも1つのプロセッサによって実行されたときに、前記コンピューティング・システムに、
テスト・コンテンツ・アイテムの1以上の第1フィンガープリントおよび参照コンテンツ・アイテムの1以上の第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの少なくとも1つの部分を前記参照コンテンツ・アイテムの少なくとも1つの部分に対して評価する工程であって、前記第1フィンガープリントは第1タイプのメディアに対応する、工程と、
少なくとも1つの検証基準が満たされていると決定する工程と、
前記テスト・コンテンツ・アイテムの1以上の第2フィンガープリントおよび前記参照コンテンツ・アイテムの1以上の第2フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程であって、前記第2フィンガープリントは、前記第1タイプのメディアとは異なる第2タイプのメディアに対応する、工程と、
を含む方法を行わせる命令を含む、
テスト・コンテンツ・アイテムを特定するための非一時的コンピュータ可読記憶媒体。
【請求項17】
前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程は、前記コンピューティング・システムに、
前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分に対応する前記1以上の第2フィンガープリントを取得する工程と、
前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対応する前記1以上の第2フィンガープリントを取得する工程と、
前記テスト・コンテンツ・アイテムの前記第2フィンガープリントおよび前記参照コンテンツ・アイテムの前記第2フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致すると決定する工程と、
をさらに行わせる、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
少なくとも1つの検証基準が満たされていると決定する工程は、
前記テスト・コンテンツ・アイテムの前記第1フィンガープリントおよび前記参照コンテンツ・アイテムの前記第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致していないと決定する工程
をさらに行う、請求項17に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
少なくとも1つの検証基準が満たされていると決定する工程は、
前記テスト・コンテンツ・アイテムの前記第1フィンガープリントおよび前記参照コンテンツ・アイテムの前記第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致していると決定する工程
をさらに行う、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
少なくとも1つの検証基準が満たされていると決定する工程は、前記コンピューティング・システムに、
閾値期間中、前記テスト・コンテンツ・アイテムと前記参照コンテンツ・アイテムとの間に一致がないと決定されたと決定する工程
をさらに行わせる、請求項19に記載の非一時的コンピュータ可読記憶媒体。
【請求項21】
コンピューティング・システムが、テスト・コンテンツ・アイテムの1以上の第1フィンガープリントおよび参照コンテンツ・アイテムの1以上の第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの少なくとも1つの部分を前記参照コンテンツ・アイテムの少なくとも1つの部分に対して評価する工程であって、前記第1フィンガープリントは第1タイプのメディアに対応する、工程と、
前記コンピューティング・システムが、少なくとも1つの検証基準が満たされていると決定する工程と、
前記コンピューティング・システムが、前記テスト・コンテンツ・アイテムの1以上の第2フィンガープリントおよび前記参照コンテンツ・アイテムの1以上の第2フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程であって、前記第2フィンガープリントは、前記第1タイプのメディアとは異なる第2タイプのメディアに対応する、工程と、
を含む、
テスト・コンテンツ・アイテムを特定するためのコンピュータ実装方法。
【請求項22】
前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程は、
前記コンピューティング・システムが、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分に対応する前記1以上の第2フィンガープリントを取得する工程と、
前記コンピューティング・システムが、前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対応する前記1以上の第2フィンガープリントを取得する工程と、
前記コンピューティング・システムが、前記テスト・コンテンツ・アイテムの前記第2フィンガープリントおよび前記参照コンテンツ・アイテムの前記第2フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致すると決定する工程と、
をさらに含む、請求項21に記載のコンピュータ実装方法。
【請求項23】
少なくとも1つの検証基準が満たされていると決定する工程は、
前記コンピューティング・システムが、前記テスト・コンテンツ・アイテムの前記第1フィンガープリントおよび前記参照コンテンツ・アイテムの前記第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致していないと決定する工程、および/または、
前記コンピューティング・システムが、前記テスト・コンテンツ・アイテムの前記第1フィンガープリントおよび前記参照コンテンツ・アイテムの前記第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致すると決定する工程、および/または、
前記コンピューティング・システムが、閾値期間中、前記テスト・コンテンツ・アイテムと前記参照コンテンツ・アイテムとの間に一致がないと決定されたと決定する工程、および/または、
前記コンピューティング・システムが、閾値数のフレームについて、前記テスト・コンテンツ・アイテムと前記参照コンテンツ・アイテムとの間に一致がないと決定されたと決定する工程、
をさらに含む、請求項21または22に記載のコンピュータ実装方法。
【請求項24】
前記第1フィンガープリントおよび前記第2フィンガープリントは、音声フィンガープリント、映像フィンガープリント、および、サムネイル・フィンガープリントのうちの1つに対応する、請求項21~23のいずれか一項に記載のコンピュータ実装方法。
【請求項25】
前記第1フィンガープリントは音声フィンガープリントに対応し、前記第2フィンガープリントは映像フィンガープリントに対応する、請求項21~24のいずれか一項に記載のコンピュータ実装方法。
【請求項26】
前記第1フィンガープリントはサムネイル・フィンガープリントに対応し、前記第2フィンガープリントは映像フィンガープリントに対応する、請求項21~25のいずれか一項に記載のコンピュータ実装方法。
【請求項27】
前記コンピューティング・システムが、前記テスト・コンテンツ・アイテムの1以上の第3フィンガープリントおよび前記参照コンテンツ・アイテムの1以上の第3フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程をさらに含み、前記第3フィンガープリントは、前記第1タイプのメディアおよび前記第2タイプのメディアとは異なる第3タイプのメディアに対応する、
請求項21~26のいずれか一項に記載のコンピュータ実装方法。
【請求項28】
ユーザ・デバイスが
前記第1フィンガープリントのうちの1以上を生成して送信するように命令され、前記方法は、
前記1以上の第1タイプのフィンガープリントを使用して少なくとも1つの検証基準が満たされている場合、追加のタイプのフィンガープリントを使用して
、一致したコンテンツ・アイテムをさらに検証するために、提供されるコンテンツ・アイテムについて1以上の第2タイプのフィンガープリントの生成および送信を命令する工程
をさらに含む、請求項22または23に記載のコンピュータ実装方法。
【請求項29】
前記第1タイプが音声であり、前記第2タイプが映像であり、音声フィンガープリントおよび映像フィンガープリントは所定のフレーム・レートで生成される、請求項21~28のいずれか一項に記載のコンピュータ実装方法。
【請求項30】
少なくとも1つのプロセッサと、
命令を記憶するメモリとを備える
、テスト・コンテンツ・アイテムを特定するためのシステムであって、前記命令は、前記少なくとも1つのプロセッサによって実行されたときに、前記システムに、
テスト・コンテンツ・アイテムの1以上の第1フィンガープリントおよび参照コンテンツ・アイテムの1以上の第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの少なくとも1つの部分を前記参照コンテンツ・アイテムの少なくとも1つの部分に対して評価する工程であって、前記第1フィンガープリントは第1タイプのメディアに対応する、工程と、
少なくとも1つの検証基準が満たされていると決定する工程と、
前記テスト・コンテンツ・アイテムの1以上の第2フィンガープリントおよび前記参照コンテンツ・アイテムの1以上の第2フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程であって、前記第2フィンガープリントは、前記第1タイプのメディアとは異なる第2タイプのメディアに対応する、工程と、
を行わせる
、システム。
【請求項31】
前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程は、前記システムに、
前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分に対応する前記1以上の第2フィンガープリントを取得する工程と、
前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対応する前記1以上の第2フィンガープリントを取得する工程と、
前記テスト・コンテンツ・アイテムの前記第2フィンガープリントおよび前記参照コンテンツ・アイテムの前記第2フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致すると決定する工程と、
をさらに行わせ、
好ましくは、少なくとも1つの検証基準が満たされていると決定する工程は、前記システムに、
前記テスト・コンテンツ・アイテムの前記第1フィンガープリントおよび前記参照コンテンツ・アイテムの前記第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致していないと決定する工程
をさらに行わせる、請求項30に記載のシステム。
【請求項32】
前記命令は、前記システムに、
一致に関する少なくとも1つの通知を受信したにも関わらず、第2ライブ・コンテンツ・ストリームの放送者が前記第2ライブ・コンテンツ・ストリームを提供し続けていると決定する工程と、
前記テスト・コンテンツ・アイテムの前記第1フィンガープリントおよび前記参照コンテンツ・アイテムの前記第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致していると決定する工程と、をさらに行わせ、
好ましくは、前記命令は、前記システムに、
第1ライブ・コンテンツ・ストリームのパブリッシャに少なくとも1つの通知を提供する工程
をさらに行わせ、当該少なくとも1つの通知を提供する工程は、前記システムに、
閾値期間中、前記テスト・コンテンツ・アイテムと前記参照コンテンツ・アイテムとの間に一致がないと決定されたと決定する工程
をさらに行わせる、請求項30または31に記載のシステム。
【請求項33】
コンピューティング・システムの少なくとも1つのプロセッサによって実行されたときに、前記コンピューティング・システムに、
テスト・コンテンツ・アイテムの1以上の第1フィンガープリントおよび参照コンテンツ・アイテムの1以上の第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの少なくとも1つの部分を前記参照コンテンツ・アイテムの少なくとも1つの部分に対して評価する工程であって、前記第1フィンガープリントは第1タイプのメディアに対応する、工程と、
少なくとも1つの検証基準が満たされていると決定する工程と、
前記テスト・コンテンツ・アイテムの1以上の第2フィンガープリントおよび前記参照コンテンツ・アイテムの1以上の第2フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程であって、前記第2フィンガープリントは、前記第1タイプのメディアとは異なる第2タイプのメディアに対応する、工程と、
を含む方法を行わせる命令を含む、
テスト・コンテンツ・アイテムを特定するための非一時的コンピュータ可読記憶媒体。
【請求項34】
前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分を前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対して評価する工程は、前記コンピューティング・システムに、
前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分に対応する前記1以上の第2フィンガープリントを取得する工程と、
前記参照コンテンツ・アイテムの前記少なくとも1つの部分に対応する前記1以上の第2フィンガープリントを取得する工程と、
前記テスト・コンテンツ・アイテムの前記第2フィンガープリントおよび前記参照コンテンツ・アイテムの前記第2フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致すると決定する工程と、をさらに行わせ、
好ましくは、少なくとも1つの検証基準が満たされていると決定する工程は、
前記テスト・コンテンツ・アイテムの前記第1フィンガープリントおよび前記参照コンテンツ・アイテムの前記第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致していないと決定する工程、をさらに行い、
好ましくは、少なくとも1つの検証基準が満たされていると決定する工程は、
前記テスト・コンテンツ・アイテムの前記第1フィンガープリントおよび前記参照コンテンツ・アイテムの前記第1フィンガープリントを使用して、前記テスト・コンテンツ・アイテムの前記少なくとも1つの部分が前記参照コンテンツ・アイテムの前記少なくとも1つの部分に一致していると決定する工程、をさらに行い、
好ましくは、少なくとも1つの検証基準が満たされていると決定する工程は、前記コンピューティング・システムに、
閾値期間中、前記テスト・コンテンツ・アイテムと前記参照コンテンツ・アイテムとの間に一致がないと決定されたと決定する工程、をさらに行わせる、
請求項33に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、コンテンツの照合の分野に関わる。より具体的には、本技術は、一致するコンテンツ・アイテムを特定するための手法に関わる。
【背景技術】
【0002】
現在、人々は、多様な目的のためにコンピューティング・デバイス(またはシステム)をしばしば利用する。ユーザは、自らのコンピューティング・デバイスを使用して、たとえば、互いに相互作用し、コンテンツにアクセスし、コンテンツを共有し、コンテンツを作成することができる。場合により、コンテンツ・アイテムは、ソーシャル・ネットワークのメンバーからの投稿を含むことができる。投稿は、テキスト、ならびに画像、映像および音声等のメディア・コンテンツ・アイテムを含むことができる。投稿は、他者による利用のためにソーシャル・ネットワークに公開されてもよい。
【図面の簡単な説明】
【0003】
【
図1】本開示の一実施形態に係る、さまざまなコンテンツ・アイテムへのアクセスを提供するように構成される例示的なコンテンツ・プロバイダ・モジュールを含む例示的なシステムを示す図。
【
図2】本開示の一実施形態に係る、コンテンツ照合モジュールの一実施例を示す図。
【
図3】本開示の一実施形態に係る、フィンガープリンティング・モジュールの一実施例を示す図。
【
図4】本開示の一実施形態に係る、記憶モジュールの一実施例を示す図。
【
図5】本開示の一実施形態に係る、照合モジュールの一実施例を示す図。
【
図6】本開示の一実施形態に係る、フレームから特徴値を抽出するための例示的なアプローチを示す図。
【
図7】本開示の一実施形態に係る、フィンガープリント・データを記憶して検索するための例示的な転置インデックスを示す図。
【
図8A】本開示の一実施形態に係る、コンテンツ・アイテム間で一致するコンテンツを特定するための例示的なアプローチを示す図。
【
図8B】本開示の一実施形態に係る、コンテンツ・アイテム間で一致するコンテンツを特定するための例示的なアプローチを示す図。
【
図9A】本開示の一実施形態に係る、ライブ・コンテンツ・ストリームを処理するための例示的なアプローチを示す図。
【
図9B】本開示の一実施形態に係る、ライブ・コンテンツ・ストリームを処理するための例示的なアプローチを示す図。
【
図9C】本開示の一実施形態に係る、ライブ・コンテンツ・ストリームを処理するための例示的なアプローチを示す図。
【
図10】本開示の種々実施形態に係る、コンテンツのフィンガープリントを作成するための例示的なプロセスを示す図。
【
図11】本開示の種々実施形態に係る、異なるタイプのフィンガープリントを使用してコンテンツを照合するための例示的なプロセスを示す図。
【
図12】本開示の種々実施形態に係る、歪みフィンガープリントを使用してコンテンツを照合するための例示的なプロセスを示す図。
【
図13】本開示の一実施形態に係る、さまざまなシナリオで利用することのできる例示的なソーシャル・ネットワーキング・システムを含む例示的なシステムのネットワーク図。
【
図14】本開示の一実施形態に係る、さまざまなシナリオで利用することのできるコンピュータ・システムまたはコンピューティング・デバイスの一実施例を示す図。
【発明を実施するための形態】
【0004】
本開示の種々実施形態は、複数の映像フレームを有するテスト・コンテンツ・アイテムを取得し、テスト・コンテンツ・アイテムに対応する1組の映像フレームに基づいて少なくとも1つの映像フィンガープリントを生成し、映像フィンガープリントの少なくとも一部分を使用して少なくとも1つの参照コンテンツ・アイテムを決定し、テスト・コンテンツ・アイテムの映像フィンガープリントおよび参照コンテンツ・アイテムの1つまたは複数の映像フィンガープリントに少なくとも部分的に基づいて、参照コンテンツ・アイテムの少なくとも1つの部分に一致するテスト・コンテンツ・アイテムの少なくとも1つの部分を決定するように構成されているシステム、方法および非一時的コンピュータ可読媒体を含むことができる。
【0005】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、1組の映像フレーム内の各映像フレームについて、映像フレームを記述する1組の特徴値を含む特徴ベクトルをそれぞれ生成し、1組の映像フレームについての特徴ベクトルを周波数ドメインに変換し、映像フレームのうちの1つまたは複数に対応する1組の周波数成分を量子化することによって各映像フレームについてそれぞれ1組のビットを生成するように構成されている。
【0006】
一実施形態において、映像フレームの特徴ベクトルに含まれる特徴値は、少なくとも、映像フレームについての測定明るさ、映像フレームについての測定配色、および映像フレーム内の画素の1つまたは複数のグループ間の測定変化に対応する。
【0007】
一実施形態において、映像フレームについての特徴ベクトルは、高速フーリエ変換(FFT)、離散コサイン変換(DCT)、またはその両方を適用することによって、周波数ドメインに変換される。
【0008】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、周波数ドメインで映像フレームを補間するように構成されており、補間は、映像フィンガープリントを所定のフレーム・レートに一致させる。
【0009】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、映像フィンガープリントがそこから生成された1組のフレーム内の第1フレームに対応する1組のビットを取得し、1組のビットの第1部分に少なくとも部分的に基づいて少なくとも1つの候補フレームを特定し、候補フレームに基づいて参照コンテンツ・アイテムを決定するように構成されている。
【0010】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、1組のビットの第1部分を転置インデックスのビンにハッシュ化するように構成されており、ビンは、少なくとも1つの候補フレームを記述する情報を参照する。
【0011】
一実施形態において、候補フレームを記述する情報は、参照コンテンツ・アイテムと、参照コンテンツ・アイテム内の候補フレームの位置を特定するオフセットとを特定する。
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、映像フィンガープリントがそこから生成された1組のフレーム内の少なくとも1つの第1フレームに対応する1組のビットを取得し、1組のビットの第1部分に少なくとも部分的に基づいて少なくとも1つの候補フレームを特定し、第1フレームに対応する1組のビットと候補フレームに対応する1組のビットとのハミング距離が閾値を満たしていると決定するように構成されている。
【0012】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、映像フィンガープリントがそこから生成された1組のフレーム内の少なくとも1つの第2フレームに対応する1組のビットを取得し、参照コンテンツ・アイテム内の新たなフレームに対応する1組のビットを決定し、第2フレームに対応する1組のビットと新たなフレームに対応する1組のビットとのハミング距離が閾値を満たしていると決定するように構成されている。
【0013】
本開示の種々実施形態は、テスト・コンテンツ・アイテムの1つまたは複数の第1フィンガープリントおよび参照コンテンツ・アイテムの1つまたは複数の第1フィンガープリントを使用して、テスト・コンテンツ・アイテムの少なくとも1つの部分を参照コンテンツ・アイテムの少なくとも1つの部分に対して評価するように構成されているシステム、方法および非一時的コンピュータ可読媒体を含むことができ、第1フィンガープリントは第1タイプのメディアに対応し、少なくとも1つの検証基準が満たされていると決定し、テスト・コンテンツ・アイテムの1つまたは複数の第2フィンガープリントおよび参照コンテンツ・アイテムの1つまたは複数の第2フィンガープリントを使用して、テスト・コンテンツの部分を参照コンテンツの部分に対して評価し、第2フィンガープリントは、第1タイプのメディアとは異なる第2タイプのメディアに対応する。
【0014】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、テスト・コンテンツ・アイテムの部分に対応する1つまたは複数の第2フィンガープリントを取得し、参照コンテンツ・アイテムの部分に対応する1つまたは複数の第2フィンガープリントを取得し、テスト・コンテンツ・アイテムの第2フィンガープリントおよび参照コンテンツ・アイテムの第2フィンガープリントを使用して、テスト・コンテンツ・アイテムの部分が参照コンテンツ・アイテムの部分に一致していると決定するように構成されている。
【0015】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、テスト・コンテンツ・アイテムの第1フィンガープリントおよび参照コンテンツ・アイテムの第1フィンガープリントを使用して、テスト・コンテンツ・アイテムの部分が参照コンテンツ・アイテムの部分に一致していないと決定するように構成されている。
【0016】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、テスト・コンテンツ・アイテムの第1フィンガープリントおよび参照コンテンツ・アイテムの第1フィンガープリントを使用して、テスト・コンテンツ・アイテムの部分が参照コンテンツ・アイテムの部分に一致していると決定するように構成されている。
【0017】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、閾値期間中、テスト・コンテンツ・アイテムと参照コンテンツ・アイテムとの間に一致がないと決定されたと決定するように構成されている。
【0018】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、閾値数のフレームについて、テスト・コンテンツ・アイテムと参照コンテンツ・アイテムとの間に一致がないと決定されたと決定するように構成されている。
【0019】
一実施形態において、第1フィンガープリントおよび第2フィンガープリントは、音声フィンガープリント、映像フィンガープリント、およびサムネイル・フィンガープリントのうちの1つに対応する。
【0020】
一実施形態において、第1フィンガープリントは音声フィンガープリントに対応し、第2フィンガープリントは映像フィンガープリントに対応する。
一実施形態において、第1フィンガープリントはサムネイル・フィンガープリントに対応し、第2フィンガープリントは映像フィンガープリントに対応する。
【0021】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、テスト・コンテンツ・アイテムの1つまたは複数の第3フィンガープリントおよび参照コンテンツ・アイテムの1つまたは複数の第3フィンガープリントを使用して、テスト・コンテンツの部分を参照コンテンツの部分に対して評価するように構成されており、第3フィンガープリントは、第1タイプのメディアおよび第2タイプのメディアとは異なる第3タイプのメディアに対応する。
【0022】
一実施形態において、ユーザ・デバイスが第1フィンガープリントのうちの1つまたは複数を生成して送信するように命令されるシステム、方法および非一時的コンピュータ可読媒体は、1つまたは複数の第1タイプのフィンガープリントを使用して少なくとも1つの検証基準が満たされている場合、追加のタイプのフィンガープリントを使用して、一致したコンテンツをさらに検証するために、提供されるコンテンツ・アイテムについて1つまたは複数の第2タイプのフィンガープリントの生成および送信を命令することを含むように構成されている。
【0023】
一実施形態において、第1タイプが音声であり、第2タイプが映像であるシステム、方法および非一時的コンピュータ可読媒体は、所定のフレーム・レートで音声フィンガープリントおよび映像フィンガープリントを生成する。
【0024】
本開示の種々実施形態は、テスト・コンテンツ・アイテムに対応する1組のフレームに基づいて少なくとも1つのフィンガープリントを生成し、フィンガープリントの少なくとも一部分を使用して1組の歪みフィンガープリントを生成し、1組の歪みフィンガープリントを使用して1つまたは複数の参照コンテンツ・アイテムを決定するように構成されており、テスト・コンテンツ・アイテムは、一致するコンテンツを特定するために少なくとも1つの参照コンテンツ・アイテムに対して評価される、システム、方法および非一時的コンピュータ可読媒体を含むことができる。
【0025】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、フィンガープリントがそこから生成された1組のフレーム内の第1フレームに対応する1組のビットを取得し、1組のビットの少なくとも一部分について、1組のバイナリ文字列の順列を生成するように構成されている。
【0026】
一実施形態において、各バイナリ文字列において1つまたは複数のビットが置換される。
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、1組のビットの部分について、各バイナリ文字列において1つのビットが置換される第1組のバイナリ文字列の順列を生成し、第1組のバイナリ文字列の順列を使用して参照コンテンツ・アイテムが特定されなかったと決定し、1組のビットの部分について、各バイナリ文字列において複数のビットが置換される第2組のバイナリ文字列の順列を生成するように構成されている。
【0027】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、第1歪みフィンガープリントに対応する1組のビットを取得し、1組のビットの一部分に少なくとも部分的に基づいて、少なくとも1つの候補フレームを特定し、候補フレームに基づいて少なくとも1つの参照コンテンツ・アイテムを決定するように構成されている。
【0028】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、1組のビットの部分を転置インデックスのビンにハッシュ化するように構成されており、ビンは、少なくとも1つの候補フレームおよび参照コンテンツ・アイテムを記述する情報を参照する。
【0029】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、1組の歪みフィンガープリントを使用して参照コンテンツ・アイテムを特定することで、コンピューティング・システムの中央処理装置(CPU)の負荷が閾値負荷を超えることはないと決定するように構成されている。
【0030】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、少なくとも1つのフィンガープリントを使用して参照コンテンツ・アイテムが特定されなかったと決定するように構成されている。
【0031】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、少なくとも1つのフィンガープリントを使用して少なくとも1つの参照コンテンツ・アイテムを決定し、テスト・コンテンツ・アイテムと参照コンテンツ・アイテムとの間に一致が特定されなかったと決定するように構成されている。
【0032】
一実施形態において、システム、方法および非一時的コンピュータ可読媒体は、少なくとも1つのフィンガープリントを使用して少なくとも1つの参照コンテンツ・アイテムを決定し、テスト・コンテンツ・アイテムと参照コンテンツ・アイテムとの間の一致が閾値一致度距離内であると決定するように構成されている。
【0033】
開示される技術の他の多くの特徴、アプリケーション、実施形態、および/または変型は添付の図面および以下の詳細な説明から明らかになることは理解されるべきである。本明細書で説明する構造、システム、非一時的コンピュータ可読媒体および方法の追加の実施態様および/または代替実施態様を、開示される技術の原理から逸脱することなく採用することができる。
【0034】
本発明による実施形態は、方法、記憶媒体、システムおよびコンピュータ・プログラム製品に向けられた添付の特許請求の範囲に特に開示されており、ある請求項のカテゴリ、たとえば方法、で述べられる特徴は、別の請求項のカテゴリ、たとえばシステム、でも同様に請求できる。添付の特許請求の範囲における従属性または後方参照は、形式上の理由で選ばれているにすぎない。しかし、任意の前の請求項への意図的な後方参照(特に多項従属)の結果として生じる主題も同様に請求することができるので、請求項およびその特徴の任意の組み合わせが開示され、添付の特許請求の範囲で選ばれた従属性に関係なく請求することができる。請求することのできる主題は、添付の特許請求の範囲に記載される特徴の組み合わせだけでなく、特許請求の範囲の特徴の任意の他の組み合わせも含み、特許請求の範囲で述べられる各特徴は、特許請求の範囲の任意の他の特徴または他の特徴の組み合わせと組み合わせることができる。さらに、本明細書において説明または描写される実施形態および特徴のいずれも、個別の請求項で、および/または本明細書において説明もしくは描写される任意の実施形態もしくは特徴と、もしくは添付の特許請求の範囲の特徴のいずれかと組み合わせて請求することができる。
【0035】
図面は、説明のみを目的として、開示される技術の種々実施形態を示しており、図面は、同様な要素の識別には同様な参照符号を使用している。以下の考察から、当業者には、本明細書で説明される開示技術の原理から逸脱することなく、図面に図示される構造および方法の代替実施形態を採用可能であることは容易に認識されよう。
【0036】
一致するコンテンツを特定するためのアプローチ
現在、人々は、多様な目的のためにコンピューティング・デバイス(またはシステム)をしばしば利用する。ユーザは、自らのコンピューティング・デバイスを使用して、たとえば、互いに相互作用し、コンテンツにアクセスし、コンテンツを共有し、コンテンツを作成することができる。場合により、コンテンツ・アイテムは、ソーシャル・ネットワークのメンバーからの投稿を含むことができる。投稿は、テキスト、ならびに画像、映像および音声等のメディア・コンテンツ・アイテムを含むことができる。投稿は、他者による利用のためにソーシャル・ネットワークに公開されてもよい。
【0037】
従来のアプローチにおいては、コンテンツは、コンテンツ・プロバイダ経由で放送されてもよい。たとえば、該コンテンツ・プロバイダは、種々の放送媒体(たとえば、テレビ、衛星放送、インターネット等)経由でコンテンツを放送してもよい。一実施例において、放送は、パブリッシャによってキャプチャおよびライブ・ストリーミングされているコンテンツを含むことができる。たとえば、パブリッシャは、ライブ・コンテンツ・ストリームの一部として放送されるコンテンツ(たとえば、ライブ・コンサート、テレビ番組の初回放送等)を提供することができる。そうしたイベントは、たとえば、ビデオ・キャプチャ・デバイス(たとえば、ビデオ・カメラ)および/またはオーディオ・キャプチャ・デバイス(たとえば、マイクロフォン)を使用してキャプチャすることができる。このようにキャプチャされたコンテンツは、さらに、コンテンツ・プロバイダ(たとえば、ソーシャル・ネットワーキング・システム)によって、符号化されて、ネットワーク(たとえば、インターネット)上でリアルタイムでユーザ・デバイスに配信されることができる。場合によっては、未許可のエンティティが、パブリッシャのライブ・コンテンツ・ストリームの複製をキャプチャして、複製されたコンテンツを、コンテンツ・プロバイダ経由で個別のライブ・コンテンツ・ストリームの一部としてストリーミングすることがある。たとえば、このエンティティは、コンテンツがテレビのディスプレイに提示されているときに、パブリッシャのライブ・コンテンツ・ストリームを録画することがある。別の実施例では、無許可のエンティティが、異なるメディア(例、衛星等)経由で放送されているイベントのストリームをキャプチャし、キャプチャしたストリームをコンテンツ・プロバイダ経由で発信することがある。
【0038】
従来のアプローチにおいては、こうした無許可のライブ・コンテンツ・ストリームを検出することは時に難しく、この難しさは、ライブ・コンテンツ・ストリームが著作権保護コンテンツを含む場合に特に問題となる可能性がある。たとえば、従来のアプローチでは、コンテンツ・プロバイダは、通例、コンテンツ・アイテムがコンテンツ・プロバイダに全部アップロードされた後に、コンテンツ・アイテムが著作権保護コンテンツ・アイテムを侵害しているかどうかをチェックするであろう。コンテンツ・プロバイダは、次いで、アップロードされたコンテンツ・アイテムを著作権保護コンテンツ・アイテムに対して分析して、いずれかの部分が一致するかどうかを特定するであろう。このようなアプローチは、オンデマンドで供給されるコンテンツ・アイテムの著作権侵害を検出するには十分であるかもしれないが、一般に、ライブ・ストリーミングされているコンテンツ・アイテムの著作権侵害の検出には不十分である。したがって、このような従来のアプローチは、コンピュータ技術で生じる以上のような問題および他の問題に対処するには効果的ではないかもしれない。
【0039】
コンピュータ技術に根ざした改良されたアプローチが、コンピュータ技術の分野において特に生じる従来のアプローチに伴う、上述の欠点および他の欠点を克服する。種々実施形態において、パブリッシャは、ライブ・コンテンツ・ストリームの一部としてソーシャル・ネットワーキング・システム経由でストリーミングまたは放送するコンテンツを提供することができる。パブリッシャは、ライブ・コンテンツ・ストリームが著作権保護されていることを示すことができ、この表示に基づいて、ソーシャル・ネットワーキング・システムは、コンテンツがライブ・ストリーミングされているときに、コンテンツのフィンガープリントを生成することができる。これらのフィンガープリントは、参照データベースに記憶することができ、たとえば、他のライブ・コンテンツ・ストリームおよび/またはオンデマンド・コンテンツ・アイテム内の複製コンテンツを特定するために使用することができる。たとえば、パブリッシャのコンテンツがライブ・ストリーミングされているとき、ソーシャル・ネットワーキング・システムは、任意の他のライブ・コンテンツ・ストリームおよび/またはオンデマンド・コンテンツ・アイテムがパブリッシャの著作権保護ライブ・コンテンツ・ストリームの全体または一部のいずれかに一致するかどうかを判別することができる。パブリッシャのライブ・コンテンツ・ストリームに一致するコンテンツ・アイテムの任意の部分は、著作権または他の法的権利の侵害である可能性がある。このような場合、ライブ・コンテンツ・ストリームの無許可の放送者および/またはパブリッシャ(たとえば、著作権保有者)には、著作権侵害の可能性について通知することができ、適切な処置を取ることができる。いくつかの実施形態においては、無許可の放送者が投稿する侵害ライブ・コンテンツ・ストリームおよび/またはオンデマンド・コンテンツ・アイテムは、自動的に、ソーシャル・ネットワーキング・システム経由でアクセス不可にされる。
【0040】
図1は、本開示の一実施形態に係る、さまざまなコンテンツ・アイテムへのアクセスを提供するように構成される例示的なコンテンツ・プロバイダ・モジュール102を含む例示的なシステム100を示している。
図1の実施例に図示されるように、コンテンツ・プロバイダ・モジュール102は、コンテンツ・アップロード・モジュール104、ライブ・ストリーム・モジュール106、コンテンツ・モジュール108、およびコンテンツ照合モジュール110を含むことができる。場合によっては、例示的なシステム100は、少なくとも1つのデータ・ストア112を含むことができる。この図および本明細書のすべての図に図示される構成要素(たとえば、モジュール、要素等)は例示にすぎず、他の実施態様は、追加の構成要素、より少ない構成要素、統合された構成要素、または異なる構成要素を含んでいてもよい。関連する細部が分かり難くならないように、図示していない構成要素もある。
【0041】
いくつかの実施形態において、コンテンツ・プロバイダ・モジュール102は、部分的にまたは全体的に、ソフトウェア、ハードウェアまたはその任意の組み合わせとして実装される。一般に、本明細書で説明されるモジュールは、ソフトウェア、ハードウェアまたはその任意の組み合わせに関連付けることができる。いくつかの実施態様において、モジュールの1つまたは複数の機能、タスクおよび/または動作は、ソフトウェアのルーチン、ソフトウェアのプロセス、ハードウェア、および/またはその任意の組み合わせによって遂行または実装される。場合により、コンテンツ・プロバイダ・モジュール102は、部分的にまたは全体として、ユーザまたはクライアント・コンピューティング・デバイス等、1つまたは複数のコンピューティング・デバイスまたはシステム上で稼働するソフトウェアとして実装される。一実施例において、コンテンツ・プロバイダ・モジュール102または少なくともその一部は、
図13のユーザ・デバイス1310等、ユーザ・コンピューティング・デバイスまたはクライアント・コンピューティング・システム上で稼働するアプリケーション(たとえば、アプリ)、プログラム、またはアプレット等として、またはその内部に実装される。別の実施例では、コンテンツ・プロバイダ・モジュール102または少なくともその一部は、ネットワーク・サーバまたはクラウド・サーバ等の1つまたは複数のサーバを含む1つまたは複数のコンピューティング・デバイスまたはシステムを使用して実装される。場合によっては、コンテンツ・プロバイダ・モジュール102は、部分的にまたは全体として、
図13のソーシャル・ネットワーキング・システム1330等のソーシャル・ネットワーキング・システム(またはサービス)内に実装され、または該システム(またはサービス)と連携して動作するように構成することができる。
【0042】
コンテンツ・プロバイダ・モジュール102は、例示的なシステム100に図示されるように、少なくとも1つのデータ・ストア112と通信する、および/または少なくとも1つのデータ・ストア112と一緒に動作するように構成することができる。少なくとも1つのデータ・ストア112は、さまざまなタイプのデータを記憶して維持するように構成することができる。たとえば、データ・ストア112は、ソーシャル・ネットワーキング・システム経由でライブ・ストリーミングされているさまざまなコンテンツを記述する情報、またはソーシャル・ネットワーキング・システムのユーザによって投稿されたコンテンツ・アイテムを記述する情報を記憶することができる。該情報には、たとえば、ライブ・コンテンツ・ストリームのために、およびオンデマンド・コンテンツ・アイテムのために生成されたフィンガープリント(たとえば、ビット・シーケンス)を含むことができる。いくつかの実施態様において、少なくとも1つのデータ・ストア112は、ソーシャル・ネットワーキング・システム(たとえば、
図13のソーシャル・ネットワーキング・システム1330)に関連付けられている情報を記憶することができる。ソーシャル・ネットワーキング・システムに関連付けられている情報には、ユーザに関するデータ、ソーシャルつながり、ソーシャル対話、位置、ジオフェンス・エリア、地図、場所、イベント、ページ、グループ、投稿、コミュニケーション、コンテンツ、フィード、アカウント設定、プライバシー設定、ソーシャル・グラフ、およびさまざまな他のタイプのデータを含むことができる。いくつかの実施態様において、少なくとも1つのデータ・ストア112は、ユーザ識別子、ユーザ情報、プロフィール情報、ユーザ指定の設定、ユーザが生成または投稿したコンテンツ、および他のタイプのユーザ・データ等、ユーザに関連付けられている情報を記憶することができる。
【0043】
コンテンツ・プロバイダ・モジュール102は、ソーシャル・ネットワーキング・システム経由で投稿されたコンテンツ・アイテムへのアクセスをユーザに提供するように構成することができる。たとえば、ユーザは、ユーザのコンピューティング・デバイス上で稼働するソフトウェア・アプリケーション(たとえば、ソーシャル・ネットワーキング・アプリケーション)によって提供されるインタフェースと相互作用することができる。このインタフェースは、ソーシャル・ネットワーキング・システムにコンテンツ・アイテムを投稿する選択肢、またはアップロードする選択肢を含むことができる。コンテンツ・アイテムを投稿する場合、コンテンツ・アップロード・モジュール104を利用して、コンテンツ・アイテムを記述するデータを、コンピューティング・デバイスからソーシャル・ネットワーキング・システムに通信することができる。該コンテンツ・アイテムは、たとえば、テキスト、画像、音声および映像を含んでいてもよい。そして、ソーシャル・ネットワーキング・システムは、たとえば、1つまたは複数のニュース・フィード内を含め、ソーシャル・ネットワーキング・システム経由でコンテンツ・アイテムを提供することができる。いくつかの実施形態において、インタフェースは、ソーシャル・ネットワーキング・システム経由でコンテンツ・アイテムをライブ・ストリーミングするための選択肢を含むこともできる。ライブ・コンテンツ・ストリームを開始する場合、ライブ・ストリーム・モジュール106を利用して、ライブ・ストリーミングされるコンテンツを記述するデータを、コンピューティング・デバイスからソーシャル・ネットワーキング・システムに通信することができる。ライブ・ストリーム・モジュール106は、たとえば、リアル・タイム・メッセージング・プロトコル(RTMP)を含む、コンテンツのライブ・ストリーミングを可能にする、一般的に公知の任意の技術を利用することができる。
【0044】
ソフトウェア・アプリケーションが提供するインタフェースを使用して、たとえば、コンテンツ・モジュール108を使用して、投稿されたコンテンツ・アイテムにアクセスすることもできる。たとえば、コンテンツ・モジュール108は、ユーザのニュース・フィード内にコンテンツ・アイテムを含むことができる。該コンテンツ・アイテムは、オンデマンドのコンテンツ・アイテム(例、ビデオ・オンデマンドまたは「VOD」)およびライブでストリーミングされているコンテンツを含んでいてもよい。この実施例では、ユーザは、ニュース・フィードをブラウジングしている間に、コンテンツ・アイテムにアクセスすることができる。別の実施例では、ユーザは、インタフェース経由で、コンテンツ・アイテムを検索することにより、コンテンツ・アイテムを投稿したユーザを検索することにより、および/またはコンテンツ・アイテムに対応する検索語を使用して、コンテンツ・アイテムにアクセスすることができる。一実施例において、ユーザは、ライブ・コンテンツ・ストリームを視聴する選択肢を選択してもよく、これに応じて、ソーシャル・ネットワーキング・システムは、ライブ・コンテンツ・ストリームに対応するデータをユーザのコンピューティング・デバイスに送信することができる。この実施例では、ソーシャル・ネットワーキング・システムは、たとえば、ライブ・コンテンツ・ストリームのパブリッシャがストリーミングを中止するときまで、またはユーザがライブ・コンテンツ・ストリームを中止する選択肢を選択する場合まで、ライブ・コンテンツ・ストリームに対応するデータを送信し続けることができる。コンテンツ照合モジュール110は、ソーシャル・ネットワーキング・システム経由でライブでストリーミングされているかまたはオンデマンドで利用できるコンテンツ・アイテム間の一致(例、著作権侵害)を特定するように構成することができる。コンテンツ照合モジュール110に関するさらなる詳細は、
図2を参照して以下に記載する。
【0045】
図2は、本開示の一実施形態に係る、コンテンツ照合モジュール202の一実施例を示す。いくつかの実施形態において、
図1のコンテンツ照合モジュール110をコンテンツ照合モジュール202として実装することができる。
図2に図示するように、コンテンツ照合モジュール202は、フィンガープリンティング・モジュール204、記憶モジュール206、照合モジュール208および通知モジュール210を含むことができる。
【0046】
種々実施形態において、フィンガープリンティング・モジュール204は、コンテンツ・アイテムについてのそれぞれのフィンガープリントを決定または取得するように構成されている。たとえば、ストリームがソーシャル・ネットワーキング・システムによって受信されると、ライブ・コンテンツ・ストリームの1組のフィンガープリントが決定されてもよい。別の実施例では、コンテンツ・アイテムがソーシャル・ネットワーキング・システムにアップロードされた後に、コンテンツ・アイテムについて1組のフィンガープリントを決定することができる。いくつかの実施形態において、コンテンツ・アイテムをライブ・ストリーミングまたはアップロードしているパブリッシャは、コンテンツ・アイテムが保護されている、たとえば、著作権保護されていることを示す選択肢を選択してもよい。このような実施形態では、選択肢が選択されたことに応答して、ライブ・コンテンツ・ストリームまたはアップロードされたコンテンツ・アイテムのフィンガープリントを作成して、たとえば、参照データベース(例、
図1のデータ・ストア112)に記憶することができる。この参照データベースに記憶されたフィンガープリントを使用して、ライブ・ストリームまたはビデオ・オンデマンドのいずれかとして、ソーシャル・ネットワーキング・システム経由で利用できる他のコンテンツ・アイテムが、保護されている、たとえば、著作権保護されていると特定されたコンテンツに一致する(例、抵触する)かどうかを決定することができる。
【0047】
いくつかの実施形態において、フィンガープリンティング・モジュール204は、1つまたは複数の手法を使用してフィンガープリントを判別するようにそれぞれ構成されている1つまたは複数のフィンガープリンティング・サービスから、コンテンツ・アイテムについてのフィンガープリントを取得することができる。該フィンガープリントは、たとえば、コンテンツ・アイテムに対応する映像データ、コンテンツ・アイテムに対応する音声データ、またはその両方を使用して判断してもよい。フィンガープリンティング・モジュール204に関するさらなる詳細は、
図3を参照して以下に記載する。
【0048】
記憶モジュール206は、さまざまなコンテンツ・アイテムに関わる情報の記憶を管理するように構成することができる。種々実施形態において、記憶モジュール206は、コンテンツ・アイテムについて取得または生成されるフィンガープリントの記憶を最適化するように構成される。記憶モジュール206に関するさらなる詳細は、
図4を参照して以下に記載する。
【0049】
種々実施形態において、照合モジュール208は、コンテンツ・アイテム間の関係性の指標を決定するように構成されている。このような指標値を使用して、コンテンツ・アイテム(例、ライブ・コンテンツ・ストリームおよび/またはオンデマンド・コンテンツ・アイテム)が、全体または一部分において、ライブ・コンテンツ・ストリームの任意の部分、最近ライブでストリーミングされたコンテンツの任意の部分、および/またはソーシャル・ネットワーキング・システム経由でオンデマンドで利用できる映像の任意の部分に一致するかどうかを決定することができる。たとえば、照合モジュール208は、保護されたライブ・コンテンツ・ストリームの1つまたは複数の部分(例、フレーム)が候補ライブ・ストリームの1つまたは複数の部分(例、フレーム)に一致すると決定することができる。いくつかの実施形態において、照合モジュール208を利用して、不適切なまたは猥褻なコンテンツを含むとしてフラグを立てられた任意のコンテンツを含むコンテンツ・アイテムを、特定して分別することができる。照合モジュール208に関するさらなる詳細は、
図5を参照して以下に記載する。
【0050】
通知モジュール210は、保護されたコンテンツが複製されること(例、潜在的その他の著作権侵害)に対して、さまざまなアクションを取るように構成することができる。たとえば、第1コンテンツ・アイテム(例、保護されたライブ・コンテンツ・ストリーム)と第2コンテンツ・アイテム(例、候補ライブ・コンテンツ・ストリーム)との間のコンテンツ閾値一致度を決定すると、通知モジュール210は、候補ライブ・コンテンツ・ストリームの放送者に複製(例、潜在的な著作権侵害)を通知することができる。いくつかの実施形態において、放送者は、候補ライブ・コンテンツ・ストリームを終了するか、またはライブ・コンテンツ・ストリームを継続するかの選択肢を有する。このような実施形態では、ライブ・コンテンツ・ストリームを継続することにより、放送者は、候補ライブ・コンテンツ・ストリームをストリーミングする自身の権利を主張している。ある場合には、放送者が候補ライブ・コンテンツ・ストリームを終了する場合、パブリッシャからのアクションは必要なく、実施態様によって、パブリッシャには放送者のライブ・コンテンツ・ストリームを通知しても、または通知しなくてもよい。しかし、放送者が候補ライブ・コンテンツ・ストリームを継続することにする場合、通知モジュール210は、一致するコンテンツに関する情報をパブリッシャに提供することができる。いくつかの実施形態において、パブリッシャは、通知モジュール210によって提供されて、一致が見つかった候補ライブ・コンテンツ・ストリームのそれぞれの部分を特定するインタフェースにアクセスすることができる。パブリッシャはインタフェースにアクセスして、コンテンツ・アイテムの一致する部分を再生することができる。パブリッシャはインタフェースにアクセスして、ライブ・コンテンツ・ストリームおよび/またはアップロードされたコンテンツ・アイテムに複製侵害(例、著作権侵害)としてフラグを立てて、何のアクションも取らない(例、コンテンツ・アイテムの公正な使用のため)、または、たとえば、保護された(例、著作権保護された)部分の使用の許可を与えることもできる。いくつかの実施形態において、パブリッシャの保護コンテンツの侵害としてフラグを立てられたライブ・コンテンツ・ストリームおよび/またはアップロードされたコンテンツ・アイテムを、ソーシャル・ネットワーキング・システム経由でユーザにアクセス不可にする。いくつかの実施形態において、パブリッシャは、パブリッシャに一致が通知される前に満たされるべきさまざまな基準を指定する、一致ルールを作成することができる。たとえば、いくつかの実施形態において、パブリッシャは、一致タイプ(たとえば、音声、映像、映像のみ、音声のみ、または音声と映像の両方)を指定することができる。この実施例では、一致が一致タイプを満たす場合に、パブリッシャに一致が通知される。いくつかの実施形態において、パブリッシャは、地理的地域(たとえば、特定の都市、州、地域、国、世界中等)を指定することができる。この実施例において、一致するコンテンツが、指定の地理的地域から発信または放送された場合に、パブリッシャに一致が通知される。いくつかの実施形態において、パブリッシャは、1つまたは複数の一致条件と、その条件が満たされた場合に行うべきアクションとを指定することができる。1つの例示的な一致条件は、一致継続時間の設定に関わる。この実施例では、一致するコンテンツの時間長が一致継続時間を満たす(たとえば、一致継続時間より長い、一致継続時間と等しい、または一致継続時間より短い)場合に、パブリッシャに通知することができる。いくつかの実施形態において、パブリッシャは、一致長さ(たとえば、フレーム数)を指定することができ、一致するコンテンツが指定の一致長さを満たす場合に通知されることができる。いくつかの実施形態において、パブリッシャは、パブリッシャの保護コンテンツの使用が許可されている1つまたは複数の承認済みまたはホワイトリスト登録ユーザおよび/またはページを指定することができる。このような実施形態において、一致するコンテンツが、承認されていないかまたはホワイトリスト登録がされていないユーザまたはページによって投稿された場合に、パブリッシャに通知される。いくつかの実施形態において、パブリッシャは、ユーザおよび/またはページをブラックリスト登録することができ、一致するコンテンツが、ブラックリスト登録ユーザから発信される場合、および/またはブラックリスト登録ページ経由で放送される場合に通知されることができる。いくつかの実施形態において、パブリッシャは、一致ルールが満たされたときに行うべき1つまたは複数のアクションを指定することができる。たとえば、パブリッシャは、1つまたは複数の一定のルールを満たす一致に対してアクションを取らないことを指定することができる。別の実施例では、パブリッシャは、一致が1つまたは複数の一定のルールを満たすときに通知またはレポートをパブリッシャに送付するよう指示することができる。上述の一致ルールおよび条件は、例として記載されており、いくつかの実施形態においては、パブリッシャは、他の制約を使用して一致ルールを作成することができる。一般に、上述の例示的な一致ルールおよび/または条件のいずれも、他のルールおよび/または条件と組み合わせることができる。
【0051】
図3は、本開示の一実施形態に係る、フィンガープリンティング・モジュール302の一実施例を示す。いくつかの実施形態において、
図2のフィンガープリンティング・モジュール204をフィンガープリンティング・モジュール302として実施することができる。
図3に図示するように、フィンガープリンティング・モジュール302は、音声フィンガープリンティング・モジュール304、映像フィンガープリンティング・モジュール306、サムネイル・フィンガープリンティング・モジュール308および分散型フィンガープリンティング・モジュール310を含むことができる。
【0052】
音声フィンガープリンティング・モジュール304は、コンテンツ・アイテムについての音声フィンガープリントを取得または生成するように構成することができる。このような音声フィンガープリントは、一般的に公知の多様な手法を使用して生成することができる。いくつかの実施形態において、音声フィンガープリンティング・モジュール304は、コンテンツ・アイテムに対応する音声信号から音声フィンガープリントを取得または生成する。音声信号は、ある時点における音声信号の一部分にそれぞれ対応する1つまたは複数の別々の音声フレームから構成されてもよい。各音声フレームは、ある時間の長さ(例、32ミリ秒、64ミリ秒、128ミリ秒等)にわたる音声信号の一部分に対応することができる。いくつかの実施形態において、各音声フレームは、固定時間長に対応する。たとえば、各音声フレームは、音声信号の任意の部分を表し、長さを64ミリ秒とすることができる。音声信号から抽出され得る特徴のいくつかの例には、周波数ドメインの音響特徴(例、音声信号の振幅スペクトルで計算されるスペクトル特徴)、音声信号のメル周波数ケプストラム係数(MFCC:Mel-frequency cepstral coefficient)、音声信号のスペクトル帯域幅およびスペクトル平坦度、音声信号のスペクトル変動、極値周波数および無声周波数(silent frequencies)を含むことができる。また、音声信号から抽出される音声特徴には、音声信号のテクスチャウィンドウにおける特徴ベクトルの平均、標準偏差および共分散行列など、時間ドメインの特徴を含んでもよい。前述した実施例とは別に、または追加して、たとえば、ある期間にわたる音声信号の音量変化、および音声信号が圧縮されている場合の音声信号の圧縮フォーマットを含め、他の特徴を抽出してもよい。
【0053】
音声フィンガープリンティング・モジュール304は、音声信号の音声フレームのうちの1つまたは複数から音声フィンガープリントを生成することができる。いくつかの実施形態において、音声信号の任意の部分に対応する音声フィンガープリントは、音声信号のその部分によってキャプチャされたさまざまな音響特性および/または知覚特性に基づいて生成される。1フレームに関して計算される音声フィンガープリントは、音声フィンガープリントが対応する、波形またはフレームを表す1組のビット(例、32ビット、64ビット、128ビット等)として表すことができる。いくつかの実施形態において、音声フィンガープリンティング・モジュール304は、音声信号を前処理し、音声信号をあるドメイン(例、時間ドメイン)から別のドメイン(例、周波数ドメイン)に変換し、変換された音声信号を濾波して、濾波した音声信号から音声フィンガープリントを生成する。いくつかの実施形態において、音声フィンガープリントは離散コサイン変換(DCT)を使用して生成される。いくつかの実施形態において、第1音声フィンガープリントと第2音声フィンガープリントとの間の一致は、第1音声フィンガープリントに対応する1組のビットと、第2音声フィンガープリントに対応する1組のビットとの間のハミング距離が閾値を満たすときに、決定することができる。このような音声フィンガープリントの生成および照合を説明するさらなる詳細は、米国特許出願第14/153404号明細書および第14/552039号明細書に記載されており、両特許出願を参照により本明細書に組み込む。コンテンツ・アイテムについて生成される音声フィンガープリントは、記憶されて、一致するコンテンツを特定するために使用することができる。いくつかの例では、コンテンツ・アイテムの一部分は無音を含んでもよく、すなわち、知覚できる音声がなくてもよい。たとえば、コンテンツ・アイテムの一部分がそのコンテンツ・アイテムに対応する音声波形に基づいて聞き取れないとの決定が行われることがある。いくつかの実施形態において、無音コンテンツを含む部分について生成される音声フィンガープリントは、たとえば、その音声フィンガープリントのビット文字列をすべてゼロに変更することによってフラグを立てることができる。このような実施形態では、無音とマークされたコンテンツ・アイテムの部分は、フィンガープリントの照合を行うときにスキップすることができる。
【0054】
いくつかの実施形態において、各音声フィンガープリントは所定のフレーム・レート(例、毎秒8フレーム、毎秒16フレーム、毎秒32フレーム等)に対応する。たとえば、毎秒16フレームでは、コンテンツ・アイテムの音声フィンガープリントは、一連のフレーム(例、16音声フレーム)に対応することができ、コンテンツ・アイテム内の1秒の音声を表すことができる。この実施例では、音声フィンガープリントに対応する16フレームはそれぞれ、1組の64ビットまたは64ビットの整数として表してもよい。いくつかの実施形態において、音声フィンガープリント、映像フィンガープリントおよびサムネイル・フィンガープリントは、同じ所定のフレーム・レートでフィンガープリンティング・モジュール302によって生成される。音声フィンガープリントの記憶および検索を説明するさらなる詳細は、
図4を参照して以下に記載する。
【0055】
映像フィンガープリンティング・モジュール306は、コンテンツ・アイテムについて映像フィンガープリントを取得または生成するように構成することができる。いくつかの実施形態において、映像フィンガープリントを計算するとき、映像フィンガープリンティング・モジュール306は、コンテンツ・アイテムの1組の映像フレーム(例、8フレーム、16フレーム、32フレーム等)を記述するデータを、時間ドメインから周波数ドメインに変換する。たとえば、1組のフレームは、コンテンツ・アイテム内の1組の連続フレーム(例、フレーム1からフレーム8、フレーム1からフレーム16等)にしてもよい。このような実施形態では、映像フィンガープリンティング・モジュール306は、フレームを周波数ドメインに変換するために使用するべき1組のフレームについてのそれぞれの特徴値を決定する。フレームについての特徴値は、フレームに対応する1つまたは複数の特徴に基づいて決定することができる。一実施例において、フレームについての特徴値は、フレームの明るさを計算することによって、たとえば、フレーム内の画素の値を平均化することによって決定することができる。別の実施例では、フレームについての特徴値は、フレーム内の配色成分に基づいて、たとえば、RGBカラー・モデルおよび/またはYUV色空間に基づいて決定することができる。1組のフレームについての各特徴値は、アレイまたはバッファに含めることができる。これらの特徴値は、さらに、1つまたは複数の他のドメインに変換することができる。一般に、どのタイプの変換も適用することができる。たとえば、いくつかの実施形態において、特徴値に時間・周波数変換を適用する。いくつかの実施形態において、特徴値に空間・周波数変換を適用する。いくつかの実施形態において、高速フーリエ変換(FFT)、離散コサイン変換(DCT)、またはその両方を適用することによって、特徴値は別のドメインに変換される。一旦変換されたら、1組のフレームについての経時的な値は、周波数成分の分布として表される。いくつかの実施形態において、フレーム内のオブジェクトはセグメント化されて、これらのセグメントに変換を適用する。いくつかの実施形態において、フレーム内の領域をセグメント化して、これらのセグメントに変換を適用する。
【0056】
いくつかの実施形態において、各映像フィンガープリントは、所定のフレーム・レート(例、毎秒8フレーム、毎秒16フレーム、毎秒32フレーム等)に対応する。たとえば、毎秒16フレームでは、コンテンツ・アイテムの映像フィンガープリントは、一連の16フレームに対応することができ、コンテンツ・アイテム内の1秒の映像を表すことができる。この実施例では、映像フィンガープリントに対応する16フレームのそれぞれは、1組の64ビットまたは64ビットの整数として表してもよい。種々実施形態において、映像フィンガープリンティング・モジュール306は、フィンガープリントされるコンテンツ・アイテムが異なるフレーム・レートをもっていたとしても、映像フィンガープリントが所定のフレーム・レートに対応するように、一般的に公知の補間手法を行うことができる。このような補間は、1組のフレームについて決定された空間成分を使用して、周波数ドメインで行うことができる。たとえば、2つのフレームの補間は、閾値を超える高い周波数係数を破棄しながら(例、ローパス・フィルタ)、残りの低い周波数係数を残すことによって行うことができる。
【0057】
映像フィンガープリンティング・モジュール306は、これらの低周波数係数を量子化して、映像フィンガープリントに含まれるフレームに対応する1組のビットを生成することができる。前述したように、いくつかの実施形態において、映像フィンガープリントはフレームのシーケンスに対応し、各フレームは1組の64ビットまたは64ビットの整数として表される。いくつかの実施形態において、8点FFTを1組のフレームに適用すると、映像フィンガープリンティング・モジュール306は、低周波数成分のうちの4つを量子化して、1組のフレーム内の各フレームを表すそれぞれ64ビットを生成することができる。次の映像フィンガープリントを計算するために、映像フィンガープリンティング・モジュール306は、1組の中の最初のフレームについての値を破棄し、コンテンツ・アイテムの次のフレームについての対応する値を追加することによって、1組のフレームを1つシフトすることができる。したがって、たとえば、当初の1組のフレームがフレーム1から8についての値を含んでいた場合、シフトされた1組のフレームは、フレーム2から9についての値を含むことになる。映像フィンガープリンティング・モジュール306は、さらに、前述のようにシフトされた1組のフレームを使用して、別の映像フィンガープリントを生成することができる。種々実施形態において、映像フィンガープリンティング・モジュール306は、1組のフレームをシフトし続けて、コンテンツ・アイテムの最後のフレーム(例、ライブ・コンテンツ・ストリームの最後またはオンデマンド・コンテンツ・アイテム・ファイルの最後)に達するまで映像フィンガープリントを生成する。したがって、このような実施形態では、フィンガープリントは、フィンガープリントされるコンテンツ・アイテムの重複フレームに対応する。たとえば、第1フィンガープリントはフレーム1から16までと決定することができ、第2フィンガープリントはフレーム2から17までと決定することができ、第3フィンガープリントはフレーム3から18までと決定することができ、以下同様である。
【0058】
いくつかの実施形態において、1つの特徴値に依拠するのではなく、1組のフレーム内の各フレームについて特徴値のベクトルを決定し、これらのベクトルを使用して1組の映像フレームを周波数ドメインに変換する。たとえば、映像フィンガープリントについて決定された特徴ベクトルは、フレームに対応するさまざまな特徴の値を記述することができる。いくつかの実施形態において、特徴値は、フレーム内の1つまたは複数のグループの画素間の変化(例、明るさの変化、配色の変化等)を記述することができる。このような実施形態において、
図6の実施例に示されるように、第1領域606および第1領域606内の第2領域608は、フレーム602内の画素604の周りに特定することができる。第1領域606および第2領域608は、いずれも、1組のセクター(例、6、8、10等のセクター)にセグメント化することができる。たとえば、
図6では、第1領域606がセクターa1、a2、a3、a4、a5、a6、a7およびa8に分割されているのに対し、第2領域608はセクターb1、b2、b3、b4、b5、b6、b7およびb8に分割されている。各セクターについて特徴値を計算することができる。これらの特徴値は、マトリックス610に記憶することができる。次に、各内側セクター(例、b1)についての特徴値とそれに対応する外側セクター(例、a1)についての特徴値との差を計算する。これらの差は、マトリックス612に記憶することができる(例、f1、f2、…、f8)。いくつかの実施形態において、このような差を、フレーム602内の各画素について計算し、それぞれの差を合計してマトリックス612を出す。マトリックス612は、前述したように処理される1組の映像フレーム内の各フレームについて生成することができる。その結果、いくつかの実施形態において、1組の映像フレーム内の各フレームは、1組の値(例、8個の値)の対応する特徴ベクトルによって表される。1組の映像フレームについての特徴値を、必要なら、さらに補間し、前述したように、たとえば、離散コサイン変換および/または高速フーリエ変換を適用することによって、周波数ドメインに変換することができる。いくつかの実施形態において、特徴ベクトルに含まれる特徴値の一部または全部は、一般的に公知の特徴検出アプローチ、たとえば、方向付きFASTと回転BRIEF(ORB:Oriented FAST and Rotated BRIEF)を適用することによって決定される。
【0059】
いくつかの実施形態において、映像フィンガープリンティング・モジュール306は、各フレームについて複数のフィンガープリントを生成する。たとえば、いくつかの実施形態において、映像フィンガープリンティング・モジュール306は、フィンガープリントが作成されるフレームを上半分と下半分とに水平に分割する。このような実施形態では、フレームの上半分について第1フィンガープリントが生成され、フレームの下半分について第2フィンガープリントが生成される。たとえば、第1フィンガープリントおよび第2フィンガープリントは、それぞれ32ビットを使用して表すことができる。一実施例において、このようなアプローチを使用して、スクロールしているテキスト(例、エンドクレジット)を含むコンテンツ・アイテムを区別することができる。当然、フレームは多数の異なる方法で分割してもよく(例、垂直、斜め等)、分割された部分の各々について、それぞれのフィンガープリントを生成することができる。いくつかの実施形態において、コンテンツのフィンガープリントを作成する前に、映像フィンガープリンティング・モジュール306は、コンテンツに関連付けられているすべての色情報を除去し、コンテンツを、白黒、またはグレースケール表現に変換する。いくつかの例では、映像内のフレームを、そのオリジナルの状態から反転してもよい(例、水平に反転、垂直に反転等)。このようなフレームの反転は、映像内の一致するコンテンツが特定されないように行うことができる。したがって、いくつかの実施形態において、映像のフレームのフィンガープリントを作成するとき、映像フィンガープリンティング・モジュール306は、そのオリジナルの状態のフレームについてのフィンガープリントと、1つまたは複数のそれぞれ反転された状態(例、水平に反転、垂直に反転等)のフレームについての1つまたは複数の個別のフィンガープリントとを生成する。コンテンツ・アイテムについて生成される映像フィンガープリントは、記憶して、一致するコンテンツを特定するために使用することができる。映像フィンガープリントの記憶および検索を説明するさらなる詳細は、
図4を参照して以下に記載する。
【0060】
サムネイル・フィンガープリンティング・モジュール308は、コンテンツ・アイテムについてのサムネイル・フィンガープリント、または画像フィンガープリントを取得または生成するように構成することができる。いくつかの実施形態において、コンテンツ・アイテムについてサムネイル・フィンガープリントを生成するとき、サムネイル・フィンガープリンティング・モジュール308は、所定の時間間隔(例、1秒ごと、3秒ごと等)でコンテンツ・アイテム内のフレームのサムネイル・スナップショットをキャプチャする。このようなサムネイル・スナップショットを使用して、一般的に公知の画像フィンガープリンティング手法を使用して対応するサムネイル・フィンガープリントを生成することができる。いくつかの実施形態において、各サムネイル・フィンガープリントは、1組のビット(例、32ビット、64ビット、128ビット等)を使用して表される。いくつかの実施形態において、各所定の時間間隔で、サムネイル・フィンガープリンティング・モジュール308は、1つもしくは複数のスケールおよび/または解像度で、複数のサムネイル・スナップショットをキャプチャする。このような実施形態では、複数のサムネイル・スナップショットについて、個別のフィンガープリントを生成することができる。このような複数のフィンガープリントを使用して、評価するコンテンツ内に歪みがあっても、2つのコンテンツ・アイテム間で一致するサムネイルを特定することができる。コンテンツ・アイテムについて生成されるサムネイル・フィンガープリントは、記憶して、一致するコンテンツを特定するために使用することができる。サムネイル・フィンガープリントの記憶および検索を説明するさらなる詳細は、
図4を参照して以下に記載する。
【0061】
いくつかの実施形態において、コンテンツ・アイテムのフィンガープリントを作成しようとするとき、フィンガープリンティング・モジュール302は、そのコンテンツ・アイテムについて音声フィンガープリント、映像フィンガープリント、および/またはサムネイル・フィンガープリントを生成する。このようなフィンガープリントは、単独で、または組み合わせて使用して、フィンガープリントを作成されたコンテンツ・アイテムに一致するコンテンツの部分(例、音声、映像、サムネイル)を含む、他のコンテンツ・アイテムを特定することができる。いくつかの実施形態において、オンデマンド・コンテンツ・アイテムは、オンデマンド・コンテンツ・アイテムに対応するファイルが利用できるようになるかまたはたとえばコンテンツ・プロバイダ・システム(例、ソーシャル・ネットワーキング・システム)にアップロードされるとすぐに、フィンガープリントを作成することができる。いくつかの実施形態において、ライブ・コンテンツ・ストリームは、ライブ・コンテンツ・ストリームを記述するデータをコンテンツ・プロバイダ・システムが受信するとすぐに、フィンガープリントを作成することができる。
【0062】
いくつかの実施形態において、フィンガープリンティング・モジュール302は、コンテンツ・プロバイダ・システムに実装される。このような実施形態では、コンテンツ・アイテムのフィンガープリント作成は、コンテンツ・アイテムを記述するデータが受信された後で、コンテンツ・プロバイダ・システムによって行われる。いくつかの実施形態において、フィンガープリンティング・モジュール302は、ユーザ・デバイスに実装される。このような実施形態では、コンテンツ・アイテムのフィンガープリント作成は、コンテンツ・アイテムを記述するデータがコンテンツ・プロバイダ・システムに送信されると、ユーザ・デバイスによって行われる。いくつかの実施形態において、分散型フィンガープリンティング・モジュール310は、異なるタイプのフィンガープリントがユーザ・デバイスおよびコンテンツ・プロバイダ・システムによって生成されるように構成される。たとえば、いくつかの実施形態において、分散型フィンガープリンティング・モジュール310は、ユーザ・デバイスに対して、コンテンツ・プロバイダ・システムに提供されるコンテンツ・アイテムについて、1つまたは複数のタイプのフィンガープリント(例、音声フィンガープリントおよび/またはサムネイル・フィンガープリント)を生成するように命令することができる。このような実施形態では、分散型フィンガープリンティング・モジュール310は、コンテンツ・プロバイダ・システムに対して、コンテンツ・アイテムが受信されると、1つまたは複数の異なるタイプのフィンガープリント(例、映像フィンガープリント)を生成するように命令することができる。このような分散型フィンガープリンティングは、コンピューティング・リソースの、より最適な利用を可能にすることができる。
【0063】
いくつかの実施形態において、分散型フィンガープリンティング・モジュール310は、ユーザ・デバイスに対して、コンテンツ・プロバイダ・システムに提供されるコンテンツ・アイテムについて、1つまたは複数の第1タイプのフィンガープリント(例、音声フィンガープリント)を生成して送信するように命令することができる。このような実施形態では、1つまたは複数の第1タイプのフィンガープリント(例、音声フィンガープリント)を使用して、コンテンツ・アイテムと参照コンテンツ・アイテムとの間の一致が特定される場合、分散型フィンガープリンティング・モジュール310は、ユーザ・デバイスに対して、追加のタイプのフィンガープリント(例、映像フィンガープリントおよび/またはサムネイル・フィンガープリント)を使用して一致したコンテンツをさらに検証するために、提供されるコンテンツ・アイテムについて1つまたは複数の第2タイプのフィンガープリント(例、映像フィンガープリントおよび/またはサムネイル・フィンガープリント)の生成および送信を開始するように命令することができる。種々実施形態において、フィンガープリント(例、音声フィンガープリント、映像フィンガープリント、サムネイル・フィンガープリント)は、フィンガープリントがそこから決定されたそれぞれのコンテンツ・アイテムに関するさまざまな情報を提供するメタデータに関連付けることもできる。このような情報は、コンテンツ・アイテムに対応する、タイトル、説明、キーワードまたはタグを含むことができる。いくつかの実施形態において、情報は、たとえば、一般的に公知の光学文字認識(OCR)手法を使用して、コンテンツ・アイテム(またはコンテンツ・アイテムに対応するフレーム)から抽出した任意のテキストを含むことができる。
【0064】
図4は、本開示の一実施形態に係る、記憶モジュール402の一実施例を示す。いくつかの実施形態において、
図2の記憶モジュール206を記憶モジュール402として実施することができる。
図4に図示するように、記憶モジュール402は、インデックス作成モジュール404および最適化モジュール406を含むことができる。
【0065】
インデックス作成モジュール404は、コンテンツ・アイテムについて生成されるフィンガープリント(例、音声フィンガープリント、映像フィンガープリント、サムネイル・フィンガープリント)を記憶するように構成することができる。一般に、このようなフィンガープリントは、データ記憶および検索のための一般的に公知の任意のアプローチを使用して記憶してもよい。いくつかの実施形態において、ライブ・コンテンツ・ストリームについて生成されるフィンガープリントがライブ参照データベースに記憶されるのに対し、オンデマンド・コンテンツ・アイテムについて生成されるフィンガープリントは静的参照データベースに記憶される。いくつかの実施形態において、閾値期間内(例、直近24時間以内、直近48時間以内等)に提供された(例、ストリームおよび/またはアップロードされた)コンテンツ・アイテム(例、ライブ・コンテンツ・ストリームおよびオンデマンド・コンテンツ・アイテム)についてのフィンガープリントがリアルタイム参照データベースに記憶されるのに対し、この閾値期間を超えて提供されたコンテンツ・アイテムについてのフィンガープリントは静的参照データベースに記憶される。このような実施形態では、記憶モジュール402は、コンテンツ・アイテムについてのフィンガープリント・データを、必要に応じて、リアルタイム参照データベースから静的参照データベースに移動し、閾値期間に基づいた2つのデータベース間のフィンガープリント・データの分別を満足する。
【0066】
いくつかの実施形態において、インデックス作成モジュール404は、フィンガープリント・データを1つまたは複数のデータ構造に記憶する。使用されるデータ構造は、フィンガープリント・データの記憶および処理に利用できるコンピューティング・リソースによって変えてもよい。一実施例では、ある組のコンピューティング・リソースがインデックス・データ構造の使用を正当化し得るのに対し、別の組のコンピューティング・リソースは、転置インデックス・データ構造の使用を正当化し得る。たとえば、音声フィンガープリントは第1転置インデックス・データ構造に記憶することができ、映像フィンガープリントは第2転置インデックス・データ構造に記憶することができ、サムネイル・フィンガープリントは第3転置インデックス・データ構造に記憶することができる。述べたように、ライブ・コンテンツ・ストリームおよびオンデマンド・コンテンツ・アイテムについて生成されるフィンガープリントを記憶するために、個別の転置インデックス・データ構造を使用してもよい。
図7は、例示的な転置インデックス・データ構造702を示す。この実施例では、転置インデックス702は、1組のビン704を含む。各ビンは、そのビンにハッシュ化された1組のフィンガープリント付きフレームを参照することができる。たとえば、フィンガープリント付きフレーム708および710は、ともにビン706にハッシュ化されたものである。
【0067】
述べたように、各フィンガープリントは1組のフレームに対応させることができ、各フレームは、1組のビット、たとえば、64ビットまたは整数として表すことができる。いくつかの実施形態において、フィンガープリント付きフレームを転置インデックス702に挿入するとき、フィンガープリント付きフレームに対応する部分を使用して、転置インデックス702内のビン704のうちの1つにハッシュ化する。たとえば、フィンガープリント付きフレーム708に対応する64ビットの最初の24ビット(例、インデックス部分)は、ビン706にハッシュ化することができる。フィンガープリント付きフレーム708は、次に、ビン706にハッシュ化されたフィンガープリント付きフレームのリスト712に追加される。いくつかの実施形態において、フィンガープリント付きフレーム708をリスト712に追加するとき、ビットの残りの部分が記憶される。このように、この実施例では、フィンガープリント付きフレーム708に対応する64ビットの残りの40ビットが記憶される。いくつかの実施形態において、フィンガープリント付きフレーム708は、フィンガープリント付きフレームがそこから生成されたコンテンツ・アイテムを記述する情報(例、ファイル識別子、ストリーム識別子等)と、フィンガープリントがそこから生成されたコンテンツ・アイテムの部分を示すオフセット(例、タイム・スタンプ、フレーム番号等)とともに記憶される。
【0068】
いくつかの実施形態において、フィンガープリントの記憶および照合に、複数の転置インデックスを利用することができる。たとえば、フィンガープリント付きフレームに対応するビットの第1部分は、第1転置インデックスのビンの1つにハッシュ化することができる。第1転置インデックス内のこのビンは、第2転置インデックスを参照することができる。この実施例では、フィンガープリント付きフレームに対応するビットの第2部分は、第2転置インデックス内のビンにハッシュ化されて、そのビンにハッシュ化されたフィンガープリント付きフレームのリストを特定することができる。フィンガープリント付きフレームに対応する1組のビット(1組のビット全体またはビットの残りの部分)を、第2転置インデックス内のこのリストに追加することができる。たとえば、64ビットのフィンガープリント付きフレームの最初の24ビットは、第1転置インデックス内のビンにハッシュ化されて、第2転置インデックスを特定することができる。この実施例では、64ビットのフィンガープリント付きフレームのうちの次の20ビットは、第2転置インデックス内のビンにハッシュ化されて、そのビンによって参照されるフィンガープリント付きフレームのリストを特定することができる。ここで、64ビットのフィンガープリント付きフレームの残りの20ビット(または64ビット全部)をリストに記憶することができる。フィンガープリント付きフレームは、フィンガープリント付きフレームがそこから生成されたコンテンツ・アイテムを記述する情報(例、ファイル識別子、ストリーム識別子等)と、フィンガープリント付きフレームがそこから生成されたコンテンツ・アイテムの部分を示すオフセット(例、タイム・スタンプ、フレーム番号等)とともに、第2転置インデックスに記憶される。
【0069】
最適化モジュール406は、フィンガープリントの記憶および照合に利用される転置インデックス・データ構造を管理するように構成することができる。たとえば、いくつかの実施形態において、最適化モジュール406は、コンテンツ・プロバイダ・システムから除去されたコンテンツ・アイテムに対応するエントリを除去するために、転置インデックスを自動的に更新またはクリーン・アップすることができる。いくつかの実施形態において、最適化モジュール406は、閾値期間にわたって記憶されたエントリを除去するために、転置インデックスを自動的に更新し、またはクリーン・アップすることができる。いくつかの実施形態において、最適化モジュール406は、所望の編成を得るために、転置インデックスを並べ替えることができる。一実施例において、最適化モジュール406は、同様なフィンガープリント付きフレーム(例、互いの閾値ハミング距離であるフィンガープリント付きフレーム)を同じ(または付近の)チャンクまたはビンに集めるかまたは編成するように、転置インデックス内のエントリを並べ替えることができる。
【0070】
図5は、本開示の一実施形態に係る、照合モジュール502の一実施例を示す。いくつかの実施形態において、
図2の照合モジュール208を照合モジュール502として実装することができる。
図5に図示するように、照合モジュール502は、フィンガープリント照合モジュール504、組み合わせ照合モジュール506、ライブ処理モジュール508および歪みモジュール510を含むことができる。
【0071】
フィンガープリント照合モジュール504は、1つまたは複数の第2(または参照)コンテンツ・アイテム内のコンテンツの部分に一致する第1(またはテスト)コンテンツ・アイテム内のコンテンツの部分を特定するように構成することができる。種々実施形態において、フィンガープリント照合モジュール504は、テスト・コンテンツ・アイテムに対応する1組のフィンガープリント(例、音声フィンガープリント、映像フィンガープリント、サムネイル・フィンガープリント)を使用してテスト・コンテンツ・アイテムを評価することができ、これらのフィンガープリントを使用して、分析するべき1つまたは複数の参照コンテンツ・アイテムを特定することができる。このような参照コンテンツ・アイテムは、保護(または著作権保護)されているものとして特定または指定されたものであってもよい。一般に、参照コンテンツ・アイテム内のコンテンツに一致するコンテンツを含むテスト・コンテンツ・アイテムにフラグを立てることができ、さまざまなアクションを取ることができる。参照コンテンツ・アイテムは、たとえば、前述したように、転置インデックス・データ構造を使用して特定することができる。
【0072】
たとえば、
図8Aに図示するように、フィンガープリント照合モジュール504は、テスト・コンテンツ・アイテムから生成された映像フィンガープリントを取得することができる。映像フィンガープリントは、1組のフレーム(例、16フレーム)に対応することができ、各フレームは、1組のビット(例、64ビット)として表すことができる。いくつかの実施形態において、フィンガープリント内のフレーム804の第1部分(例、最初の24ビット)を、転置インデックス802内のビン806にハッシュ化するために使用することができ、フレーム804の第2部分(例、残りの40ビット)を、フレーム間の一致を検証するために使用することができる。述べたように、転置インデックス802は、1組のビンを含み、各ビンは、そのビンにハッシュ化された1組のフィンガープリント付きフレームを参照することができる。たとえば、
図8Aでは、ビン806は、フィンガープリント付きフレーム808およびフィンガープリント付きフレーム810を参照する。この実施例では、フィンガープリント付きフレーム808およびフィンガープリント付きフレーム810は、ともに一致候補である。フィンガープリント照合モジュール504は、ビン806に対応するフィンガープリント付きフレーム808、810のそれぞれを評価して、フィンガープリント付きフレームがフレーム804に一致するかどうかを決定する。いくつかの実施形態において、フィンガープリント照合モジュール504は、第1フレームに対応する1組のビットと、第2フレームに対応する1組のビットとの間のハミング距離を決定する。このような実施形態では、フィンガープリント照合モジュール504は、ハミング距離が閾値を満たす場合に、第1フレームと第2フレームとの間の一致を決定する。このように、たとえば、フィンガープリント照合モジュール504は、フレーム804に対応する1組のビットと、フィンガープリント付きフレーム808に対応する1組のビットとの間のハミング距離を決定することができる。このハミング距離が閾値を満たす場合、フレーム804とフィンガープリント付きフレーム808との間の一致が特定される。フレーム804がハッシュ化されたビン806によって参照される残りのフィンガープリント付きフレーム(例、フィンガープリント付きフレーム810)に同じプロセスを適用して、他の一致を特定することができる。
【0073】
テスト・コンテンツ・アイテムのフレーム804と参照コンテンツ・アイテムのフィンガープリント付きフレーム(例、フィンガープリント付きフレーム808)との間の一致が特定された場合、フィンガープリント照合モジュール504は、一致するフィンガープリント付きフレーム808がそこから生成された参照コンテンツ・アイテムを評価して、テスト・コンテンツ・アイテムと参照コンテンツ・アイテムとの間で一致するコンテンツの範囲、または境界を決定することができる。述べたように、転置インデックス802に記憶されている各フレームは、フィンガープリント付きフレームがそこから生成された参照コンテンツ・アイテム(例、ファイル名、ストリーム識別子等)と、フィンガープリント付きフレームが対応する、参照コンテンツ・アイテムの部分を示すオフセットとを示すこともできる。このような情報を使用して、フィンガープリント照合モジュール504は、例示的な
図8Bに図示するように、参照コンテンツ・アイテムの全体について時系列的に生成された1組のフィンガープリント付きフレーム840にアクセスすることができる。フィンガープリント照合モジュール504は、テスト・コンテンツ・アイテムに対応する1組のフィンガープリント付きフレーム860にもアクセスすることができる。いくつかの実施形態において、フィンガープリント照合モジュール504は、チャンク(例、1秒のチャンク)内のテスト・コンテンツ・アイテムおよび参照コンテンツ・アイテムを処理する。したがって、たとえば、各フィンガープリントが毎秒16フレームに対応する場合、フィンガープリント照合モジュール504は、毎秒16フレームのコンテンツを処理する。
【0074】
図8Bに図示するように、フィンガープリント照合モジュール504は、参照コンテンツ・アイテムの一致するフィンガープリント付きフレーム808よりも前の各フィンガープリント付きフレームを、テスト・コンテンツ・アイテムのフィンガープリント付きフレーム804よりも前のそれぞれ対応するフィンガープリント付きフレームに対して評価することができる。したがって、たとえば、フィンガープリント照合モジュール504は、参照コンテンツ・アイテムのフィンガープリント付きフレーム820とテスト・コンテンツ・アイテムのフィンガープリント付きフレーム824との間のハミング距離を計算することができる。ハミング距離が閾値を満たす場合、コンテンツの一致が見つかる。フィンガープリント照合モジュール504は、一致が見つからなくなるまで、または参照コンテンツ・アイテムおよび/もしくはテスト・コンテンツ・アイテムの始めに達するまで、各先行フレームとのこのような照合を続けることができる。同様に、フィンガープリント照合モジュール504は、参照コンテンツ・アイテム内の一致するフィンガープリント808よりも後の各フィンガープリント付きフレームを、テスト・コンテンツ・アイテム内の一致するフィンガープリント付きフレーム804よりも後のそれぞれ対応するフィンガープリント付きフレームに対して評価することができる。したがって、たとえば、フィンガープリント照合モジュール504は、参照コンテンツ・アイテムのフィンガープリント付きフレーム822とテスト・コンテンツ・アイテムのフィンガープリント付きフレーム826との間のハミング距離を計算することができる。ハミング距離が閾値を満たす場合、コンテンツの一致が見つかる。フィンガープリント照合モジュール504は、一致が見つからなくなるまで、または参照コンテンツ・アイテムおよび/もしくはテスト・コンテンツ・アイテムの最後に達するまで、各後続フレームとのこのような照合を続けることができる。このような照合が完了したら、フィンガープリント照合モジュール504は、テスト・コンテンツ・アイテムのどの部分832が参照コンテンツ・アイテムの境界830に一致するかどうかを特定することができる。この照合プロセスは、テスト・コンテンツ・アイテムの音声フィンガープリントと参照コンテンツ・アイテムの音声フィンガープリントとの間の一致、テスト・コンテンツ・アイテムの映像フィンガープリントと参照コンテンツ・アイテムの映像フィンガープリントとの間の一致、および/またはテスト・コンテンツ・アイテムのサムネイル・フィンガープリントと参照コンテンツ・アイテムのサムネイル・フィンガープリントとの間の一致を見つけるために適用することができる。
図8A~
図8Bを参照して説明する照合プロセスは、2つのコンテンツ・アイテム間の一致するコンテンツを決定するための単なる1つの例示的なアプローチであり、当然ながら、他のアプローチも可能である。いくつかの実施形態において、照合プロセスは、一致の決定に、テスト・コンテンツ・アイテムおよび参照コンテンツ・アイテムのすべてのフィンガープリント付きフレームを評価する必要がないように最適化される。たとえば、テスト・コンテンツ・アイテムの第1フィンガープリント付きフレームと参照コンテンツ・アイテムの第1フィンガープリント付きフレームとの間の一致の特定にあたり、フィンガープリント照合モジュール504は、テスト・コンテンツ・アイテムおよび参照コンテンツ・アイテム内の1つまたは複数の中間フレーム(例、閾値数のフィンガープリント付きフレーム)をスキップし、その後、テスト・コンテンツ・アイテムの第2フィンガープリント付きフレームおよび参照コンテンツ・アイテムの第2フィンガープリント付きフレームを評価することができる。第1フィンガープリント付きフレームおよび第2フィンガープリント付きフレームがともに一致する場合、テスト・コンテンツ・アイテムおよび参照コンテンツ・アイテムの1つまたは複数の中間フレームも一致すると想定される。いくつかの実施形態において、照合プロセスは2段階にされ、第1検証ステップは、コンテンツ・アイテム内の閾値数の中間フィンガープリント付きフレームの評価をスキップしても、1組の第1フィンガープリント付きフレームが一致し、かつ第2組のフィンガープリント付きフレームが一致するときに一致を決定するように最適化される。このような実施形態では、第2検証ステップでは、一致の全長を確認するために、中間フィンガープリント付きフレームのそれぞれも個々に評価される。
【0075】
いくつかの実施形態において、さらなる検討のために、一致する部分830および832を記述する情報がさまざまな要員に提供される。いくつかの実施形態において、一致する部分830および832が閾値時間長(例、30秒)を満たす場合、フィンガープリント照合モジュール504は、さらなる検討のために、テスト・コンテンツ・アイテムに自動的にフラグを立てることができる。いくつかの実施形態において、一致する部分830および832が閾値時間長(例、30秒)を満たす場合、フィンガープリント照合モジュール504は、ユーザがテスト・コンテンツ・アイテムにアクセスすることを自動的に防止することができる。いくつかの実施形態において、フィンガープリント照合モジュール504は、テスト・コンテンツ・アイテムおよび参照コンテンツ・アイテムが複製である(つまり、テスト・コンテンツ・アイテムの全部が参照コンテンツ・アイテムの全部に一致する)と決定することがある。このような実施形態では、テスト・コンテンツ・アイテムは、自動的に削除することもできる。
【0076】
組み合わせ照合モジュール506は、複数のタイプのフィンガープリント(例、音声、映像、サムネイル)を利用して、テスト・コンテンツ・アイテムと参照コンテンツ・アイテムとの間で一致するコンテンツを特定するように構成することができる。たとえば、いくつかの実施形態において、組み合わせ照合モジュール506は、前述したように、音声フィンガープリントを使用してテスト・コンテンツ・アイテムと参照コンテンツ・アイテムとの間で一致するコンテンツを決定することができる。このような実施形態では、組み合わせ照合モジュール506は、閾値期間および/または閾値フレーム数について音声フィンガープリントを使用して一致が見つからない場合に、他のタイプのフィンガープリント(例、映像フィンガープリントおよび/またはサムネイル・フィンガープリント)を使用して照合を補完する。いくつかの実施形態において、組み合わせ照合モジュール506は、音声フィンガープリントを使用して決定したコンテンツの一致を、対応する映像フィンガープリント(またはサムネイル・フィンガープリント)を追加で使用することによって検証することができる。このような検証は、たとえば、著作権保護された音楽を含むビデオ広告とミュージック・ビデオとを区別するのに有用であり得る。同様に、いくつかの実施形態において、組み合わせ照合モジュール506は、映像フィンガープリントを使用して決定したコンテンツの一致を、対応する音声フィンガープリント(またはサムネイル)を追加で使用することによって検証することができる。種々実施形態において、音声フィンガープリントおよび映像フィンガープリントは、所定のフレーム・レートで生成される。その結果、組み合わせ照合モジュール506は、ある所与のフレームについて、音声フィンガープリントと映像フィンガープリントとを容易に相互参照することができる。
【0077】
いくつかの実施形態において、コンテンツ・アイテムをコンテンツ・プロバイダ・システムに提供しているユーザ・デバイスには、コンテンツ・アイテムのサムネイル・フィンガープリントを生成して送信するように命令することができる。このような実施形態では、組み合わせ照合モジュール506は、サムネイル・フィンガープリントを利用して、コンテンツ・アイテムと参照コンテンツ・アイテムとの間で一致するコンテンツを特定することができる。一致が見つかる場合、ユーザ・デバイスには、コンテンツ・アイテムの他のタイプのフィンガープリント(例、音声フィンガープリントおよび/または映像フィンガープリント)を生成して送信するように命令することができる。組み合わせ照合モジュール506は、他のタイプのフィンガープリントを利用して、サムネイル・フィンガープリントを使用して決定したフレームの一致を検証することができる。たとえば、サムネイル・フィンガープリントを使用してコンテンツ・アイテムのフレームと参照コンテンツ・アイテムのフレームとの間の一致が決定される場合、組み合わせフィンガープリント照合モジュール506は、コンテンツ・アイテムおよび参照コンテンツ・アイテムで一致するフレームに対応する映像フィンガープリントを使用して、一致を確認することができる。いくつかの実施形態において、サムネイル・フィンガープリントを使用して一致が見つかる場合、コンテンツ・プロバイダ・システムは、検証のために、コンテンツ・アイテムについて他のタイプのフィンガープリント(例、音声フィンガープリントおよび/または映像フィンガープリント)を生成し始めることができる。
【0078】
一般に、オンデマンド・コンテンツ・アイテムのコンテンツを評価するとき、照合モジュール502は、1つまたは複数の参照コンテンツ・アイテムを特定し、これらの参照コンテンツ・アイテムをオンデマンド・コンテンツ・アイテムに対して評価して、一致するコンテンツを特定することができる。いくつかの実施形態において、照合モジュール502は、コンテンツの照合のために、ライブ・コンテンツ・ストリームを別様に処理するように構成することができる。たとえば、いくつかの実施形態において、ライブ処理モジュール508は、スライド・ウィンドウを使用して、固定部分で受信されるライブ・コンテンツ・ストリームを処理するように構成することができる。いくつかの実施形態において、ライブ処理モジュール508は、固定時間長(例、コンテンツの最後の20秒)または固定数のフレーム(例、16フレーム)に対応するライブ・コンテンツ・ストリームのフレームを含むために、スライド・ウィンドウを画定することができる。
図9Aは、ユーザ・デバイスからコンテンツ・プロバイダ・システムによって受信されるライブ・コンテンツ・ストリーム902の例示的な図を示す。
図9Aの実施例において、スライド・ウィンドウ904は、フレーム906およびフレーム908によって画定されるライブ・コンテンツ・ストリーム902の20秒に対応する。いくつかの実施形態において、ライブ・コンテンツ・ストリームが受信されているとき、ライブ処理モジュール508は、スライド・ウィンドウ904の長さが満たされるまで、ライブ・コンテンツ・ストリームをバッファリングする。たとえば、スライド・ウィンドウが20秒の長さに対応する場合、ライブ処理モジュール508は、ライブ・コンテンツ・ストリームの20秒をバッファリングする。バッファリングされると、ライブ処理モジュール508は、前述したように、スライド・ウィンドウ904内のコンテンツの一部分(例、スライド・ウィンドウ904内のコンテンツの最後の1秒)のフィンガープリントを作成する。フィンガープリントを作成されたら、ライブ処理モジュール508は、ライブ・コンテンツ・ストリームのフィンガープリントを作成された部分がいずれかの参照コンテンツ・アイテムに一致するかどうかを決定することができる。前述したように、照合プロセスは、ライブ・コンテンツ・ストリーム902の以前に受信したフレームを評価することにより、一致するコンテンツの境界を決定することを試みる。この実施例では、ライブ・コンテンツ・ストリームの別の1秒が受信されると、スライド・ウィンドウは、ライブ・コンテンツ・ストリームの最新の20秒を包含するように進む。
図9Bは、ライブ・コンテンツの別の1秒が受信された後のライブ・コンテンツ・ストリーム912の例示的な図を示す。
図9Bの実施例では、スライド・ウィンドウ914は、ライブ・コンテンツ・ストリームの最新の20秒まで進んでおり、今ではフレーム906および918と接している。同様に、この実施例では、ライブ処理モジュール508は、受信したライブ・コンテンツ・ストリームの最後の1秒のフィンガープリントを作成して、フィンガープリントを作成された部分がいずれかの参照コンテンツ・アイテムに一致するかどうかを決定する。
図9Cは、ライブ・コンテンツ・ストリームの別の1秒が受信された後のライブ・コンテンツ・ストリーム922の例示的な図を示す。
図9Cの実施例では、スライド・ウィンドウ924は、ライブ・コンテンツ・ストリームの最新の20秒まで進んでおり、今ではフレーム906および928と接している。同様に、この実施例では、ライブ処理モジュール508は、受信したライブ・コンテンツ・ストリームの最後の1秒のフィンガープリントを作成し、フィンガープリントを作成した部分がいずれかの参照コンテンツ・アイテムに一致するかどうかを決定する。スライド・ウィンドウを使用してライブ・コンテンツ・ストリームを処理するこのアプローチは、参照コンテンツ・アイテムにおいて一致するコンテンツを最適に検出することを可能にする。このアプローチは、参照ライブ・コンテンツ・ストリームの受信が遅れる状況にも対処することができる。このような場合、コンテンツ・プロバイダ・システムは、テスト・ライブ・コンテンツ・ストリームと遅延した参照ライブ・コンテンツ・ストリームとの間で一致するコンテンツを決定することができる。いくつかの実施形態において、スライド・ウィンドウを拡張して、繰返しパターンを含むコンテンツの特定を容易にすることができる。
【0079】
ある場合には、ライブ・コンテンツ・ストリームは、照合プロセスを複雑にし得る歪みを受けやすいことがある。たとえば、ユーザは、コンピューティング・デバイスを使用してキャプチャされたコンサートのライブ・コンテンツ・ストリームを提供することがある。このライブ・コンテンツ・ストリームは、一定の角度および/またはズーム・レベルからキャプチャされるかもしれない。また、キャプチャされたコンテンツは、コンピューティング・デバイスの振動により生じるさまざまな回転を受けやすいことがある。このような歪みにより、たとえば、許可された放送者によって提供された参照ライブ・コンテンツ・ストリーム(つまり、保護されたストリーム、または著作権保護されたストリーム)に対して正確な一致が見つけにくくなるかもしれない。いくつかの実施形態において、歪みモジュール510は、このような歪みにも関わらずコンテンツの照合を容易にするためのさまざまなアプローチを適用するように構成される。
【0080】
たとえば、いくつかの実施形態において、ライブ・コンテンツ・ストリームのフィンガープリントが作成されたフレームについて一致を見つけようとするとき、歪みモジュール510は、歪みのある1組のフィンガープリント付きフレームを生成し、歪みのあるフィンガープリント付きフレームのそれぞれを使用して一致を見つけようとする。したがって、上記実施例では、ライブ・コンテンツ・ストリームの最後の1秒に対応するフィンガープリント付きフレームについて一致を見つけようとする場合、歪みモジュール510は、フィンガープリント付きフレームに対応する1組のビットのインデックス部分(例、最初の24ビット)を置換する。いくつかの実施形態において、このインデックス部分を使用して、前述したように、1つまたは複数の転置インデックスで参照コンテンツ・アイテムを見つける。いくつかの実施形態において、歪みモジュール510は、フィンガープリント付きフレームのインデックス部分を1度に1ビットずつ置換する。たとえば、フレームが6ビット「010111」を使用して表され、インデックス部分が最初の3ビット、たとえば、「010」を使用して表されると仮定する。この実施例では、歪みモジュール510は、インデックス部分を1度に1ビットずつ置換して、次の歪みの組を生成することができる。すなわち、「000」、「011」、「110」。フレームに対応する残りの3ビット、たとえば、「111」にこれらの歪みをプリペンドして、歪みのある次の組のフィンガープリント付きフレームを生成することができる。すなわち、「000111」、「001111」、「011111」、「100111」、「101111」、「110111」および「111111」である。歪みのあるこれらのフィンガープリント付きフレームのそれぞれを使用して、前述したように、1つまたは複数の参照コンテンツ・アイテムを特定し、その参照コンテンツ・アイテムのどの部分が一致するコンテンツを含むかどうかを決定することができる。いくつかの実施形態において、歪みモジュール510は、フィンガープリント付きフレームのインデックス部分を1度に複数ビット(例、2ビット)ずつ置換して、追加の歪みフィンガープリントフレームを生成し、一致するコンテンツを特定する。上記の実施例では、歪みモジュール510は、インデックス部分「010」を1度に2ビットずつ置換して、次の歪みの組を生成することができる。すなわち、「001」、「111」および「100」である。いくつかの実施形態において、歪みモジュール510は、インデックス部分だけを歪ませるのではなく、フィンガープリント付きフレームに対応するビットのすべてを置換する。いくつかの実施形態において、歪みモジュール510は、1組のビットにおける置換される部分(またはビットの数)を抑制する。たとえば、いくつかの実施形態において、フィンガープリント付きフレームについて一致を見つけようとするときに置換される部分(またはビットの数)は、中央処理装置(CPU)の使用量によって変わることがある。一実施例では、歪みモジュール510は、CPUの使用量が閾値以内のときにはフレームの最初の24ビットを置換することができ、CPUの使用量が閾値に達したときには、歪みモジュール510は、順列をフレームの最初の16ビットまで減少させることができる。
【0081】
このような順列は、一般に、2つのコンテンツ・アイテムの一致する部分を決定するときに評価されるコンテンツの量を増やすことによって、分析されるテスト・コンテンツ・アイテムに存在するかもしれない歪みを考慮する。しかし、ある場合には、システムの性能を改善するために、評価されるコンテンツの量を調節するためのさまざまなアプローチを適用してもよい。たとえば、いくつかの実施形態において、歪みは、閾値の中央処理装置(CPU)の使用量に達するまで(例、70パーセント、75パーセント等)、段階的に生成されてテストすることもできる。たとえば、フィンガープリント付きフレームを、まず歪みなしで評価してもよい。一致が見つからなければ、フィンガープリント付きフレームを、1度に1ビットずつ置換して歪ませてもよい。この順列を使用して一致が見つからなければ、フィンガープリント付きフレームを、1度に2ビットずつ置換して歪ませてもよい。いくつかの実施形態において、閾値のクエリタイム(例、150ミリ秒、200ミリ秒等)に達するまで、歪みを段階的に生成してテストすることができる。このような実施形態では、閾値のクエリタイムに達したときに、照合プロセスが中止する。述べたように、フィンガープリントは、コンテンツの任意の長さ(例、コンテンツの1秒)にわたる一連のフレーム(例、16フレーム)に対応させることができる。いくつかの実施形態において、フィンガープリントに対応する16のフィンガープリント付きフレームのそれぞれを評価する代わりに、歪みモジュール510は、フィンガープリント付きフレームのうちの1つまたは複数の評価をスキップするように構成することができる(例、15フレームをスキップして、フィンガープリントに対応する16番目のフレームのみを評価する)。いくつかの実施形態において、フィンガープリントを評価するとき、照合モジュール502は、フィンガープリントを、1組のより小さなチャンクにセグメント化するように構成することができ、その1組の中のチャンクのそれぞれを、一般的に公知の並列処理手法を使用して並列処理することができる。
【0082】
図10は、本開示の種々実施形態に係る、コンテンツのフィンガープリントを作成するための例示的なプロセス1000を示す。特に記載のない限り、本明細書で述べる種々実施形態の範囲内において、追加のステップ、より少ないステップまたは代替ステップを、同様な順序もしくは他の順序で、または並行して行うことができることは理解されるべきである。
【0083】
ブロック1002で、複数の映像フレームを有するテスト・コンテンツ・アイテムが取得される。ブロック1004で、テスト・コンテンツ・アイテムに対応する1組の映像フレームに基づいて、少なくとも1つの映像フィンガープリントが生成される。ブロック1006で、映像フィンガープリントの少なくとも一部分を使用して、少なくとも1つの参照コンテンツ・アイテムが決定される。ブロック1008で、テスト・コンテンツ・アイテムの映像フィンガープリントおよび参照コンテンツ・アイテムの1つまたは複数の映像フィンガープリントに少なくとも部分的に基づいて、テスト・コンテンツ・アイテムの少なくとも1つの部分が参照コンテンツ・アイテムの少なくとも1つの部分に一致するとの決定が行われる。
【0084】
図11は、本開示の種々実施形態に係る、異なるタイプのフィンガープリントを使用してコンテンツを照合するための例示的なプロセス1100を示す。特に記載のない限り、本明細書で述べる種々実施形態の範囲内において、追加のステップ、より少ないステップまたは代替ステップを、同様な順序もしくは他の順序で、または並行して行うことができることは理解されるべきである。
【0085】
ブロック1102で、テスト・コンテンツ・アイテムの1つまたは複数の第1フィンガープリントおよび参照コンテンツ・アイテムの1つまたは複数の第1フィンガープリントを使用して、テスト・コンテンツ・アイテムの少なくとも1つの部分を参照コンテンツ・アイテムの少なくとも1つの部分に対して評価する。第1フィンガープリントは、第1タイプのメディアに対応する。ブロック1104で、少なくとも1つの検証基準が満たされているとの決定が行われる。ブロック1106で、テスト・コンテンツ・アイテムの1つまたは複数の第2フィンガープリントおよび参照コンテンツ・アイテムの1つまたは複数の第2フィンガープリントを使用して、テスト・コンテンツの部分を参照コンテンツの部分に対して評価する。第2フィンガープリントは、第1タイプのメディアとは異なる第2タイプのメディアに対応する。
【0086】
図12は、本開示の種々実施形態に係る、歪みフィンガープリントを使用してコンテンツを照合するための例示的なプロセス1200を示す。特に記載のない限り、本明細書で述べる種々実施形態の範囲内において、追加のステップ、より少ないステップまたは代替ステップを、同様な順序もしくは他の順序で、または並行して行うことができることは理解されるべきである。
【0087】
ブロック1202で、テスト・コンテンツ・アイテムに対応する1組のフレームに基づいて、少なくとも1つのフィンガープリントが生成される。ブロック1204で、フィンガープリントの少なくとも一部分を使用して、1組の歪みフィンガープリントが生成される。ブロック1206で、1組の歪みフィンガープリントを使用して1つまたは複数の参照コンテンツ・アイテムが決定され、テスト・コンテンツ・アイテムは、一致するコンテンツを特定するために少なくとも1つの参照コンテンツ・アイテムに対して評価される。
【0088】
本開示の種々実施形態に関連して、他の多くの用途、アプリケーション、および/または変型が存在できることが想定される。たとえば、ある場合において、ユーザは、開示される技術を利用するためにオプトインするか否かを選ぶことができる。開示される技術は、さまざまなプライバシー設定および嗜好を確実に維持することもでき、個人情報の漏洩を防止することができる。別の例では、本開示の種々実施形態は、経時的に学習し、改善し、および/または改良することができる。
【0089】
ソーシャル・ネットワーキング・システム‐例示的な実施態様
図13は、本開示の一実施形態に係る、さまざまなシナリオで利用することのできる例示的なシステム1300のネットワーク図である。システム1300は、1つまたは複数のユーザ・デバイス1310、1つまたは複数の外部システム1320、ソーシャル・ネットワーキング・システム(またはサービス)1330、およびネットワーク1350を含む。一実施形態において、上述の実施形態と関連して説明したソーシャル・ネットワーキング・サービス、プロバイダ、および/またはシステムを、ソーシャル・ネットワーキング・システム1330として実装してもよい。説明の便宜上、
図13に示すシステム1300の実施形態は、単一の外部システム1320および単一のユーザ・デバイス1310を含む。ただし、他の実施形態において、システム1300は、より多くのユーザ・デバイス1310および/またはより多くの外部システム1320を含んでいてもよい。特定の実施形態においては、ソーシャル・ネットワーキング・システム1330がソーシャル・ネットワーク・プロバイダにより運用されるのに対し、外部システム1320は、異なるエンティティにより運用可能である点において、ソーシャル・ネットワーキング・システム1330から分離されている。ただし、種々実施形態において、ソーシャル・ネットワーキング・システム1330および外部システム1320は、協調して動作することにより、ソーシャル・ネットワーキング・システム1330のユーザ(またはメンバー)にソーシャル・ネットワーキング・サービスを提供する。この意味において、ソーシャル・ネットワーキング・システム1330は、プラットフォームまたはバックボーンを提供し、これを外部システム1320等の他のシステムが利用して、インターネット全体でユーザにソーシャル・ネットワーキング・サービスおよび機能を提供するようにしてもよい。
【0090】
ユーザ・デバイス1310は、ユーザからの入力を受け付けるとともにネットワーク1350を介してデータを送受信可能な1つまたは複数のコンピューティング・デバイス(またはシステム)を備える。一実施形態において、ユーザ・デバイス1310は、たとえばMicrosoft Windows(登録商標)互換オペレーティング・システム(OS)、Apple OS X、および/またはLinux(登録商標)ディストリビューションを実行する従来のコンピュータ・システムである。別の実施形態において、ユーザ・デバイス1310としては、スマートフォン、タブレット、携帯情報端末(PDA)、携帯電話、ラップトップ・コンピュータ、ウェアラブル・デバイス(例、眼鏡、腕時計、ブレスレット等)、カメラ、器具等、コンピューティング・デバイスまたはコンピュータ機能を有するデバイスが可能である。ユーザ・デバイス1310は、ネットワーク1350を介して通信を行うように構成されている。ユーザ・デバイス1310は、たとえば、該ユーザ・デバイス1310のユーザによるソーシャル・ネットワーキング・システム1330との相互作用を可能にするブラウザ・アプリケーション等のアプリケーションを実行可能である。別の実施形態において、ユーザ・デバイス1310は、iOSおよびANDROID(登録商標)等、ユーザ・デバイス1310のネイティブオペレーティング・システムが提供するアプリケーション・プログラミング・インタフェース(API)を通して、ソーシャル・ネットワーキング・システム1330と相互作用する。ユーザ・デバイス1310は、有線通信システムおよび/または無線通信システムを用いることにより、ローカル・エリア・ネットワークおよび/またはワイド・エリア・ネットワークの任意の組み合わせを含み得るネットワーク1350を介して、外部システム1320およびソーシャル・ネットワーキング・システム1330と通信するように構成されている。
【0091】
一実施形態において、ネットワーク1350は、標準的な通信技術およびプロトコルを使用する。このため、ネットワーク1350には、イーサネット(登録商標)、802.11、ワールドワイド・インターオペラビリティ・フォー・マイクロウェーブ・アクセス(WiMAX)、3G、4G、CDMA、GSM(登録商標)、LTE、デジタル・サブスクライバ・ライン(DSL)等の技術を用いたリンクを含み得る。同様に、ネットワーク1350で用いられるネットワーキング・プロトコルとしては、マルチ・プロトコル・ラベル・スイッチング(MPLS)、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)、ユーザ・データグラム・プロトコル(UDP)、ハイパーテキスト転送プロトコル(HTTP)、簡易メール転送プロトコル(SMTP)、ファイル転送プロトコル(FTP)等が挙げられる。ネットワーク1350上で交換されるデータは、ハイパーテキスト・マークアップ言語(HTML)および拡張マークアップ言語(XML)を含む技術およびフォーマットまたは技術もしくはフォーマットを用いて表すことができる。また、全部または一部のリンクは、セキュアソケットレイヤ(SSL)、トランスポート・レイヤ・セキュリティ(TLS)、およびインターネット・プロトコル・セキュリティ(IPsec)等の従来の暗号化技術を用いて暗号化可能である。
【0092】
一実施形態において、ユーザ・デバイス1310は、外部システム1320およびソーシャル・ネットワーキング・システム1330から受信したマークアップ言語ドキュメント1314をブラウザ・アプリケーション1312で処理することにより、外部システム1320および/またはソーシャル・ネットワーキング・システム1330からのコンテンツを表示するようにしてもよい。マークアップ言語ドキュメント1314は、コンテンツおよび該コンテンツの書式設定または体裁を記述した1つまたは複数の命令を識別する。マークアップ言語ドキュメント1314に含まれる命令を実行することにより、ブラウザ・アプリケーション1312は、マークアップ言語ドキュメント1314により記述されたフォーマットまたは体裁で識別コンテンツを表示する。たとえば、マークアップ言語ドキュメント1314には、外部システム1320およびソーシャル・ネットワーキング・システム1330から読み出されたテキストおよび画像データまたはテキストもしくは画像データを含む複数のフレームを有するウェブ・ページを生成および表示する命令を含む。種々実施形態において、マークアップ言語ドキュメント1314は、拡張マークアップ言語(XML)データ、拡張ハイパーテキスト・マークアップ言語(XHTML)データ等のマークアップ言語データを含むデータ・ファイルを備える。また、マークアップ言語ドキュメント1314は、JavaScript(登録商標)オブジェクト表記法(JSON)データ、JSON with padding(JSONP)、およびJavaScriptデータを含むことにより、外部システム1320とユーザ・デバイス1310との間のデータ交換を容易化するようにしてもよい。ユーザ・デバイス1310上のブラウザ・アプリケーション1312は、JavaScriptコンパイラを用いて、マークアップ言語ドキュメント1314を復号化するようにしてもよい。
【0093】
また、マークアップ言語ドキュメント1314は、FLASH(商標)またはUnity(商標)アプリケーション、Silverlight(商標)アプリケーション・フレームワーク等のアプリケーションまたはアプリケーション・フレームワークを含んでいてもよいし、これらとリンクしていてもよい。
【0094】
また、一実施形態において、ユーザ・デバイス1310は、該ユーザ・デバイス1310のユーザがソーシャル・ネットワーキング・システム1330にログインしたかどうかを示すデータを含む1つまたは複数のクッキー1316を含むことにより、ソーシャル・ネットワーキング・システム1330からユーザ・デバイス1310に伝達されたデータの変更ができるようになっていてもよい。
【0095】
外部システム1320は、ネットワーク1350を用いてユーザ・デバイス1310に伝達される1つまたは複数のウェブ・ページ1322a、1322bを含む1つまたは複数のウェブ・サーバを含む。外部システム1320は、ソーシャル・ネットワーキング・システム1330から分離されている。たとえば、外部システム1320が第1のドメインと関連付けられている一方、ソーシャル・ネットワーキング・システム1330は、別個のソーシャル・ネットワーキングドメインと関連付けられている。外部システム1320に含まれるウェブ・ページ1322a、1322bは、コンテンツを識別するとともに該識別コンテンツの書式設定または体裁を指定する命令を含むマークアップ言語ドキュメント1314を含む。前述したように、多数の変型および他の可能性が可能であることは理解されるべきである。
【0096】
ソーシャル・ネットワーキング・システム1330は、複数のユーザを含み、ソーシャル・ネットワークのユーザに対して該ソーシャル・ネットワークの他のユーザと通信および相互作用する能力を提供する、該ソーシャル・ネットワーク用の1つまたは複数のコンピューティング・デバイスを含む。場合によっては、グラフ、すなわちエッジおよびノードを含むデータ構造により、ソーシャル・ネットワークを表すことができる。ソーシャル・ネットワークは、データベース、オブジェクト、クラス、メタ要素、ファイル、またはその他任意のデータ構造を含むが、これらに限定されない、他のデータ構造を用いて表すこともできる。ソーシャル・ネットワーキング・システム1330は、オペレータにより運営、管理、または制御されるようになっていてもよい。ソーシャル・ネットワーキング・システム1330のオペレータは、人間、自動化アプリケーション、またはコンテンツの管理、ポリシーの調整、ソーシャル・ネットワーキング・システム1330内の利用状況総計値の収集を行う一連のアプリケーションであってもよい。オペレータは、任意の種類が用いられるようになっていてもよい。
【0097】
ユーザは、ソーシャル・ネットワーキング・システム1330に参加した後、ソーシャル・ネットワーキング・システム1330のつながりたい任意数の他ユーザとのつながりを追加するようにしてもよい。本明細書において、用語「友達」は、ユーザがソーシャル・ネットワーキング・システム1330を介して、つながり、関連性、または関係を形成した、ソーシャル・ネットワーキング・システム1330のその他任意のユーザを表す。たとえば、一実施形態において、ソーシャル・ネットワーキング・システム1330のユーザがソーシャル・グラフのノードとして表される場合、用語「友達」は、2つのユーザ・ノード間に形成され、これら2つのユーザ・ノードを直接つなげるエッジを表し得る。
【0098】
つながりは、ユーザ(たとえば、同じ教育機関の同窓生であるユーザ)の共通特性に基づいて、ユーザが明示的に追加してもよいし、ソーシャル・ネットワーキング・システム1330が自動的に作成するようにしてもよい。たとえば、第1のユーザは、友達となる特定の他ユーザを具体的に選択する。ソーシャル・ネットワーキング・システム1330におけるつながりは通例、両方向であるが、これは必須ではないため、用語「ユーザ」および「友達」は、枠組みによって決まる。ソーシャル・ネットワーキング・システム1330のユーザ間のつながりは通例、双方向(「2方向」)すなわち「相互」であるが、単方向すなわち「1方向」であってもよい。たとえば、ボブ(Bob)およびジョー(Joe)がともにソーシャル・ネットワーキング・システム1330のユーザであり、互いにつながっている場合、ボブおよびジョーは、互いのつながりである。一方、ボブがジョーとつながって、ジョーによりソーシャル・ネットワーキング・システム1330に伝達されたデータを見たいものの、ジョーが相互のつながりを形成したくない場合は、単方向のつながりが確立されるようになっていてもよい。ユーザ間のつながりは、直接的なつながりであってもよい。ただし、ソーシャル・ネットワーキング・システム1330のいくつかの実施形態によれば、つながりは、1つまたは複数のつながりレベルまたは分離度によって、間接的にすることができる。
【0099】
ユーザ間のつながりの確立および維持ならびにユーザ間の相互作用の許可に加えて、ソーシャル・ネットワーキング・システム1330は、該ソーシャル・ネットワーキング・システム1330によりサポートされたさまざまな種類のアイテムに対するアクションをユーザが起こせるようにする。これらのアイテムには、ソーシャル・ネットワーキング・システム1330のユーザが属し得るグループまたはネットワーク(すなわち、人々、エンティティ、およびコンセプトのソーシャル・ネットワーク)、ユーザが関心を示す可能性があるイベントまたはカレンダ・エントリ、ユーザがソーシャル・ネットワーキング・システム1330を介して使用可能なコンピュータ・ベースのアプリケーション、ソーシャル・ネットワーキング・システム1330が提供するサービスまたはソーシャル・ネットワーキング・システム1330を通してユーザがアイテムの売買を行える取引、およびユーザがソーシャル・ネットワーキング・システム1330上またはソーシャル・ネットワーキング・システム1330外で実行可能な広告との相互作用、を含んでいてもよい。これらは、ユーザがソーシャル・ネットワーキング・システム1330上でアクションを起こすことができるアイテムのわずかな例に過ぎず、その他多くが可能である。ユーザは、ソーシャル・ネットワーキング・システム1330もしくは外部システム1320にて表し得るあらゆるもの、ソーシャル・ネットワーキング・システム1330とは別個のあらゆるもの、またはネットワーク1350を介してソーシャル・ネットワーキング・システム1330に結合されたあらゆるものと相互作用可能である。
【0100】
また、ソーシャル・ネットワーキング・システム1330は、多様なエンティティをリンク可能である。たとえば、ソーシャル・ネットワーキング・システム1330は、API、ウェブサービス、または他の通信チャンネルを通して、ユーザの互いの相互作用および外部システム1320または他のエンティティとの相互作用を可能にする。ソーシャル・ネットワーキング・システム1330は、複数のエッジにより相互につなげられた複数のノードを含む「ソーシャル・グラフ」を生成して保持する。ソーシャル・グラフの各ノードは、別のノードに作用可能なエンティティおよび/または別のノードが作用し得るエンティティを表していてもよい。ソーシャル・グラフは、さまざまな種類のノードを含んでいてもよい。ノードの種類の例としては、ユーザ、人間以外のエンティティ、コンテンツ・アイテム、ウェブ・ページ、グループ、アクティビティ、メッセージ、コンセプト、およびソーシャル・ネットワーキング・システム1330のオブジェクトにより表し得るその他任意の事物が挙げられる。ソーシャル・グラフの2つのノード間のエッジは、ノード関係または一方のノードが他方のノードに対して行ったアクションに由来し得る2つのノード間の特定種類のつながりすなわち関連性を表していてもよい。場合により、ノード間のエッジは、重み付け可能である。エッジの重みは、ノード間のつながりすなわち関連性の強度等、エッジと関連付けられた属性を表し得る。エッジの種類が異なれば、異なる重みが可能である。たとえば、あるユーザが別のユーザに「いいね!」をした場合に作成されるエッジにある重みが与えられる一方、ユーザが別のユーザと友達になった場合に作成されるエッジには、異なる重みが与えられるようになっていてもよい。
【0101】
一例として、第1のユーザが第2のユーザを友達として識別した場合は、第1のユーザを表すノードと第2のユーザを表す第2のノードとをつなげるソーシャル・グラフのエッジが生成される。さまざまなノードが互いに関連または相互作用すると、ソーシャル・ネットワーキング・システム1330は、該さまざまなノードをつなげるエッジを修正して、上記関係および相互作用を反映する。
【0102】
また、ソーシャル・ネットワーキング・システム1330は、該ソーシャル・ネットワーキング・システム1330とのユーザの相互作用を増進させるユーザ生成コンテンツを含む。ユーザ生成コンテンツには、ユーザがソーシャル・ネットワーキング・システム1330に追加、アップロード、送信、または「投稿」可能なあらゆるものを含み得る。たとえば、ユーザは、ユーザ・デバイス1310からソーシャル・ネットワーキング・システム1330に投稿を伝達する。投稿には、近況等の文字情報、ロケーション情報、写真等の画像、映像、リンク、音楽、またはその他類似のデータおよび媒体またはデータもしくは媒体等のデータを含んでいてもよい。また、コンテンツは、第三者によってソーシャル・ネットワーキング・システム1330に追加されるようになっていてもよい。コンテンツ「アイテム」は、ソーシャル・ネットワーキング・システム1330のオブジェクトとして表される。このように、ソーシャル・ネットワーキング・システム1330のユーザは、さまざまな通信チャンネルを通して、さまざまな種類の媒体の文字およびコンテンツ・アイテムを投稿することにより、互いのコミュニケーションが促される。このようなコミュニケーションでは、ユーザの互いの相互作用が増大するとともに、ユーザがソーシャル・ネットワーキング・システム1330と相互作用する頻度が高くなる。
【0103】
ソーシャル・ネットワーキング・システム1330は、ウェブ・サーバ1332、API要求サーバ1334、ユーザ・プロフィール・ストア1336、つながりストア1338、アクション・ロガー1340、アクティビティ・ログ1342、および承認サーバ1344を含む。本発明の一実施形態において、ソーシャル・ネットワーキング・システム1330は、さまざまなアプリケーションを対象として、追加の構成要素、より少ない構成要素、または異なる構成要素を含んでいてもよい。ネットワーク・インタフェース、セキュリティ・メカニズム、ロード・バランサ、フェイルオーバ・サーバ、管理・ネットワーク運用コンソール等の他の構成要素については、システムの細部が分かり難くならないように、図示していない。
【0104】
ユーザ・プロフィール・ストア1336は、略歴、人口統計学的情報、およびユーザによる申告またはソーシャル・ネットワーキング・システム1330による推察が行われた職歴、学歴、趣味または好み、ロケーション等の他の種類の記述的情報等、ユーザ・アカウントに関する情報を保持する。この情報は、各ユーザが一意に識別されるように、ユーザ・プロフィール・ストア1336に記憶される。また、ソーシャル・ネットワーキング・システム1330は、異なるユーザ間の1つまたは複数のつながりを記述したデータをつながりストア1338に記憶する。つながり情報は、職歴、グループ・メンバーシップ、趣味、または学歴が類似または共通するユーザを示していてもよい。また、ソーシャル・ネットワーキング・システム1330には、ユーザによる他ユーザとの関係の指定を可能にする異なるユーザ間のユーザ定義のつながりを含む。たとえば、ユーザ定義のつながりによれば、ユーザは、友達、同僚、パートナー等、ユーザの実生活の関係と似た他ユーザとの関係を生成可能である。ユーザは、所定の種類のつながりから選択を行うようにしてもよいし、必要に応じて、自身のつながりの種類を規定するようにしてもよい。人間以外のエンティティ、バケット、クラスタ中心、画像、関心、ページ、外部システム、コンセプト等、ソーシャル・ネットワーキング・システム1330の他のノードとのつながりについても、つながりストア1338に記憶される。
【0105】
ソーシャル・ネットワーキング・システム1330は、ユーザが相互作用可能なオブジェクトに関するデータを保持する。このデータを保持するため、ユーザ・プロフィール・ストア1336およびつながりストア1338は、ソーシャル・ネットワーキング・システム1330により保持された対応する種類のオブジェクトのインスタンスを記憶する。各オブジェクト種類は、オブジェクトの種類に相応しい情報を記憶するのに適した情報フィールドを有する。たとえば、ユーザ・プロフィール・ストア1336は、ユーザのアカウントおよびユーザのアカウントに関する情報の記述に適したフィールドを備えたデータ構造を含む。特定種類の新たなオブジェクトが作成された場合、ソーシャル・ネットワーキング・システム1330は、対応する種類の新たなデータ構造を初期化し、一意のオブジェクト識別子を割り当てるとともに、必要に応じて、オブジェクトへのデータの追加を開始する。これは、たとえばユーザがソーシャル・ネットワーキング・システム1330のユーザとなり、ソーシャル・ネットワーキング・システム1330がユーザ・プロフィール・ストア1336のユーザ・プロフィールの新たなインスタンスを生成し、一意の識別子をユーザ・アカウントに割り当て、ユーザが提供する情報のユーザ・アカウントのフィールドへの入力を開始した場合に起こる可能性がある。
【0106】
つながりストア1338には、ユーザの他ユーザとのつながり、外部システム1320とのつながり、または他のエンティティとのつながりを記述するのに適したデータ構造を含む。また、つながりストア1338は、ユーザに関する情報へのアクセスを調整するユーザのプライバシー設定と併せて使用可能なユーザのつながりに対して、つながりの種類を関連付けるようにしてもよい。本発明の一実施形態において、ユーザ・プロフィール・ストア1336およびつながりストア1338は、連合データベースとして実装されていてもよい。
【0107】
つながりストア1338、ユーザ・プロフィール・ストア1336、およびアクティビティ・ログ1342に記憶されたデータによれば、ソーシャル・ネットワーキング・システム1330は、ノードを用いてさまざまなオブジェクトを識別するとともに、ノードをつなげるエッジを用いて異なるオブジェクト間の関係を識別するソーシャル・グラフを生成することができる。たとえば、ソーシャル・ネットワーキング・システム1330において、第1のユーザが第2のユーザとのつながりを確立した場合は、ユーザ・プロフィール・ストア1336からの第1のユーザおよび第2のユーザのユーザ・アカウントがソーシャル・グラフのノードとして作用するようになっていてもよい。つながりストア1338が記憶する第1のユーザと第2のユーザとの間のつながりは、第1のユーザおよび第2のユーザと関連付けられたノード間のエッジである。この例を続けて、第2のユーザは、ソーシャル・ネットワーキング・システム1330において、第1のユーザにメッセージを送信するようにしてもよい。記憶可能なメッセージを送信するアクションは、第1のユーザおよび第2のユーザを表すソーシャル・グラフの2つのノード間の別のエッジである。また、メッセージ自体は、第1のユーザおよび第2のユーザを表すノードとつながった別のノードとして、ソーシャル・グラフにおいて識別されるとともに含まれていてもよい。
【0108】
別の例において、第1のユーザは、ソーシャル・ネットワーキング・システム1330により保持された画像(または、ソーシャル・ネットワーキング・システム1330の外部の別のシステムにより保持された画像)において、第2のユーザにタグを付けるようにしてもよい。画像自体は、ソーシャル・ネットワーキング・システム1330のノードとして表されていてもよい。このタグ付けアクションによって、第1のユーザと第2のユーザとの間にエッジを作成するとともに、ユーザそれぞれと画像(これもソーシャル・グラフのノードである)との間にエッジを作成するようにしてもよい。さらに別の例において、ユーザがイベントへの出席を確認した場合は、ユーザおよびイベントは、ユーザ・プロフィール・ストア1336から得られるノードであり、イベントへの出席は、アクティビティ・ログ1342から読み出し可能なノード間のエッジである。ソーシャル・グラフを生成して保持することにより、ソーシャル・ネットワーキング・システム1330は、さまざまな種類のオブジェクトならびにこれらのオブジェクト間の相互作用およびつながりを記述したデータを含み、社会的な関連情報の宝庫となる。
【0109】
ウェブ・サーバ1332は、ネットワーク1350を介して、ソーシャル・ネットワーキング・システム1330を1つもしくは複数のユーザ・デバイス1310および/または1つもしくは複数の外部システム1320にリンクさせる。また、ウェブ・サーバ1332は、ウェブ・ページのほか、Java(登録商標)、JavaScript、Flash、XML等の他のウェブ関連コンテンツを提供する。ウェブ・サーバ1332は、ソーシャル・ネットワーキング・システム1330と1つまたは複数のユーザ・デバイス1310との間でメッセージの受信およびルーティングを行うメール・サーバ等のメッセージング機能を含んでいてもよい。メッセージとしては、インスタント・メッセージ、待ち行列型メッセージ(たとえば、電子メール)、テキストおよびSMSメッセージ、またはその他任意の適当なメッセージング・フォーマットが可能である。
【0110】
API要求サーバ1334によれば、1つまたは複数の外部システム1320およびユーザ・デバイス1310は、1つまたは複数のAPI機能を呼び出すことによって、ソーシャル・ネットワーキング・システム1330からのアクセス情報を呼び出すことができる。また、API要求サーバ1334によれば、外部システム1320は、APIを呼び出すことによって、ソーシャル・ネットワーキング・システム1330に情報を送ることができる。一実施形態において、外部システム1320は、ネットワーク1350を介して、API要求をソーシャル・ネットワーキング・システム1330に送信し、API要求サーバ1334は、このAPI要求を受信する。API要求サーバ1334は、このAPI要求と関連付けられたAPIを呼び出して要求を処理することにより、適当な応答を生成し、これをAPI要求サーバ1334が、ネットワーク1350を介して外部システム1320に伝達する。たとえば、API要求に応答して、API要求サーバ1334は、外部システム1320にログインしたユーザのつながり等、ユーザと関連付けられたデータを収集し、この収集データを外部システム1320に伝達する。別の実施形態において、ユーザ・デバイス1310は、外部システム1320と同じ様態で、APIを介してソーシャル・ネットワーキング・システム1330と通信する。
【0111】
アクション・ロガー1340は、ソーシャル・ネットワーキング・システム1330上および/またはソーシャル・ネットワーキング・システム1330外でのユーザ・アクションに関するウェブ・サーバ1332からの通信を受信可能である。また、アクション・ロガー1340は、ユーザ・アクションに関する情報をアクティビティ・ログ1342に入力することによって、ソーシャル・ネットワーキング・システム1330のユーザが該ソーシャル・ネットワーキング・システム1330内外で起こしたさまざまなアクションを該ソーシャル・ネットワーキング・システム1330が発見できるようにする。ソーシャル・ネットワーキング・システム1330上の別のノードに関して特定のユーザが起こした何れのアクションも、アクティビティ・ログ1342または類似のデータベース等のデータ・リポジトリに保持された情報によって、各ユーザのアカウントと関連付け可能である。ソーシャル・ネットワーキング・システム1330においてユーザが起こす識別および記憶対象のアクションの例としては、たとえば別のユーザへのつながりの追加、別のユーザへのメッセージの送信、別のユーザからのメッセージを読むこと、別のユーザと関連付けられたコンテンツの閲覧、別のユーザが投稿したイベントへの出席、画像の投稿、画像の投稿の試行、または別のユーザもしくは別のオブジェクトと相互作用するその他のアクションが挙げられる。ユーザがソーシャル・ネットワーキング・システム1330においてアクションを起こすと、該アクションがアクティビティ・ログ1342に記録される。一実施形態において、ソーシャル・ネットワーキング・システム1330は、エントリのデータベースとしてアクティビティ・ログ1342を維持する。ソーシャル・ネットワーキング・システム1330においてアクションが起こされると、該アクションのエントリがアクティビティ・ログ1342に追加される。アクティビティ・ログ1342は、アクション・ログと称される場合もある。
【0112】
また、ユーザ・アクションは、ソーシャル・ネットワーキング・システム1330とは別個の外部システム1320等、ソーシャル・ネットワーキング・システム1330の外部のエンティティ内で起こるコンセプトおよびアクションと関連付けられていてもよい。たとえば、アクション・ロガー1340は、外部システム1320とのユーザの相互作用を記述したデータをウェブ・サーバ1332から受信するようにしてもよい。この例において、外部システム1320は、ソーシャル・グラフの構造化されたアクションおよびオブジェクトに従って、ユーザの相互作用を報告する。
【0113】
ユーザが外部システム1320と相互作用するアクションの他の例としては、外部システム1320または別のエンティティに対する関心をユーザが示すこと、外部システム1320または外部システム1320内のウェブ・ページ1322aに関するコメントをユーザがソーシャル・ネットワーキング・システム1330に投稿すること、ユニフォーム・リソース・ロケータ(URL)または外部システム1320と関連付けられた他の識別子をユーザがソーシャル・ネットワーキング・システム1330に投稿すること、外部システム1320と関連付けられたイベントにユーザが出席すること、または外部システム1320に関するユーザによるその他任意のアクションが挙げられる。このように、アクティビティ・ログ1342には、ソーシャル・ネットワーキング・システム1330のユーザとソーシャル・ネットワーキング・システム1330とは別個の外部システム1320との間の相互作用を記述したアクションを含んでいてもよい。
【0114】
承認サーバ1344は、ソーシャル・ネットワーキング・システム1330のユーザの1つまたは複数のプライバシー設定を強制する。ユーザのプライバシー設定は、ユーザと関連付けられた特定の情報がどのように共有可能であるかどうかを決定する。プライバシー設定には、ユーザと関連付けられた特定の情報の仕様、および情報を共有可能な1つまたは複数のエンティティの仕様を含む。情報を共有可能なエンティティの例としては、他のユーザ、アプリケーション、外部システム1320、または潜在的に情報にアクセス可能な任意のエンティティが挙げられる。ユーザが共有可能な情報には、プロフィール写真、ユーザと関連付けられた電話番号、ユーザのつながり、つながりの追加やユーザ・プロフィール情報の変更等、ユーザが起こしたアクション等のユーザ・アカウント情報を含む。
【0115】
プライバシー設定の仕様は、さまざまな粒度レベルで提供されていてもよい。たとえば、プライバシー設定は、他のユーザと共有される特定の情報を識別していてもよく、勤務先の電話番号またはプロフィール写真、自宅の電話番号、およびステータスを含む個人情報等の特定の関連情報集合を識別する。または、プライバシー設定は、ユーザと関連付けられたすべての情報に適用可能である。特定の情報にアクセス可能なエンティティ集合の仕様についても、さまざまな粒度レベルで指定可能である。情報を共有できるさまざまなエンティティ集合としては、たとえばユーザのすべての友達、友達のすべての友達、すべてのアプリケーション、またはすべての外部システム1320が挙げられる。一実施形態によれば、エンティティ集合の仕様には、エンティティ一覧を含むことができる。たとえば、ユーザは、特定の情報へのアクセスが許可された外部システム1320の一覧を提供するようにしてもよい。別の実施形態によれば、仕様には、情報へのアクセスが許可されていない例外と併せてエンティティ集合を含むことができる。たとえば、ユーザは、該ユーザの勤務先情報にすべての外部システム1320がアクセスすることを許可するが、該勤務先情報へのアクセスが許可されていない外部システム1320の一覧を指定するようにしてもよい。特定の実施形態では、特定の情報へのアクセスが許可されていない例外の一覧を「ブロック・リスト」と称する。ユーザが指定するブロック・リストに属する外部システム1320は、プライバシー設定に指定された情報へのアクセスがブロックされる。情報の仕様の粒度および情報が共有されるエンティティの仕様の粒度は、さまざまな組み合わせが可能である。たとえば、すべての個人情報が友達と共有される一方、すべての勤務先情報が友達の友達と共有されるようになっていてもよい。
【0116】
承認サーバ1344は、ユーザと関連付けられた特定の情報にユーザの友達、外部システム1320、ならびに/または他のアプリケーションおよびエンティティがアクセス可能であるかどうかを決定するロジックを含む。外部システム1320は、ユーザの勤務先の電話番号等、ユーザのより私的かつ繊細な情報にアクセスするため、承認サーバ1344の承認が必要となる場合がある。ユーザのプライバシー設定に基づいて、承認サーバ1344は、ユーザが起こすアクションに関する情報等、ユーザと関連付けられた情報に対して、別のユーザ、外部システム1320、アプリケーション、または別のエンティティがアクセス可能であるかどうかを決定する。
【0117】
いくつかの実施形態において、ソーシャル・ネットワーキング・システム1330は、コンテンツ・プロバイダ・モジュール1346を含むことができる。コンテンツ・プロバイダ・モジュール1346は、たとえば、
図1のコンテンツ・プロバイダ・モジュール102として実装される。前述したように、多数の変型および他の可能性が可能であることは理解されるべきである。
【0118】
ハードウェアの実装態様
上記プロセスおよび特徴は、多種多様なネットワークおよびコンピュータ環境において、多種多様なマシンおよびコンピュータ・システム・アーキテクチャにより実装可能である。
図14は、本発明の一実施形態に係る、本明細書に記載の実施形態のうちの1つまたは複数の実装に使用可能なコンピュータ・システム1400の一例を示している。コンピュータ・システム1400には、本明細書に記載のプロセスおよび特徴を該コンピュータ・システム1400に実行させる命令セットを含む。また、コンピュータ・システム1400は、他のマシンにつなげられていてもよい(たとえば、ネットワーク化されていてもよい)。ネットワーク配置において、コンピュータ・システム1400は、クライアント/サーバ・ネットワーク環境におけるサーバ・マシンもしくはクライアント・マシンまたはピア・ツー・ピア(または、分散)ネットワーク環境におけるピア・マシンとして動作するようになっていてもよい。本発明の一実施形態において、コンピュータ・システム1400は、ソーシャル・ネットワーキング・システム1300、ユーザ・デバイス1310、および外部システム1420、またはその構成要素であってもよい。本発明の一実施形態において、コンピュータ・システム1400は、ソーシャル・ネットワーキング・システム1330の全部または一部を構成する多くのサーバのうちの1つであってもよい。
【0119】
コンピュータ・システム1400は、プロセッサ1402、キャッシュ1404、ならびにコンピュータ可読媒体に記憶され、本明細書に記載のプロセスおよび特徴を対象とした1つまたは複数の実行可能なモジュールおよびドライバを含む。また、コンピュータ・システム1400は、高性能入出力(I/O)バス1406および標準I/Oバス1408を含む。ホスト・ブリッジ1410がプロセッサ1402を高性能I/Oバス1406に結合させる一方、I/Oバス・ブリッジ1412が2つのバス1406および1408を互いに結合させる。高性能I/Oバス1406には、システム・メモリ1414および1つまたは複数のネットワーク・インタフェース1416が結合されている。コンピュータ・システム1400は、ビデオメモリおよび該ビデオメモリに結合された表示装置をさらに含んでもよい(図示せず)。標準I/Oバス1408には、マス・ストレージ1418およびI/Oポート1420が結合されている。コンピュータ・システム1400は、任意選択として、標準I/Oバス1408に結合されたキーボードおよびポインティング・デバイス、表示装置等の入出力装置(図示せず)を含んでいてもよい。これらの要素は総じて、カリフォルニア州サンタクララのインテル・コーポレーション社が製造するx86互換プロセッサ、カリフォルニア州サニーベールのアドバンスト・マイクロ・デバイセズ(AMD)社が製造するx86互換プロセッサ、およびその他任意の適当なプロセッサに基づくコンピュータ・システム等、広範囲のコンピュータ・ハードウェア・システムを表すことを意図しているが、これらに限定されない。
【0120】
ソフトウェア・アプリケーション(図示せず)に対するデータの入出力等、コンピュータ・システム1400の動作は、オペレーティング・システムが管理および制御する。オペレーティング・システムは、システム上で実行されるソフトウェア・アプリケーションとシステムのハードウェア構成要素との間のインタフェースを提供する。LINUXオペレーティング・システム、カリフォルニア州クパチーノのアップル・コンピュータ・インコーポレイテッド社(Apple Computer Inc.)から入手可能なApple Macintoshオペレーティング・システム、UNIX(登録商標)オペレーティング・システム、Microsoft(登録商標) Windows(登録商標)オペレーティング・システム、BSDオペレーティング・システム等、任意適当なオペレーティング・システムを使用可能である。また、他の実施態様も可能である。
【0121】
以下、コンピュータ・システム1400の要素について、より詳しく説明する。特に、ネットワーク・インタフェース1416は、コンピュータ・システム1400とイーサネット(たとえば、IEEE 802.3)ネットワーク、バックプレーン等の広範なネットワークのいずれかとの間の通信を提供する。マス・ストレージ1418は、上記識別された各演算システムにより実装される上記プロセスおよび特徴を実行するデータおよびプログラミング命令の記憶を提供する。一方、システム・メモリ1414(たとえば、DRAM)は、プロセッサ1402により実行される場合のデータおよびプログラミング命令の一時的な記憶を提供する。I/Oポート1420は、コンピュータ・システム1400に結合し得る付加的な周辺機器間の通信を提供する1つもしくは複数のシリアル通信ポートおよび/またはパラレル通信ポートであってもよい。
【0122】
コンピュータ・システム1400は、多様なシステム・アーキテクチャを含んでいてもよく、コンピュータ・システム1400のさまざまな構成要素が再配置されるようになっていてもよい。たとえば、キャッシュ1404は、プロセッサ1402とともにオンチップであってもよい。または、キャッシュ1404およびプロセッサ1402は、一体的に「プロセッサ・モジュール」としてパッケージングされていてもよく、プロセッサ1402は「プロセッサ・コア」と称される。さらに、本発明の特定の実施形態においては、上記構成要素のすべてを必要としなくてもよいし、すべてを含んでいなくてもよい。たとえば、高性能I/Oバス1406には、標準I/Oバス1408に結合された周辺機器が結合されていてもよい。また、いくつかの実施形態においては、バスが1つだけ存在し、コンピュータ・システム1400の構成要素がこの単一バスに結合されていてもよい。さらに、コンピュータ・システム1400は、付加的なプロセッサ、記憶装置、またはメモリ等、付加的な構成要素を含んでいてもよい。
【0123】
一般的に、本明細書に記載のプロセスおよび特徴は、オペレーティング・システムまたは特定のアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール、もしくは「プログラム」と称される一連の命令の一部として実装されていてもよい。たとえば、本明細書に記載の特定のプロセスは、1つまたは複数のプログラムを用いて実行してもよい。プログラムは通常、1つまたは複数のプロセッサにより読み出されて実行された場合に、本明細書に記載のプロセスおよび特徴を実行する演算をコンピュータ・システム1400に行わせる1つまたは複数の命令をコンピュータ・システム1400のさまざまなメモリおよび記憶装置に含む。本明細書に記載のプロセスおよび特徴は、ソフトウェア、ファームウェア、ハードウェア(たとえば、特定用途向け集積回路)、またはこれらの任意の組み合わせに実装されていてもよい。
【0124】
一実施態様において、本明細書に記載のプロセスおよび特徴は、分散コンピュータ環境において個別または一括に、コンピュータ・システム1400が動作させる一連の実行可能モジュールとして実装されていてもよい。上記モジュールは、ハードウェア、コンピュータ可読媒体(または、機械可読媒体)に記憶された実行可能モジュール、または両者の組み合わせによって実現されるようになっていてもよい。たとえば、これらのモジュールは、プロセッサ1402等、ハードウェア・システムのプロセッサにより実行される複数の命令または一連の命令を含んでいてもよい。最初は、マス・ストレージ1418等の記憶装置に一連の命令が記憶されていてもよい。ただし、一連の命令は、任意適当なコンピュータ可読記憶媒体に記憶可能である。さらに、一連の命令は、ローカルに記憶する必要はなく、ネットワーク・インタフェース1416を介して、ネットワーク上のサーバ等のリモート記憶装置から受信することも可能である。命令は、マス・ストレージ1418等の記憶装置からシステム・メモリ1414への複製の後、プロセッサ1402がアクセスして実行する。種々実施態様においては、並列処理環境における複数のサーバ等、1つまたは複数のロケーションの1つまたは複数のプロセッサによって、1つまたは複数のモジュールを実行可能である。
【0125】
コンピュータ可読媒体の例としては、揮発性および不揮発性メモリ・デバイス等の記録可能な種類の媒体、ソリッド・ステート・メモリ、フロッピー(登録商標)等のリムーバブル・ディスク、ハードディスク・ドライブ、磁気媒体、光ディスク(たとえば、コンパクト・ディスク・リード・オンリー・メモリ(CD ROM)、デジタル多用途ディスク(DVD))、その他類似する非一時的(または、一時的)の有形(または、無形)記憶媒体、またはコンピュータ・システム1400による実行によって、本明細書に記載のプロセスおよび特徴のうちのいずれか1つもしくは複数を実行する一連の命令の記憶、符号化、または伝達に適した任意の種類の媒体が挙げられるが、これらに限定されない。
【0126】
説明の便宜上、本明細書の十分な理解が得られるように、多くの具体的詳細を示した。ただし、当業者には、これらの具体的詳細がなくても、本開示の実施形態を実現可能であることが明らかとなろう。場合により、モジュール、構造、プロセス、特徴、およびデバイスをブロック図の形態で示すことによって、説明が分かり難くならないようにしている。他の例では、機能ブロック図およびフロー図を示すことにより、データおよび論理の流れを表している。ブロック図およびフロー図の構成要素(たとえば、モジュール、ブロック、構造、デバイス、特徴等)は、本明細書における明示的な説明および図示以外の様態でのさまざまな組み合わせ、分離、除去、並び替え、および置き換えがなされていてもよい。
【0127】
本明細書における「一実施形態」、「他の実施形態」、「一連の実施形態」、「いくつかの実施形態」、「種々実施形態」等の言及は、該実施形態に関連して説明した特定の特徴、設計、構造、または特性が本開示の少なくとも1つの実施形態に含まれることを意味する。本明細書のさまざまな箇所における表現「一実施形態において」等の出現は、必ずしもすべてが同じ実施形態を表してはおらず、相互に他の実施形態を除外する別個または別の実施形態でもない。さらには、「実施形態」等の明示的な言及の有無に関わらず、いくつかの実施形態においてはさまざまに組み合わせて包含可能であり、他の実施形態においてはさまざまに省略も可能である種々特徴を記載している。同様に、いくつかの実施形態では選好または要件となり得るが、他の実施形態ではなり得ない種々特徴を記載している。
【0128】
本明細書において使用する言語は、主として読み易さおよび教示の便宜上から選択しており、本発明に係る主題を描写または限定するようには選択していない場合がある。したがって、本発明の範囲は、この詳細な説明ではなく、これに基づく用途に由来する任意の請求項によって限定されるものとする。以上から、本発明の実施形態に関する開示は、以下の特許請求の範囲に示す本発明の範囲の例示であり、何ら限定的なものではない。