US20120046995A1 - Anonymous crowd comparison - Google Patents

Anonymous crowd comparison Download PDF

Info

Publication number
US20120046995A1
US20120046995A1 US12/759,749 US75974910A US2012046995A1 US 20120046995 A1 US20120046995 A1 US 20120046995A1 US 75974910 A US75974910 A US 75974910A US 2012046995 A1 US2012046995 A1 US 2012046995A1
Authority
US
United States
Prior art keywords
crowd
user
hash value
user group
poi
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/759,749
Inventor
Steven L. Petersen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Concert Technology Corp
Original Assignee
Waldeck Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Waldeck Technology LLC filed Critical Waldeck Technology LLC
Priority to US12/759,749 priority Critical patent/US20120046995A1/en
Assigned to KOTA ENTERPRISES, LLC reassignment KOTA ENTERPRISES, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PETERSEN, STEVEN L.
Assigned to WALDECK TECHNOLOGY, LLC reassignment WALDECK TECHNOLOGY, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: KOTA ENTERPRISES, LLC
Publication of US20120046995A1 publication Critical patent/US20120046995A1/en
Assigned to CONCERT DEBT, LLC reassignment CONCERT DEBT, LLC SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: WALDECK TECHNOLOGY, LLC
Assigned to CONCERT DEBT, LLC reassignment CONCERT DEBT, LLC SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: WALDECK TECHNOLOGY, LLC
Assigned to CONCERT DEBT, LLC reassignment CONCERT DEBT, LLC SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CONCERT TECHNOLOGY CORPORATION
Assigned to CONCERT DEBT, LLC reassignment CONCERT DEBT, LLC SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CONCERT TECHNOLOGY CORPORATION
Assigned to CONCERT TECHNOLOGY CORPORATION reassignment CONCERT TECHNOLOGY CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: WALDECK TECHNOLOGY, LLC
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0201Market modelling; Market analysis; Collecting market data
    • G06Q30/0204Market segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/52User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail for supporting social networking services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/02Protecting privacy or anonymity, e.g. protecting personally identifiable information [PII]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/029Location-based management or tracking services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/02Processing of mobility data, e.g. registration information at HLR [Home Location Register] or VLR [Visitor Location Register]; Transfer of mobility data, e.g. between HLR, VLR or external networks
    • H04W8/08Mobility data transfer
    • H04W8/16Mobility data transfer selectively restricting mobility data tracking

Definitions

  • the present disclosure relates to comparing user groups, such as crowds of users, to determine a degree of user overlap between the user groups in a manner that preserves privacy.
  • a mobile user can benefit from knowing how many people in his or her current crowd have been in previous crowds with the mobile user or how many people in his or her current crowd have frequented the mobile user's current location in the past.
  • a simple mechanism to implement this functionality would require tracking the locations of people over time.
  • this approach does not respect user privacy. As such, there is a need for a system and method that enables crowd comparison in a manner that maintains user privacy.
  • a hash value is obtained for a first user group, where the hash value includes a hash value component for a number of two-user permutations within the first user group.
  • a hash value is obtained for a second user group, where the hash value includes a hash value component for a number of two-user permutations within the second user group.
  • a degree of user overlap between the first and second user groups is determined based on a comparison of the hash value for the first user group and the hash value for the second user group.
  • the hash value for the first user group is compared to the hash value for the second user group to determine a number of matching component hash values.
  • a number of matching users in the first and second user groups is then determined based on the number of matching component hash values.
  • FIG. 1 illustrates a process for anonymously comparing two user groups based on hash values obtained for the two user groups according to one embodiment of the present disclosure
  • FIG. 2 illustrates a process for computing a hash value for a user group according to one embodiment of the present disclosure
  • FIGS. 3A through 3F graphically illustrate the process of FIG. 2 for an exemplary user group according to one embodiment of the present disclosure
  • FIG. 4 illustrates a process for determining a degree of user overlap between two user groups based on a comparison of hash values for the two user groups according to one embodiment of the present disclosure
  • FIG. 5 illustrates an exemplary system for providing anonymous crowd comparison according to one embodiment of the present disclosure
  • FIG. 6 illustrates the operation of the crowd server of FIG. 5 to compute and store a crowd hash value for a crowd of interest of a requestor according to one embodiment of the present disclosure
  • FIG. 7 illustrates the operation of the crowd server of FIG. 5 to compare a current crowd to one or more previously identified crowds of interest of a requestor according to one embodiment of the present disclosure
  • FIG. 8 illustrates the operation of the crowd server of FIG. 5 to provide Point of Interest (POI) recommendations to a requestor based on comparisons of current crowds at POIs and one or more previously identified crowds of interest of the requestor according to one embodiment of the present disclosure;
  • POI Point of Interest
  • FIG. 9 illustrates the operation of the crowd server of FIG. 5 to compare one or more historical crowds to one or more previously identified crowds of interest of a requestor according to one embodiment of the present disclosure
  • FIG. 10 illustrates the operation of the crowd server of FIG. 5 to provide POI recommendations to a requestor based on comparisons of historical crowds at POIs and one or more previously identified crowds of interest of the requestor according to one embodiment of the present disclosure
  • FIG. 11 illustrates the operation of the crowd server of FIG. 5 to characterize crowd patterns at a POI according to one embodiment of the present disclosure
  • FIG. 12 is a block diagram of the crowd server of FIG. 5 according to one embodiment of the present disclosure.
  • FIG. 13 is a block diagram of one of the mobile devices of FIG. 5 according to one embodiment of the present disclosure.
  • FIG. 14 is a block diagram of the subscriber device of FIG. 5 according to one embodiment of the present disclosure.
  • FIG. 15 is a block diagram of a computing device, such as a server, hosting the third-party service of FIG. 5 according to one embodiment of the present disclosure.
  • FIG. 1 illustrates a process for anonymously comparing two user groups to determine a degree of user overlap according to one embodiment of the present disclosure.
  • a user group is any group of associated users.
  • a user group may be a crowd of users that are spatially proximate one another, a distributed group of users such as users participating in a communication session (e.g., a conference call or a group chat session), or the like.
  • a hash value is obtained for a first user group (step 100 ).
  • the hash value for the first user group may be obtained by computing the hash value for the first user group or by obtaining a previously computed hash value for the first user group from storage.
  • the hash value for the first user group includes component hash values generated for a number of distinct two-user permutations for the first user group.
  • a “distinct two-user permutation” is a subset of two distinct users in a user group where ordering of users does not matter (i.e., a two-user permutation for users A and B is the same as, or not distinct from, a two-user permutation for users B and A).
  • the distinct two-user permutations for the first user group are user A and user B, user A and user C, and user B and user C.
  • the distinct two-user permutations for the first user group for which component hash values are generated and included in the hash value for the first user group may be all distinct two-user permutations for the first user group or all distinct two-user permutations for the first user group other than those including a requesting user from the first user group that initiated a process for generating the hash value for the first user group.
  • a hash value is obtained for a second user group (step 102 ).
  • the hash value for the second user group may be obtained by computing the hash value for the second user group or by obtaining a previously computed hash value for the second user group from storage.
  • the hash value for the second user group includes component hash values generated for a number of distinct two-user permutations for the second user group.
  • the distinct two-user permutations for the second user group for which component hash values are generated and included in the hash value for the second user group may be all distinct two-user permutations for the second user group or all distinct two-user permutations for the second user group other than those including a requesting user from the second user group that initiated a process for generating the hash value for the second user group. It should be noted that while two-user permutations are used herein, permutations of three or more users may alternatively be used to generate the component hash values of the hash values for the first and second user groups.
  • a degree of user overlap between the first and second user groups is determined based on a comparison of the hash values for the first and second user groups (step 104 ).
  • the component hash values for the first and second user groups are compared to determine a number of matching component hash values in the hash values for the first and second user groups.
  • a number of matching users in the first and second user groups is determined based on the number of matching component hash values.
  • the degree of user overlap between the first and second user groups may then be provided as the number of matching users, a percentage of matching users for a larger of the first and second user groups, or the like.
  • the degree of user overlap between the first and second user groups is then output to a requesting entity (step 106 ).
  • the requesting entity may be a user, a third-party service, or the like.
  • the degree of user overlap between the first and second user groups may be stored for subsequent use in any desired application.
  • FIG. 2 illustrates a process for computing a hash value for a user group according to one embodiment of the present disclosure.
  • a list of users in the user group is obtained (step 200 ).
  • the list of users includes a user identifier (ID) for each user in the user group.
  • the user IDs of the users in the user group may be, for example, names of the users, usernames or screen names of the users, e-mail addresses of the users, telephone numbers of the users, or the like.
  • a requesting user, or requestor is removed from the list of users, if applicable (step 202 ).
  • the requesting user is a user in the user group that initiated generation of the hash value for the user group.
  • step 202 Removing the requesting user from the list of users for the user group results in different hash values for the same user group for different requestors. This enhances security by preventing stored hash values for a first requestor to be directly compared to stored hash values for a second requestor to determine whether the first and second requestors are or have been in the same user groups. Note that step 202 is optional.
  • the list of users for the user group is sorted (step 204 ).
  • the list of users is sorted alphabetically.
  • Sorting the list of users ensures that the two-user permutations are canonical between user group hash instances. In other words, if two users A and B exist in a user group, the two-user permutation for users A and B will always be “A B” and not “B A.” This ensures that a component hash value for a two-user permutation for users A and B in a hash value for one user group will match a component hash value for a two-user permutation for the same two users in a hash value for another user group.
  • a list of all distinct two-user permutations for the sorted list of users for the user group is created (step 206 ).
  • a next two-user permutation from the list of distinct two-user permutations is then obtained (step 208 ). Note that for the first iteration, the next two-user permutation is the first two-user permutation in the list of distinct two-user permutations.
  • a hash value (referred to herein as a component hash value) is then computed for the two-user permutation using a predetermined hash function (step 210 ).
  • the predetermined hash function may be, for example, Secure Hash Algorithm-1 (SHA-1), but is not limited thereto.
  • the component hash value for the two-user permutation may be computed by concatenating the user IDs of the users in the two-user permutation and providing the concatenated user IDs as an input to the predetermined hash function.
  • the hash value returned by the predetermined hash function is then used as the component hash value for the two-user permutation.
  • step 212 A determination is then made as to whether the last two-user permutation has been processed (step 212 ). If not, the process returns to step 208 and is repeated.
  • the component hash values for the two-user permutations are concatenated to provide a concatenated hash value for the user group (step 214 ).
  • the concatenated hash value for the user group is compressed using a lossy compression algorithm to provide a hash value for the user group (step 216 ).
  • the lossy compression algorithm removes every Nth bit from the concatenated hash value to provide the hash value for the user group, where N is greater than or equal to 2.
  • the lossy compression algorithm removes every other bit from the concatenated hash value to provide the hash value for the user group. Lossy compression reduces the storage space needed to store the hash value for the user group. In addition, lossy compression further obfuscates user information by making it highly improbable that the system or an attacker can retrieve the exact concatenated hash value or exact component hash values. In other words, lossy compression thwarts dictionary attacks. Note that the aforementioned embodiments of the lossy compression algorithm are exemplary. Other types of lossy compression algorithms may be used, as will be appreciated by one of ordinary skill in the art upon reading this disclosure. Also note that step 216 is optional.
  • FIGS. 3A through 3F graphically illustrate the process of FIG. 2 for an exemplary user group.
  • FIG. 3A illustrates a list of users for the user group.
  • the list of users includes users C, B, A, and D.
  • user A is the requesting user that initiated generation of a hash value for the user group.
  • FIG. 3B illustrates the list of users for the user group after removal of the requestor (user A) and sorting.
  • FIG. 3C two-user permutations are created for the list of users from FIG. 3B .
  • the two-user permutations include a two-user permutation for users B and C, a two-user permutation for users B and D, and a two-user permutation for users C and D.
  • component hash values are computed for the two-user permutations and concatenated to provide a concatenated hash value for the user group.
  • the concatenated hash value is then compressed using a lossy compression algorithm to provide a hash value for the user group, as illustrated in FIG. 3F .
  • FIG. 4 illustrates a process for determining a degree of user overlap between two user groups by comparing hash values generated for the two user groups using the process of FIG. 2 according to one embodiment of the present disclosure.
  • a counter is initialized to zero (step 300 ).
  • a next component hash value is obtained from the hash value for the first user group (step 302 ).
  • the next component hash value is the first component hash value.
  • the hash function used to generate the component hash values provides 160-bit hash values and lossy compression removes every other bit such that, after lossy compression, each component hash value is 80 bits.
  • the next component hash value is the next 80 bits of the hash value for the first user group.
  • next component hash value is then obtained from the hash value for the second user group (step 304 ). Note that, for the first iteration, the next component hash value from the hash value for the second user group is the first component hash value from the hash value for the second user group.
  • the component hash value from the hash value for the first user group is compared to the component hash value from the hash value for the second user group to determine whether there is a match (step 306 ).
  • the component hash values match if they are exactly the same. Matching hash values indicate that the corresponding two-user permutations from the first and second user groups also match. If the component hash values match, the counter is incremented (step 308 ) and then the process proceeds to step 312 . If the component hash values do not match, a determination is made as to whether the last component hash value from the hash value for the second user group has been processed (step 310 ). If not, the process returns to step 304 and is repeated for the next component hash value from the hash value for the second user group. If the last component hash value from the hash value for the second user group has been processed, the process proceeds to step 312 .
  • step 312 a determination is made as to whether the last component hash value from the hash value for the first user group has been processed (step 312 ). If not, the process returns to step 302 and is repeated for the next component hash value from the hash value for the first user group. Once all of the component hash values from the hash value for the first user group have been processed, the counter corresponds to a number of matching component hash values, which is also the number of matching two-user permutations for the first and second user groups.
  • a number of matching users in the first and second user groups is determined based on the number of matching two-user permutations (step 314 ).
  • the number of matching users is determined based on the following choose-2 function:
  • the number of matching users is determined by setting the choose-2 function C(n,2) equal to the number of matching two-user permutations (i.e., the counter value) as follows:
  • n can be solved for or otherwise determined and corresponds to the number of matching users for the first and second user groups. As such, if for example the number of matching two-user permutations is 6, then the number of matching users is determined based on the equation:
  • a number of users in a largest of the first and second user groups is determined (step 316 ). More specifically, in one embodiment, a number of two-user permutations for the first and second user groups are determined. For example, if the component hash values are 80 bit values, the number of two-user permutations in the first user group may be determined by dividing the number of bits in the hash value for the first user group by 80. Likewise, the number of two-user permutations in the second user group may be determined by dividing the number of bits in the hash value for the second user group by 80. The user group having the largest number of two-user permutations is identified as the largest of the first and second user groups.
  • a percentage of matching users for the largest user group is then computed (step 318 ). The percentage of matching users for the largest user group may be computed based on the following equation:
  • % ⁇ ⁇ MatchingUsers number_of ⁇ _matching ⁇ _users number_of ⁇ _users ⁇ _in ⁇ _largest ⁇ _user ⁇ _group ⁇ 100.
  • the percentage of matching users may then be output and/or stored as the degree of user overlap for the first and second user groups.
  • the degree of user overlap may be expressed as any value that is a function of (including being equal to) the number of matching users between the first and second user groups.
  • FIG. 5 illustrates an exemplary system 10 that operates to anonymously compare user groups according to one embodiment of the present disclosure.
  • the user groups are crowds formed or otherwise determined by a crowd server 12 .
  • the system 10 includes the crowd server 12 , a number of mobile devices 14 - 1 through 14 -N having associated users 16 - 1 through 16 -N, a subscriber device 18 having an associated subscriber 20 , and a third-party service 22 communicatively coupled via a network 24 .
  • the network 24 may be a Local Area Network (LAN), Wide
  • the network 24 is a distributed public network such as the Internet.
  • the crowd server 12 includes a crowd formation function 26 , a crowd hash computing function 28 , a crowd comparison function 30 , and a crowd hash repository 32 .
  • the crowd formation function 26 , the crowd hash computing function 28 , and the crowd comparison function 30 are preferably implemented in software, but are not limited thereto.
  • the crowd formation function 26 generally operates to form and possibly maintain crowds of users. More specifically, in one embodiment, the mobile devices 14 - 1 through 14 -N provide location updates that define current locations of the users 16 - 1 through 16 -N over time.
  • the location updates may be provided from the mobile devices 14 - 1 through 14 -N directly to the crowd server 12 or provided from the mobile devices 14 - 1 through 14 -N to a location service that then reports the location updates to the crowd server 12 or otherwise enables the crowd server 12 to access the location updates.
  • the crowd formation function 26 uses the current locations of the users 16 - 1 through 16 -N to form crowds of the users 16 - 1 through 16 -N that are spatially proximate to one another. While not essential, for more detailed information regarding exemplary spatial crowd formation processes, the interested reader is directed to U.S.
  • the crowd hash computing function 28 generally operates to compute hash values for crowds of users formed by the crowd formation function 26 .
  • the crowd hash computing function 28 preferably utilizes the process of FIG. 2 to compute a hash value (i.e., a crowd hash value) for a crowd.
  • the crowd hash values for at least some crowds are stored in the crowd hash repository 32 .
  • the crowd hash repository 32 stores crowd hash values for crowds of interest to the users 16 - 1 through 16 -N.
  • the user 16 - 1 may determine that a current crowd of users in which the user 16 - 1 is currently located is a crowd of interest (e.g., a favorite crowd) and manually initiate computation and storage of a crowd hash value for that crowd.
  • the crowd hash for the crowd of interest to the user 16 - 1 may then be computed by the crowd hash computing function 28 and be stored in the crowd hash repository 32 as a crowd of interest (e.g., a favorite crowd) of the user 16 - 1 .
  • the crowd hash repository 32 may additionally or alternatively store crowd hash values for currently formed crowds (referred to herein as current crowds) and/or previously formed crowds (referred to herein as historical crowds).
  • the crowd comparison function 30 operates to anonymously compare crowds formed by the crowd formation function 26 by comparing corresponding crowd hash values. More specifically, the crowd comparison function 30 compares crowd hash values for crowds to determine a degree of user overlap between the crowds.
  • the crowd server 12 only stores the current locations of the users 16 - 1 through 16 -N, rather than a historical record of the locations of the users 16 - 1 through 16 -N.
  • the present disclosure is not limited thereto. Storage of crowd hash values for crowds enables comparison of historical crowds to one another or to a current crowd without the need to store historical records of the locations of the users 16 - 1 through 16 -N. In this manner, privacy of the users 16 - 1 through 16 -N is preserved.
  • the anonymous crowd comparison described herein enables a requestor to determine the degree of user overlap between two crowds but not the identities (or user IDs) of the users in those crowds.
  • the mobile devices 14 - 1 through 14 -N are mobile devices such as, for example, mobile smart phones (e.g., Apple® iPhone), laptop or notebook computers, tablet computers (e.g., Apple® iPad), or the like.
  • the mobile devices 14 - 1 through 14 -N include crowd clients 34 - 1 through 34 -N and location determination functions 36 - 1 through 36 -N.
  • the crowd client 34 - 1 is preferably implemented in software, but is not limited thereto.
  • the crowd client 34 - 1 generally operates to interact with the crowd server 12 .
  • the crowd client 34 - 1 operates to obtain the current location of the mobile device 14 - 1 from the location determination function 36 - 1 and send corresponding location updates to the crowd server 12 , either directly or indirectly.
  • the crowd client 34 - 1 preferably enables the user 16 - 1 to interact with the crowd server 12 to initiate storage of crowd hash values for crowds of interest to the user 16 - 1 .
  • the crowd client 34 - 1 may enable the user 16 - 1 to initiate anonymous crowd comparison of the crowds of interest for which corresponding crowd hash values were previously computed and stored to either current or historical crowds.
  • the crowd client 34 - 1 may additionally or alternatively enable the user 16 - 1 to request and receive Point of Interest (POI) recommendations based on anonymous crowd comparisons of the crowds of interest for which corresponding crowd hash values were previously computed and stored to either current or historical crowds at POIs within a desired geographic region.
  • POI Point of Interest
  • the location determination function 36 - 1 may generally be any software and/or hardware component enabled to determine the current location of the mobile device 14 - 1 .
  • the location determination function 36 - 1 may be a Global Positioning System (GPS) receiver.
  • GPS Global Positioning System
  • the subscriber device 18 may be any type of user device such as, for example, a personal computer, a mobile smart phone, a laptop or notebook computer, a tablet computer, or the like. In general, the subscriber device 18 enables the subscriber 20 to access the crowd server 12 preferably for a subscription fee. In this embodiment, the subscriber 20 is enabled to access the crowd server 12 via a web browser 38 and corresponding web interface of the crowd server 12 . However, rather than the web browser 38 , a custom application may be used to access the crowd server 12 . Via the crowd server 12 , the subscriber 20 may be enabled to monitor crowd patterns at one or more desired POIs.
  • the third-party service 22 may generally be any type of service that desires information regarding crowds of users.
  • the third-party service 22 may be a targeted advertising service.
  • the third-party service 22 may be enabled to monitor crowd patterns at one or more desired POIs and then utilize those crowd patterns to provide a desired service.
  • FIG. 6 illustrates the operation of the crowd server 12 of FIG. 5 to compute and store crowd hash values for crowds of interest to users.
  • the crowd server 12 may similarly compute and store crowd hash values for crowds of interest to the other users 16 - 2 through 16 -N.
  • the crowds of interest are favorite crowds.
  • the mobile device 14 - 1 sends a request to store the user's current crowd as a favorite crowd to the crowd server 12 (step 400 ).
  • the request is initiated by the user 16 - 1 when the user 16 - 1 is currently in a crowd that the user 16 - 1 deems to be a favorite crowd (i.e., a crowd that the user 16 - 1 likes).
  • the user 16 - 1 may additionally or alternatively initiate a request when the user 16 - 1 is in a crowd that the user 16 - 1 deems to be a crowd of interest (e.g., a crowd that he likes or a crowd that he dislikes).
  • the request is initiated by the user 16 - 1 manually, the present disclosure is not limited thereto.
  • the request may alternatively be initiated by the crowd client 34 - 1 of the mobile device 14 - 1 automatically in response to a predefined triggering event.
  • the crowd hash computing function 28 of the crowd server 12 obtains a current crowd in which the user 16 - 1 of the mobile device 14 - 1 is currently located from the crowd formation function 26 (step 402 ).
  • the crowd formation function 26 forms the current crowd of the user 16 - 1 reactively in response to the request.
  • the crowd formation function 26 may proactively form crowds and store corresponding crowd records that identify the users that are currently in those crowds. The crowd formation function 26 may then obtain the crowd in which the user 16 - 1 is currently located from storage.
  • the crowd hash computing function 28 of the crowd server 12 computes a crowd hash for the current crowd of the user 16 - 1 using the process of FIG. 2 (step 404 ). More specifically, in one embodiment, the crowd hash computing function 28 removes the user 16 - 1 from a list of users in the current crowd, sorts the list of users, and then creates all distinct two-user permutations for the sorted list of users. The crowd hash computing function 28 then computes a component hash value for each two-user permutation and concatenates the component hash values for the two-user permutations to provide a concatenated hash value for the current crowd. Lastly, the crowd hash computing function 28 compresses the concatenated hash value for the current crowd using a lossy compression algorithm to provide the crowd hash for the current crowd.
  • the crowd hash computing function 28 then stores the crowd hash for the current crowd in the crowd hash repository 32 as a crowd hash value of a favorite crowd of the user 16 - 1 (step 406 ).
  • the crowd hash value is stored in a crowd hash record that includes a record ID field that stores an ID for the crowd hash record, an owner field that identifies the user 16 - 1 as the owner of the crowd hash record, and a hash value field that stores the crowd hash value of the current crowd.
  • the crowd hash record may include a description field that stores a textual description of the current crowd for which the crowd hash value was computed, where the textual description may be provided by the user 16 - 1 (e.g., “Cool Crowd at Night Club X”). Still further, the crowd hash record may include a time field that stores a time at which the crowd hash value was computed and latitude and longitude fields that store a location of the current crowd for which the crowd hash was computed. The location of the current crowd may be computed using the current locations of the users in the crowd and, for example, a center of mass algorithm.
  • the crowd hash records stored by the crowd server 12 in the crowd hash repository 32 do not include any information (e.g., location, time, etc.) that may enable the system 10 or an attacker to directly correlate two crowd hash values generated for two different requestors to determine that those two different requestors were in the same crowd. Steps 400 through 406 may subsequently be repeated to compute and store crowd hash values for additional favorite crowds of the user 16 - 1 .
  • FIG. 7 illustrates the operation of the crowd server 12 to anonymously compare a current crowd to one or more previously identified crowds of interest (e.g., favorite crowds) of a user according to one embodiment of the present disclosure.
  • the mobile device 14 - 1 and particularly the crowd client 34 - 1 , sends a current crowd comparison request to the crowd server 12 (step 500 ).
  • the crowd comparison function 30 obtains a current crowd in which the user 16 - 1 is located from the crowd formation function 26 (step 502 ).
  • the crowd comparison function 30 then computes a crowd hash for the current crowd of the user 16 - 1 using the process of FIG. 2 (step 504 ).
  • the crowd comparison function 30 determines a degree of user overlap between the current crowd of the user 16 - 1 and one or more favorite crowds previously identified by the user 16 - 1 using the process of FIG. 4 (step 506 ). More specifically, for each of the favorite crowds of the user 16 - 1 , the crowd comparison function 30 determines a degree of user overlap between the current crowd of the user 16 - 1 and the favorite crowd of the user 16 - 1 based on a comparison of the crowd hash value of the current crowd computed in step 504 and a crowd hash value stored for the favorite crowd in the crowd hash repository 32 .
  • the crowd comparison function 30 then returns the degree of overlap between the current crowd and each of the favorite crowds of the user 16 - 1 to the mobile device 14 - 1 (step 508 ).
  • the crowd client 34 - 1 of the mobile device 14 - 1 presents the degree of overlap between the current crowd and each of the favorite crowds of the user 16 - 1 to the user 16 - 1 (step 510 ).
  • any current crowd that is relevant to the current crowd comparison request may be compared to the previously identified crowd(s) of interest of the user 16 - 1 .
  • the relevant current crowd may be the current crowd in which the user 16 - 1 is located (as in FIG. 7 ), a current crowd at a POI identified in the current crowd comparison request, a current crowd in a geographic region (e.g., an Area of Interest) identified by the current crowd comparison request, or the like.
  • FIG. 8 illustrates the operation of the crowd server 12 to provide POI recommendations based on anonymous crowd comparisons according to one embodiment of the present disclosure.
  • the mobile device 14 - 1 and more particularly the crowd client 34 - 1 , sends a POI recommendation request to the crowd server 12 (step 600 ).
  • the POI recommendation request may be manually initiated by the user 16 - 1 or automatically initiated by the crowd client 34 - 1 in response to a predefined triggering event such as, for example, detecting an Internet search query from the user 16 - 1 for nearby businesses.
  • the crowd hash computing function 28 obtains a list of relevant POIs (step 602 ).
  • the list of relevant POIs may include POIs within a defined geographic region such as, for example, a defined geographic region in which the user 16 - 1 is currently located (e.g., within 10 miles from the current location of the user 16 - 1 ) or a geographic region defined by the user 16 - 1 and included in the POI recommendation request (e.g., Raleigh, N.C.).
  • the crowd hash computing function 28 then obtains current crowds at the relevant POIs from the crowd formation function 26 (step 604 ).
  • the crowd hash computing function 28 computes a crowd hash value for each of the current crowds at the relevant POIs using the process of FIG. 2 (step 606 ). Then, for each current crowd, the crowd comparison function 30 determines a degree of user overlap between the current crowd and one or more favorite crowds previously identified by the user 16 - 1 using the process of FIG. 4 (step 608 ). More specifically, for each current crowd and each favorite crowd of the user 16 - 1 , the crowd comparison function 30 determines a degree of user overlap between the current crowd and the favorite crowd based on a comparison of the crowd hash value of the current crowd computed in step 606 and a crowd hash value stored for the favorite crowd in the crowd hash repository 32 .
  • the crowd comparison function 30 selects one or more of the relevant POIs to recommend to the user 16 - 1 based on the degrees of user overlap between the current crowds at the relevant POIs and the favorite crowd(s) of the user 16 - 1 (step 610 ). More specifically, in one embodiment, a relevant POI is selected to recommend to the user 16 - 1 if the degree of user overlap between a current crowd at the POI and at least one of the favorite crowds of the user 16 - 1 is greater than a predefined threshold (e.g., 75%).
  • the crowd comparison function 30 then returns the recommended POI(s) to the mobile device 14 - 1 (step 612 ) where the crowd client 34 - 1 presents the recommended POI(s) to the user 16 - 1 (step 614 ).
  • FIG. 9 illustrates the operation of the crowd server 12 to anonymously compare historical crowds to one or more previously identified crowds of interest (e.g., favorite crowds) of a user according to one embodiment of the present disclosure.
  • the crowd hash computing function 28 computes and stores crowd hash values for crowds over time (step 700 ). These crowds are referred to herein as historical crowds. More specifically, in one embodiment, the crowd hash computing function 28 periodically queries the crowd formation function 26 for crowds of users formed at that time, computes crowd hash values for those crowds, and stores the crowd hash values in the crowd hash repository 32 .
  • the crowd hash computing function 28 may compute and store crowd hash values for all crowds or only those crowds in one or more defined geographic areas (e.g., crowds at one or more defined POIs or within one or more defined Areas of Interest (AOIs)).
  • AOIs Areas of Interest
  • the mobile device 14 - 1 sends a historical crowd comparison request to the crowd server 12 (step 702 ).
  • the historical crowd comparison request is for a current location of the user 16 - 1 .
  • the historical crowd comparison request is for a POI or AOI defined or otherwise selected by the user 16 - 1 .
  • the historical crowd comparison request may be manually initiated by the user 16 - 1 or automatically initiated by the crowd client 34 - 1 in response to a triggering event.
  • the crowd comparison function 30 obtains crowd hash values for historical crowds that are relevant to the historical crowd comparison request (step 704 ).
  • the crowd hash values for the historical crowds are stored in the crowd hash repository 32 along with the locations of the historical crowds at the time the crowd hash values were computed.
  • the relevant historical crowds are historical crowds that were located at or near the current location of the user 16 - 1 .
  • the relevant historical crowds are historical crowds that were located at a POI or within an AOI defined by the historical crowd comparison request.
  • a time window may be defined for the historical crowd comparison request such that the relevant historical crowds are historical crowds for which the corresponding crowd hash values were computed during the defined time window.
  • the time window may be system-defined or defined by the user 16 - 1 and included in the historical crowd comparison request.
  • the time window may be an absolute time window such as, for example, the last week, the last month, the last year, Jan. 1, 2010 through Mar. 12, 2010, or the like.
  • the time window may be a reoccurring time window such as, for example, Fridays, weekdays from 10 AM-Noon, the first day of each month, or the like.
  • the crowd comparison function 30 determines a degree of user overlap between the historical crowd and each of one or more favorite crowds previously identified by the user 16 - 1 using the process of FIG. 4 (step 706 ). Then, in this embodiment, the crowd comparison function 30 combines the degrees of overlap for the historical crowds to provide one or more combined degrees of user overlap (step 708 ). More specifically, for each favorite crowd of the user 16 - 1 , the crowd comparison function 30 may combine (e.g., average) the degrees of user overlap between the historical crowds and the favorite crowd to provide a combined degree of user overlap for the favorite crowd. The combined degree of user overlap for each favorite crowd is then returned to the mobile device 14 - 1 (step 710 ). The crowd client 34 - 1 of the mobile device 14 - 1 then presents the combined degree of user overlap for each favorite crowd to the user 16 - 1 (step 712 ).
  • FIG. 10 illustrates the operation of the crowd server 12 to provide POI recommendations based on anonymous crowd comparisons according to another embodiment of the present disclosure.
  • the crowd hash computing function 28 computes and stores crowd hash values for crowds over time (step 800 ). These crowds are referred to herein as historical crowds. More specifically, in one embodiment, the crowd hash computing function 28 periodically queries the crowd formation function 26 for crowds of users formed at that time, computes crowd hash values for those crowds, and stores the crowd hash values in the crowd hash repository 32 .
  • the crowd hash computing function 28 may compute and store crowd hash values for all crowds or only those crowds in one or more defined geographic areas (e.g., crowds at one or more defined POIs or within one or more defined AOIs).
  • the mobile device 14 - 1 sends a POI recommendation request to the crowd server 12 (step 802 ).
  • the crowd hash computing function 28 obtains a list of relevant POIs (step 804 ).
  • the list of relevant POIs may include POIs within a defined geographic region such as, for example, a defined geographic region in which the user 16 - 1 is currently located (e.g., within 10 miles from the current location of the user 16 - 1 ) or a geographic region defined by the user 16 - 1 and included in the POI recommendation request (e.g., Raleigh, N.C.).
  • the crowd hash computing function 28 then obtains crowd hash values stored for historical crowds located at the relevant POIs from the crowd hash repository 32 (step 806 ).
  • a time window may be used such that the crowd hash values obtained for the relevant POIs are only those crowd hash values for historical crowds at the relevant POIs during a defined time window for the POI recommendation request.
  • the time window for the historical crowd comparison request may be defined by the historical crowd comparison request or may be system-defined.
  • the time window may be an absolute time window such as, for example, the last week, the last month, the last year, Jan. 1, 2010 through Mar. 12, 2010, or the like.
  • the time window may be a reoccurring time window such as, for example, Fridays, weekdays from 10 AM-Noon, the first day of each month, or the like.
  • the crowd comparison function 30 determines a degree of user overlap between the historical crowd and one or more favorite crowds previously identified by the user 16 - 1 using the process of FIG. 4 (step 808 ). More specifically, for each historical crowd and each favorite crowd of the user 16 - 1 , the crowd comparison function 30 determines a degree of user overlap between the historical crowd and the favorite crowd based on a comparison of the crowd hash value of the historical crowd obtained from the crowd hash repository 32 and a crowd hash value stored for the favorite crowd in the crowd hash repository 32 .
  • the crowd comparison function 30 selects one or more of the relevant POIs to recommend to the user 16 - 1 based on the degrees of user overlap between the historical crowds at the relevant POIs and the favorite crowd(s) of the user 16 - 1 (step 810 ). More specifically, in one embodiment, a relevant POI is selected to recommend to the user 16 - 1 if the degree of user overlap between at least one historical crowd at the POI and at least one of the favorite crowds of the user 16 - 1 is greater than a predefined threshold (e.g., 75%).
  • a predefined threshold e.g., 75%).
  • the degrees of user overlap between historical crowds at the relevant POI for each favorite crowd of the user 16 - 1 are combined (e.g., averaged) to provide a combined degree of user overlap for the relevant POI for each favorite crowd of the user 16 - 1 .
  • a relevant POI may then be selected for recommendation to the user 16 - 1 if the combined degree of user overlap for the relevant POI for at least one of the favorite crowds of the user 16 - 1 is greater than a predefined threshold (e.g., 75%).
  • the crowd comparison function 30 then returns the recommended POI(s) to the mobile device 14 - 1 (step 812 ) where the crowd client 34 - 1 presents the recommended POI(s) to the user 16 - 1 (step 814 ).
  • FIG. 11 illustrates the operation of the crowd server 12 to provide crowd monitoring at a desired POI based on anonymous crowd comparisons according to one embodiment of the present disclosure.
  • the crowd server 12 receives a request to monitor crowds at a POI (step 900 ).
  • the request may be from one of the mobile devices 14 - 1 through 14 -N, the subscriber device 18 , or the third-party service 22 .
  • the crowd hash computing function 28 then computes and stores crowd hash values for crowds at the POI over time (step 902 ).
  • the crowd hash computing function 28 periodically queries the crowd formation function 26 for crowds at the POI, computes crowd hash values for the crowds at the POI, and stores the crowd hash values for the crowds in the crowd hash repository 32 .
  • the crowd comparison function 30 compares the crowd hash values computed and stored for crowds at the POI over time to provide data characterizing crowd patterns at the POI (step 904 ).
  • the crowd comparison function 30 characterizes crowd patterns at the POI based on comparisons of the crowd hash values computed and stored for crowds at the POI over time. More specifically, in one embodiment, for each of one or more reoccurring time windows, the crowd comparison function 30 determines a degree of user overlap between each crowd at the POI during the reoccurring time window and each other crowd at the POI during the reoccurring time window based on comparisons of corresponding crowd hash values.
  • the crowd comparison function 30 provides a degree of user overlap between each pair of crowds at the POI during the reoccurring time window. Then, for each reoccurring time window, the degrees of user overlap computed for the pairs of crowds at the POI during the reoccurring time window may be combined (e.g., averaged) to provide a combined degree of user overlap for the reoccurring time window. The combined degree of user overlap for each of the reoccurring time windows may then be provided as data characterizing crowd patterns at the POI.
  • a reoccurring time window is a time window that periodically repeats itself.
  • a reoccurring time window is Friday (i.e., the day Friday repeats weekly), weekdays from 11 AM to 1 PM (repeats daily during the week and each week), March 19 (repeats yearly), or the like.
  • FIG. 12 is a block diagram of the crowd server 12 according to one embodiment of the present disclosure.
  • the crowd server 12 includes a controller 40 connected to memory 42 , one or more secondary storage devices 44 , and a communication interface 46 by a bus 48 or similar mechanism.
  • the controller 40 is a microprocessor, digital Application Specific Integrated Circuit (ASIC), Field Programmable Gate Array (FPGA), or the like.
  • the controller 40 is a microprocessor, and the crowd formation function 26 , the crowd hash computing function 28 , and the crowd comparison function 30 ( FIG. 5 ) are implemented in software and stored in the memory 42 for execution by the controller 40 .
  • the crowd hash repository 32 ( FIG. 5 ) may be implemented in the one or more secondary storage devices 44 .
  • the one or more secondary storage devices 44 are digital data storage devices such as, for example, one or more hard disk drives.
  • the communication interface 46 is a wired or wireless communication interface that communicatively couples the crowd server 12 to the network 24 ( FIG. 5 ).
  • the communication interface 46 may be an Ethernet interface, local wireless interface such as a wireless interface operating according to one of the suite of IEEE 802.11 standards, or the like.
  • FIG. 13 is a block diagram of the mobile device 14 - 1 according to one embodiment of the present disclosure. This discussion is equally applicable to the other mobile devices 14 - 2 through 14 -N.
  • the mobile device 14 - 1 includes a controller 50 connected to memory 52 , a communication interface 54 , one or more user interface components 56 , and the location determination function 36 - 1 by a bus 58 or similar mechanism.
  • the controller 50 is a microprocessor, digital ASIC, FPGA, or the like.
  • the controller 50 is a microprocessor, and the crowd client 34 - 1 ( FIG. 5 ) is implemented in software and stored in the memory 52 for execution by the controller 50 .
  • the location determination function 36 - 1 is a hardware component such as, for example, a GPS receiver.
  • the communication interface 54 is a wireless communication interface that communicatively couples the mobile device 14 - 1 to the network 24 ( FIG. 5 ).
  • the communication interface 54 may be a local wireless interface such as a wireless interface operating according to one of the suite of IEEE 802.11 standards, a mobile communications interface such as a cellular telecommunications interface, or the like.
  • the one or more user interface components 56 include, for example, a touchscreen, a display, one or more user input components (e.g., a keypad), a speaker, or the like, or any combination thereof.
  • FIG. 14 is a block diagram of the subscriber device 18 according to one embodiment of the present disclosure.
  • the subscriber device 18 includes a controller 60 connected to memory 62 , one or more secondary storage devices 64 , a communication interface 66 , and one or more user interface components 68 by a bus 70 or similar mechanism.
  • the controller 60 is a microprocessor, digital ASIC, FPGA, or the like.
  • the controller 60 is a microprocessor, and the web browser 38 ( FIG. 5 ) is implemented in software and stored in the memory 62 for execution by the controller 60 .
  • the one or more secondary storage devices 64 are digital storage devices such as, for example, one or more hard disk drives.
  • the communication interface 66 is a wired or wireless communication interface that communicatively couples the subscriber device 18 to the network 24 ( FIG. 5 ).
  • the communication interface 66 may be an Ethernet interface, local wireless interface such as a wireless interface operating according to one of the suite of IEEE 802.11 standards, a mobile communications interface such as a cellular telecommunications interface, or the like.
  • the one or more user interface components 68 include, for example, a touchscreen, a display, one or more user input components (e.g., a keypad), a speaker, or the like, or any combination thereof.
  • FIG. 15 is a block diagram of a computing device 72 operating to host the third-party service 22 ( FIG. 5 ) according to one embodiment of the present disclosure.
  • the computing device 72 may be, for example, a physical server.
  • the computing device 72 includes a controller 74 connected to memory 76 , one or more secondary storage devices 78 , a communication interface 80 , and one or more user interface components 82 by a bus 84 or similar mechanism.
  • the controller 74 is a microprocessor, digital ASIC, FPGA, or the like.
  • the controller 74 is a microprocessor, and the third-party service 22 is implemented in software and stored in the memory 76 for execution by the controller 74 .
  • the one or more secondary storage devices 78 are digital storage devices such as, for example, one or more hard disk drives.
  • the communication interface 80 is a wired or wireless communication interface that communicatively couples the computing device 72 to the network 24 ( FIG. 5 ).
  • the communication interface 80 may be an Ethernet interface, local wireless interface such as a wireless interface operating according to one of the suite of IEEE 802.11 standards, a mobile communications interface such as a cellular telecommunications interface, or the like.
  • the one or more user interface components 82 include, for example, a touchscreen, a display, one or more user input components (e.g., a keypad), a speaker, or the like, or any combination thereof.

Abstract

Systems and methods are disclosed for anonymously comparing user groups, such as but not limited to crowds, to determine a degree of user overlap. In general, a hash value is obtained for a first user group, where the hash value includes a hash value component for a number of two-user permutations within the first user group. Similarly, a hash value is obtained for a second user group, where the hash value includes a hash value component for a number of two-user permutations within the second user group. Thereafter, a degree of user overlap between the first and second user groups is determined based on a comparison of the hash value for the first user group and the hash value for the second user group.

Description

    RELATED APPLICATIONS
  • This application claims the benefit of provisional patent application Ser. No. 61/173,625, filed Apr. 29, 2009, the disclosure of which is hereby incorporated herein by reference in its entirety.
  • FIELD OF THE DISCLOSURE
  • The present disclosure relates to comparing user groups, such as crowds of users, to determine a degree of user overlap between the user groups in a manner that preserves privacy.
  • BACKGROUND
  • A mobile user can benefit from knowing how many people in his or her current crowd have been in previous crowds with the mobile user or how many people in his or her current crowd have frequented the mobile user's current location in the past. A simple mechanism to implement this functionality would require tracking the locations of people over time. However, this approach does not respect user privacy. As such, there is a need for a system and method that enables crowd comparison in a manner that maintains user privacy.
  • SUMMARY
  • Systems and methods are disclosed for anonymously comparing user groups, such as but not limited to crowds, to determine a degree of user overlap. In general, a hash value is obtained for a first user group, where the hash value includes a hash value component for a number of two-user permutations within the first user group. Similarly, a hash value is obtained for a second user group, where the hash value includes a hash value component for a number of two-user permutations within the second user group. Thereafter, a degree of user overlap between the first and second user groups is determined based on a comparison of the hash value for the first user group and the hash value for the second user group. More specifically, in one embodiment, the hash value for the first user group is compared to the hash value for the second user group to determine a number of matching component hash values. A number of matching users in the first and second user groups is then determined based on the number of matching component hash values.
  • Those skilled in the art will appreciate the scope of the present invention and realize additional aspects thereof after reading the following detailed description of the preferred embodiments in association with the accompanying drawing figures.
  • BRIEF DESCRIPTION OF THE DRAWING FIGURES
  • The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the invention, and together with the description serve to explain the principles of the invention.
  • FIG. 1 illustrates a process for anonymously comparing two user groups based on hash values obtained for the two user groups according to one embodiment of the present disclosure;
  • FIG. 2 illustrates a process for computing a hash value for a user group according to one embodiment of the present disclosure;
  • FIGS. 3A through 3F graphically illustrate the process of FIG. 2 for an exemplary user group according to one embodiment of the present disclosure;
  • FIG. 4 illustrates a process for determining a degree of user overlap between two user groups based on a comparison of hash values for the two user groups according to one embodiment of the present disclosure;
  • FIG. 5 illustrates an exemplary system for providing anonymous crowd comparison according to one embodiment of the present disclosure;
  • FIG. 6 illustrates the operation of the crowd server of FIG. 5 to compute and store a crowd hash value for a crowd of interest of a requestor according to one embodiment of the present disclosure;
  • FIG. 7 illustrates the operation of the crowd server of FIG. 5 to compare a current crowd to one or more previously identified crowds of interest of a requestor according to one embodiment of the present disclosure;
  • FIG. 8 illustrates the operation of the crowd server of FIG. 5 to provide Point of Interest (POI) recommendations to a requestor based on comparisons of current crowds at POIs and one or more previously identified crowds of interest of the requestor according to one embodiment of the present disclosure;
  • FIG. 9 illustrates the operation of the crowd server of FIG. 5 to compare one or more historical crowds to one or more previously identified crowds of interest of a requestor according to one embodiment of the present disclosure;
  • FIG. 10 illustrates the operation of the crowd server of FIG. 5 to provide POI recommendations to a requestor based on comparisons of historical crowds at POIs and one or more previously identified crowds of interest of the requestor according to one embodiment of the present disclosure;
  • FIG. 11 illustrates the operation of the crowd server of FIG. 5 to characterize crowd patterns at a POI according to one embodiment of the present disclosure;
  • FIG. 12 is a block diagram of the crowd server of FIG. 5 according to one embodiment of the present disclosure;
  • FIG. 13 is a block diagram of one of the mobile devices of FIG. 5 according to one embodiment of the present disclosure;
  • FIG. 14 is a block diagram of the subscriber device of FIG. 5 according to one embodiment of the present disclosure; and
  • FIG. 15 is a block diagram of a computing device, such as a server, hosting the third-party service of FIG. 5 according to one embodiment of the present disclosure.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • The embodiments set forth below represent the necessary information to enable those skilled in the art to practice the invention and illustrate the best mode of practicing the invention. Upon reading the following description in light of the accompanying drawing figures, those skilled in the art will understand the concepts of the invention and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims.
  • FIG. 1 illustrates a process for anonymously comparing two user groups to determine a degree of user overlap according to one embodiment of the present disclosure. As used herein, a user group is any group of associated users. For example, a user group may be a crowd of users that are spatially proximate one another, a distributed group of users such as users participating in a communication session (e.g., a conference call or a group chat session), or the like.
  • First, a hash value is obtained for a first user group (step 100). The hash value for the first user group may be obtained by computing the hash value for the first user group or by obtaining a previously computed hash value for the first user group from storage. The hash value for the first user group includes component hash values generated for a number of distinct two-user permutations for the first user group. As user herein, a “distinct two-user permutation” is a subset of two distinct users in a user group where ordering of users does not matter (i.e., a two-user permutation for users A and B is the same as, or not distinct from, a two-user permutation for users B and A). Therefore, for example, if the first user group includes user A, user B, and user C, the distinct two-user permutations for the first user group are user A and user B, user A and user C, and user B and user C. As described below in detail, the distinct two-user permutations for the first user group for which component hash values are generated and included in the hash value for the first user group may be all distinct two-user permutations for the first user group or all distinct two-user permutations for the first user group other than those including a requesting user from the first user group that initiated a process for generating the hash value for the first user group.
  • In a similar manner, a hash value is obtained for a second user group (step 102). The hash value for the second user group may be obtained by computing the hash value for the second user group or by obtaining a previously computed hash value for the second user group from storage. The hash value for the second user group includes component hash values generated for a number of distinct two-user permutations for the second user group. As described below in detail, the distinct two-user permutations for the second user group for which component hash values are generated and included in the hash value for the second user group may be all distinct two-user permutations for the second user group or all distinct two-user permutations for the second user group other than those including a requesting user from the second user group that initiated a process for generating the hash value for the second user group. It should be noted that while two-user permutations are used herein, permutations of three or more users may alternatively be used to generate the component hash values of the hash values for the first and second user groups.
  • Next, a degree of user overlap between the first and second user groups is determined based on a comparison of the hash values for the first and second user groups (step 104). As described below in more detail, the component hash values for the first and second user groups are compared to determine a number of matching component hash values in the hash values for the first and second user groups. Then, a number of matching users in the first and second user groups is determined based on the number of matching component hash values. The degree of user overlap between the first and second user groups may then be provided as the number of matching users, a percentage of matching users for a larger of the first and second user groups, or the like. In this embodiment, the degree of user overlap between the first and second user groups is then output to a requesting entity (step 106). The requesting entity may be a user, a third-party service, or the like. In addition or alternatively, the degree of user overlap between the first and second user groups may be stored for subsequent use in any desired application.
  • FIG. 2 illustrates a process for computing a hash value for a user group according to one embodiment of the present disclosure. First, a list of users in the user group is obtained (step 200). The list of users includes a user identifier (ID) for each user in the user group. The user IDs of the users in the user group may be, for example, names of the users, usernames or screen names of the users, e-mail addresses of the users, telephone numbers of the users, or the like. Next, a requesting user, or requestor, is removed from the list of users, if applicable (step 202). The requesting user is a user in the user group that initiated generation of the hash value for the user group. Removing the requesting user from the list of users for the user group results in different hash values for the same user group for different requestors. This enhances security by preventing stored hash values for a first requestor to be directly compared to stored hash values for a second requestor to determine whether the first and second requestors are or have been in the same user groups. Note that step 202 is optional.
  • Next, the list of users for the user group is sorted (step 204). In one embodiment, the list of users is sorted alphabetically. However, the present disclosure is not limited thereto. Sorting the list of users ensures that the two-user permutations are canonical between user group hash instances. In other words, if two users A and B exist in a user group, the two-user permutation for users A and B will always be “A B” and not “B A.” This ensures that a component hash value for a two-user permutation for users A and B in a hash value for one user group will match a component hash value for a two-user permutation for the same two users in a hash value for another user group.
  • Next, a list of all distinct two-user permutations for the sorted list of users for the user group is created (step 206). A next two-user permutation from the list of distinct two-user permutations is then obtained (step 208). Note that for the first iteration, the next two-user permutation is the first two-user permutation in the list of distinct two-user permutations. A hash value (referred to herein as a component hash value) is then computed for the two-user permutation using a predetermined hash function (step 210). The predetermined hash function may be, for example, Secure Hash Algorithm-1 (SHA-1), but is not limited thereto. The component hash value for the two-user permutation may be computed by concatenating the user IDs of the users in the two-user permutation and providing the concatenated user IDs as an input to the predetermined hash function. The hash value returned by the predetermined hash function is then used as the component hash value for the two-user permutation.
  • A determination is then made as to whether the last two-user permutation has been processed (step 212). If not, the process returns to step 208 and is repeated. Once component hash values have been computed for all of the two-user permutations from step 206, the component hash values for the two-user permutations are concatenated to provide a concatenated hash value for the user group (step 214). In this embodiment, the concatenated hash value for the user group is compressed using a lossy compression algorithm to provide a hash value for the user group (step 216). In one embodiment, the lossy compression algorithm removes every Nth bit from the concatenated hash value to provide the hash value for the user group, where N is greater than or equal to 2. In one preferred embodiment, the lossy compression algorithm removes every other bit from the concatenated hash value to provide the hash value for the user group. Lossy compression reduces the storage space needed to store the hash value for the user group. In addition, lossy compression further obfuscates user information by making it highly improbable that the system or an attacker can retrieve the exact concatenated hash value or exact component hash values. In other words, lossy compression thwarts dictionary attacks. Note that the aforementioned embodiments of the lossy compression algorithm are exemplary. Other types of lossy compression algorithms may be used, as will be appreciated by one of ordinary skill in the art upon reading this disclosure. Also note that step 216 is optional.
  • FIGS. 3A through 3F graphically illustrate the process of FIG. 2 for an exemplary user group. FIG. 3A illustrates a list of users for the user group. In this example, the list of users includes users C, B, A, and D. In this example, user A is the requesting user that initiated generation of a hash value for the user group. FIG. 3B illustrates the list of users for the user group after removal of the requestor (user A) and sorting. Next, as illustrated in FIG. 3C, two-user permutations are created for the list of users from FIG. 3B. In this example, the two-user permutations include a two-user permutation for users B and C, a two-user permutation for users B and D, and a two-user permutation for users C and D. Then, as illustrated in FIGS. 3D and 3E, component hash values are computed for the two-user permutations and concatenated to provide a concatenated hash value for the user group. The concatenated hash value is then compressed using a lossy compression algorithm to provide a hash value for the user group, as illustrated in FIG. 3F.
  • FIG. 4 illustrates a process for determining a degree of user overlap between two user groups by comparing hash values generated for the two user groups using the process of FIG. 2 according to one embodiment of the present disclosure. First, a counter is initialized to zero (step 300). Then, a next component hash value is obtained from the hash value for the first user group (step 302). Note that, for the first iteration, the next component hash value is the first component hash value. In one embodiment, the hash function used to generate the component hash values provides 160-bit hash values and lossy compression removes every other bit such that, after lossy compression, each component hash value is 80 bits. As such, the next component hash value is the next 80 bits of the hash value for the first user group. Likewise, a next component hash value is then obtained from the hash value for the second user group (step 304). Note that, for the first iteration, the next component hash value from the hash value for the second user group is the first component hash value from the hash value for the second user group.
  • Next, the component hash value from the hash value for the first user group is compared to the component hash value from the hash value for the second user group to determine whether there is a match (step 306). Here, the component hash values match if they are exactly the same. Matching hash values indicate that the corresponding two-user permutations from the first and second user groups also match. If the component hash values match, the counter is incremented (step 308) and then the process proceeds to step 312. If the component hash values do not match, a determination is made as to whether the last component hash value from the hash value for the second user group has been processed (step 310). If not, the process returns to step 304 and is repeated for the next component hash value from the hash value for the second user group. If the last component hash value from the hash value for the second user group has been processed, the process proceeds to step 312.
  • At this point, whether proceeding from step 308 or step 310, a determination is made as to whether the last component hash value from the hash value for the first user group has been processed (step 312). If not, the process returns to step 302 and is repeated for the next component hash value from the hash value for the first user group. Once all of the component hash values from the hash value for the first user group have been processed, the counter corresponds to a number of matching component hash values, which is also the number of matching two-user permutations for the first and second user groups.
  • Next, a number of matching users in the first and second user groups is determined based on the number of matching two-user permutations (step 314). In the preferred embodiment, the number of matching users is determined based on the following choose-2 function:
  • C ( n , 2 ) = n ! 2 ! ( n - 2 ) ! .
  • More specifically, the number of matching users is determined by setting the choose-2 function C(n,2) equal to the number of matching two-user permutations (i.e., the counter value) as follows:
  • C ( n , 2 ) = n ! 2 ! ( n - 1 ) ! = number_of _matching _two _user _permutations ,
  • where the value n can be solved for or otherwise determined and corresponds to the number of matching users for the first and second user groups. As such, if for example the number of matching two-user permutations is 6, then the number of matching users is determined based on the equation:
  • 6 = n ! 2 ! ( n - 2 ) ! ,
  • which results in
      • n=4,
        where n is the number of matching users in the first and second user groups. Note that the value of n in the choose-2 function may be mathematically solved. As one exemplary alternative, the value of n may be determined using a lookup table populated using the choose-2 function to enable lookup of the number of matching users for different numbers of matching two-user permutations values (i.e., 1, 2, 3, 4, 5, . . . , M, where M is a desired positive integer value).
  • In addition to determining the number of matching users, in this embodiment, a number of users in a largest of the first and second user groups is determined (step 316). More specifically, in one embodiment, a number of two-user permutations for the first and second user groups are determined. For example, if the component hash values are 80 bit values, the number of two-user permutations in the first user group may be determined by dividing the number of bits in the hash value for the first user group by 80. Likewise, the number of two-user permutations in the second user group may be determined by dividing the number of bits in the hash value for the second user group by 80. The user group having the largest number of two-user permutations is identified as the largest of the first and second user groups. Then, the number of users in the largest user group is determined based on the choose-2 function, where the choose-2 function is set equal to the number of two-user permutations in the largest user group. For example, if the number of two-user permutations in the largest user group is 15, then the number of users in the largest user group is 6 (i.e., C(n,2)=15, therefore n=6). A percentage of matching users for the largest user group is then computed (step 318). The percentage of matching users for the largest user group may be computed based on the following equation:
  • % MatchingUsers = number_of _matching _users number_of _users _in _largest _user _group × 100.
  • The percentage of matching users may then be output and/or stored as the degree of user overlap for the first and second user groups. Note that the percentage of matching users is exemplary and is not intended to limit the scope of the present disclosure. The degree of user overlap may be expressed as any value that is a function of (including being equal to) the number of matching users between the first and second user groups.
  • FIG. 5 illustrates an exemplary system 10 that operates to anonymously compare user groups according to one embodiment of the present disclosure. In the system 10, the user groups are crowds formed or otherwise determined by a crowd server 12. As illustrated, the system 10 includes the crowd server 12, a number of mobile devices 14-1 through 14-N having associated users 16-1 through 16-N, a subscriber device 18 having an associated subscriber 20, and a third-party service 22 communicatively coupled via a network 24. The network 24 may be a Local Area Network (LAN), Wide
  • Area Network (WAN), or the like, and may include wired and/or wireless components. In one embodiment, the network 24 is a distributed public network such as the Internet.
  • The crowd server 12 includes a crowd formation function 26, a crowd hash computing function 28, a crowd comparison function 30, and a crowd hash repository 32. The crowd formation function 26, the crowd hash computing function 28, and the crowd comparison function 30 are preferably implemented in software, but are not limited thereto. The crowd formation function 26 generally operates to form and possibly maintain crowds of users. More specifically, in one embodiment, the mobile devices 14-1 through 14-N provide location updates that define current locations of the users 16-1 through 16-N over time. The location updates may be provided from the mobile devices 14-1 through 14-N directly to the crowd server 12 or provided from the mobile devices 14-1 through 14-N to a location service that then reports the location updates to the crowd server 12 or otherwise enables the crowd server 12 to access the location updates. Using the current locations of the users 16-1 through 16-N, the crowd formation function 26 performs a spatial crowd formation process to form crowds of the users 16-1 through 16-N that are spatially proximate to one another. While not essential, for more detailed information regarding exemplary spatial crowd formation processes, the interested reader is directed to U.S. patent application Ser. No. 12/645,535 entitled MAINTAINING A HISTORICAL RECORD OF ANONYMIZED USER PROFILE DATA BY LOCATION FOR USERS IN A MOBILE ENVIRONMENT, U.S. patent application Ser. No. 12/645,532 entitled FORMING CROWDS AND PROVIDING ACCESS TO CROWD DATA IN A MOBILE ENVIRONMENT, U.S. patent application Ser. No. 12/645,539 entitled ANONYMOUS CROWD TRACKING, U.S. patent application Ser. No. 12/645,544 entitled MODIFYING A USER'S CONTRIBUTION TO AN AGGREGATE PROFILE BASED ON TIME BETWEEN LOCATION UPDATES AND EXTERNAL EVENTS, U.S. patent application Ser. No. 12/645,546 entitled CROWD FORMATION FOR MOBILE DEVICE USERS, U.S. patent application Ser. No. 12/645,556 entitled SERVING A REQUEST FOR DATA FROM A HISTORICAL RECORD OF ANONYMIZED USER PROFILE DATA IN A MOBILE ENVIRONMENT, and U.S. patent application Ser. No. 12/645,560 entitled HANDLING CROWD REQUESTS FOR LARGE GEOGRAPHIC AREAS, all of which were filed on Dec. 23, 2009 and are hereby incorporated herein by reference in their entireties.
  • The crowd hash computing function 28 generally operates to compute hash values for crowds of users formed by the crowd formation function 26. The crowd hash computing function 28 preferably utilizes the process of FIG. 2 to compute a hash value (i.e., a crowd hash value) for a crowd. The crowd hash values for at least some crowds are stored in the crowd hash repository 32. For instance, in one embodiment, the crowd hash repository 32 stores crowd hash values for crowds of interest to the users 16-1 through 16-N. Using the user 16-1 as an example, the user 16-1 may determine that a current crowd of users in which the user 16-1 is currently located is a crowd of interest (e.g., a favorite crowd) and manually initiate computation and storage of a crowd hash value for that crowd. The crowd hash for the crowd of interest to the user 16-1 may then be computed by the crowd hash computing function 28 and be stored in the crowd hash repository 32 as a crowd of interest (e.g., a favorite crowd) of the user 16-1. The crowd hash repository 32 may additionally or alternatively store crowd hash values for currently formed crowds (referred to herein as current crowds) and/or previously formed crowds (referred to herein as historical crowds). The crowd comparison function 30 operates to anonymously compare crowds formed by the crowd formation function 26 by comparing corresponding crowd hash values. More specifically, the crowd comparison function 30 compares crowd hash values for crowds to determine a degree of user overlap between the crowds.
  • In the preferred embodiment, the crowd server 12 only stores the current locations of the users 16-1 through 16-N, rather than a historical record of the locations of the users 16-1 through 16-N. However, the present disclosure is not limited thereto. Storage of crowd hash values for crowds enables comparison of historical crowds to one another or to a current crowd without the need to store historical records of the locations of the users 16-1 through 16-N. In this manner, privacy of the users 16-1 through 16-N is preserved. In addition, the anonymous crowd comparison described herein enables a requestor to determine the degree of user overlap between two crowds but not the identities (or user IDs) of the users in those crowds.
  • The mobile devices 14-1 through 14-N are mobile devices such as, for example, mobile smart phones (e.g., Apple® iPhone), laptop or notebook computers, tablet computers (e.g., Apple® iPad), or the like. The mobile devices 14-1 through 14-N include crowd clients 34-1 through 34-N and location determination functions 36-1 through 36-N. Using the mobile device 14-1 as an example, the crowd client 34-1 is preferably implemented in software, but is not limited thereto. The crowd client 34-1 generally operates to interact with the crowd server 12. More specifically, the crowd client 34-1 operates to obtain the current location of the mobile device 14-1 from the location determination function 36-1 and send corresponding location updates to the crowd server 12, either directly or indirectly. In addition, the crowd client 34-1 preferably enables the user 16-1 to interact with the crowd server 12 to initiate storage of crowd hash values for crowds of interest to the user 16-1. Still further, the crowd client 34-1 may enable the user 16-1 to initiate anonymous crowd comparison of the crowds of interest for which corresponding crowd hash values were previously computed and stored to either current or historical crowds. The crowd client 34-1 may additionally or alternatively enable the user 16-1 to request and receive Point of Interest (POI) recommendations based on anonymous crowd comparisons of the crowds of interest for which corresponding crowd hash values were previously computed and stored to either current or historical crowds at POIs within a desired geographic region.
  • The location determination function 36-1 may generally be any software and/or hardware component enabled to determine the current location of the mobile device 14-1. For example, the location determination function 36-1 may be a Global Positioning System (GPS) receiver.
  • The subscriber device 18 may be any type of user device such as, for example, a personal computer, a mobile smart phone, a laptop or notebook computer, a tablet computer, or the like. In general, the subscriber device 18 enables the subscriber 20 to access the crowd server 12 preferably for a subscription fee. In this embodiment, the subscriber 20 is enabled to access the crowd server 12 via a web browser 38 and corresponding web interface of the crowd server 12. However, rather than the web browser 38, a custom application may be used to access the crowd server 12. Via the crowd server 12, the subscriber 20 may be enabled to monitor crowd patterns at one or more desired POIs.
  • The third-party service 22 may generally be any type of service that desires information regarding crowds of users. For example, the third-party service 22 may be a targeted advertising service. Via the crowd server 12, the third-party service 22 may be enabled to monitor crowd patterns at one or more desired POIs and then utilize those crowd patterns to provide a desired service.
  • FIG. 6 illustrates the operation of the crowd server 12 of FIG. 5 to compute and store crowd hash values for crowds of interest to users. Note that while this discussion focuses on computing and storing a crowd hash value for a crowd of interest to the user 16-1, the crowd server 12 may similarly compute and store crowd hash values for crowds of interest to the other users 16-2 through 16-N. Further, in this example, the crowds of interest are favorite crowds. First, the mobile device 14-1 sends a request to store the user's current crowd as a favorite crowd to the crowd server 12 (step 400). In this embodiment, the request is initiated by the user 16-1 when the user 16-1 is currently in a crowd that the user 16-1 deems to be a favorite crowd (i.e., a crowd that the user 16-1 likes). However, the user 16-1 may additionally or alternatively initiate a request when the user 16-1 is in a crowd that the user 16-1 deems to be a crowd of interest (e.g., a crowd that he likes or a crowd that he dislikes). Also, while in this embodiment the request is initiated by the user 16-1 manually, the present disclosure is not limited thereto. The request may alternatively be initiated by the crowd client 34-1 of the mobile device 14-1 automatically in response to a predefined triggering event.
  • In response to receiving the request, the crowd hash computing function 28 of the crowd server 12 obtains a current crowd in which the user 16-1 of the mobile device 14-1 is currently located from the crowd formation function 26 (step 402). In one embodiment, the crowd formation function 26 forms the current crowd of the user 16-1 reactively in response to the request. Alternatively, the crowd formation function 26 may proactively form crowds and store corresponding crowd records that identify the users that are currently in those crowds. The crowd formation function 26 may then obtain the crowd in which the user 16-1 is currently located from storage.
  • Next, the crowd hash computing function 28 of the crowd server 12 computes a crowd hash for the current crowd of the user 16-1 using the process of FIG. 2 (step 404). More specifically, in one embodiment, the crowd hash computing function 28 removes the user 16-1 from a list of users in the current crowd, sorts the list of users, and then creates all distinct two-user permutations for the sorted list of users. The crowd hash computing function 28 then computes a component hash value for each two-user permutation and concatenates the component hash values for the two-user permutations to provide a concatenated hash value for the current crowd. Lastly, the crowd hash computing function 28 compresses the concatenated hash value for the current crowd using a lossy compression algorithm to provide the crowd hash for the current crowd.
  • The crowd hash computing function 28 then stores the crowd hash for the current crowd in the crowd hash repository 32 as a crowd hash value of a favorite crowd of the user 16-1 (step 406). In one embodiment, the crowd hash value is stored in a crowd hash record that includes a record ID field that stores an ID for the crowd hash record, an owner field that identifies the user 16-1 as the owner of the crowd hash record, and a hash value field that stores the crowd hash value of the current crowd. In addition, the crowd hash record may include a description field that stores a textual description of the current crowd for which the crowd hash value was computed, where the textual description may be provided by the user 16-1 (e.g., “Cool Crowd at Night Club X”). Still further, the crowd hash record may include a time field that stores a time at which the crowd hash value was computed and latitude and longitude fields that store a location of the current crowd for which the crowd hash was computed. The location of the current crowd may be computed using the current locations of the users in the crowd and, for example, a center of mass algorithm. Note that in order to thwart attacks on the system 10, in one embodiment, the crowd hash records stored by the crowd server 12 in the crowd hash repository 32 do not include any information (e.g., location, time, etc.) that may enable the system 10 or an attacker to directly correlate two crowd hash values generated for two different requestors to determine that those two different requestors were in the same crowd. Steps 400 through 406 may subsequently be repeated to compute and store crowd hash values for additional favorite crowds of the user 16-1.
  • FIG. 7 illustrates the operation of the crowd server 12 to anonymously compare a current crowd to one or more previously identified crowds of interest (e.g., favorite crowds) of a user according to one embodiment of the present disclosure. First, the mobile device 14-1, and particularly the crowd client 34-1, sends a current crowd comparison request to the crowd server 12 (step 500). In response, the crowd comparison function 30 obtains a current crowd in which the user 16-1 is located from the crowd formation function 26 (step 502). The crowd comparison function 30 then computes a crowd hash for the current crowd of the user 16-1 using the process of FIG. 2 (step 504). Next, the crowd comparison function 30 determines a degree of user overlap between the current crowd of the user 16-1 and one or more favorite crowds previously identified by the user 16-1 using the process of FIG. 4 (step 506). More specifically, for each of the favorite crowds of the user 16-1, the crowd comparison function 30 determines a degree of user overlap between the current crowd of the user 16-1 and the favorite crowd of the user 16-1 based on a comparison of the crowd hash value of the current crowd computed in step 504 and a crowd hash value stored for the favorite crowd in the crowd hash repository 32. The crowd comparison function 30 then returns the degree of overlap between the current crowd and each of the favorite crowds of the user 16-1 to the mobile device 14-1 (step 508). In response, the crowd client 34-1 of the mobile device 14-1 presents the degree of overlap between the current crowd and each of the favorite crowds of the user 16-1 to the user 16-1 (step 510).
  • Note that while the process of FIG. 7 compares the current crowd in which the user 16-1 is located to the one or more previously identified favorite crowds of the user 16-1, the present disclosure is not limited thereto. More generally, any current crowd that is relevant to the current crowd comparison request may be compared to the previously identified crowd(s) of interest of the user 16-1. The relevant current crowd may be the current crowd in which the user 16-1 is located (as in FIG. 7), a current crowd at a POI identified in the current crowd comparison request, a current crowd in a geographic region (e.g., an Area of Interest) identified by the current crowd comparison request, or the like.
  • FIG. 8 illustrates the operation of the crowd server 12 to provide POI recommendations based on anonymous crowd comparisons according to one embodiment of the present disclosure. First, the mobile device 14-1, and more particularly the crowd client 34-1, sends a POI recommendation request to the crowd server 12 (step 600). The POI recommendation request may be manually initiated by the user 16-1 or automatically initiated by the crowd client 34-1 in response to a predefined triggering event such as, for example, detecting an Internet search query from the user 16-1 for nearby businesses.
  • In response to receiving the POI recommendation request, the crowd hash computing function 28 obtains a list of relevant POIs (step 602). The list of relevant POIs may include POIs within a defined geographic region such as, for example, a defined geographic region in which the user 16-1 is currently located (e.g., within 10 miles from the current location of the user 16-1) or a geographic region defined by the user 16-1 and included in the POI recommendation request (e.g., Raleigh, N.C.). The crowd hash computing function 28 then obtains current crowds at the relevant POIs from the crowd formation function 26 (step 604).
  • Next, the crowd hash computing function 28 computes a crowd hash value for each of the current crowds at the relevant POIs using the process of FIG. 2 (step 606). Then, for each current crowd, the crowd comparison function 30 determines a degree of user overlap between the current crowd and one or more favorite crowds previously identified by the user 16-1 using the process of FIG. 4 (step 608). More specifically, for each current crowd and each favorite crowd of the user 16-1, the crowd comparison function 30 determines a degree of user overlap between the current crowd and the favorite crowd based on a comparison of the crowd hash value of the current crowd computed in step 606 and a crowd hash value stored for the favorite crowd in the crowd hash repository 32.
  • The crowd comparison function 30 then selects one or more of the relevant POIs to recommend to the user 16-1 based on the degrees of user overlap between the current crowds at the relevant POIs and the favorite crowd(s) of the user 16-1 (step 610). More specifically, in one embodiment, a relevant POI is selected to recommend to the user 16-1 if the degree of user overlap between a current crowd at the POI and at least one of the favorite crowds of the user 16-1 is greater than a predefined threshold (e.g., 75%). The crowd comparison function 30 then returns the recommended POI(s) to the mobile device 14-1 (step 612) where the crowd client 34-1 presents the recommended POI(s) to the user 16-1 (step 614).
  • FIG. 9 illustrates the operation of the crowd server 12 to anonymously compare historical crowds to one or more previously identified crowds of interest (e.g., favorite crowds) of a user according to one embodiment of the present disclosure. In this embodiment, the crowd hash computing function 28 computes and stores crowd hash values for crowds over time (step 700). These crowds are referred to herein as historical crowds. More specifically, in one embodiment, the crowd hash computing function 28 periodically queries the crowd formation function 26 for crowds of users formed at that time, computes crowd hash values for those crowds, and stores the crowd hash values in the crowd hash repository 32. The crowd hash computing function 28 may compute and store crowd hash values for all crowds or only those crowds in one or more defined geographic areas (e.g., crowds at one or more defined POIs or within one or more defined Areas of Interest (AOIs)).
  • At some point in time, the mobile device 14-1, and more specifically the crowd client 34-1 of the mobile device 14-1, sends a historical crowd comparison request to the crowd server 12 (step 702). In one embodiment, the historical crowd comparison request is for a current location of the user 16-1. In another embodiment, the historical crowd comparison request is for a POI or AOI defined or otherwise selected by the user 16-1. The historical crowd comparison request may be manually initiated by the user 16-1 or automatically initiated by the crowd client 34-1 in response to a triggering event.
  • In response to receiving the historical crowd comparison request, the crowd comparison function 30 obtains crowd hash values for historical crowds that are relevant to the historical crowd comparison request (step 704). In this embodiment, the crowd hash values for the historical crowds are stored in the crowd hash repository 32 along with the locations of the historical crowds at the time the crowd hash values were computed. As such, in one embodiment, the relevant historical crowds are historical crowds that were located at or near the current location of the user 16-1. In another embodiment, the relevant historical crowds are historical crowds that were located at a POI or within an AOI defined by the historical crowd comparison request. In addition, a time window may be defined for the historical crowd comparison request such that the relevant historical crowds are historical crowds for which the corresponding crowd hash values were computed during the defined time window. The time window may be system-defined or defined by the user 16-1 and included in the historical crowd comparison request. For example, the time window may be an absolute time window such as, for example, the last week, the last month, the last year, Jan. 1, 2010 through Mar. 12, 2010, or the like. As another example, the time window may be a reoccurring time window such as, for example, Fridays, weekdays from 10 AM-Noon, the first day of each month, or the like.
  • Next, for each historical crowd, the crowd comparison function 30 determines a degree of user overlap between the historical crowd and each of one or more favorite crowds previously identified by the user 16-1 using the process of FIG. 4 (step 706). Then, in this embodiment, the crowd comparison function 30 combines the degrees of overlap for the historical crowds to provide one or more combined degrees of user overlap (step 708). More specifically, for each favorite crowd of the user 16-1, the crowd comparison function 30 may combine (e.g., average) the degrees of user overlap between the historical crowds and the favorite crowd to provide a combined degree of user overlap for the favorite crowd. The combined degree of user overlap for each favorite crowd is then returned to the mobile device 14-1 (step 710). The crowd client 34-1 of the mobile device 14-1 then presents the combined degree of user overlap for each favorite crowd to the user 16-1 (step 712).
  • FIG. 10 illustrates the operation of the crowd server 12 to provide POI recommendations based on anonymous crowd comparisons according to another embodiment of the present disclosure. In this embodiment, the crowd hash computing function 28 computes and stores crowd hash values for crowds over time (step 800). These crowds are referred to herein as historical crowds. More specifically, in one embodiment, the crowd hash computing function 28 periodically queries the crowd formation function 26 for crowds of users formed at that time, computes crowd hash values for those crowds, and stores the crowd hash values in the crowd hash repository 32. The crowd hash computing function 28 may compute and store crowd hash values for all crowds or only those crowds in one or more defined geographic areas (e.g., crowds at one or more defined POIs or within one or more defined AOIs).
  • At some point in time, the mobile device 14-1, and more specifically the crowd client 34-1 of the mobile device 14-1, sends a POI recommendation request to the crowd server 12 (step 802). In response to receiving the POI recommendation request, the crowd hash computing function 28 obtains a list of relevant POIs (step 804). The list of relevant POIs may include POIs within a defined geographic region such as, for example, a defined geographic region in which the user 16-1 is currently located (e.g., within 10 miles from the current location of the user 16-1) or a geographic region defined by the user 16-1 and included in the POI recommendation request (e.g., Raleigh, N.C.). The crowd hash computing function 28 then obtains crowd hash values stored for historical crowds located at the relevant POIs from the crowd hash repository 32 (step 806). In one embodiment, a time window may be used such that the crowd hash values obtained for the relevant POIs are only those crowd hash values for historical crowds at the relevant POIs during a defined time window for the POI recommendation request. The time window for the historical crowd comparison request may be defined by the historical crowd comparison request or may be system-defined. For example, the time window may be an absolute time window such as, for example, the last week, the last month, the last year, Jan. 1, 2010 through Mar. 12, 2010, or the like. As another example, the time window may be a reoccurring time window such as, for example, Fridays, weekdays from 10 AM-Noon, the first day of each month, or the like.
  • Next, for each historical crowd for each relevant POI, the crowd comparison function 30 determines a degree of user overlap between the historical crowd and one or more favorite crowds previously identified by the user 16-1 using the process of FIG. 4 (step 808). More specifically, for each historical crowd and each favorite crowd of the user 16-1, the crowd comparison function 30 determines a degree of user overlap between the historical crowd and the favorite crowd based on a comparison of the crowd hash value of the historical crowd obtained from the crowd hash repository 32 and a crowd hash value stored for the favorite crowd in the crowd hash repository 32.
  • The crowd comparison function 30 then selects one or more of the relevant POIs to recommend to the user 16-1 based on the degrees of user overlap between the historical crowds at the relevant POIs and the favorite crowd(s) of the user 16-1 (step 810). More specifically, in one embodiment, a relevant POI is selected to recommend to the user 16-1 if the degree of user overlap between at least one historical crowd at the POI and at least one of the favorite crowds of the user 16-1 is greater than a predefined threshold (e.g., 75%). In another embodiment, for each relevant POI, the degrees of user overlap between historical crowds at the relevant POI for each favorite crowd of the user 16-1 are combined (e.g., averaged) to provide a combined degree of user overlap for the relevant POI for each favorite crowd of the user 16-1. A relevant POI may then be selected for recommendation to the user 16-1 if the combined degree of user overlap for the relevant POI for at least one of the favorite crowds of the user 16-1 is greater than a predefined threshold (e.g., 75%). The crowd comparison function 30 then returns the recommended POI(s) to the mobile device 14-1 (step 812) where the crowd client 34-1 presents the recommended POI(s) to the user 16-1 (step 814).
  • FIG. 11 illustrates the operation of the crowd server 12 to provide crowd monitoring at a desired POI based on anonymous crowd comparisons according to one embodiment of the present disclosure. First, the crowd server 12 receives a request to monitor crowds at a POI (step 900). The request may be from one of the mobile devices 14-1 through 14-N, the subscriber device 18, or the third-party service 22. The crowd hash computing function 28 then computes and stores crowd hash values for crowds at the POI over time (step 902). More specifically, in one embodiment, the crowd hash computing function 28 periodically queries the crowd formation function 26 for crowds at the POI, computes crowd hash values for the crowds at the POI, and stores the crowd hash values for the crowds in the crowd hash repository 32.
  • At some point, the crowd comparison function 30 compares the crowd hash values computed and stored for crowds at the POI over time to provide data characterizing crowd patterns at the POI (step 904). In other words, the crowd comparison function 30 characterizes crowd patterns at the POI based on comparisons of the crowd hash values computed and stored for crowds at the POI over time. More specifically, in one embodiment, for each of one or more reoccurring time windows, the crowd comparison function 30 determines a degree of user overlap between each crowd at the POI during the reoccurring time window and each other crowd at the POI during the reoccurring time window based on comparisons of corresponding crowd hash values. As a result, for each reoccurring time window, the crowd comparison function 30 provides a degree of user overlap between each pair of crowds at the POI during the reoccurring time window. Then, for each reoccurring time window, the degrees of user overlap computed for the pairs of crowds at the POI during the reoccurring time window may be combined (e.g., averaged) to provide a combined degree of user overlap for the reoccurring time window. The combined degree of user overlap for each of the reoccurring time windows may then be provided as data characterizing crowd patterns at the POI. Note that, as used herein, a reoccurring time window is a time window that periodically repeats itself. Some examples of a reoccurring time window are Friday (i.e., the day Friday repeats weekly), weekdays from 11 AM to 1 PM (repeats daily during the week and each week), March 19 (repeats yearly), or the like. Once characterization is complete, the data characterizing crowd patterns at the POI is returned to the requestor (step 906).
  • FIG. 12 is a block diagram of the crowd server 12 according to one embodiment of the present disclosure. As illustrated, the crowd server 12 includes a controller 40 connected to memory 42, one or more secondary storage devices 44, and a communication interface 46 by a bus 48 or similar mechanism. The controller 40 is a microprocessor, digital Application Specific Integrated Circuit (ASIC), Field Programmable Gate Array (FPGA), or the like. In this embodiment, the controller 40 is a microprocessor, and the crowd formation function 26, the crowd hash computing function 28, and the crowd comparison function 30 (FIG. 5) are implemented in software and stored in the memory 42 for execution by the controller 40. Further, the crowd hash repository 32 (FIG. 5) may be implemented in the one or more secondary storage devices 44. The one or more secondary storage devices 44 are digital data storage devices such as, for example, one or more hard disk drives. The communication interface 46 is a wired or wireless communication interface that communicatively couples the crowd server 12 to the network 24 (FIG. 5). For example, the communication interface 46 may be an Ethernet interface, local wireless interface such as a wireless interface operating according to one of the suite of IEEE 802.11 standards, or the like.
  • FIG. 13 is a block diagram of the mobile device 14-1 according to one embodiment of the present disclosure. This discussion is equally applicable to the other mobile devices 14-2 through 14-N. As illustrated, the mobile device 14-1 includes a controller 50 connected to memory 52, a communication interface 54, one or more user interface components 56, and the location determination function 36-1 by a bus 58 or similar mechanism. The controller 50 is a microprocessor, digital ASIC, FPGA, or the like. In this embodiment, the controller 50 is a microprocessor, and the crowd client 34-1 (FIG. 5) is implemented in software and stored in the memory 52 for execution by the controller 50. In this embodiment, the location determination function 36-1 is a hardware component such as, for example, a GPS receiver. The communication interface 54 is a wireless communication interface that communicatively couples the mobile device 14-1 to the network 24 (FIG. 5). For example, the communication interface 54 may be a local wireless interface such as a wireless interface operating according to one of the suite of IEEE 802.11 standards, a mobile communications interface such as a cellular telecommunications interface, or the like. The one or more user interface components 56 include, for example, a touchscreen, a display, one or more user input components (e.g., a keypad), a speaker, or the like, or any combination thereof.
  • FIG. 14 is a block diagram of the subscriber device 18 according to one embodiment of the present disclosure. As illustrated, the subscriber device 18 includes a controller 60 connected to memory 62, one or more secondary storage devices 64, a communication interface 66, and one or more user interface components 68 by a bus 70 or similar mechanism. The controller 60 is a microprocessor, digital ASIC, FPGA, or the like. In this embodiment, the controller 60 is a microprocessor, and the web browser 38 (FIG. 5) is implemented in software and stored in the memory 62 for execution by the controller 60. The one or more secondary storage devices 64 are digital storage devices such as, for example, one or more hard disk drives. The communication interface 66 is a wired or wireless communication interface that communicatively couples the subscriber device 18 to the network 24 (FIG. 5). For example, the communication interface 66 may be an Ethernet interface, local wireless interface such as a wireless interface operating according to one of the suite of IEEE 802.11 standards, a mobile communications interface such as a cellular telecommunications interface, or the like. The one or more user interface components 68 include, for example, a touchscreen, a display, one or more user input components (e.g., a keypad), a speaker, or the like, or any combination thereof.
  • FIG. 15 is a block diagram of a computing device 72 operating to host the third-party service 22 (FIG. 5) according to one embodiment of the present disclosure. The computing device 72 may be, for example, a physical server. As illustrated, the computing device 72 includes a controller 74 connected to memory 76, one or more secondary storage devices 78, a communication interface 80, and one or more user interface components 82 by a bus 84 or similar mechanism. The controller 74 is a microprocessor, digital ASIC, FPGA, or the like. In this embodiment, the controller 74 is a microprocessor, and the third-party service 22 is implemented in software and stored in the memory 76 for execution by the controller 74. The one or more secondary storage devices 78 are digital storage devices such as, for example, one or more hard disk drives. The communication interface 80 is a wired or wireless communication interface that communicatively couples the computing device 72 to the network 24 (FIG. 5). For example, the communication interface 80 may be an Ethernet interface, local wireless interface such as a wireless interface operating according to one of the suite of IEEE 802.11 standards, a mobile communications interface such as a cellular telecommunications interface, or the like. The one or more user interface components 82 include, for example, a touchscreen, a display, one or more user input components (e.g., a keypad), a speaker, or the like, or any combination thereof.
  • Those skilled in the art will recognize improvements and modifications to the preferred embodiments of the present invention. All such improvements and modifications are considered within the scope of the concepts disclosed herein and the claims that follow.

Claims (32)

What is claimed is:
1. A computer-implemented method comprising:
obtaining a hash value for a first user group, the hash value for the first user group comprising a plurality of component hash values generated for a plurality of two-user permutations for the first user group;
obtaining a hash value for a second user group, the hash value for the second user group comprising a plurality of component hash values generated for a plurality of two-user permutations for the second user group; and
determining a degree of user overlap between the first user group and the second user group based on a comparison of the hash value for the first user group and the hash value for the second user group.
2. The method of claim 1 wherein:
the plurality of two user-permutations for the first user group comprises all distinct two-user permutations for the first user group, and each of the plurality of component hash values for the first user group is a hash value computed for a corresponding one of the plurality of two-user permutations for the first user group based on a predetermined hash function; and
the plurality of two user-permutations for the second user group comprises all distinct two-user permutations for the second user group, and each of the plurality of component hash values for the second user group is a hash value computed for a corresponding one of the plurality of two-user permutations for the second user group based on the predetermined hash function.
3. The method of claim 1 wherein:
the plurality of two user-permutations for the first user group comprises all distinct two-user permutations for the first user group other than those that include a requesting user associated with the hash value for the first user group, and each of the plurality of component hash values for the first user group is a hash value computed for a corresponding one of the plurality of two-user permutations for the first user group based on a predetermined hash function; and
the plurality of two user-permutations for the second user group comprises all distinct two-user permutations for the second user group other than those that include a requesting user associated with the hash value for the second user group, and each of the plurality of component hash values for the second user group is a hash value computed for a corresponding one of the plurality of two-user permutations for the second user group based on the predetermined hash function.
4. The method of claim 1 wherein obtaining the hash value for the first user group comprises:
obtaining a list of users in the first user group;
removing a requesting user that initiated a process for obtaining the hash value for the first user group from the list of users;
sorting the list of users in the first user group to provide a sorted list of users;
creating the plurality of two-user permutations for the first user group from the sorted list of users;
computing a component hash value for each of the plurality of two-user permutations for the first user group to provide the plurality of component hash values for the first user group; and
concatenating the plurality of component hash values to provide a concatenated hash value for the first user group.
5. The method of claim 4 wherein obtaining the hash value for the first user group further comprises compressing the concatenated hash value for the first user group using a lossy compression algorithm to provide the hash value for the first user group.
6. The method of claim 5 wherein compressing the concatenated hash value comprises removing every Nth bit, where N is greater than or equal to 2.
7. The method of claim 5 wherein compressing the concatenated hash value comprises removing every other bit.
8. The method of claim 4 wherein sorting the list of users in the first user group to provide the sorted list of users is such that the plurality of two-user permutations for the first user group are canonical with respect to other instances of the plurality of two-user permutations for other user groups including the second user group.
9. The method of claim 1 wherein obtaining the hash value for the first user group comprises:
obtaining a list of users in the first user group;
sorting the list of users in the first user group to provide a sorted list of users;
creating the plurality of two-user permutations for the first user group from the sorted list of users;
computing a component hash value for each of the plurality of two-user permutations for the first user group to provide the plurality of component hash values for the first user group; and
concatenating the plurality of component hash values to provide a concatenated hash value for the first user group.
10. The method of claim 9 wherein obtaining the hash value for the first user group further comprises compressing the concatenated hash value for the first user group using a lossy compression algorithm to provide the hash value for the first user group.
11. The method of claim 10 wherein compressing the concatenated hash value comprises removing every Nth bit, where N is greater than or equal to 2.
12. The method of claim 10 wherein compressing the concatenated hash value comprises removing every other bit.
13. The method of claim 9 wherein sorting the list of users in the first user group to provide the sorted list of users is such that the plurality of two-user permutations for the first user group are canonical with respect to other instances of the plurality of two-user permutations for other user groups including the second user group.
14. The method of claim 1 wherein determining the degree of user overlap between the first user group and the second user group comprises:
determining a number of matching component hash values between the plurality of component hash values for the first user group and the plurality of component hash values for the second user group; and
determining a number of matching users in the first and second user groups based on the number of matching component hash values.
15. The method of claim 14 wherein the number of matching component hash values corresponds to a number of matching two-user permutations between the plurality of two-user permutations for the first user group and the plurality of two-user permutations for the second user group.
16. The method of claim 14 wherein determining the number of matching users in the first and second user groups based on the number of matching component hash values comprises determining the number of matching users in the first and second user groups based on:
n ! 2 ! ( n - 2 ) ! = number_of _matching _two _user _permutations ,
where number_of_matching_two_user_permutations is the number of matching component hash values and n is the number of matching users in the first and second user groups.
17. The method of claim 14 wherein determining the degree of user overlap between the first user group and the second user group further comprises:
determining a largest user group of the first and second user groups; and
determining a percentage of user overlap based on a ratio of the number of matching users over a number of users in the largest user group of the first and second user groups.
18. A server comprising:
a communication interface communicatively coupling the server to a network; and
a controller associated with the communication interface and adapted to:
obtain a hash value for a first user group, the hash value for the first user group comprising a plurality of component hash values generated for a plurality of two-user permutations for the first user group;
obtain a hash value for a second user group, the hash value for the second user group comprising a plurality of component hash values generated for a plurality of two-user permutations for the second user group; and
determine a degree of user overlap between the first user group and the second user group based on a comparison of the hash value for the first user group and the hash value for the second user group.
19. A computer-readable medium storing software for instructing a controller to:
obtain a hash value for a first user group, the hash value for the first user group comprising a plurality of component hash values generated for a plurality of two-user permutations for the first user group;
obtain a hash value for a second user group, the hash value for the second user group comprising a plurality of component hash values generated for a plurality of two-user permutations for the second user group; and
determine a degree of user overlap between the first user group and the second user group based on a comparison of the hash value for the first user group and the hash value for the second user group.
20. A computer-implemented method comprising:
receiving a crowd hash value storage request from a requestor;
obtaining a crowd in which the requestor is located at a time of receiving the crowd hash value storage request;
computing a crowd hash value for the crowd in which the requestor is located, the crowd hash value comprising a plurality of component hash values computed for a plurality of two-user permutations for the crowd in which the requestor is located; and
storing the crowd hash value as a crowd hash value for a crowd of interest of the requestor.
21. The method of claim 20 further comprising, at some time after storing the crowd hash value for the crowd of interest of the requestor:
receiving a current crowd comparison request from the requestor;
obtaining a current crowd that is relevant to the current crowd comparison request;
computing a crowd hash value for the current crowd, the crowd hash value for the current crowd comprising a plurality of component hash values computed for a plurality of two-user permutations for the current crowd;
obtaining the crowd hash value of the crowd of interest of the requestor from storage;
determining a degree of user overlap between the current crowd and the crowd of interest of the requestor based on a comparison of the hash value for the current crowd and the hash value for the crowd of interest of the requestor; and
returning the degree of user overlap between the current crowd and the crowd of interest of the requestor to the requestor.
22. The method of claim 20 further comprising, at some time after storing the crowd hash value for the crowd of interest of the requestor:
receiving a Point of Interest (POI) recommendation request from a requestor;
obtaining a plurality of relevant POIs that are relevant to the POI recommendation request;
for each relevant POI of the plurality of relevant POIs:
obtaining a current crowd at the relevant POI;
computing a crowd hash value for the current crowd at the relevant POI, the crowd hash value comprising a plurality of component hash values computed for a plurality of two-user permutations for the current crowd at the relevant POI; and
determining a degree of user overlap between the current crowd at the relevant POI and the crowd of interest of the requestor based on a comparison of the crowd hash value for the current crowd at the relevant POI and the crowd hash value for the crowd of interest of the requestor obtained from storage;
selecting one or more recommended POIs from the plurality of relevant POIs based on the degree of user overlap between each current crowd at the plurality of relevant POIs and the crowd of interest of the requestor; and
returning the one or more recommended POIs to the requestor.
23. The method of claim 20 further comprising, at some time after storing the crowd hash value for the crowd of interest of the requestor:
receiving a historical crowd comparison request from the requestor;
obtaining one or more historical crowds that are relevant to the historical crowd comparison request;
obtaining the crowd hash value of the crowd of interest of the requestor from storage;
for each historical crowd of the one or more historical crowds:
obtaining a crowd hash value for the historical crowd, the crowd hash value for the historical crowd being previously computed and stored and comprising a plurality of component hash values computed for a plurality of two-user permutations for the historical crowd; and
determining a degree of user overlap between the historical crowd and the crowd of interest of the requestor based on a comparison of the hash value for the historical crowd and the hash value for the crowd of interest of the requestor; and
returning, to the requestor, data reflecting the degree of user overlap between each of the one or more historical crowds and the crowd of interest of the requestor.
24. The method of claim 23 further comprising:
combining the degrees of user overlap between the one or more historical crowds and the crowd of interest of the requestor to provide a combined degree of user overlap;
wherein returning the data comprises returning the combined degree of user overlap.
25. The method of claim 20 further comprising, at some time after storing the crowd hash value for the crowd of interest of the requestor:
receiving a Point of Interest (POI) recommendation request from a requestor;
obtaining a plurality of relevant POIs that are relevant to the POI recommendation request;
for each relevant POI of the plurality of relevant POIs:
obtaining one or more historical crowds at the relevant POI;
for each historical crowd of the one or more historical crowds at the relevant POI, computing a crowd hash value for the historical crowd at the relevant POI, the crowd hash value comprising a plurality of component hash values computed for a plurality of two-user permutations for the historical crowd at the relevant POI; and
for each historical crowd of the one or more historical crowds at the relevant POI, determining a degree of user overlap between the historical crowd at the relevant POI and the crowd of interest of the requestor based on a comparison of the crowd hash value for the historical crowd at the relevant POI and the crowd hash value for the crowd of interest of the requestor obtained from storage;
selecting one or more recommended POIs from the plurality of relevant POIs based on the degree of user overlap between each of the historical crowd at each of the plurality of relevant POIs and the crowd of interest of the requestor; and
returning the one or more recommended POIs to the requestor.
26. A server comprising:
a communication interface communicatively coupling the server to a network; and
a controller associated with the communication interface and adapted to:
receive a crowd hash value storage request from a requestor via the communication interface;
obtain a crowd in which the requestor is located at a time of receiving the crowd hash value storage request;
compute a crowd hash value for the crowd in which the requestor is located, the crowd hash value comprising a plurality of component hash values computed for a plurality of two-user permutations for the crowd in which the requestor is located; and
store the crowd hash value as a crowd hash value for a crowd of interest of the requestor.
27. A computer-readable medium storing software for instructing a controller of a computing device to:
receive a crowd hash value storage request from a requestor;
obtain a crowd in which the requestor is located at a time of receiving the crowd hash value storage request;
compute a crowd hash value for the crowd in which the requestor is located, the crowd hash value comprising a plurality of component hash values computed for a plurality of two-user permutations for the crowd in which the requestor is located; and
store the crowd hash value as a crowd hash value for a crowd of interest of the requestor.
28. A computer-implemented method comprising:
receiving a request to monitor crowds at a Point of Interest (POI) from a requestor;
computing a plurality of crowd hash values for a plurality of crowds at the POI over time, wherein, for each crowd hash value of the plurality of crowd hash values, the crowd hash value comprises a plurality of component hash values computed for a plurality of two-user permutations for a corresponding one of the plurality of crowds at the POI over time;
comparing the plurality of crowd hash values for the plurality of crowds at the POI over time to one another to provide data characterizing crowd patterns at the POI; and
returning the data characterizing crowd patterns at the POI to the requestor.
29. The method of claim 28 wherein comparing the plurality of crowd hash values for the plurality of crowds at the POI over time to one another to provide the data characterizing crowd patterns at the POI comprises:
identifying a subset of the plurality of crowds that were at the POI during a reoccurring time window;
determining a combined degree of user overlap for the subset of the plurality of crowds based on a subset of the plurality of crowd hash values computed for the subset of the plurality of crowds; and
including the combined degree of user overlap for the subset of the plurality of crowds in the data characterizing crowd patterns at the POI.
30. The method of claim 28 wherein comparing the plurality of crowd hash values for the plurality of crowds at the POI over time to one another to provide the data characterizing crowd patterns at the POI comprises:
identifying a subset of the plurality of crowds that were at the POI during a reoccurring time window;
determining a degree of user overlap between each pair of crowds in the subset of the plurality of crowds that were at the POI during the reoccurring time window based on comparisons of crowd hash values in a subset of the plurality of crowd hash values for the subset of the plurality of crowds to one another;
combining the degrees of user overlap for the pairs of crowds in the subset of the plurality of crowds that were at the POI during the reoccurring time window to provide a combined degree of user overlap for the reoccurring time window; and
including the combined degree of user overlap for the reoccurring time window in the data characterizing crowd patterns at the POI.
31. A server comprising:
a communication interface communicatively coupling the server to a network; and
a controller associated with the communication interface and adapted to:
receive a request, via the communication interface, to monitor crowds at a Point of Interest (POI);
compute a plurality of crowd hash values for a plurality of crowds at the POI over time, wherein, for each crowd hash value of the plurality of crowd hash values, the crowd hash value comprises a plurality of component hash values computed for a plurality of two-user permutations for a corresponding one of the plurality of crowds at the POI over time;
compare the plurality of crowd hash values for the plurality of crowds at the POI over time to one another to provide data characterizing crowd patterns at the POI; and
return the data characterizing crowd patterns at the POI to the requestor.
32. A computer-readable medium storing software for instructing a controller of a computing device to:
receive a request to monitor crowds at a Point of Interest (POI);
compute a plurality of crowd hash values for a plurality of crowds at the POI over time, wherein, for each crowd hash value of the plurality of crowd hash values, the crowd hash value comprises a plurality of component hash values computed for a plurality of two-user permutations for a corresponding one of the plurality of crowds at the POI over time;
compare the plurality of crowd hash values for the plurality of crowds at the POI over time to one another to provide data characterizing crowd patterns at the POI; and
return the data characterizing crowd patterns at the POI to the requestor.
US12/759,749 2009-04-29 2010-04-14 Anonymous crowd comparison Abandoned US20120046995A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/759,749 US20120046995A1 (en) 2009-04-29 2010-04-14 Anonymous crowd comparison

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17362509P 2009-04-29 2009-04-29
US12/759,749 US20120046995A1 (en) 2009-04-29 2010-04-14 Anonymous crowd comparison

Publications (1)

Publication Number Publication Date
US20120046995A1 true US20120046995A1 (en) 2012-02-23

Family

ID=45594457

Family Applications (8)

Application Number Title Priority Date Filing Date
US12/759,749 Abandoned US20120046995A1 (en) 2009-04-29 2010-04-14 Anonymous crowd comparison
US12/764,150 Expired - Fee Related US8554770B2 (en) 2009-04-29 2010-04-21 Profile construction using location-based aggregate profile information
US12/764,148 Abandoned US20120047565A1 (en) 2009-04-29 2010-04-21 Proximity-based social graph creation
US12/764,143 Abandoned US20120046068A1 (en) 2009-04-29 2010-04-21 Automatically performing user actions based on detected context-to-user-action correlations
US12/768,973 Abandoned US20120046017A1 (en) 2009-04-29 2010-04-28 System and method for prevention of indirect user tracking through aggregate profile data
US12/769,031 Abandoned US20120047152A1 (en) 2009-04-29 2010-04-28 System and method for profile tailoring in an aggregate profiling system
US12/769,802 Abandoned US20120047448A1 (en) 2009-04-29 2010-04-29 System and method for social browsing using aggregated profiles
US14/037,431 Expired - Fee Related US9053169B2 (en) 2009-04-29 2013-09-26 Profile construction using location-based aggregate profile information

Family Applications After (7)

Application Number Title Priority Date Filing Date
US12/764,150 Expired - Fee Related US8554770B2 (en) 2009-04-29 2010-04-21 Profile construction using location-based aggregate profile information
US12/764,148 Abandoned US20120047565A1 (en) 2009-04-29 2010-04-21 Proximity-based social graph creation
US12/764,143 Abandoned US20120046068A1 (en) 2009-04-29 2010-04-21 Automatically performing user actions based on detected context-to-user-action correlations
US12/768,973 Abandoned US20120046017A1 (en) 2009-04-29 2010-04-28 System and method for prevention of indirect user tracking through aggregate profile data
US12/769,031 Abandoned US20120047152A1 (en) 2009-04-29 2010-04-28 System and method for profile tailoring in an aggregate profiling system
US12/769,802 Abandoned US20120047448A1 (en) 2009-04-29 2010-04-29 System and method for social browsing using aggregated profiles
US14/037,431 Expired - Fee Related US9053169B2 (en) 2009-04-29 2013-09-26 Profile construction using location-based aggregate profile information

Country Status (1)

Country Link
US (8) US20120046995A1 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120102165A1 (en) * 2010-10-21 2012-04-26 International Business Machines Corporation Crowdsourcing location based applications and structured data for location based applications
US20130103772A1 (en) * 2011-10-25 2013-04-25 International Business Machines Corporation Method for an instant messaging system and instant messaging system
US20160050167A1 (en) * 2014-08-18 2016-02-18 Google Inc. Matching conversions from applications to selected content items
US20160378776A1 (en) * 2015-06-25 2016-12-29 Facebook, Inc. Identifying Groups For Recommendation To A Social Networking System User Based On User Location And Locations Associated With Groups
US10034135B1 (en) * 2011-06-08 2018-07-24 Dstillery Inc. Privacy-sensitive methods, systems, and media for geo-social targeting
US10096041B2 (en) 2012-07-31 2018-10-09 The Spoken Thought, Inc. Method of advertising to a targeted buyer
US20200265089A1 (en) * 2018-05-30 2020-08-20 Google Llc Optimizing geographic region selection
US11468029B2 (en) * 2019-01-21 2022-10-11 Netapp, Inc. Evolution of communities derived from access patterns

Families Citing this family (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9459622B2 (en) 2007-01-12 2016-10-04 Legalforce, Inc. Driverless vehicle commerce network and community
US9037516B2 (en) 2006-03-17 2015-05-19 Fatdoor, Inc. Direct mailing in a geo-spatial environment
US9070101B2 (en) 2007-01-12 2015-06-30 Fatdoor, Inc. Peer-to-peer neighborhood delivery multi-copter and method
US8965409B2 (en) 2006-03-17 2015-02-24 Fatdoor, Inc. User-generated community publication in an online neighborhood social network
US9098545B2 (en) 2007-07-10 2015-08-04 Raj Abhyanker Hot news neighborhood banter in a geo-spatial social network
US9002754B2 (en) 2006-03-17 2015-04-07 Fatdoor, Inc. Campaign in a geo-spatial environment
US9373149B2 (en) 2006-03-17 2016-06-21 Fatdoor, Inc. Autonomous neighborhood vehicle commerce network and community
US9064288B2 (en) 2006-03-17 2015-06-23 Fatdoor, Inc. Government structures and neighborhood leads in a geo-spatial environment
US8863245B1 (en) 2006-10-19 2014-10-14 Fatdoor, Inc. Nextdoor neighborhood social network method, apparatus, and system
US20100284290A1 (en) * 2009-04-09 2010-11-11 Aegis Mobility, Inc. Context based data mediation
US20120046995A1 (en) 2009-04-29 2012-02-23 Waldeck Technology, Llc Anonymous crowd comparison
US8775605B2 (en) 2009-09-29 2014-07-08 At&T Intellectual Property I, L.P. Method and apparatus to identify outliers in social networks
US20110093515A1 (en) * 2009-10-15 2011-04-21 Mary Elizabeth Albanese Mobile local search platform
US8473512B2 (en) 2009-11-06 2013-06-25 Waldeck Technology, Llc Dynamic profile slice
US20120066303A1 (en) * 2010-03-03 2012-03-15 Waldeck Technology, Llc Synchronized group location updates
EP2569968B1 (en) * 2010-05-11 2021-08-18 Nokia Technologies Oy Method and apparatus for determining user context
US20120023124A1 (en) * 2010-07-20 2012-01-26 Tobin Biolchini Social networking communication interface system and method
KR101742986B1 (en) * 2010-07-26 2017-06-15 엘지전자 주식회사 Image display apparatus and method for operating the same
US9646317B2 (en) * 2010-08-06 2017-05-09 Avaya Inc. System and method for predicting user patterns for adaptive systems and user interfaces based on social synchrony and homophily
US9940682B2 (en) * 2010-08-11 2018-04-10 Nike, Inc. Athletic activity user experience and environment
KR101932714B1 (en) * 2010-09-28 2018-12-26 삼성전자주식회사 Method for creating and joining social group, user device, server, and storage medium thereof
KR20120034477A (en) * 2010-10-01 2012-04-12 엔에이치엔(주) System and method for providing document based on personal network
US8818981B2 (en) * 2010-10-15 2014-08-26 Microsoft Corporation Providing information to users based on context
US9571590B2 (en) * 2010-12-09 2017-02-14 Location Labs, Inc. System and method for improved detection and monitoring of online accounts
US9460299B2 (en) 2010-12-09 2016-10-04 Location Labs, Inc. System and method for monitoring and reporting peer communications
WO2012078190A1 (en) 2010-12-09 2012-06-14 Checkpoints Llc Systems, apparatuses and methods for verifying consumer activity and providing value to consumers based on consumer activity
US9268956B2 (en) 2010-12-09 2016-02-23 Location Labs, Inc. Online-monitoring agent, system, and method for improved detection and monitoring of online accounts
US20120158503A1 (en) 2010-12-17 2012-06-21 Ebay Inc. Identifying purchase patterns and marketing based on user mood
US20120209668A1 (en) * 2011-02-15 2012-08-16 Terry Angelos Dynamically serving content to social network members
US8539086B2 (en) 2011-03-23 2013-09-17 Color Labs, Inc. User device group formation
US20130031160A1 (en) * 2011-06-27 2013-01-31 Christopher Carmichael Web 3.0 Content Aggregation, Delivery and Navigation System
US8773437B1 (en) * 2011-07-12 2014-07-08 Relationship Science LLC Weighting paths in a social graph based on time
US20130204937A1 (en) * 2011-09-02 2013-08-08 Barry Fernando Platform for information management and method using same
US8473550B2 (en) 2011-09-21 2013-06-25 Color Labs, Inc. Content sharing using notification within a social networking environment
US20130091146A1 (en) * 2011-10-05 2013-04-11 Wifarer Inc Determination of mobile user profile and preferences from movement patterns
US9253282B2 (en) 2011-10-18 2016-02-02 Qualcomm Incorporated Method and apparatus for generating, using, or updating an enriched user profile
US9519722B1 (en) * 2011-11-14 2016-12-13 Google Inc. Method and system for providing dynamic personalized recommendations for a destination
US20180253189A1 (en) * 2011-12-16 2018-09-06 Google Inc. Controlling display of content
US20130179263A1 (en) * 2012-01-11 2013-07-11 Eric Leebow Contextually linking people to strategic locations
US8594623B2 (en) * 2012-01-25 2013-11-26 Telefonaktiebolaget L M Ericsson (Publ) Subscriber portfolio management system
US9183597B2 (en) 2012-02-16 2015-11-10 Location Labs, Inc. Mobile user classification system and method
US9195777B2 (en) 2012-03-07 2015-11-24 Avira B.V. System, method and computer program product for normalizing data obtained from a plurality of social networks
US20130254152A1 (en) * 2012-03-23 2013-09-26 Palo Alto Research Center Incorporated Distributed system and methods for modeling population-centric activities
JP6064376B2 (en) 2012-06-06 2017-01-25 ソニー株式会社 Information processing device, computer program, and terminal device
JP5904021B2 (en) * 2012-06-07 2016-04-13 ソニー株式会社 Information processing apparatus, electronic device, information processing method, and program
US9412136B2 (en) 2012-07-09 2016-08-09 Facebook, Inc. Creation of real-time conversations based on social location information
JP6452250B2 (en) 2012-08-09 2019-01-16 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited System and method for measuring congestion of people in one place
TW201408992A (en) * 2012-08-21 2014-03-01 Hon Hai Prec Ind Co Ltd Mobile terminal, cloud server, and method for identifying hot spot
US9712574B2 (en) * 2012-08-31 2017-07-18 Facebook, Inc. Real-world view of location-associated social data
CN104584007B (en) * 2012-09-06 2018-01-09 索尼公司 Message processing device, information processing method and program
US8925054B2 (en) 2012-10-08 2014-12-30 Comcast Cable Communications, Llc Authenticating credentials for mobile platforms
JP2014106585A (en) * 2012-11-26 2014-06-09 Sony Corp Information processing device, terminal device, information processing method and program
US9026489B2 (en) * 2012-11-30 2015-05-05 International Business Machines Corporation Updating a conference invitation responsive to user location
US9432806B2 (en) * 2012-12-04 2016-08-30 Ebay Inc. Dynamic geofence based on members within
US9104787B2 (en) 2012-12-14 2015-08-11 Microsoft Technology Licensing, Llc Augmenting search results with relevant third-party application content
US9122759B2 (en) * 2012-12-18 2015-09-01 Eharmony, Inc. Systems and methods for online social matchmaking
US9015110B2 (en) * 2012-12-20 2015-04-21 Hulu, LLC Automatic updating of aggregations for aggregating data
EP2750417A1 (en) * 2012-12-28 2014-07-02 Telefónica, S.A. Method for determining points of interest based on user communications and location
US8984151B1 (en) * 2013-02-05 2015-03-17 Google Inc. Content developer abuse detection
US10649619B2 (en) * 2013-02-21 2020-05-12 Oath Inc. System and method of using context in selecting a response to user device interaction
EP2973245A4 (en) 2013-03-15 2017-01-11 Factual Inc. Crowdsouorcing domain specific intelligence
US11025521B1 (en) * 2013-03-15 2021-06-01 CSC Holdings, LLC Dynamic sample selection based on geospatial area and selection predicates
US9438685B2 (en) 2013-03-15 2016-09-06 Location Labs, Inc. System and method for display of user relationships corresponding to network-enabled communications
US10367773B2 (en) * 2013-05-16 2019-07-30 Roger Serad Social network based on GPS and other network connections
US9514119B2 (en) * 2013-05-21 2016-12-06 International Business Machines Corporation Contributor identification tool
US9699132B2 (en) * 2013-05-30 2017-07-04 Tencent Technology (Shenzhen) Company Limited Method, apparatus, and system for exchanging electronic business card
US20140372197A1 (en) * 2013-06-14 2014-12-18 Tigerapps Systems, apparatuses and methods for providing a price point to a consumer for products in an electronic shopping cart of the consumer
DE102013009958A1 (en) * 2013-06-14 2014-12-18 Sogidia AG A social networking system and method of exercising it using a computing device that correlates to a user profile
KR20150008688A (en) * 2013-07-15 2015-01-23 삼성전자주식회사 Display apparatus and control method of the same
US20150039472A1 (en) * 2013-08-02 2015-02-05 Mark John Tryder Method and system for selecting and pricing media content
US10332154B2 (en) * 2013-10-21 2019-06-25 Shant Tchakerian Device, method and non-transitory computer readable storage medium for determining a match between profiles
CN104636354B (en) * 2013-11-07 2018-02-06 华为技术有限公司 A kind of position interest points clustering method and relevant apparatus
US9635507B2 (en) * 2013-11-26 2017-04-25 Globalfoundries Inc. Mobile device analytics
US20150161649A1 (en) * 2013-12-10 2015-06-11 Semantic Labs, LLC Method and system for authorizing and enabling anonymous consumer internet personalization
WO2015101810A1 (en) * 2013-12-31 2015-07-09 Turkcell Teknoloji Arastirma Ve Gelistirme A.S. A system for retrieval and presentation of subscriber density information
CN104767652B (en) 2014-01-08 2020-01-17 杜比实验室特许公司 Method for monitoring performance of digital transmission environment
US20150220627A1 (en) * 2014-02-04 2015-08-06 International Business Machines Corporation System and method for finding collective interest-based social communities
US9439367B2 (en) 2014-02-07 2016-09-13 Arthi Abhyanker Network enabled gardening with a remotely controllable positioning extension
US10318990B2 (en) 2014-04-01 2019-06-11 Ebay Inc. Selecting users relevant to a geofence
US10447838B2 (en) 2014-04-03 2019-10-15 Location Labs, Inc. Telephone fraud management system and method
US9936241B2 (en) * 2014-04-07 2018-04-03 Cellco Partnership Method and apparatus for providing dynamic channel and content provisioning
US9457901B2 (en) 2014-04-22 2016-10-04 Fatdoor, Inc. Quadcopter with a printable payload extension system and method
US9004396B1 (en) 2014-04-24 2015-04-14 Fatdoor, Inc. Skyteboard quadcopter and method
US20150317366A1 (en) * 2014-04-30 2015-11-05 Linkedin Corporation Generating visual representations of attributes of selected sets of members of a social network
CN105095242B (en) 2014-04-30 2018-07-27 国际商业机器公司 A kind of method and apparatus of label geographic area
US9022324B1 (en) 2014-05-05 2015-05-05 Fatdoor, Inc. Coordination of aerial vehicles through a central server
US9473883B2 (en) * 2014-05-31 2016-10-18 Apple Inc. Location service authorization and indication
US9971985B2 (en) 2014-06-20 2018-05-15 Raj Abhyanker Train based community
US9441981B2 (en) 2014-06-20 2016-09-13 Fatdoor, Inc. Variable bus stops across a bus route in a regional transportation network
US9451020B2 (en) 2014-07-18 2016-09-20 Legalforce, Inc. Distributed communication of independent autonomous vehicles to provide redundancy and performance
US10031925B2 (en) * 2014-10-15 2018-07-24 Thinkcx Technologies, Inc. Method and system of using image recognition and geolocation signal analysis in the construction of a social media user identity graph
CN105681007B (en) * 2014-11-19 2020-11-06 北京三星通信技术研究有限公司 Reference signal sending and receiving method and device, and scheduling method and device
EP3030020B1 (en) * 2014-12-01 2020-01-08 Viavi Solutions UK Limited Providing streaming geolocation infomation
US9565541B2 (en) * 2014-12-29 2017-02-07 Iridium Satellite Llc Emergency communications from a local area network hotspot
CN105824840B (en) 2015-01-07 2019-07-16 阿里巴巴集团控股有限公司 A kind of method and device for area label management
WO2016123266A1 (en) * 2015-01-27 2016-08-04 Twitter, Inc. Capture and sharing of video contents
US10223397B1 (en) * 2015-03-13 2019-03-05 Snap Inc. Social graph based co-location of network users
US9665733B1 (en) 2015-03-31 2017-05-30 Google Inc. Setting access controls for a content item
US10200808B2 (en) * 2015-04-14 2019-02-05 At&T Mobility Ii Llc Anonymization of location datasets for travel studies
US10205696B2 (en) * 2015-06-11 2019-02-12 Avi Solomon Systems methods circuits and associated computer executable code for facilitating selective messaging and multicasting
CN106294516A (en) * 2015-06-12 2017-01-04 阿里巴巴集团控股有限公司 Method for providing position information and device
EP3107319A1 (en) 2015-06-17 2016-12-21 a French Société par Actions Simplifiée Facetts User network system with selective user facet connections
US10268773B2 (en) * 2015-06-30 2019-04-23 International Business Machines Corporation Navigating a website using visual analytics and a dynamic data source
WO2017040725A1 (en) 2015-08-31 2017-03-09 Cordial Experience, Inc. Systems and methods for distributed electronic communication and configuration
EP3139572A1 (en) * 2015-09-07 2017-03-08 Alcatel Lucent User profiling for location based advertising
US9953176B2 (en) * 2015-10-02 2018-04-24 Dtex Systems Inc. Method and system for anonymizing activity records
US9723441B2 (en) * 2015-10-06 2017-08-01 International Business Machines Corporation Location based on call detail record
US9928512B2 (en) 2015-11-25 2018-03-27 International Business Machines Corporation Intelligent detection of changed user parameters in a system
US9930134B2 (en) * 2015-11-25 2018-03-27 International Business Machines Corporation File replication on location-aware devices
KR102079892B1 (en) * 2016-03-01 2020-02-20 낸드박스 아이엔씨 Management of multiple profiles for a single account in an asynchronous messaging system
US10489401B2 (en) 2016-05-31 2019-11-26 International Business Machines Corporation Efficient aggregation in a parallel system
US11934450B2 (en) * 2016-06-24 2024-03-19 Skusub LLC System and method for object matching using 3D imaging
CN107666500B (en) * 2016-07-28 2021-01-15 腾讯科技(深圳)有限公司 Timing method, device and system
EP3322149B1 (en) * 2016-11-10 2023-09-13 Tata Consultancy Services Limited Customized map generation with real time messages and locations from concurrent users
US10542019B2 (en) * 2017-03-09 2020-01-21 International Business Machines Corporation Preventing intersection attacks
US10345818B2 (en) 2017-05-12 2019-07-09 Autonomy Squared Llc Robot transport method with transportation container
US10346285B2 (en) 2017-06-09 2019-07-09 Microsoft Technology Licensing, Llc Instrumentation of user actions in software applications
CN107360146B (en) * 2017-07-03 2021-03-26 深圳大学 Privacy protection space crowdsourcing task allocation system and method for receiving guarantee
US11263399B2 (en) * 2017-07-31 2022-03-01 Apple Inc. Correcting input based on user context
TWI644224B (en) * 2017-10-18 2018-12-11 財團法人工業技術研究院 Data de-identification method, data de-identification apparatus and non-transitory computer readable storage medium executing the same
US10629242B2 (en) * 2017-12-06 2020-04-21 International Business Machines Corporation Recording user activity on a computer
US11068511B2 (en) 2018-03-27 2021-07-20 International Business Machines Corporation Aggregate relationship graph
CN110390045B (en) * 2018-04-12 2021-12-17 腾讯大地通途(北京)科技有限公司 Interest point recommendation method and device based on location service
US11924297B2 (en) 2018-05-24 2024-03-05 People.ai, Inc. Systems and methods for generating a filtered data set
US10565229B2 (en) 2018-05-24 2020-02-18 People.ai, Inc. Systems and methods for matching electronic activities directly to record objects of systems of record
US11463441B2 (en) 2018-05-24 2022-10-04 People.ai, Inc. Systems and methods for managing the generation or deletion of record objects based on electronic activities and communication policies
CN110634208A (en) 2018-06-22 2019-12-31 开利公司 Zone learning for friction-free building interaction
US11017430B2 (en) * 2018-11-16 2021-05-25 International Business Machines Corporation Delivering advertisements based on user sentiment and learned behavior
CN111291082B (en) * 2020-01-20 2023-10-31 北京百度网讯科技有限公司 Data aggregation processing method, device, equipment and storage medium
US10976979B1 (en) * 2020-03-20 2021-04-13 Facebook Technologies, Llc Social experiences in artificial reality environments
US20220092658A1 (en) * 2020-09-22 2022-03-24 Gopesh Kumar System and method for expert service providers to provide one on one chat advice services through unique empowered independent agents to consumers
US11477615B2 (en) * 2020-10-30 2022-10-18 Hewlett Packard Enterprise Development Lp Alerting mobile devices based on location and duration data
US11082315B1 (en) * 2020-12-14 2021-08-03 Qualcomm Incorporated Method of sub flow or activity classification
CN116783894A (en) * 2021-01-25 2023-09-19 埃美杰斯有限责任公司 Method and system for reconciling uncoordinated content by data filtering and synchronization based on multi-modal metadata to generate a composite media asset

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5734721A (en) * 1995-10-12 1998-03-31 Itt Corporation Anti-spoof without error extension (ANSWER)
US6209111B1 (en) * 1998-11-09 2001-03-27 Microsoft Corporation Error correction on a mobile device
US20080059492A1 (en) * 2006-08-31 2008-03-06 Tarin Stephen A Systems, methods, and storage structures for cached databases
US7908254B2 (en) * 2005-06-10 2011-03-15 Hewlett-Packard Development Company, L.P. Identifying characteristics in sets of organized items
US7965841B2 (en) * 2005-01-31 2011-06-21 Fujitsu Limited Method and apparatus for compressing and decompressing data, and computer product
US8375008B1 (en) * 2003-01-17 2013-02-12 Robert Gomes Method and system for enterprise-wide retention of digital or electronic data

Family Cites Families (188)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539232A (en) 1994-05-31 1996-07-23 Kabushiki Kaisha Toshiba MOS composite type semiconductor device
US5758257A (en) * 1994-11-29 1998-05-26 Herz; Frederick System and method for scheduling broadcast of and access to video programs and other data using customer profiles
US6308175B1 (en) * 1996-04-04 2001-10-23 Lycos, Inc. Integrated collaborative/content-based filter structure employing selectively shared, content-based profile data to evaluate information entities in a massive information network
JP3276860B2 (en) * 1996-09-02 2002-04-22 富士通株式会社 Data compression / decompression method
US5890152A (en) 1996-09-09 1999-03-30 Seymour Alvin Rapaport Personal feedback browser for obtaining media files
US20010013009A1 (en) 1997-05-20 2001-08-09 Daniel R. Greening System and method for computer-based marketing
US6189008B1 (en) 1998-04-03 2001-02-13 Intertainer, Inc. Dynamic digital asset management
US6240069B1 (en) 1998-06-16 2001-05-29 Ericsson Inc. System and method for location-based group services
US6842877B2 (en) * 1998-12-18 2005-01-11 Tangis Corporation Contextual responses based on automated learning techniques
US9183306B2 (en) * 1998-12-18 2015-11-10 Microsoft Technology Licensing, Llc Automated selection of appropriate information based on a computer user's context
US6385619B1 (en) 1999-01-08 2002-05-07 International Business Machines Corporation Automatic user interest profile generation from structured document access information
US6401051B1 (en) 1999-04-20 2002-06-04 Sun Microsystems, Inc. Method and apparatus for locating buried objects
US7162471B1 (en) 1999-05-11 2007-01-09 Maquis Techtrix Llc Content query system and method
US20040181668A1 (en) 1999-06-30 2004-09-16 Blew Edwin O. Methods for conducting server-side encryption/decryption-on-demand
US6549768B1 (en) 1999-08-24 2003-04-15 Nokia Corp Mobile communications matching system
ATE253283T1 (en) 1999-09-29 2003-11-15 Swisscom Mobile Ag METHOD FOR FINDING MEMBERS OF A COMMON INTEREST GROUP
AU7857900A (en) * 1999-10-04 2001-05-10 John C. Day Method of dynamically recommending web sites and answering user queries based upon affinity groups
US6204844B1 (en) 1999-10-08 2001-03-20 Motorola, Inc. Method and apparatus for dynamically grouping communication units in a communication system
US6724403B1 (en) * 1999-10-29 2004-04-20 Surfcast, Inc. System and method for simultaneous display of multiple information sources
US6819919B1 (en) 1999-10-29 2004-11-16 Telcontar Method for providing matching and introduction services to proximate mobile users and service providers
US6708172B1 (en) 1999-12-22 2004-03-16 Urbanpixel, Inc. Community-based shared multiple browser environment
GB2358263A (en) 2000-01-13 2001-07-18 Applied Psychology Res Ltd Generating user profile data
CA2298194A1 (en) 2000-02-07 2001-08-07 Profilium Inc. Method and system for delivering and targeting advertisements over wireless networks
US6701362B1 (en) 2000-02-23 2004-03-02 Purpleyogi.Com Inc. Method for creating user profiles
US20020010628A1 (en) 2000-05-24 2002-01-24 Alan Burns Method of advertising and polling
US6539232B2 (en) 2000-06-10 2003-03-25 Telcontar Method and system for connecting mobile users based on degree of separation
US20020049690A1 (en) 2000-06-16 2002-04-25 Masanori Takano Method of expressing crowd movement in game, storage medium, and information processing apparatus
US6968179B1 (en) * 2000-07-27 2005-11-22 Microsoft Corporation Place specific buddy list services
US7054614B1 (en) * 2000-08-07 2006-05-30 Denso Corporation Context privacy for delivery of context-aware content for wireless terminals
US8117281B2 (en) 2006-11-02 2012-02-14 Addnclick, Inc. Using internet content as a means to establish live social networks by linking internet users to each other who are simultaneously engaged in the same and/or similar content
DE60103085T2 (en) * 2000-11-20 2004-11-25 British Telecommunications P.L.C. METHOD FOR MANAGING RESOURCES
US6832242B2 (en) 2000-12-28 2004-12-14 Intel Corporation System and method for automatically sharing information between handheld devices
US7062469B2 (en) 2001-01-02 2006-06-13 Nokia Corporation System and method for public wireless network access subsidized by dynamic display advertising
US6529136B2 (en) 2001-02-28 2003-03-04 International Business Machines Corporation Group notification system and method for implementing and indicating the proximity of individuals or groups to other individuals or groups
US20040098386A1 (en) 2001-03-30 2004-05-20 Marcus Thint Profile management system
US6757517B2 (en) 2001-05-10 2004-06-29 Chin-Chi Chang Apparatus and method for coordinated music playback in wireless ad-hoc networks
JP2003203084A (en) 2001-06-29 2003-07-18 Hitachi Ltd Information terminal device, server, and information distributing device and method
US7284191B2 (en) * 2001-08-13 2007-10-16 Xerox Corporation Meta-document management system with document identifiers
US7123918B1 (en) 2001-08-20 2006-10-17 Verizon Services Corp. Methods and apparatus for extrapolating person and device counts
US20050231425A1 (en) 2001-09-10 2005-10-20 American Gnc Corporation Wireless wide area networked precision geolocation
US7035863B2 (en) 2001-11-13 2006-04-25 Koninklijke Philips Electronics N.V. Method, system and program product for populating a user profile based on existing user profiles
US20040025185A1 (en) 2002-04-29 2004-02-05 John Goci Digital video jukebox network enterprise system
US7024207B2 (en) 2002-04-30 2006-04-04 Motorola, Inc. Method of targeting a message to a communication device selected from among a set of communication devices
US7403990B2 (en) 2002-05-08 2008-07-22 Ricoh Company, Ltd. Information distribution system
US7254406B2 (en) 2002-06-10 2007-08-07 Suman Beros Method and apparatus for effecting a detection of mobile devices that are proximate and exhibit commonalities between specific data sets, or profiles, associated with the persons transporting the mobile devices
US7444655B2 (en) 2002-06-11 2008-10-28 Microsoft Corporation Anonymous aggregated data collection
US7116985B2 (en) 2002-06-14 2006-10-03 Cingular Wireless Ii, Llc Method for providing location-based services in a wireless network, such as varying levels of services
US7251233B2 (en) * 2002-06-24 2007-07-31 Intel Corporation Call routing in a location-aware network
JP2004133733A (en) * 2002-10-11 2004-04-30 Sony Corp Display device, display method, and program
US20040098744A1 (en) 2002-11-18 2004-05-20 Koninklijke Philips Electronics N.V. Creation of a stereotypical profile via image based clustering
US7247024B2 (en) 2002-11-22 2007-07-24 Ut-Battelle, Llc Method for spatially distributing a population
JP2004241866A (en) 2003-02-03 2004-08-26 Alpine Electronics Inc Inter-vehicle communication system
US7787886B2 (en) 2003-02-24 2010-08-31 Invisitrack, Inc. System and method for locating a target using RFID
US8423042B2 (en) 2004-02-24 2013-04-16 Invisitrack, Inc. Method and system for positional finding using RF, continuous and/or combined movement
US7158798B2 (en) 2003-02-28 2007-01-02 Lucent Technologies Inc. Location-based ad-hoc game services
FI118494B (en) 2003-03-26 2007-11-30 Teliasonera Finland Oyj A method for monitoring traffic flows of mobile users
GB2402841B (en) * 2003-06-10 2005-05-11 Whereonearth Ltd A method of providing location based information to a mobile terminal within a communications network
WO2004111799A2 (en) 2003-06-12 2004-12-23 Honda Motor Co., Ltd. Systems and methods for using visual hulls to determine the number of people in a crowd
US20050038876A1 (en) 2003-08-15 2005-02-17 Aloke Chaudhuri System and method for instant match based on location, presence, personalization and communication
US7428417B2 (en) 2003-09-26 2008-09-23 Siemens Communications, Inc. System and method for presence perimeter rule downloading
US20040107283A1 (en) 2003-10-06 2004-06-03 Trilibis Inc. System and method for the aggregation and matching of personal information
US20050130634A1 (en) 2003-10-31 2005-06-16 Globespanvirata, Inc. Location awareness in wireless networks
US7359724B2 (en) 2003-11-20 2008-04-15 Nokia Corporation Method and system for location based group formation
US20070162328A1 (en) 2004-01-20 2007-07-12 Nooly Technologies, Ltd. Lbs nowcasting sensitive advertising and promotion system and method
US7398081B2 (en) 2004-02-04 2008-07-08 Modu Ltd. Device and system for selective wireless communication with contact list memory
US7310676B2 (en) * 2004-02-09 2007-12-18 Proxpro, Inc. Method and computer system for matching mobile device users for business and social networking
US7545784B2 (en) 2004-02-11 2009-06-09 Yahoo! Inc. System and method for wireless communication between previously known and unknown users
US8014763B2 (en) 2004-02-28 2011-09-06 Charles Martin Hymes Wireless communications with proximal targets identified visually, aurally, or positionally
US7593740B2 (en) 2004-05-12 2009-09-22 Google, Inc. Location-based social software for mobile devices
US20050278317A1 (en) 2004-05-14 2005-12-15 William Gross Personalized search engine
WO2005122013A1 (en) 2004-06-10 2005-12-22 Matsushita Electric Industrial Co., Ltd. User profile management system
US7509131B2 (en) 2004-06-29 2009-03-24 Microsoft Corporation Proximity detection using wireless signal strengths
US8078607B2 (en) * 2006-03-30 2011-12-13 Google Inc. Generating website profiles based on queries from webistes and user activities on the search results
US20060036457A1 (en) * 2004-08-13 2006-02-16 Mcnamara Lori Systems and methods for facilitating romantic connections
US20060046743A1 (en) 2004-08-24 2006-03-02 Mirho Charles A Group organization according to device location
US8126441B2 (en) 2004-09-21 2012-02-28 Advanced Ground Information Systems, Inc. Method of establishing a cell phone network of participants with a common interest
US8019692B2 (en) * 2004-10-19 2011-09-13 Yahoo! Inc. System and method for location based social networking
US11283885B2 (en) 2004-10-19 2022-03-22 Verizon Patent And Licensing Inc. System and method for location based matching and promotion
US7707413B2 (en) 2004-12-02 2010-04-27 Palo Alto Research Center Incorporated Systems and methods for protecting private information in a mobile environment
US20060123080A1 (en) 2004-12-03 2006-06-08 Motorola, Inc. Method and system of collectively setting preferences among a plurality of electronic devices and users
WO2009021198A1 (en) 2007-08-08 2009-02-12 Baynote, Inc. Method and apparatus for context-based content recommendation
US20060229058A1 (en) 2005-10-29 2006-10-12 Outland Research Real-time person-to-person communication using geospatial addressing
US20060195361A1 (en) 2005-10-01 2006-08-31 Outland Research Location-based demographic profiling system and method of use
US7853268B2 (en) 2005-01-26 2010-12-14 Broadcom Corporation GPS enabled cell phone location tracking for security purposes
US7236091B2 (en) * 2005-02-10 2007-06-26 Pinc Solutions Position-tracking system
US7423580B2 (en) 2005-03-14 2008-09-09 Invisitrack, Inc. Method and system of three-dimensional positional finding
US8060463B1 (en) * 2005-03-30 2011-11-15 Amazon Technologies, Inc. Mining of user event data to identify users with common interests
US7353034B2 (en) 2005-04-04 2008-04-01 X One, Inc. Location sharing and tracking using mobile phones or other wireless devices
US20070210937A1 (en) 2005-04-21 2007-09-13 Microsoft Corporation Dynamic rendering of map information
US20060282303A1 (en) 2005-06-08 2006-12-14 Microsoft Corporation Distributed organizational analyzer
US20070005419A1 (en) * 2005-06-30 2007-01-04 Microsoft Corporation Recommending location and services via geospatial collaborative filtering
US20070156664A1 (en) 2005-07-06 2007-07-05 Gemini Mobile Technologies, Inc. Automatic user matching in an online environment
WO2007011839A2 (en) 2005-07-15 2007-01-25 Agilis Systems, Inc. Mobile resource location-based customer contact systems and methods
US8150416B2 (en) 2005-08-08 2012-04-03 Jambo Networks, Inc. System and method for providing communication services to mobile device users incorporating proximity determination
WO2007026357A2 (en) * 2005-08-30 2007-03-08 Nds Limited Enhanced electronic program guides
US7734632B2 (en) * 2005-10-28 2010-06-08 Disney Enterprises, Inc. System and method for targeted ad delivery
CN1967523B (en) 2005-11-15 2010-07-28 日电(中国)有限公司 Inquiry system and method of traffic information
US20070118509A1 (en) 2005-11-18 2007-05-24 Flashpoint Technology, Inc. Collaborative service for suggesting media keywords based on location data
KR101375583B1 (en) 2005-11-23 2014-04-01 오브젝트비디오 인코퍼레이티드 Object Density Estimation in Video
US7558404B2 (en) 2005-11-28 2009-07-07 Honeywell International Inc. Detection of abnormal crowd behavior
US20070135138A1 (en) 2005-12-13 2007-06-14 Internation Business Machines Corporation Methods, systems, and computer program products for providing location based subscription services
US20070149214A1 (en) 2005-12-13 2007-06-28 Squareloop, Inc. System, apparatus, and methods for location managed message processing
US7774001B2 (en) 2005-12-16 2010-08-10 Sony Ericsson Mobile Communications Ab Device and method for determining where crowds exist
US7801542B1 (en) 2005-12-19 2010-09-21 Stewart Brett B Automatic management of geographic information pertaining to social networks, groups of users, or assets
US7620404B2 (en) 2005-12-22 2009-11-17 Pascal Chesnais Methods and apparatus for organizing and presenting contact information in a mobile communication system
US20070218900A1 (en) 2006-03-17 2007-09-20 Raj Vasant Abhyanker Map based neighborhood search and community contribution
KR100750632B1 (en) 2005-12-30 2007-08-20 삼성전자주식회사 Interactive traffic information providing method and apparatus
US7466986B2 (en) 2006-01-19 2008-12-16 International Business Machines Corporation On-device mapping of WIFI hotspots via direct connection of WIFI-enabled and GPS-enabled mobile devices
US20070174243A1 (en) 2006-01-20 2007-07-26 Fritz Charles W Mobile social search using physical identifiers
US7788188B2 (en) 2006-01-30 2010-08-31 Hoozware, Inc. System for providing a service to venues where people aggregate
US20070179863A1 (en) 2006-01-30 2007-08-02 Goseetell Network, Inc. Collective intelligence recommender system for travel information and travel industry marketing platform
US7856360B2 (en) 2006-01-30 2010-12-21 Hoozware, Inc. System for providing a service to venues where people aggregate
US8352183B2 (en) 2006-02-04 2013-01-08 Microsoft Corporation Maps for social networking and geo blogs
US8046411B2 (en) 2006-04-28 2011-10-25 Yahoo! Inc. Multimedia sharing in social networks for mobile devices
US20070282621A1 (en) 2006-06-01 2007-12-06 Flipt, Inc Mobile dating system incorporating user location information
US20070290832A1 (en) 2006-06-16 2007-12-20 Fmr Corp. Invoking actionable alerts
US7673327B1 (en) * 2006-06-27 2010-03-02 Confluence Commons, Inc. Aggregation system
US7552862B2 (en) 2006-06-29 2009-06-30 Microsoft Corporation User-controlled profile sharing
US20090287783A1 (en) 2006-06-30 2009-11-19 Eccosphere International Pty Ltd., An Australian C Method of social interaction between communication device users
US7685192B1 (en) 2006-06-30 2010-03-23 Amazon Technologies, Inc. Method and system for displaying interest space user communities
US7932831B2 (en) 2006-07-11 2011-04-26 At&T Intellectual Property I, L.P. Crowd determination
US7680959B2 (en) 2006-07-11 2010-03-16 Napo Enterprises, Llc P2P network for providing real time media recommendations
US20080182563A1 (en) 2006-09-15 2008-07-31 Wugofski Theodore D Method and system for social networking over mobile devices using profiles
US20080082465A1 (en) * 2006-09-28 2008-04-03 Microsoft Corporation Guardian angel
US8117210B2 (en) * 2006-10-06 2012-02-14 Eastman Kodak Company Sampling image records from a collection based on a change metric
US20080086741A1 (en) 2006-10-10 2008-04-10 Quantcast Corporation Audience commonality and measurement
US20080097999A1 (en) 2006-10-10 2008-04-24 Tim Horan Dynamic creation of information sharing social networks
US20080113674A1 (en) 2006-11-10 2008-05-15 Mohammad Faisal Baig Vicinity-based community for wireless users
US7849082B2 (en) 2006-11-17 2010-12-07 W.W. Grainger, Inc. System and method for influencing display of web site content
US20080242317A1 (en) 2007-03-26 2008-10-02 Fatdoor, Inc. Mobile content creation, sharing, and commerce in a geo-spatial environment
US8116564B2 (en) 2006-11-22 2012-02-14 Regents Of The University Of Minnesota Crowd counting and monitoring
US20080126113A1 (en) 2006-11-29 2008-05-29 Steve Manning Systems and methods for creating and participating in ad-hoc virtual communities
US8108414B2 (en) 2006-11-29 2012-01-31 David Stackpole Dynamic location-based social networking
US8954500B2 (en) * 2008-01-04 2015-02-10 Yahoo! Inc. Identifying and employing social network relationships
US7630972B2 (en) * 2007-01-05 2009-12-08 Yahoo! Inc. Clustered search processing
WO2008076827A1 (en) 2006-12-13 2008-06-26 Synthesis Studios, Inc. Mobile proximity-based notifications
US20080146250A1 (en) 2006-12-15 2008-06-19 Jeffrey Aaron Method and System for Creating and Using a Location Safety Indicator
US8224359B2 (en) 2006-12-22 2012-07-17 Yahoo! Inc. Provisioning my status information to others in my social network
US20080188261A1 (en) 2007-02-02 2008-08-07 Miles Arnone Mediated social network
US8112720B2 (en) 2007-04-05 2012-02-07 Napo Enterprises, Llc System and method for automatically and graphically associating programmatically-generated media item recommendations related to a user's socially recommended media items
US9140552B2 (en) 2008-07-02 2015-09-22 Qualcomm Incorporated User defined names for displaying monitored location
US20080261569A1 (en) * 2007-04-23 2008-10-23 Helio, Llc Integrated messaging, contacts, and mail interface, systems and methods
GB2462049A (en) 2007-05-28 2010-01-27 Ericsson Telefon Ab L M A method and apparatus for providing services to client groups in a communication network
US8185137B2 (en) 2007-06-25 2012-05-22 Microsoft Corporation Intensity-based maps
US20090006551A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Dynamic awareness of people
US20090048977A1 (en) * 2007-07-07 2009-02-19 Qualcomm Incorporated User profile generation architecture for targeted content distribution using external processes
US8165808B2 (en) 2007-07-17 2012-04-24 Yahoo! Inc. Techniques for representing location information
US7962155B2 (en) 2007-07-18 2011-06-14 Hewlett-Packard Development Company, L.P. Location awareness of devices
US20090030999A1 (en) 2007-07-27 2009-01-29 Gatzke Alan D Contact Proximity Notification
US9009292B2 (en) * 2007-07-30 2015-04-14 Sybase, Inc. Context-based data pre-fetching and notification for mobile applications
US8050690B2 (en) 2007-08-14 2011-11-01 Mpanion, Inc. Location based presence and privacy management
US8924250B2 (en) 2007-09-13 2014-12-30 International Business Machines Corporation Advertising in virtual environments based on crowd statistics
US7958142B2 (en) * 2007-09-20 2011-06-07 Microsoft Corporation User profile aggregation
US8923887B2 (en) 2007-09-24 2014-12-30 Alcatel Lucent Social networking on a wireless communication system
JP4858400B2 (en) 2007-10-17 2012-01-18 ソニー株式会社 Information providing system, information providing apparatus, and information providing method
US20090106040A1 (en) 2007-10-23 2009-04-23 New Jersey Institute Of Technology System And Method For Synchronous Recommendations of Social Interaction Spaces to Individuals
US8467955B2 (en) 2007-10-31 2013-06-18 Microsoft Corporation Map-centric service for social events
US7904442B2 (en) * 2007-10-31 2011-03-08 Intuit Inc. Method and apparatus for facilitating a collaborative search procedure
US8624733B2 (en) 2007-11-05 2014-01-07 Francis John Cusack, JR. Device for electronic access control with integrated surveillance
US8620996B2 (en) 2007-11-19 2013-12-31 Motorola Mobility Llc Method and apparatus for determining a group preference in a social network
US9269089B2 (en) 2007-11-22 2016-02-23 Yahoo! Inc. Method and system for media promotion
US20100020776A1 (en) 2007-11-27 2010-01-28 Google Inc. Wireless network-based location approximation
US7895049B2 (en) 2007-11-30 2011-02-22 Yahoo! Inc. Dynamic representation of group activity through reactive personas
US8307029B2 (en) 2007-12-10 2012-11-06 Yahoo! Inc. System and method for conditional delivery of messages
US8862622B2 (en) 2007-12-10 2014-10-14 Sprylogics International Corp. Analysis, inference, and visualization of social networks
US8010601B2 (en) 2007-12-21 2011-08-30 Waldeck Technology, Llc Contiguous location-based user networks
US8060018B2 (en) 2008-02-08 2011-11-15 Yahoo! Inc. Data sharing based on proximity-based ad hoc network
US20090210480A1 (en) 2008-02-14 2009-08-20 Suthaharan Sivasubramaniam Method and system for collective socializing using a mobile social network
US20090209286A1 (en) 2008-02-19 2009-08-20 Motorola, Inc. Aggregated view of local and remote social information
US8346569B2 (en) * 2008-03-10 2013-01-01 Clearfit Inc. System and method for creating a dynamic customized employment profile and subsequent use thereof
CN102084354A (en) * 2008-04-05 2011-06-01 社会传播公司 Shared virtual area communication environment based apparatus and methods
US9646025B2 (en) * 2008-05-27 2017-05-09 Qualcomm Incorporated Method and apparatus for aggregating and presenting data associated with geographic locations
US20090307263A1 (en) * 2008-06-06 2009-12-10 Sense Networks, Inc. System And Method Of Performing Location Analytics
US8214346B2 (en) * 2008-06-27 2012-07-03 Cbs Interactive Inc. Personalization engine for classifying unstructured documents
US20100017261A1 (en) 2008-07-17 2010-01-21 Kota Enterprises, Llc Expert system and service for location-based content influence for narrowcast
US8812361B2 (en) 2008-07-24 2014-08-19 At&T Intellectual Properties I, L.P. System and method of targeted advertisement
US20100041378A1 (en) * 2008-08-14 2010-02-18 Ralph Aceves System and method for automatically generating a user profile from location information
US20100064253A1 (en) * 2008-09-11 2010-03-11 International Business Machines Corporation Providing Users With Location Information Within a Virtual World
US8768892B2 (en) * 2008-09-29 2014-07-01 Microsoft Corporation Analyzing data and providing recommendations
US8645283B2 (en) 2008-11-24 2014-02-04 Nokia Corporation Determination of event of interest
US8265658B2 (en) 2009-02-02 2012-09-11 Waldeck Technology, Llc System and method for automated location-based widgets
US8825074B2 (en) 2009-02-02 2014-09-02 Waldeck Technology, Llc Modifying a user'S contribution to an aggregate profile based on time between location updates and external events
US9275151B2 (en) 2009-02-06 2016-03-01 Hewlett Packard Enterprise Development Lp System and method for generating a user profile
US8539359B2 (en) * 2009-02-11 2013-09-17 Jeffrey A. Rapaport Social network driven indexing system for instantly clustering people with concurrent focus on same topic into on-topic chat rooms and/or for generating on-topic search results tailored to user preferences regarding topic
US20120047087A1 (en) 2009-03-25 2012-02-23 Waldeck Technology Llc Smart encounters
US20120046995A1 (en) 2009-04-29 2012-02-23 Waldeck Technology, Llc Anonymous crowd comparison
US8473512B2 (en) 2009-11-06 2013-06-25 Waldeck Technology, Llc Dynamic profile slice
US20130185750A1 (en) * 2012-01-17 2013-07-18 General Instrument Corporation Context based correlative targeted advertising

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5734721A (en) * 1995-10-12 1998-03-31 Itt Corporation Anti-spoof without error extension (ANSWER)
US6209111B1 (en) * 1998-11-09 2001-03-27 Microsoft Corporation Error correction on a mobile device
US8375008B1 (en) * 2003-01-17 2013-02-12 Robert Gomes Method and system for enterprise-wide retention of digital or electronic data
US7965841B2 (en) * 2005-01-31 2011-06-21 Fujitsu Limited Method and apparatus for compressing and decompressing data, and computer product
US7908254B2 (en) * 2005-06-10 2011-03-15 Hewlett-Packard Development Company, L.P. Identifying characteristics in sets of organized items
US20080059492A1 (en) * 2006-08-31 2008-03-06 Tarin Stephen A Systems, methods, and storage structures for cached databases

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120102165A1 (en) * 2010-10-21 2012-04-26 International Business Machines Corporation Crowdsourcing location based applications and structured data for location based applications
US10169017B2 (en) * 2010-10-21 2019-01-01 International Business Machines Corporation Crowdsourcing location based applications and structured data for location based applications
US20190182621A1 (en) * 2011-06-08 2019-06-13 Dstillery, Inc. Privacy-sensitive methods, systems, and media for geo-social targeting
US10034135B1 (en) * 2011-06-08 2018-07-24 Dstillery Inc. Privacy-sensitive methods, systems, and media for geo-social targeting
US20130103772A1 (en) * 2011-10-25 2013-04-25 International Business Machines Corporation Method for an instant messaging system and instant messaging system
US10096041B2 (en) 2012-07-31 2018-10-09 The Spoken Thought, Inc. Method of advertising to a targeted buyer
US10373192B2 (en) * 2014-08-18 2019-08-06 Google Llc Matching conversions from applications to selected content items
US20160050167A1 (en) * 2014-08-18 2016-02-18 Google Inc. Matching conversions from applications to selected content items
US10891650B2 (en) 2014-08-18 2021-01-12 Google Llc Matching conversions from applications to selected content items
US9900392B2 (en) * 2015-06-25 2018-02-20 Facebook, Inc. Identifying groups for recommendation to a social networking system user based on user location and locations associated with groups
US20160378776A1 (en) * 2015-06-25 2016-12-29 Facebook, Inc. Identifying Groups For Recommendation To A Social Networking System User Based On User Location And Locations Associated With Groups
US20200265089A1 (en) * 2018-05-30 2020-08-20 Google Llc Optimizing geographic region selection
US11651038B2 (en) * 2018-05-30 2023-05-16 Google Llc Optimizing geographic region selection
US11468029B2 (en) * 2019-01-21 2022-10-11 Netapp, Inc. Evolution of communities derived from access patterns

Also Published As

Publication number Publication date
US20120046017A1 (en) 2012-02-23
US20120047448A1 (en) 2012-02-23
US20120047184A1 (en) 2012-02-23
US20120046068A1 (en) 2012-02-23
US9053169B2 (en) 2015-06-09
US20120047152A1 (en) 2012-02-23
US20140095516A1 (en) 2014-04-03
US8554770B2 (en) 2013-10-08
US20120047565A1 (en) 2012-02-23

Similar Documents

Publication Publication Date Title
US20120046995A1 (en) Anonymous crowd comparison
US8473512B2 (en) Dynamic profile slice
US8918398B2 (en) Maintaining a historical record of anonymized user profile data by location for users in a mobile environment
US7591020B2 (en) Location based security modification system and method
US9046987B2 (en) Crowd formation based on wireless context information
US8898288B2 (en) Status update propagation based on crowd or POI similarity
US20120064919A1 (en) Crowd creation system for an aggregate profiling service
US20120047087A1 (en) Smart encounters
CN105022760A (en) News recommendation method and device
US20210173887A1 (en) Sytem and method for filtering and creating points-of-interest

Legal Events

Date Code Title Description
AS Assignment

Owner name: KOTA ENTERPRISES, LLC, DELAWARE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PETERSEN, STEVEN L.;REEL/FRAME:024228/0570

Effective date: 20100409

AS Assignment

Owner name: WALDECK TECHNOLOGY, LLC, DELAWARE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:KOTA ENTERPRISES, LLC;REEL/FRAME:024859/0855

Effective date: 20100730

AS Assignment

Owner name: CONCERT DEBT, LLC, NEW HAMPSHIRE

Free format text: SECURITY INTEREST;ASSIGNOR:WALDECK TECHNOLOGY, LLC;REEL/FRAME:036433/0313

Effective date: 20150501

Owner name: CONCERT DEBT, LLC, NEW HAMPSHIRE

Free format text: SECURITY INTEREST;ASSIGNOR:WALDECK TECHNOLOGY, LLC;REEL/FRAME:036433/0382

Effective date: 20150801

AS Assignment

Owner name: CONCERT DEBT, LLC, NEW HAMPSHIRE

Free format text: SECURITY INTEREST;ASSIGNOR:CONCERT TECHNOLOGY CORPORATION;REEL/FRAME:036515/0471

Effective date: 20150501

Owner name: CONCERT DEBT, LLC, NEW HAMPSHIRE

Free format text: SECURITY INTEREST;ASSIGNOR:CONCERT TECHNOLOGY CORPORATION;REEL/FRAME:036515/0495

Effective date: 20150801

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: CONCERT TECHNOLOGY CORPORATION, NEW HAMPSHIRE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WALDECK TECHNOLOGY, LLC;REEL/FRAME:051395/0425

Effective date: 20191203