Real-time event transcription system and method
11714876 · 2023-08-01
Assignee
Inventors
Cpc classification
A63F13/75
HUMAN NECESSITIES
G06F17/18
PHYSICS
A63F13/50
HUMAN NECESSITIES
International classification
A63F13/50
HUMAN NECESSITIES
Abstract
A real-time event transcription system and related methods provides for determining the existence, sequencing and timing of an event and/or event elements, for detecting and compensating for latency issues and cheating while providing synchronized user engagement, wherein users who are observing an event interact with a stream of stimuli generated over the course of the event, each user's interactions precisely recorded and accurately timestamped, accounting and/or compensating for various delays that may cause different users to encounter the stimuli at different times. Embodiments further provide for methods to determine and synchronize stimuli and reaction timing across a plurality of geographical locations, transmission methods and media.
Claims
1. A computer system for detecting unreliable users in an interactive electronic network and providing an accurate timeline of an event viewable by a first plurality of users of the interactive electronic network, the computer system comprising: (a) one or more processors; and (b) computer-readable memory operatively connected to the one or more processors having stored thereon at least the following: (i) a database comprising, for each user of the first plurality of users, user information including: (1) total query information indicating a respective total amount of queries sent prior to the event; (2) average time information indicating a respective average amount of time between a respective query being sent to a respective user and a respective response to the respective query being received from the respective user; (3) correct query information indicating a respective total amount of queries answered correctly prior to the event; (4) incomplete query information indicating a respective total amount of queries of which were not completely answered prior to the event; and (5) incorrect query information indicating a respective total amount of queries answered incorrectly prior to the event; and (ii) instructions that, when executed by the one or more processors, cause the one or more processors to perform the steps of: (1) setting, via the computer system, an initial state of the event viewable by the first plurality of users of the interactive electronic network based on a set time associated with the event by performing the following steps: (A) obtaining, by the computer system, a first set of queries including a first plurality of queries associated with the event and a corresponding first plurality of correct responses associated with the first plurality of queries; (B) determining, by the computer system, a first plurality of user devices associated with the first plurality of users based on at least the following: i. location information associated with a second plurality of user devices, associated with a second plurality of users including the first plurality of users; and ii. a location of the event; (C) selecting, by the computer system, one or more queries of the first plurality of queries and one or more corresponding correct responses of the first plurality of correct responses for each user of a third plurality of users of the first plurality of users, based on at least the following: i. an amount of available user devices; and ii. the event; wherein the third plurality of users is selected based on latency information associated with the third plurality of users, and the third plurality of users is selected based on low latency, wherein the latency information is associated with data transmission latency and is calculated based on messages sent from the computer system to the first plurality of user devices and responsive messages received from the first plurality of user devices; (D) transmitting, from the computer system via the interactive electronic network to a third plurality of user devices associated with the third plurality of users, the one or more queries, each query of the one or more queries including information related to the event and machine readable instructions to present a respective query on a respective user device of the third plurality of user devices; (E) receiving, by the computer system via the interactive electronic network, one or more query responses to the one or more queries, wherein each of the one or more query responses includes: i. query identification information indicating a respective query of the one or more queries; ii. response information indicating a respective response to the respective query; and iii. user information associated with the respective user device of the third plurality of user devices; (F) assigning, by the computer system, an initial reliability rating for each user of the first plurality of users based on at least the following: i. the respective response; ii. the respective query; iii. a respective corresponding correct response of the first plurality of correct responses; and iv. respective latency information associated; and (G) storing, by the computer system, the assigned initial reliability rating for each user of the first plurality of users; (2) transmitting, from the computer system via the interactive electronic network, first stimulus data to a fourth plurality of user devices associated with the first plurality of users of the interactive electronic network, the first stimulus data including information related to the event and machine readable instructions to present a first message to each user on each user device of the fourth plurality of user devices that prompts a response from each user device of the fourth plurality of user devices regarding the event; (3) receiving, by the computer system via the interactive electronic network, a first response data communication from one or more user devices of the fourth plurality of user devices, the first response data communication including: (A) first response information related to the first message presented on each user device of the one or more user devices; (B) first timestamp information generated by the computer system related to a first time the first message was sent to each user device of the one or more user devices; (C) second timestamp information generated by the computer system upon receipt of the first response data communication and related to a second time the first response data communication was received by the computer system; and (D) user information specific to the respective user associated with each user device of the one or more user devices; (4) storing the first response data communication from the one or more user devices in memory accessible by the computer system; (5) determining, by the computer system in real time, authenticity of the first response data communication from each of the one or more user devices, by performing at least the following steps: (A) determining, by the computer system, whether the first response data communication includes first response information that corresponds to activity in the event; and (B) determining, by the computer system, whether the first response data communication includes first response information relating to event elements available to the user when the first message was displayed to the user on the user device based at least on the first timestamp information; (6) assigning, by the computer system, a reliability rating for each user associated with the one or more user devices based on a calculated rating and the authenticity of the first response data communication received from the one or more user devices, wherein the reliability rating for each user is assigned in step (b)(ii)(6) by performing the following steps: (A) obtaining, for each user associated with the one or more user devices, a respective initial reliability rating; (B) updating, for each user associated with the one or more user devices, the respective average time information to account for a difference between respective second timestamp information and respective first timestamp information; (C) calculating, for each user associated with the one or more user devices, the calculated rating by dividing a correct percentage by respective updated average time information such that the correct percentage, for each user associated with the one or more user devices, is calculated based on respective correct query information and respective total query information; and (D) determining, for each user associated with the one or more user devices, the reliability rating based on the calculated rating, the initial reliability rating, and the authenticity of the first response data communication received from the one or more user devices; (7) identifying, by the computer system, one or more unreliable users based on the reliability rating thereof; (8) weighting, by the computer system, first response information of the first response data communications from the one or more user devices, based on the assigned reliability rating of a respective user associated with the one or more user devices providing the first response data communication such that first response information from first response data communications from user devices associated with respective users with reliable ratings is weighted more heavily than first response information from first response data communications from user devices associated with unreliable users; (9) creating, by the computer system in real time, a timeline of the event for a first predetermined period of time based on the weighted first response information data communications from the one or more user devices; and (10) publishing, by the computer system, the timeline of the event to one or more user devices of the plurality of user devices wherein the timeline is used to identify fraud.
2. The computer system of claim 1, wherein the determination of the reliability rating for each user associated with the one or more user devices is further based on the initial reliability rating associated with the one or more user devices.
3. The computer system of claim 1, wherein the initial reliability rating is assigned within a predetermined amount of time of assigning the reliability rating for each user of the first plurality of users.
4. The computer system of claim 3, wherein the predetermined amount of time is 30 minutes.
5. The computer system of claim 1, wherein the selection of the first plurality of queries and corresponding first plurality of correct responses is further based on historical user responses associated with each of the first plurality of users.
6. The computer system of claim 1, wherein the selection of the first plurality of queries and corresponding first plurality of correct responses is further based on one or more historical reliability ratings associated with the frist plurality of users.
7. The computer system of claim 1, wherein the selection of the first plurality of queries and corresponding first plurality of correct responses is further based on fraud vulnerability associated with the event.
8. The computer system of claim 1, wherein the transmitting step (b)(ii)(1)(D) includes selecting a respective query of the first plurality of queries prior to one or more users of the first plurality of users, and transmitting the respective query prior to one or more users of the first plurality of users.
9. The computer system of claim 8, wherein the selection of the third plurality of users is based on one or more initial reliability ratings associated with the third plurality of users.
10. The computer system of claim 8, wherein the selection of the third plurality of users is based on one or more historical reliability ratings associated with the third plurality of users.
11. The computer system of claim 8, wherein the selection of the third plurality of users is based on average time information associated with the third plurality of users.
12. The computer system of claim 8, wherein the selection of the third plurality of users is based on fraud vulnerability associated with the event.
13. The computer system of claim 8, wherein the selection of the first plurality of queries and corresponding first plurality of correct responses further includes selecting a fourth plurality of users to be sent a respective query of the first plurality of queries after the third plurality of users, and wherein the fourth plurality of users are sent the respective query after the computer system sends respective queries to the third plurality of user devices.
14. The computer system of claim 13, wherein the selection of the fourth plurality of users is based on one or more initial reliability ratings associated with the fourth plurality of users.
15. The computer system of claim 13, wherein the selection of the fourth plurality of users is based on one or more initial reliability ratings associated with the fourth plurality of users as compared to one or more initial reliability ratings associated with the third plurality of users.
16. The computer system of claim 13, wherein the selection of the fourth plurality of users is based on one or more historical reliability ratings associated with the fourth plurality of users.
17. The computer system of claim 13, wherein the selection of the fourth plurality of users is based on latency information associated with the fourth plurality of users.
18. The computer system of claim 13, wherein the selection of the fourth plurality of users is based on average time information associated with the fourth plurality of users.
19. The computer system of claim 8, wherein the selection of the fourth plurality of users is based on fraud vulnerability associated with the event.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
DETAILED DESCRIPTION
(22) U.S. Patent Application 61/798,710, filed 15 Mar. 2013 and U.S. Patent Application No. 61/802,463 filed 16 Mar. 2013, are hereby incorporated herein in their entirety and made part of this description.
(23) The invention can be understood further by illustration of multiple embodiments, including one or more preferred embodiments, as related in the more detailed description below; however, it is understood that the full scope of the invention is not limited to these embodiments alone.
(24) Numerous embodiments provide for a client/server user query system that allows multiple users, experiencing varying network latency, to synchronize on a best-effort basis to absolute time events on the server, where these may in turn have been started relative to an absolute event that is external to the system (an example would be a series of questions relating to the outcome of a play in NFL football, in turn synchronized to a TV broadcast). Furthermore, the server can push content to the users in real-time, thus allowing a multitude of clients to be presented with content in real-time on their devices (handhelds, tablets, laptops, etc be they connected wirelessly or via wired connections) at approximately the same time despite varying network conditions.
(25) It can be appreciated that the present invention can scale to an almost infinite numbers of users, including for example, without limitation, human users, intelligent machine users and/or a combination of human and intelligent machine users, by employing standardized distributed processing methods such as those made available by various cloud computing services, such as, for example, without limitation, Amazon® cloud computing services and/or Google® cloud computing services.
(26) Preferred embodiments of the invention can provide generally for real-time event transcription, cheating detection and compensation, and/or synchronizing user engagement. One or more such embodiments can be implemented in the context of detecting cheating in an online game associated with one or more events. One or more preferred embodiments can include, in the same context of an online game, some combination of analyzing latency in individual and cohort responses, machine-trained analysis of user cohort behavior, and analysis of crowdsourcing information derived from the same or other cohorts.
(27) At least one preferred embodiment can provide for one or more of: analyzing crowdsourcing information for the further purpose of analyzing events that are the subject of user responses; utilizing recursive queries to prompt secondary crowd-sourced responses; and additionally or alternatively using intricate analysis of multiple data sources to form synchronization across delivery paths, locales and modes.
(28) One or more embodiments provide for a method of determining one or more of the existence, sequence and timing of one or more event elements of an event, comprising the steps of sending, by a computer devices, a first information to a plurality of users in the context of an event or an event element thereof, wherein event elements are associated with one or more time steps and further associated with a state-transition; receiving, by a computing device, from a plurality of users one or more first or subsequent user inputs in reference to the event or an event element thereof in response to the first information, wherein the one or more first or subsequent user inputs in response to the first information is associated with a time step; sending, by a computing device, a second information to a plurality of users in the context of the event and in the context of a time step differing from the time step associated with the first information; receiving, by a computing device, from a plurality of users one or more user inputs in response to the second information; calculating, by a computing device, probabilities associated with one or more of the existence, sequence and timing of one or more event elements comprising the event from a plurality of user inputs; and determining, by a computing device, one or more of the existence, sequence and timing of one or more event elements comprising the event, based on the probabilities. One or more preferred embodiments can provide for the first or subsequent and the second or subsequent inputs being derived or implicit inputs, rather than only responsive inputs that are explicitly generated based on specific stimuli.
(29) In various embodiments the first information sent to a set of users can be a query that is related to an element of an event. A stimulus affecting the user can elicit a response from the user. A query can provide a stimulus. An element of an event that is being observed, watched and/or otherwise engaged by a user (such as, for example, interacting as a participant, as an audience member, watching on a mobile device, observing from a distance, monitoring via indirect means, or engaging in any other manner, without limitation, so as to gain information about and form a perception of an event and/or an element of an event) can also provide a stimulus to the user. The absolute time and/or a receipt time relative to a reference timepoint that a user might see a stimulus can be affected by many factors, some of which are shown in Table 1.
(30) TABLE-US-00001 TABLE 1 below summarizes some of the factors that influence when a user sees the stimuli and how their prediction or reaction to it is affected by delays: Inter-user Intra-user Standard Standard Factor Absolute time deviation deviation Delay When does the Unknown High Low High user observe the event element User Response Can be Medium Medium Medium Latency estimated Processing Can be Low Low Low Latency estimated
(31) One of the challenges in reconstructing sequences of event elements from inputs received from a plurality of users that each have differing latency characteristics associated with both their observation and/or engagement with an event and associated with their communications with the event reconstruction and/or synchronization system is how to detect and compensate for the latency issues themselves and also how to detect and compensate for potential behaviors of some users who can be aware that latency issues can provide them an advantage and may attempt to exploit their advantage for unfair individual gain or for other purposes that the detection and compensation system and method may seek to counter. In order to manage and overcome such challenges, one or more embodiments provide for utilizing many types of information and disparate sources of data related to, for example: time, location, communication mode, local conditions, content transmissions, user characteristics and behaviors, and any number of other types of information and sources of data, without limitation. One or more preferred embodiments can reference data sources from a group that comprises, for example, without limitation, the following data sources: Cellular/WiFi signal for coarse location detection; Geo location (GPS) to determine where the user is, and possibly what the minimum transmission delay should be. This input can be used to correlate with other proximate users, optionally using WiFi, NFC, Bluetooth, audio content fingerprinting, or other methods, without limitation, be they mechanical, acoustic, electronic or otherwise. Mobile device accelerometer to record calculate average hand motion for user, compare to other users and also can compare game to game for same user. If different, this data input can be used for flagging or indicating flagging a potentially-cheating user; Absolute atomic time (via GPS or the mach_absolute_time( ) function (or equivalent) on mobile device; Microphone input for audio content recognition to be used for detection of other devices or for audio content recognition. Capture audio input at time user confirms choice, compare to audio fingerprint of event reference to make sure the two are within an allowable threshold, and of other input emitted by other devices. Also compare to user-stated information as to broadcast media and method. If user input is at “wrong” time compared to broadcast, consider to be indication of cheating; “Logical” locations (venue name, social network location, or other location, without limitation. This input can be used to encourage users to “check-in” via foursquare, Facebook, twitter, etc., without limitation); Content channel (for example, ESPN, Fox Sports, etc, without limitation); Event time using the mobile device hardware clock that is not controllable by user, optionally by timing arrival of timing packets; Event display time, which can be calculated according to an event time and a user delay, such as, for example, compared to audio fingerprint at each stimuli reaction and phone hardware clock; Content delivery system (TV [cable, satellite, analog], radio [satellite, digital, analog], internet, mobile device [3/4G, Wi-Fi]) allows to calculate base delay depending on range of pre-determined factors including a user's device, communication channels, and delivery method of event broadcast; User choice (regarding an event or an event element thereof); User choice time (locally cached on device). For example, if user choice time is less than a time limit stimuli response, then the system can accept the input even if delay caused the response to be received after the generally allowed timeout setting;
(32) For various purposes, including detecting and compensating for latency and/or delay in users perceiving stimuli and detecting and compensating for a processing system experiencing latency and/or delay in receiving user inputs, one or more embodiments can implement delay estimation methods such as, for example, without limitation: Prompt user as to the manner in which they will watch the event (radio/TV channel, can then deduce if cable, terrestrial or satellite). Take a user's geographic location and comparing it to other users. For example, calculate the standard deviation of response time and/or accuracy for users with similar location and/or provider. In, an online betting game context, for instance, allow responses only within certain response time (for example: 2 standard deviations). Evaluate user's response time and accuracy compared to other media (for example: radio). If there is low correlation with a user's stated reply (for example: HDTV), but a high correlation with other media and methods (example: analog radio), then that user is more likely to be cheating. The system could then optionally employ additional algorithms to detect and compensate for suspected cheating.
(33) At least one or more embodiments of the invention can provide for the following methods or sub-methods for sending query information to a set of users and receiving responses from that or another set of users or a combination thereof: Randomization: ask the questions in different order, and place the responses in different areas of the screen. Honeypot testing for other transmission modes: Ask questions that the user would not be able to legitimately know the answer to (for example, if user claims he's on a satellite feed, pop up a question about a commercial that showed up on a cable feed—if user responds correctly to many such honeypots, it means they are not observing with the transmission media and method(s) they claim and with the delay associated with that transmission media and method(s)). Control cohorts (such as, without limitation, in cheating context), e.g.: Control group of known users that don't cheat Control group of known users that actively cheat Calculate average response time based on an aggregation of mean times for all of the users' responsive actions to various stimuli (for example, see the event on screen, think of a response, send a response, and receive the response in the system. This will generate a certain time range, with a minimal “floor” time. If the system receives an answer before this time, it is probable that user is attempting to cheat or defraud. Calculate average correct response percentage. For example, if user is further than two standard deviations of that percentage (p-factor of 0.05), then user is probably cheating. Take user's geo location and compare it to other users. Calculate standard deviation of response time and/or accuracy for users with similar location and/or provider. Reactions to stimuli are only accepted only within certain response time (for example: 2 standard deviations). Take user's response time and accuracy compared to other media (for example: radio). If there is low correlation with user's stated reply (for example: HDTV), but high correlation with other media and methods (for example: analog radio), then the user is likely to be cheating; and/or Utilizing accuracy measure(s) based on probabilities and successes, e.g., A(i)=average[p(t)*Si(k, t)].
(34) At least one embodiment of the invention can provide for a system that can send and/or display different questions (stimuli) to different groups of users in the context of an event or event elements (timing and distribution of questions determined by the system) and then correlate the responses from the users (both time of indication and answer), in order to predict with a high likelihood what happened and when in the context of the event and event elements. The system can use, recursively, one or more sets of responses to generate the choices displayed for additional stimuli (and the system can combine information from other data sources with the one or more sets of responses in a combined analysis for this purpose). Additionally, the system can adjust the types and/or instances of system-distributed stimuli for sending to differently constituted set or group of users as selected by the system at any specific time based on the system processing data inputs. For example, without limitation, a question may be any one of the following, each sent to a system-selected group of users: “Will John Doe wear a jacket when he next appears on stage?” to which the displayed list of possible answers may be “Yes” or “No.” “What color dress did Jane Doe wear when she appeared on stage,” to which the displayed list of possible answers may be “Green” or “Other.”
(35) Upon selection by a large group of users that Jane Doe wore an “Other” colored dress at any particular time of the event, it is therefore likely that she appeared on stage at such a point.
(36) Another case, for example, without limitation, in the context American NFL Football, can display the following questions to a plurality of users (timing and distribution of questions determined by the system): “Will the next play be a rush or a pass” to which the displayed list of possible answers may be “Rush” or “Pass.” “How many yards were gained?” to which the displayed list of possible answers may be “more than 10” or “less than 10” “How many yards were gained?” to which the displayed list of possible answers may be “more than 5” or “less than 5” “How many yards were gained?” to which the displayed list of possible answers may be “less than 5” or “fumble”
(37) Correlating this data over a large body of users can preferably provide very high and even more preferably provide almost absolute precision to be attained, especially when the system employs any combination of any variety of algorithms (including, without limitation, heuristics, comb filters, auto-correlation, statistical algorithms, machine learning algorithms, multi-agent systems, and so on) used to improve the precision of the derived data. The processing method according to one or more embodiments can also feed the various stimuli of similar events (past of present) as additional signals into the algorithm. As well, the system can employ a variety of algorithms to determine which users shall be shown which questions at whatever time.
(38) Crowd-Sourcing
(39) One or more embodiments can provide a system for using crowd-sourcing, wherein the system can determine which event occurred according to user replies (based on a plurality of replies from a plurality of distinct users), and can then dynamically update the decision model. Based on the time the user replies, the system can estimate the user's location, transmission method and media (TV, radio, live event, etc, without limitation) and other parameters.
(40) The system can compare the users' replies to those replies of other users with, in one or more preferred embodiments, similar characteristics, for example: affinity (including team and player preference), mobile device metadata (including connection method, broadcast viewing method and so on), purchasing history and geographical location among others (such comparisons determined by the system in accordance with an embodiment), and the system can also use a checking process if the system determines that the user is likely to be cheating (for example, if user says he or she is watching an event on TV, yet the behavior and response time of this user is similar to a typical profile of a user listening on a radio).
(41) An embodiment can provide for the system to produce a transcript of the event, accurate to a very small time interval, that outlines the sequence and timing of events that happened by using either onsite or remote viewers that reacted to various stimuli during said event, and then algorithmically deriving the sequence and timing to produce the transcript with minimal delay. Crowdsourcing techniques may be applied in such computations. For example, output from the system can be used to verify accuracy of other stated transcripts (such as those provided by third parties). Furthermore, output from the system can be further used to verify and mitigate cheating attempts by users. Additionally, output from the system can be used to provide an accurate and timely data-feed of the event sequence which can be transmitted to other third parties).
(42) At least one or more preferred embodiments provide for a method and a system by which the absolute time that a stimuli (or event element) occurred can be accurately deduced from a plurality of data without any physical nexus at the location of the occurrence of said stimuli. For example, remote sensing and image processing can add to a data stream and provide timing information. As a further example, without limitation, one embodiment can use machine vision to determine when a snap happened in a football game. This determination can allow for increased accuracy when computing latencies because the processing has an external data source that cannot be controlled nor affected by users. See Machine Vision (http://www.sciencedirect.com/science/article/pii/S0262885609002704) and audio monitoring (to detect waveforms that indicate the event happened and, optionally allow timing synchronization) and Acoustic fingerprinting (See Duong, N. Q. K.; Howson, C.; Legallais, Y, “Fast second screen TV synchronization combining audio fingerprint technique and generalized cross correlation,” Consumer Electronics-Berlin (ICCE-Berlin), 2012 IEEE International Conference on, vol., no., pp. 241, 244, 3-5 Sep. 2012; doi: 10.1109/ICCE-Berlin.2012.6336458), which foregoing references are herein incorporated by reference in their entirety.
(43) At least one or more preferred embodiments provide for receiving crowd-sourced inputs from remote viewers, wherein a plurality of remote viewers, each viewing the event over any transmission method and media with any propagation or transmission delay endemic to such transmission method and media, can enter their inputs as to the exact and/or absolute time that they witnessed the stimuli occurring (the “epoch”). Any number of such indications, from any number of users, can then be calculated in a plurality of ways, including, for example, by designating certain users as trusted users who view the events and indicate when stimuli occur, with said such trusted users viewing the event over a transmission method and media with a known and predicable propagation or transmission delay. With such a plurality of trusted users giving a plurality of indications, the present invention can be used to calculate when the stimuli occurred by subtracting the known transmission or propagation delay from the absolute time indicated by said power users and by adjust for the human reaction speed of the users both individually and as a group.
(44) At least one or more preferred embodiments provide for receiving crowd-sourced inputs from local viewers. Similar to crowd-sourcing from remote viewers, a plurality of trusted users who are known to be in the immediate proximity to the stimuli can indicate when the stimuli occurred, without any transmission or propagation delay. In this case, only the adjustment for the human reaction speed of the users both individually and as a group need be taken into account. Additionally, the system can utilize the geo-location functionality built into contemporary smartphones (using GPS and other methods) to determine these users are physically proximate to the actual event and thus have minimal latency. The system can then send timing packets (for example as provided by the ping utility and the ICMP protocol, http://tools.ietf.org/html/rfc4884 and its predecessors and citations, herein incorporated in their entirety) to determine the data transmission latency between a user's device and one or more servers executing computer code of an embodiment of the present invention.
(45) Synchronizing Input
(46) At least one preferred embodiment provides for synchronizing input from a large number of devices to ascertain content, time, and time differences from varying external stimuli. In one embodiment a viewer can see an event at time, t(e) (or t.sub.event), a viewer can respond to an event at a time t(r) (or t.sub.response), and the system and/or method can process the viewers' responses at time t(p) (or t.sub.process). In a preferred embodiment, a plurality of data sources (such as, for example, without limitation, wireless signal, GPS, device accelerometer, absolute time, microphone input, logical location, delivery system base delay, event time, calculated event time, user event-based choice, and user choice time) may be made part of the processing. In one or more embodiments, a delay estimation can be made by: (i) user-stated mode, (ii) geo-location, (iii) ping times and/or (vi) comparing response time and accuracy to other media/modes. The system and methods can determine, optionally in reference to a standard and precise clock time, calculate and/or generate latency analysis based on t(r), on t(e), or on a difference between t(r) and t(e). Various embodiments can further provide for additional methods of accounting for various latency between users seeing the questions sent to them by an embodiment of the present invention, and [the embodiment] receiving the user responses to the aforementioned questions. The system and method of numerous embodiments provide for measuring (i) how long before a user sees a question appear and (ii) how long it takes a user to respond to the system based on system-prompted and/or system-registered stimuli. This, together with other latency data the system and/or method can acquire or derive, allows for more accurate latency compensation and cheating mitigation. A preferred embodiment can further adapt the weights governing the probability of a certain plurality of users responding to various stimuli, using various inputs and parameters as inputs for recalculating the weights at any point.
(47) A preferred embodiment can provide, too, for identifying control groups with better latency, such as those users who are physically present at the event location and thus are not subject to propagation delays of the broadcast transmission system. Further, users using mobile devices that allow for lower latency transmission can also be identified. Lower latency is desired because higher levels of statistical accuracy can be attained within a shorter time frame, thereby enabling a preferred embodiment to filter incorrect/fraudulent responses faster and more accurately. In most preferred embodiments, less latency is better. Less latency also allows for faster training of the model and lower risk of cheating, and it confers the added benefit of using the lowest latency and the minimum time marker for which an event happened. This is especially important if this rapid training happened as a stimuli response by users (one or more) who can be determined (by location) to be physically proximate to the event.
(48) Detecting and Synchronizing Input Timing
(49) At least one preferred embodiment provides for detecting and synchronizing input timing with neighboring devices by a variety of methods, including, without limitation, WiFi, Bluetooth, NFC, and/or similar methods. An embodiment can have each device emit specific sound (within and/or outside the audio band) detected by other devices' available sensors. Another or the same embodiment can use both input timing, as described above, and audio content recognition (such as that provided by Duong et al., as previously cited herein)) to determine which method and media is being used to broadcast the event to the viewers, and to further aid in the detection of cheating attempts. An embodiment can use input timing to identify control groups with better latency.
(50) Advanced Processing Methods
(51) Another preferred embodiment can provide for an ability to use a variety of additional processing methods in the transformation of, for example, without limitation, inputs, stored information, analyzed and calculated information and/or derived or generated information, including machine learning, heuristics, pattern-matching, game-theory, and other analytical and/or processing methods.
(52) Determining Absolute Time
(53) An embodiment can further provide for determining absolute time (and nature) of stimuli without physical presence at location(s) of stimuli. This can further comprise, without limitation, one or more of: displaying different stimuli to different groups, then correlate responses to predict what happened where and when; recursively using of one set of responses to generate additional query/stimuli; processing being automated within the system; and using heuristics, comb filters, auto-correlation, statistical algorithms, machine learning algorithms, and/or multi-agent systems, inter alia, without limitation, in order to improve the precision of the derived data. The processing in at least one embodiment can one or more of: feed other stimuli of similar events as additional signals (past or present); dynamically change decision graph (represents options for events that have taken and/or are taking place (and potential future events)), wherein crowd-sourcing responses can be used to prune or exclude decision-tree branches; compare individual replies to group to detect cheating or fraud; produce one or more transcripts of one or more events; and/or identify one or more control groups with better accuracy and/or latency.
(54) One or more preferred embodiments can now be understood by illustrating with the following example(s).
Example 1. Dynamically Generating (Promotional and Other) Content Based on User Feedback
(55) Assume that a major sporting event currently takes place. Millions of people are watching it on their television sets and online. By querying a sufficiently large number of people (and by filtering the fraudulent ones using the method described herein) the system and methods of a preferred embodiment are able to determine the following for very short time intervals: a. How far was a basketball player from the basket when he shot b. How many yards were just gained in a football game c. Which team seemed favorite at any given moment d. What was the color of the dress worn by a leading celebrity when she walked on the red carpet e. Exact play by play outcomes of each play within the event
Example 2. Reconstructing News Events and Providing Insights
(56) Using large amounts of user responses to stimuli in short intervals throughout the course of an event, (including press conference, disaster, or anything being reported upon) the system and methods of a preferred embodiment are able to faithfully recreate the event. In addition, the system and processing steps are able to do the following: a. Identify points of specific interest (based on user feedback) and highlight them b. Generate automatic summaries containing details such as highlights, MVPs and common perceptions c. Provide recommendations to journalists and other news services regarding the best way to portray an event in order to “cater” to the perceptions of their readers. d. Provide accurate timeline of the event with high accuracy and precision and low latency
Example 3. Ascertaining the Sentiment of an Individual User
(57) A preferred embodiment provides for using various sources of information and applying sub-methods described above for ascertaining the sentiment of an individual user. The system enables to accurately predict the users' affinity to various teams, actresses, etc. and without limitation, based on the users' selections, group assignment, or other data, inter alia. Further, by evaluating what may happen in the immediate future, the system in a preferred embodiment can predict if that specific user will be happy or sad in the next few seconds. This prediction has extremely high value as an input to any number of advertising and marketing systems and campaigns.
Example 4. Users Creating Stimuli Questions and Response Options
(58) An additional embodiment can allow users to create stimuli questions and possible response options themselves, optionally in real time. A preferred embodiment may then query a plurality of users with the created questions, optionally in addition to the generated questions. A preferred embodiment may further enable a first user to communicate a second user or with a plurality of other users via written, audio, video, or other means.
Example 5. Event-Reporting Channel
(59) An additional embodiment can provide for an event-reporting channel, whereby the system and/or methods leverage a user-confidence tracking feature. Such an embodiment can allow a cohort of reporters, each reporter associated with a continual evaluation of each reporter's individual confidence levels, to be used to crowd-source input from a plurality of sources. These responses can be processed using the methods described herein to capture various points of view and evolution of sentiment and information over the course of the reported period. These events can also be processed by methods provided for in a preferred embodiment, which methods produce an accurate transcript of timeline of the reported event, by correlating the occurrences with the highest likelihood that were deemed to have occurred and had been reported on by users of the highest confidence and lowest latency.
Example 6. Financial Trading
(60) Financial markets constantly publish a wide assortment of data about market status and various indicators, including future and past analysis of indicators, trends and events. The high volume of data, the rapid expiration of old data and the absolute volume of data produced and report make it extremely difficult to track in an actionable manner. A preferred embodiment of the present invention can provide for querying a plurality of users as to each of their impressions about released data (past impressions), and to further query a plurality of users as to what they think will happen in the future (future predictions). The system can process such user responses, optionally together with external data sources to enable accurate prediction of, for example, future financial instrument or commodity prices, without limitation, and to optionally either signal trades accordingly or to sell access to the predictions, again without limitation.
Example 7. Stock Exchanges
(61) As with financial markets, stock exchanges also publish a wide assortment of data about market status and various indicators, including future and past analysis of indicators, trends and events, including stock prices, periodic financial reports from companies, option conversion dates and other company information, without limitation. The high volume of data, the rapid expiration of old data and the absolute volume of data produced and report make it extremely difficult to track in an actionable manner. Furthermore, users may be further influenced by reading company reports, leaks, news media, social media, etc, all of which may have an effect on the price of any traded stock. A preferred embodiment of the present invention can provide for querying, by computing device, a plurality of users as to what is each of their impressions of released data (past impressions), and to further query, by computing device, a plurality of users as to what they think will happen in the future (future predictions). The system according to such an embodiment provides further for processing such user responses, by a computing device, optionally together with external data sources, and generating accurate prediction of future economic and/or market events and/or event elements, such as, for example, without limitation, future prices of financial instruments or commodities, future likely changes to the price of company shares, future trading volumes, and future short and long positions. Further embodiments can provide for signaling trades accordingly and/or selling access to the predictions, again without limitation.
Example 8. Market Research
(62) A market research or similar company can use large amount of data collected by an embodiment of the present invention to acquire insights as to customer sentiment towards various products, current events, and/or other trends. Such company may entice users to use various applications, including such applications that perform as client devices for the present invention, or as various computer games in order to send queries to users and analyze their responses.
Example 9. Advertising
(63) A promotion or advertising company can use one or more embodiments of the present invention to send advertising to users while they interact with various query and response cycles as provided for by the present invention. Such users, using one or more embodiments, may interact with each other, with celebrities, or with other users as described in EXAMPLE 4, without limitation. The promotion or advertising company may choose to incentivize any user to further interact with the system.
(64) One or more preferred embodiments can be understood in more detail and with more particularity by reference to the further processing approaches and steps that follow below and with illustrative reference to the Figures.
(65) In at least one embodiment, the processing can be illustrated by letting E represent an entities graph, and letting e.1, e.2, . . . e.n be entity types 1 through n. Similarly, let e.1.1, e.1.2, . . . e.1.m be a set of m entities of type e.1. And let entities graph E be infinitely dimensioned.
(66)
(67) For example, still referring to
(68) It should be understood that a connection between entities can, in one or more embodiments, be considered as a relationship descriptor or predicate (arc) that relates two objects (or nodes) in a semantic statement, or a semantic triple-store, such that numerous additional methods of database storage, including graph-type databases, can be used, and which can allow very rapid analysis of the graph-store utilizing multi-threading processor architectures, optionally arranged in any distributed processing topologies.
(69) In a preferred embodiment, during the training phase of the model (or by analyzing prior events, and/or by applying defined rules for the event type, for example the official rules for a football game), for each point in time (which can alternatively be referred to as an “occurrence” or as an “event element”), the system and/or method can use the predictions of a set of users as to what will happen in order to assign weights to the various connection between the entities (the strength of the outgoing links from each entity are normalized to 1). The weights can be arranged as templates so that no prior knowledge about the particular actors of an event need be required; all that is needed is a general knowledge as to the type of the event.
(70) Still with reference to
(71) Although information about past occurrences and events is usually more solid, the predictions about future occurrences offer two important advantages: a) they encourage users to participate, as a sort of competition (which one or more embodiments may further realize as a game application of any kind); b) they confer additional information (which is likely to be more abundant, because of the additional interest) that could be augmented into the data analysis.
(72) By using a “sliding window” technique, the state of each occurrence within an event at each time t is updated at least twice—its initial state is set in time t−1 (as a prediction about the future) and is then modified again in time t+1 (as a question about the past). It should be further understood that either t+1 and/or t−1 can be t+p or t−q, designating any point in the past or the future). In addition, each state may be updated n additional times with n being the size of the sliding window. This is so because a preferred embodiment can use a Hidden Markov Model (HMM) algorithm to update and correct the states sequence. Other preferred embodiments may use other kinds of algorithms. While a preferred embodiment may allocate a lower weight to predictions about future occurrences in comparison to impressions about past occurrences that already happened in the calculation of the probabilities and states, they nonetheless play an important role.
(73) It is important to note that multiple stimuli questions relating to the same occurrence may be created. For example, an occurrence of “Kobe Bryant shot a three pointer from 25 feet” may be a part of an almost identical set of stimuli questions, each specifying a slightly different distance. Each element in the question may vary, which of course leads to a large number of possible states. The likelihood of each state can be managed and determined by the algorithm or algorithms used in a preferred embodiment, including without limitation Hidden Markov Models, Conditional Random Fields, and other suitable methods It should be further noted that multiple algorithms may be used in parallel to create a multi agent system, optionally also using a “mixture of experts” or other ensemble methods to obtain better performance and/or accuracy. It should be further appreciated that the processing of any step or module of the present invention need not be limited to a single application running on a single computing device, and that numerous parallel processing and scalability can be applied to embodiments of the present invention.
(74) During the training phase, the process according to at least one preferred embodiment can compare the predictions (stimuli responses) made by a set of users to the occurrences that actually transpired in the real world and match their prediction responses to “known good” input sources, such as human taggers and other sources of information that become available after an occurrence has been actually happened. A “human tagger” is a person or plurality of people who refine the data captured and processed by the system using human intelligence as well as their personal knowledge and experience as it applies to the analyzed event and its entities, all in order to enhance the accurate of the data during the training phase. When the system is operating in runtime phase, the process already possesses a large states matrix and information about various predictions. For this reason, each iteration only needs to calculate the various probabilities of each observation and it can “predict the past” almost instantaneously after it has occurred. In addition, by analyzing past occurrences, the process can calculate the “real” probabilities (or at least close enough approximation) of options that are likely to occur during an event.
(75) At least one preferred embodiment of the invention can provide for a system that has an elaborate decision graph or state transition diagram, dynamically changing as a result of a live event. The event can be further comprised of multiple occurrences or event elements. Such a decision graph can represent options for events and/or event elements that have taken place and/or are taking place, as well as events that have not yet happened, but which may occur in the future. Some branches of such a decision graph according to one or more embodiments can be mutually-exclusive options; i.e., if one option occurs, then the other option(s) certainly do not occur. Therefore, if a derivative of such an option occurs, then the system can identify with very high probability that the other branch in the decision graph, and all of its derivatives, have been eliminated. For example, if it is given that A and B are mutually exclusive decisions (branches) on the same decision graph, with AA and BB being derivative decisions of options A and B, respectively, then if the system identifies that event BB occurred, the system can calculate with high probability that the entire A branch, and all subsequent options (including AA), have been eliminated. This can be further illustrated by an example, as follows: The system is asked to determine whether the weather today is sunny or cloudy. However, if during another question the user replies that it is raining, then certainly the system can identify that it is cloudy today.
(76) Referring now to
(77) A preferred embodiment can provide for modelling the problem described above as a Hidden Markov Model (HMM) problem, where a states transition matrix can be created by transcribing the rules, optionally using a decision graph or state transition diagram, of the event in question into computer-operable instructions. Still referring to
(78) According to one or more embodiments, the system can use HMM to determine the most likely set of events based on the set of observations provided by users over a certain span of time. By analyzing the observations and the probabilities of transitioning from one state to another (that is, for selecting which occurrence will happen next based on what has actually happened during an event), the system can determine the most likely set of states to have occurred and also correct its predictions when new information becomes available.
(79) Sampling Intervals
(80) It is important to elaborate on the sampling intervals, according to one or more preferred embodiments. The size of the interval that will be used for sampling will be determined based on the following factors: 1) Number of available users: Preferably, the number of users available to the system in one or more embodiments is in the range of 10 to 50 million, more preferably the number of users available to the system is in the range of 10 to 100 million, and most preferably the number of users available to the system is in the range of 10 to 50 billion. However, it is understood that some embodiments of the system and method can allow for as few as any plurality of users. 2) The number of possible likely outcomes—based on the states transition matrix and previously collected observations the system can determine when the range of possible future states is small or large. A small set of possible outcomes will enable an embodiment to approach a smaller number of users and query them with a larger interval. Preferably, the number of likely outcomes is in the range of 1 outcome to 1 million outcomes, more preferably the number of likely outcomes is in the range of 1 outcome to 10 million outcomes, and most preferably the likely outcomes is in the range of 1 outcome to 1 billion outcomes. It will be understood that the system and method of one or more embodiments allow for a number of likely outcomes in the range of 1 to more than 100 billion outcomes. 3) How dynamic is the event—events that are more dynamic, for example basketball or football games require more frequent sampling than a chess tournament. As such, a higher sampling frequency will be required to achieve sufficient accuracy, similar to Nyquist—Shannon sampling theorem (see Jerri, A. J., “The Shannon sampling theorem—Its various extensions and applications: A tutorial review,” Proceedings of the IEEE, vol. 65, no. 11, pp. 1565, 1596, November 1977 doi: 10.1109/PROC.1977.10771; incorporated by reference herein in its entirety). A larger number of human users is also desirous in such cases, as it would be difficult for a small number of human users to respond sufficiently quickly and accurately to maintain statistical accuracy by the system. Automated users may of course respond faster. The more dynamic the event, the more users need to respond in order to get good accuracy—in chess a preferred embodiment only needs one user to report and they have 2 minutes to do it per move, with a very limited number of options (based on the state of the chess board): so perhaps in chess an approximate 5 legal moves and 2 minutes are needed to decide. By contrast, in the final minute of a basketball game the method prefers to have a lot of users each responding to a very simple question, and the method prefers a lot of various questions because the numbers of options is very large and the rate of change is also very large. Preferably, the frequency in which the system can send questions and receive responses to/from users is in the range of 5 to 20 seconds, more preferably the frequency in which the system can send questions and receive responses to/from users is in the range of 0.1 seconds to 10 minutes, and most preferably the frequency in which the system can send questions and receive responses to/from users is in the range of 1 picosecond to 100 days; 4) The attributes of available users—the users' location, level of reliability, among other attributes, can all be determining factors in the decision on sampling interval.
(81) Sampling is performed by segmenting the users into groups and then querying the groups of users, by assigning a single query to each group per cycle, and with the understanding the multiple cycles can be executed in parallel, either to the same set of groups or to any set of groups. Each group will be assigned a single “observation” per such cycle and asked to respond about its occurrence. Groups may be queried for more than one type of observation at a time. The questions sent to users may be direct or indirect ones; indirect ones being used to mask the actual question, but the users' answers to them enable, at minimum, deduction of a “yes” or “no” answer to the predicate.
(82) TABLE-US-00002 TABLE 2 below illustrates an analysis of the responses of the users in each group and the calculation of the probabilities. Yes No Group Observation Answers Answers Probability Group_1 Player X shot from 15 feet 900 100 0.9 Group_2 Player X shot from 25 feet 600 400 0.6 Group_3 Player Y shot from 15 feet 300 700 0.3
(83) It should be understood that Hidden Markov Models are but one way to implement these steps in at least one preferred embodiment of the present invention, and that other algorithms may be available or may become available in the future, all of which are to be considered within the scope of the present invention.
(84) Referring now to
(85) User Credibility and Time Intervals
(86) At least three major elements dictate a set of users questioning strategy: one element first is how dynamic is the event in question: for example, a football game is much more fast-changing than a chess tournament. A second element is the time that has passed since the user has been presented with the question, and a third element is the user's credibility. While the first element is quite straightforward, the other two elements can be further explained as follows:
(87) 1) The time that has passed since the event. A prediction about the future that has arrived long after the event itself is of no use to the system. A simple method, such as provided for by one embodiment, could define a simple rule stating that all predictions that arrive after the event are ignored. However, this approach will not be taking other elements into account: delays in broadcast times are the simplest example, along with geographic distance, among others. Communication delays are also a legitimate reason for a delay in the response.
(88) For this reason, a more preferred embodiment provides for employing an array of features designed to deduce whether or not the prediction is “legitimate.” The array of features may comprise, for example, one or more of the GPS location of the phone, the timestamp of the message, the medium used by the user to view the event and the user's credibility score, without limitation.
(89) In an algorithm of one preferred embodiment, the functions responsible for determining whether or not to process an answer returned by the user are the Wait_For_Response( ) function, which records the time the response was captured or returned and the Calculate_User_Response_Time_Fraud_Likelihood( ) function, which returns a number that reflects how legitimate the user's response time is, which number is a credibility metric that is then then used this to train the model, group cohorts, and otherwise dynamically adjust the algorithm and which also takes into account how dynamic is the event and the user's credibility.
(90) 2) The user's credibility. The credibility of the user is determined by several factors: a) Past behavior—by comparing the user's responses to the actual events (either events a set of human taggers determined happened or events which had a high degree of certainty), the method can obtain a solid estimator of its reliability. b) Meta-data features—if the user's metadata contradicts the claims made by that user (for example, the user claims to have seen the event “live” while he was 100 km away in this case whatever score he had would be multiplied by zero—he's a fraud. c) Trapped by “honeypot questions”—part of the query mechanism generates “honeypot questions”, questions that are known to be false and whose only use is to identify users who are not being true. For example, a question may refer to a commercial not shown is the user's claimed location or refer to a weather condition that did not occur.
(91) All these factors, without limitation, can be used to determine the user's “credibility score,” along with other data operated on by a preferred embodiment of the present invention. This score will factor the percentage of truthful answers to honeypot questions, the average likelihood (assigned by the HMM) of the observations made by the user and how dynamic was the event in question (dynamic events are harder to call correctly). For example, comparing the last minute of an NBA basketball game versus the last move of a chess match: In basketball there could be (for example) 17 different options that occur in the next (for example) 10 seconds, whereas in chess there could be (for example) 3 options in the next (for example) 2 minutes.
(92) As such, low latency and high accuracy are very important for the former basketball example, in order to provide accurate statistics and meaningful probability assessment in a minimum amount of time. Having a large body of users will generally decrease average latency, as some users will respond more quickly than others, therefore enabling the system to use a user credibility assessment metric in order to qualify those users that respond quickly and accurately. A person of ordinary skill in the art can appreciate that the proposed framework for the calculation of the credibility score can be Naïve Bayes or any other classifier, which is capable of taking advantage of the probabilistic nature of the HMM and produce a single value (ranging from 0 to 1) representing the user's credibility. One can further appreciate that in order to simplify the examples herein, a credible user is arbitrarily defined as one that has achieved 80% accuracy in the last 30 minutes, with any further indications of possible fraud. It is further appreciated that a preferred embodiment of the present invention may implement the credibility assessment function illustratively represented in the algorithm by the Calculate_User_Response_Time_Fraud_Likelihood( ) function, which factors a plurality of elements in order to determine if a user is suspected of fraud and to optionally decide whether or not to use the responses provided by the user. For example, a first user might answer 90% correctly over an interval of 30 minutes, however their latency might be more than one standard deviation away from the average latency for the group that first user is assigned to, and the first user's physical location has been determined to be outside of the event venue, such that the process can generate a decision that the first user is viewing the event via some broadcast medium with at least that medium's inherent latency and/or propagation delay. In contrast, a second user who answered only 80% accurately but has been determined to be inside the event venue and the second user's latency was less than half of one standard deviation away from the minimum latency of any user in the system is assumed to be reliable enough and accurate enough for this example purpose.
(93) Processing Steps
(94) One or more preferred embodiments of the invention can provide for a series of steps of processing information that are accomplished by machine instructions directing a computer processor. The software program of one such embodiment can be further described below in Tables 16-26, wherein the first column lists the line number (and matching figure and step) of the algorithm, the central column comprises descriptive commentary on the function of the software step and the right column depicts pseudo code as may be realized by at least on embodiment of the present invention.
(95) The system can leverage what it knows about what happened or is about to happen and combine that with its analysis of the user's responses to know what teams, actors, and so on (without limitation) the user favors. Then, the system can leverage the propagation delay of the user to anticipate if that user will be happy or sad in the near future and send that signal to an advertising system that will offer that user an emotionally-contextual advertisement.
Example 10. Basketball Use Case
(96) The work process of a method according to at least on preferred embodiment can be further illustrated through a use case example. In this example, a basketball game is being analyzed. For simplicity's sake, it can be further assumed that only the following entities exist—“team”, “player” and “ball.” The following connections exist (among others): a) “shooting a hoop from X feet”—a connection between player and ball (multiple instances of this connection exist, one for each possible distance) b) “Has the ball”—a connection between a player and itself c) “Blocked by player Y”—a connection between two different player entities
(97) An example of the way these connections are defined is presented in Table 3.
(98) TABLE-US-00003 TABLE 3 below illustrates the connections among entities of EXAMPLE 7. Entity_1 Entity_2 Connection Player Ball Has_ball Player Block_by Ball Shooting_hoop_from_5_feet Ball Shooting_hoop_from_10_feet Ball Shooting_hoop_from_15_feet Ball Shooting_hoop_from_20_feet . . . . . .
(99) To assure high initial accuracy and to minimize generation of irrelevant questions, it may be desirous to train the model before operating it on a live event in real time. This can be done in any number of simulation scenarios, including by allowing a group of users to watch a pre-recorded past event and to capture their observations and predictions for each point of time within the pre-recorded past event, or to input a prior transcript of the event into the model's training process. Before the training phase event begins, a default time interval is defined (performed when the function is activated, in line 1000 of Table 15). This time interval (for example, 2 seconds) will dictate the frequency for which each group of users will be chosen and queried either about events that have occurred or about their predictions for the future (lines 1020 and 1030 of Table 15). However, this interval may either increase or decrease based on the model's assessment of the current state—while a time out is called, for example, the interval may be increased to 30 seconds in order not to annoy the set(s) of users engaged by the system, yet still allow some observations to be captured, which can be especially important in order to determine the exact time at which the timeout ends and normal play resumes. The current state is updated after every iteration (line 1045 of Table 15) in order to optimally assess what the time interval should be.
(100) In at least one preferred embodiment of the present invention, the querying process works as follows: for the point of time the users are to be queried about (at least once for the past and at least for the future, the process begins by selecting which the states the users are to be queried about (line 1120 of Table 16). For example, a preferred embodiment of the present invention may iterate through all possible states in the state transition table and select the top 50 possibilities based on their statistical likelihood of occurring, although other embodiments may use other methods. Next, analysis of the set of answers (about the past) and prediction (about the future) that were obtained in previous querying rounds is performed. The analysis of the sequence and the selection of the states is done by the Hidden Markov Models (HMM), described in later paragraphs below. Based on the state of the event that is deduced to be in at the time (for example, “group A has the ball, the ball is 30 feet from the hoop, player X has the ball”). Examples of possible questions are presented in Table 14. It can be appreciated by a person of ordinary skill in the art that functions can be included in the process to iterate through the possible states and connections of an event at any point of time and can further utilize Natural Language Generation techniques, including, for example, without limitation, the SimpleNLG method (A. Gatt and E. Reiter (2009); SimpleNLG: A realisation engine for practical applications. Proceedings of ENLG-2009; herein incorporated by reference in its entirety) to create human-readable questions based on the various possibilities for each future state to occur. It should be further appreciated that such questions can be sent to users via standard HTTP or other IP-based connections to either a standard web browser used by the user and/or to any number of connected proprietary applications employed by an embodiment of the present invention.
(101) Training Phase
(102) The training phase begins by calling the “main” function, which the process initializes with two parameters: a) the event parameter, which contains information about the event its entities, the connection between them and all other relevant attributes; b) the time interval, which provides the default interval for an iteration in the system (within an iteration, sets of questions are sent to users to users and the users' responses are processed).
(103) The process begins by extracting the Current State: the possible initial state(s) of the event and assigning them to a dedicated variable (line 1005). This is done in order to better enable the HMM process to identify the likely states (by providing an initial set from which to deduce the observation about which the users will be queried). In a basketball game, for example, the initial state would be {Team_X_on_the_offensive, Team_Y_on_The_Offensive}.
(104) Once the initial states have been identified, the iterative questioning of the users and the analysis of their responses begins. Every time interval t (whose frequency is determined both by the default time interval and by the current state the model is presumed to be in at the moment), the following process takes place:
(105) First, obtain the users' predictions about the future and impressions about the past (lines 1020, 1030 of Table 15). This process is identical in both cases (except for the time t for which it is executed) and therefore it is described once here in general.
(106) This function begins by initializing the object that will contain the predictions made by the users (line 1110 of Table 16).
(107) Then, the States object (which contains all the possible states according to the definitions of the event) is initialized and populated. The possible states are the states that are reachable from the current presumed state (that is, the transition probability is greater than zero).
(108) The next step consists of generating the User Groups Matrix: the groups of users that will be assigned to each state (line 1130 of Table 16). The number of groups equals the number of possible states (shown in Table 4).
(109) TABLE-US-00004 TABLE 4 below illustrates the segmentations of questions to different groups. Group Assignments Observation Queried Group_1 Player X shot from 15 feet Group_2 Player X shot from 25 feet Group_3 Player Y shot from 15 feet . . . . . .
(110) Following the creation of the groups, the process creates Questionnaires: the various questionnaires that will be used by the various groups (line 1140 of Table 16). The questions may be direct (“did player X score 3 points?”), implied (“Did player X dance when he scored 3 points?”) or negative (“did player X miss the basket?”), but all questions, after data analysis, will enable deduction whether or not the said event took place.
(111) Once this has been completed, for each group the following (starting at line 1160 of Table 16) steps are performed:
(112) First, obtain the details of all users who are available for querying (line 1410 of Table 19). Then, analyze the number of available users and prioritize the possible states in order to determine which of them will be analyzed if the number of users is not sufficient to analyze them all (line 1420 of Table 19).
(113) Following that, attempt to determine how dynamic the event is at the moment (that is, how likely is the next iteration to arrive). This action (line 1430 of Table 19) determines how long to wait for the answers to arrive.
(114) The next step is to assign users to each group. This is executed by the function Assign_Queries_To_Users, called in line 1440 of Table 19. The result of this function is a matrix containing the assignments of users to each group. An example of this is presented in Table 5.
(115) TABLE-US-00005 TABLE 5 below illustrates an assignment of users to query groups, further recording the time each query was sent to each user. Users Group_Assignment Transmission Time User_1 Group_1 T User_1 Group_1 T User_1 Group_1 T User_1 Group_2 T + 1 User_1 Group_2 T + 1 User_1 Group_2 T + 1 . . . . . .
(116) Once the users have been assigned, the questionnaires are sent and the system waits for responses (line 1450 of Table 19).
(117) When the responses are obtained, they are translated into a binary representation indicating whether the user replied that the state he was asked about took place (1) or not (0). Once these answers are gathered, the matrix in Table 5 above is populated with two additional columns (shown in Table 6), recording the responses and their respective arrival times.
(118) TABLE-US-00006 TABLE 6 below illustrates an assignment of users to query groups, further recording the time each query was sent to each user and the time when the response was received. Transmission Response Users Group_Assignment Time Responses Time User_1 Group_1 T 1 T + 30 sec User_1 Group_1 T 0 T + 25 sec User_1 Group_1 T 1 T + 12 sec User_1 Group_2 T + 1 0 T + 30 sec User_1 Group_2 T + 1 1 T + 34 sec User_1 Group_2 T + 1 1 T + 33 sec . . . . . . . . . . . . . . .
(119) Once a sufficient number of responses have been gathered, the results (line 1480 of Table 19), are processed to remove responses that appear to be fraud. Since there are “yes” and “no” answers for the occurrence of each event, it is now possible to analyze them and calculate the probability of each event (see Table 7).
(120) TABLE-US-00007 TABLE 7 below illustrates the observation probabilities derived from user responses to queries. Group Observation Yes Answers No Answers Probability Group_1 Player X shot 900 100 0.9 from 15 feet Group_2 Player X shot 600 400 0.6 from 25 feet Group_3 Player Y shot 300 700 0.3 from 15 feet . . . . . . . . . . . . . . .
(121) These probabilities are returned in the object Analyzed_Responses.
(122) Once the predictions about the future and the impressions about the past have been obtained, the process combines them in order to calculate the overall probability of each observation. This is done in line 1040 of Table 15, in which the process combines the two sets of probabilities into one (add the right figure with the circles). Once this is done, each observation is assigned with a single probability of its occurrence (see Table 8)
(123) TABLE-US-00008 TABLE 8 below illustrates the collated prediction probabilities. Player X Player X Player Y PlayerY No one shot from shot from shot from shot from shot to 15 feet 25 feet 15 feet 25 feet the hoop Prediction 0.9 0.6 0.3 0.2 0.1
(124) When the probabilities in Table 8 are normalized to one, the probabilities in Table 9 are obtained.
(125) TABLE-US-00009 TABLE 9 below illustrates the normalized prediction probabilities from Table 8. Player X Player X Player Y Player Y No one shot from shot from shot from shot from shot to the 15 feet 25 feet 15 feet 25 feet hoop Prediction 0.428571 0.285714 0.142857 0.095238 0.047619 (normalized)
(126) After the probabilities are calculated, they can be used to determine what the most likely next state is, and the process iterates again for the next time interval.
(127) Once the event has been concluded, a sequence of observations and states has been obtained. Using these, it's possible to generate the State_Transition_Matrix and Observations_Matrix objects (lines 1070 and 1080 of Table 15).
(128) TABLE-US-00010 TABLE 10 below illustrates an example of an Observation Matrix. Player Y Player Z committed committed Ball Ball foul on foul on enters misses State/Observation Player X Player X hoop hoop Player_X_Shooting_hoop_ 0.05 0 0.5 0.37 from_5_feet Player_X_Shooting_hoop_ 0.08 0.08 0.4 0.44 from_10_feet Player_X_Shooting_hoop_ 0.1 0 0.35 0.55 from_15_feet
(129) TABLE-US-00011 TABLE 11 below illustrates an example of a States Transition Matrix. Player 1 Player 2 Player 3 Player 4 Shooting Shooting Shooting Shooting Team X hoop hoop hoop hoop is on the from 5 from 5 from 5 from 5 offensive feet feet feet feet . . . Team X is 0.1 0.05 0.06 0.04 0.05 on the offensive Player 1 0.02 0.1 0.08 0.1 0.04 Shooting hoop from 5 feet Player 2 0.06 0.02 0.1 0.07 0.07 Shooting hoop from 5 feet Player 3 0.06 0.04 0.05 0.1 0.04 Shooting hoop from 5 feet Player 4 0.07 0.1 0.05 0.04 0.1 Shooting hoop from 5 feet . . .
(130) The final step of the training phase is the creation of the affinity matrix (using the Affinity_Matrix object). This is a user-entity matrix, where entries in specific user-entity cells indicate that the user has a certain sentiment towards the entity. A numeric value is used to represent the strength of the connection. It should be noted that for some users, some of the cells in the matrix will remain empty.
(131) TABLE-US-00012 TABLE 12 below illustrates an example of an Affinity Matrix. Entity_1 Entity_2 Entity_3 Entity_4 Entity_5 . . . User_1 2 4 User_2 5 User_3 4 . .
(132) The Runtime Phase
(133) The running phase is initialized with the following parameters: the event (with the same attributes as those of the training phase), the default time interval (can be the same as was used in the training phase, but there is no such requirement) and the two matrices which are among the products of the training phase—the states transitions matrix and the observations matrix.
(134) The runtime phase begins by obtaining the initial state(s) of the event—as was done in the training phase (line 2005 of Table 22).
(135) Then, for each time interval, do the following: a) Get the user predictions for the past and the future (lines 2020 and 2022 of Table 22), combine and normalize them (lines 2024 and 2030 of Table 22). b) Generate a temporary matrix that contains the probabilities of the observations made by the user for the current iteration (line 2040 of Table 22). This temporary matrix contains the following:
(136) TABLE-US-00013 TABLE 13 below illustrates a temporary matrix containing the user observation probabilities. Player X Player X Player Y Player Y No one shot from shot from shot from shot from shot to 15 feet 25 feet 15 feet 25 feet the hoops Prediction 0.428571 0.285714 0.142857 0.095238 0.047619 (normalized) c) Update the states sequence based on the new information (in a preferred embodiment, this is done with Hidden Markov Models using the Baum-Welch algorithm or any of its derivatives, for example Baggenstoss, Paul M. “A modified Baum-Welch algorithm for hidden Markov models with multiple observation spaces.” Speech and Audio Processing, IEEE Transactions on 9.4 (2001): 411-416.) d) Present commercial content to the users, based on the current events and their affinity matrix values. e) Update the user-entity affinity matrix. This matrix is the same one that was generated in the training phase, but additional values will be added to it as more and more information is collected from and about the users, due to the continuous interaction with them. f) The number of groups is dependent both on the number of available users (spread over the time intervals) and that of the possible states. For demonstration purposes, a simple allocation is applied, designed to ensure that the responses the system obtains are certain to be true with a statistical significance of 90% (assuming a normal distribution in user responses), however one skilled in the art can appreciate that other methods of group segmentation can be realized in one or more embodiments of the present invention, and all such methods are incorporated herein in their entirety. For example purposes, the method only queries users whom the process deems “trustworthy” (users whose past responses have accurately coincided with actual data gathered during past events or within a past timeframe of the current event). g) Once the groups have been generated, questions are allocated to each group (line 1140 of Table 16). The questions are derived from one state of the set of possible ones the system has previously generated. The questions can be derived automatically (for example, one possible question for the state “group A has the ball, the ball is 30 feet from the hoop, player X has the ball” is “did player X drop the ball 30 feet from the hoop?”), and multiple questions can (and are likely to) be generated for each state. Questions can also come from other users or from cohorts of the system (human or mechanical). Answers can come from the body of users or from cohorts of the system (human or mechanical). In addition to computing user reliability, external data can be used to arbitrarily define the reliability of any user, group or cohort, for example to enable certain trusted users to be assigned a high reliability ranks, for example if an expert basketball referee would become an employee of the operators of an embodiment of the present invention, and would then provide human-tagged input, optionally via the form of past impressions, for which the system will fix their probability and credibility as, for example, 100%. Similarly, external data which is known to be accurate can be incorporated into the process as past impressions that with a fixed probability and credibility, for example, of 100%.
(137) TABLE-US-00014 TABLE 14 below illustrates exemplary questions (both on past and future events) presented to users. Question State Type Question Text Player_X_Shooting_hoop_from_5_feet Past Did player X shoot a hoop? Player_X_Shooting_hoop_from_5_feet Past Was a shot made from X feet? Player_X_Shooting_hoop_from_5_feet Past Was the shot successful Player_X_Shooting_hoop_from_5_feet Future Will a “time out” be called? Player_X_Shooting_hoop_from_5_feet Future Will Player X shoot a hoop again in the next minute? Player_X_Shooting_hoop_from_5_feet Future Which player will be MVP?
(138) Once the groups and queries are created, each group is assigned a query (line 1160 of Table 16) and query is sent to all the group's members. Once the queries are sent, the process waits for an answer from the users. The span of time the process may wait for each user to respond depends on a set of factors: for example, preferably the user's reliability metric (past on past interactions), more preferably also the user's location (determined by GPS, user's claims, connection metadata, phone metadata, audio content recognition and other signals as stated herein and otherwise found in the industry), and most preferably the medium through which the user is likely to obtain information about the event and so forth. Different embodiments may opt for any mixture of parameters, and that a person of ordinary skill in the art will appreciate that any number of such parameters can be collected and used by an embodiment for this purpose.
(139) Once the number of obtained answers reaches a satisfactory number—one that enables the method to obtain statistical significance—the system calculates the probabilities of the perceived events (Table 16, line 1170). For example, if 7000 users indicated the basketball shot was “in” and 3000 said it was “out”, the probability assigned to the former observation is 70% and the probability assigned to the latter is 30% (for ease of reference, the term “observation” is used in accordance with the terminology used by Hidden Markov Models as previously cited herein and further described below). One can appreciate that Hidden Markov Models are merely one possibility for the sequencing algorithm and that other methods are available and will become available, and the scope of the present invention is intended to not be limited to only that sequence algorithm described for this example of at least one preferred embodiment.
(140) Once this iterative loop process of Function 1100 shown in Table 16 is completed, the observations made by the groups of users being iterated currently are added to a “container” object (Table 16, line 1180) and once all groups are queried this container is returned to the parent function (Table 16, line 1190). Note that this process can be distributed to a plurality of computing devices, optionally in different geographic regions, which perform this operation in parallel to allow analysis of a very large number of users and/or groups in a very small amount of time.
(141) Once the predictions (about the future) and impressions (about the past) for the entire event are obtained, the event is over, and all the raw data are available), then it is time to combine them (Table 15, line 1040). In one embodiment, this can be done by assigning, for example, a 2:1 ratio to past observations versus future predictions. Obviously, more advanced methods can be applied, but at least one preferred embodiment can use this simple approach. This process is presented in
(142) Referring to
(143) Once a unified set of observations is created, it is possible to generate the observation states which are an integral part of the Hidden Markov Model (Table 15, line 1050). This is done in the following manner: for each pair of entities (“player and ball” or “player1 and player2”), the method checks whether a connection between them is deemed possible by the definition of the event (Table 17, line 1230), as it was specified during the definition of the event. If the connection is possible and the input provided the users support its existence, then the program creates the observations state that represents the connections and add it to a list of observation states (line 1240 of Table 17). Once all entity combinations have been analyzed, the set of observation states is returned (Table 17, line 1250).
(144) Once all the observations are obtained, the system can generate the states transition matrix (Table 15, line 1060). This matrix can be defined by a set of domain experts, and it defines all the “legal” transition between states in the event “eco system.”
Example 11. State Transitions
(145) A further example will assist describing the concept of state transitions in accordance with at least one preferred embodiment of the invention: during the above-mentioned basketball game, it is possible to transition from a state of “foul committed” to a state of “penalty shot.” This state, in turn, can transition to another “penalty shot” or to “Player X has the ball.” An illegal transition would be from “player X from team 1 has the ball” to “player Y from team 2 shooting hoop from 30 feet”; a state such as “Player X loses ball to player Y” must first take place. An example of the possible state transitions is presented in
(146) Referring to
(147) As stated, at this point in time, the system begins another iteration of the algorithm (as depicted in line 2010, Table 22). Once again, the time interval between two subsequent runs is determined by the time interval set by the modeling addition to the system's assessment of the current state, as defined in line 2075 of Table 22. Based on the current state of the state transition table, (“player 1 shoots from 5 feet”) the system generate queries regarding the chances of the shot succeeding (the future) and regarding the distance from which the shot was thrown (the past). This is described in line 2020 of Table 22.
(148) Once a sufficient number of answers has been obtained, an embodiment provides for normalizing the probabilities of all observations to one (line 2030 of Table 22) and then generating the top likely observations (line 2040 of Table 22). Using these observations, the method can use the matrices presented above to update a perceived chain of events (line 2050 of Table 22).
(149) For simplicity of this example, it can be assumed that there is only one likely observation—that player 1 shot 3 points. This conclusion is reached following the analysis of past impressions and future predictions, as depicted in
(150) Referring to
(151) Finally, the method generates the final component needed for the HMM process—the observation matrix. This matrix denotes the likelihood of obtaining a certain observation at a certain state, thus enabling the probabilistic process of the HMM to “interpret” the observations obtained from a set of users. The process used to generate this matrix is called in line 1070 of Table 15.
(152) In at least one preferred embodiment, the process used to generate this matrix can be as follows: for each state (line 1320 of Table 18) the method analyzes each observation (line 1330 of Table 18) and checks whether the observation is possible (line 1340 of Table 18), as was defined so by the experts who set the parameters of the event prior to the experiment. If the observation is “legal”, then the system assigns it to the said state with its probability (line 1350 of Table 18), as was determined during the analysis of the users' responses. This process results in a table (or matrix) where for each state/observation combination, a value representing its likelihood is present. An example of such a data structure is presented in Table 11.
(153) This process is repeated iteratively throughout the course of the event. It should be noted that the present invention is by no means limited to only modifying the latest state in the chain: additional information from users with higher latency will also be taken into account (based on reliability and fraud filtering) and may very well be used to update the events. For example, in the case of a shot that was later disqualified by a referee only the responses received after the referee's call will contain “correct” observations. By maintaining and updating all observations and probabilities (for any amount of time) the method can address this issue.
(154) The final component is the manner by which at least one preferred embodiment can utilize this information for commercial purposes. This is done in the following way: using the affinity matrix (generated in the training phase, if available) and the current affinity of the user to entities involved in the current state of the events chain (line 2060 of Table 22), the system attempts to determine whether the user has a strong positive affinity to any of the relevant entities. By iterating over all possible entities (for every user), it is possible to identify the entities for which the user has the greatest positive affinity (lines 2210-2240 of Table 24) and then either generate and send relevant advertisements, promotions, or other similar material, and/or signal an external system with this data for any action that system may then take. Related methods of targeted advertisement can use existing methods in the field of Recommender Systems presented by academia and others. The methods that can be used for identifying entities for which users have high affinity include collaborative filtering (Koren, Yehuda, and Robert Bell. “Advances in collaborative filtering.” In Recommender Systems Handbook, pp. 145-186. Springer US, 2011.) and matrix factorization techniques including SVD (Weng, Xiaoqing, and Junyi Shen. “Classification of multivariate time series using two-dimensional singular value decomposition,” Knowledge-Based Systems 21, no. 7 (2008): 535-539), both of which are incorporated herein by reference in their entirety.
(155)
(156) TABLE-US-00015 TABLE 15 below illustrates an exemplary pseudo code implementation of a main program routine for the training aspect, as applicable to a preferred embodiment of the present invention. Line (Fig/ Step) Comment Pseudo Code 1000 Main program Main(event, time_interval) (7/ routine for the 716) training phase. Assumes a State 1005 The current state Current_State<-event.Get_Initial_State( ) (7/ of the event is 703) required so that it would be possible to better assess what the next time interval should be. Initially, the state is defined by the type of the event. 1010 Starts a loop that Foreach (t in (7/ iterates through Split_To_Time_Intervals(event.length, 704) each occurrence Current_State)) within a series of occurrences that comprise an event. Actual splits can be time based, rule based, play based, external input (human, data or otherwise) or otherwise, and any combination thereof. 1020 For each occurrence User_predictions_1[t] <- (7/ of the selected Generate_User_Predictions_For_Time_ 705) event, call Interval(t-1, event, False) function 1100 (FIG. 8) to read user predications that were previously captured (prior to the selected occurrence of the same event or using data from past events, or any combination thereof) for each of the questions about said selected occurrence. 1040 Next, the two types User_predictions[t] <- (7/ of predictions Combine_Predictions(User_predictions_1, 707) (past and future) User_Predicitons_2) are combined into one matrix and normalized, with the result illustrated in Table 13. 1041 Filter non-credible Calculate_User_Response_Time_Fraud_ (7/ users by calling Likelyhood(Response_Time, 708) function 1700 (FIG. Event_Dynamic_Level, User_Details) 17) . 1045 Now, update the Current_State<- (7/ current state. Determine_Current_State(User_ 709) Assess several predictions[t]) likely options and choose the smallest time interval that fits one of them, reducing the chance of missing anything, while also not bothering users with extra and redundant questions. 1048 End For (7/ 710) 1050 Next, combine the Observation_States<- (7/ user predictions Generate_Entity_Connections (event, 712) captured from the User_Predictions) users in time interval t as depicted in FIG. 4 and generate possible a matrix of ″states″ (combinations of entities whose chance of happening is greater than the threshold) by calling function 1200 (FIG. 19). 1060 Next, optionally State_Transition_Matrix<- (7/ employ external Generate_State_Transition_Matrix(event) 712) data (captured by Note: This will only be done for the human or mechanical training step. means) to further An example of the matrix is presented in analyze the Table 11. results, and or use any combination of external data sources to remove any invalid states, thereby improving accuracy of the transition matrix. 1070 Finally, create an Observations_Matrix<- (7/ observation matrix Calculate_Observation_Matrix(event, 712) using the state Observation_States, transition matrix State_Transition_Matrix) and the various observations that were collected, as illustrated in Table 10. 1075 After training, (Not illustrated, can use any tagging and (7/ optionally pass all supervised learning method e.g. Fiebrink, 713) information to R., P. R. Cook, and D. Trueman. ″Human human taggers for model evaluation in interactive final tagging and supervised learning.″ Proceedings of the analysis. SIGCHI Conference on Human-Computer Interaction (CHI′11), herein incorporated by reference) Vancouver, BC, May 7-12, 2011. ) 1080 Once the states of Affinity_Matrix<- (7/ the event have been Generate_Users_Affinity_Matrix(State_ 714) set, it's time to Transition_Matrix, Observations_Matrix, assess the user's User_predictions) affinity (fondness) for each entity. For example, if the user interpreted the facts in a more favorable manner (for an entity) than the probabilities would otherwise suggest, or if the user's predictions were more optimistic than reality, the system can deduce his affinity alignment. A sample Affinity Matrix is illustrated in Table 12. End Main Routine
(157)
(158) TABLE-US-00016 TABLE 16 below illustrates an exemplary pseudo code implementation of a program function to capture user predictions based on the number of possible likely observations, as applicable to a preferred embodiment of the present invention. Line (FIG/Step) Comment Pseudo Code 1100 Program function to Generate_User_Predictions_For_ (8/815) capture user Time_Interval (t, event, predictions based is_prediction_about_future, on the number of Min_Credibility_Score) possible likely observations (based on past observations, user data, event state and decision graph, determine the number of makeup of the population to query. 1110 Initialize User User_Predictions<−(init) (8/804) Predictions Matrix. 1120 Then use state diagram States<−Determine_Possible_States(t, event) (8/805) to determine ALL possible states for event (for example, in NFL football, an ″incomplete rush″ is not a valid state) as illustrated in FIG. 2. 1130 Next, segment active User Groups<− (8/806) users and determine Determine_Users_Groups(t, event, how many groups will Min_Credibility_Score) be generated, optionally requiring that the users each of those groups them have a high credibility score. Segmentation can include location data from phone or any other source. A sample result of this step is illustrated in Table 5. 1140 Next, generate matrix Questionnaires<−Generate_Queries(t, event) (8/807) of possible (and legal) questions that relate to each of the possible states of the event based on the Event Observation Matrix and thus the prediction of probabilities as to what might happen. 1150 Start iterating through Foreach (group in User_Groups) (8/808) each group in the list of groups created in line 1130. 1160 Call function 1400 Answers<− (8/809) (FIG. 11) to send Assign_Questionnaires_To_User_And_Query questions to users (Questionnaires, group, event, t, States, group. and wait for latency, is_prediction_about_future) responses. Note that the latency of each group is also used, as a − a prediction (based on phone metadata and past performance) how quickly members of the group will respond. A sample result of this step is illustrated in Table 5. 1170 Normalize answers Answers<−Normalize_Answers(Answers) (8/810) received from user responses. 1180 Add user responses User_Predicitons.Add(Answers) (8/811) from data collected in previous step. End For 1190 Output matrix of Return User_Predictions (8/813) user predictions. The result of this function is illustrated in Table 9.
(159)
(160) TABLE-US-00017 TABLE 17 below illustrates an exemplary pseudo code implementation of a program function used to generate the states based on the connections between entities of an event, as applicable to a preferred embodiment of the present invention. 1200 Program function used to Generate_Entity_Connections (event, (9/910) generate the states based User_Predictions) on the connections between the entities of an event. 1210 The possible list of User_Prediction_States<−(new) (9/904) prediction combinations and likelihoods for each are obtained (for example, by analyzing a past event or by following a decision graph e.g. 201). 1220 Recursively iterate all Foreach (entity_type_1 in event.entities) (9/905) entity types. 1230 Within main iterative If (9/906) loop, evaluate each (entity_type_1.equals(entity_type_2) || !event. entity vs the entity Connection_Exists(entity_type_1, selected in step 1220 entity_type_2)) then process next item to determine, for example, if actress is connected to dress and then if dress is connected to color. 1240 Connect list entities User_Prediction_States<− (9/907) for which any Connect_Entities_Based_On_Predictions(entity_ relationship was found. type_1.items, entity_type_2.items, User_Predictions) End For 1250 Return list of possible Return User_Prediction_States (9/908) states to be offered to users.
(161)
(162) TABLE-US-00018 TABLE 18 below illustrates an exemplary pseudo code implementation of a program function used to calculate the probabilities of a particular observation to occur in a particular state, as applicable to a preferred embodiment of the present invention. Line (FIG/Step) Comment Pseudo Code 1300 Based on the states Calculate_Observation_Matrix (event, (10/1012) and their assigned Observation_States, State_Transition_Matrix) probabilities, calculate the probabilities of observation O to occur in state S. these values will be placed in a matrix object, and enable the use of Hidden Markov Models to infer the true series of events in the real world. 1310 Initialize Observation_Matrix<−(new) (10/1004) observation matrix. 1320 Main iterative look Foreach (State in State_Transition_Matrix) (10/1005) that evaluates each state within the state transition matrix. 1330 Within main iterative Foreach (Observation in Observation_States) (10/1006) loop, further recursively iterate each observation in the observation states matrix 1340 Evaluate if an If (10/1007) observation selected (event.Observation_Is_Possible_In_State(State, in step 1330 is Observation) possible in the state selected in line 1320. 1350 Then add the Then (10/1008) observation selected Observation_Matrix.Add(State, Observation) in line 1330 as a valid possibility for the state selected in line 1320. 1351 End for (10/1009) 1352 End for (10/1009) 1360 (a sample of such Return Observation_Matrix (10/1010) returned matrix is illustrated in Table 10)
(163)
(164) TABLE-US-00019 TABLE 19 below illustrates an exemplary pseudo code implementation of a program function used to send selected questions to selected users and collect their timestamped responses, as applicable to a preferred embodiment of the present invention. Line (FIG/Step) Comment Pseudo Code 1400 Function to send Assign_Questionnaires_To_User_And_Query (11/1117) selected questions (Questionnaires, group, event, t, to selected users User_Prediction_States, group_latency, and collect their is_prediction_about_future) timestamped responses. 1410 Calculates the user's User Details<− (11/1106) characteristics Obtain_Users_Characteristics(group, (location, event, t, User_Prediction_States) reliability, etc.). 1420 Determine which are Likely_States<− (11/1107) the possible states Obtain_Likely_States(User_Prediction_States, and what is the t, event, is_prediction_about_future) likelihood of each, based on evaluating the data in the model's matrices. 1430 Factor the “tempo” Event_Dynamic_Level<− (11/1108) of an event into Determine_Event_Dynamic_Level(event, t, the calculations; Likely_states, is_prediction_about_future) for example, a football game with its 25 second play timers is substantially “faster” than a chess match with a 2 minute play timer. This information is very important for determining group partitioning (which users to query), as the latency of the various users becomes more and more important the shorter the event timers are. 1440 Based on all these User_Queries_Assignments<− (11/1109) factors (among Assign_Queries_To_Users (event, others and without Questionnaires, group, User_Details, limitation), the Likely_States, Event_Dynamic_Level, questionnaires can group_latency) now be generated by calling Function 1500 (FIG. 12), with a sample result illustrated in Table 5. 1450 Send questions to Response Time<−Wait_For_Response( ) (11/1110) users based on assignments generated in steps above and measure their response times. 1460 Call Function 1700 If (11/1111) (FIG. 15), to analyze (Calculate_User_Response_Time_Fraud_Likelyhood response time for each (Response Time, Event_Dynamic_Level, user and evaluate if it User_Details) < Minimum_Legitimacy_Threshold( ) is within a threshold. Note: for the purpose of this example, The threshold can be the function Minimum_Legitimacy_Threshold( ) dynamically returns the value 0.8, which represents a requirement adjusted depending that the user has provided correct answers at least on various factors 80% of the time in the past 30 minutes. including number of active users, their locations, connectivity methods, broadcast delays, event dynamics etc. 1470 Return null if a users' Return (null) (11/1112) response is considered fraudulent and is excluded. 1480 Process the responses Responses<−Process_Query_Responses(group, (11/1113) obtained from the Questionnaires, User_Queries_Assignments) users, as illustrated in Table 7. 1490 Enhance raw Analyzed_Responses<− (11/1114) responses obtained Remove_Frauds_And_Aggergate_Results(Responses) in line 1480 by removing fraudulent responses and aggregate responses. 1495 Return enhanced Return Analyzed_Responses (11/1115) responses to calling function, as illustrated in Table 9.
(165)
(166) TABLE-US-00020 TABLE 20 below illustrates an exemplary pseudo code implementation of a program function used to determine what type of question to send to each user, as applicable to a preferred embodiment of the present invention. Line (FIG/Step) Comment Pseudo Code 1500 Program function to Assign_Queries_To_Users(event, (12/1213) determine what type Questionnaires, group, User_Details, of question to send Likely_States, Event_Dynamic_Level, to each user. This group_latency) is determined by the number of available users, the type of the event, the confidence index of possible events and the historical user responses. 1510 Evaluate the User_Reliability<− (12/1206) reliability of each Determine_User_Reliability(event, user, using (for User_Details, group_latency) example) the users' Note: This function is not demonstrated. details and their However, for the present purpose, assume group assignment. that a reliable user is one whose answers have been 80% correct (or more) in the past 30 minutes. 1520 Choose the states Risk Level<−Determine_Risk_Level( (12/1207) that the user will Event_Dynamic_Level, event, be queried about. Likely_States, Group_latency, Also, the risk level User_Reliability) is used to determine the vulnerability to fraud attempts: in fast-changing events it is more difficult to detect fraud than in slower ones, given all other factors are equal. 1530 Populate matrix and Chosen States<− (12/1208) choose the states Select_Relevant_States(Likely_States, the user will be User_Reliability, event, Risk_Level) queried about. 1540 Users are ordered so User_Order<− (12/1209) that they are queries Order_Users_By_Risk(User_Reliability, by order of the least Risk_Level, Chosen_States) risky first (long latency also adds to risk, so higher reliability is given to users respond quickly, thereby reducing noise in the model). 1550 Table of queries for User_Query<− (12/1210) users is generated. Generate_User_Query(event, Chosen_States) 1560 Return user queries Return User_Query (12/1211) table to calling function.
(167)
(168) TABLE-US-00021 TABLE 21 below illustrates an exemplary pseudo code implementation of a program function used to create an “affinity matrix” between users and entities, as applicable to a preferred embodiment of the present invention. Line (FIG/Step) Comment Pseudo Code 1600 Creates an Generate_Users_Affinity_Matrix(State_Transition_ (13/1315) “affinity matrix” Matrix, Observations_Matrix, User_predictions) between users and entities. The goal is to determine which entities are liked by each user and which aren't 1610 Initialize the object If (Affinity_Matrix.sizeof( )=0) then (13/1305) that will be returned Affinity_Matrix<−(new) 1620 Iterate event Foreach (t in (13/1306) elements Split_To_Time_Intervals(event.length)) 1630 Iterate states Foreach (State in State_Transition_Matrix) (13/1307) 1640 Iterate observations Foreach (Observation in Observation_States) (13/1308) 1650 Iterate users Foreach (User in User_Prediction.Get_Users( )) (13/1309) 1660 Taking into account Affinity<− (13/1310) the time, state, Determine_Observation_Affinity(State, observation and the Observeation, User_Predictions[User][t], input provided by event.State_At(t)) the user (among others and without limitation), determine whether the prediction was (un)favorable enough to deduce there's an affinity. 1670 Update the final Update_Affinity_Matrix(Affinity_Matrix, affinity) (13/1311) object with the user's affinities 1680 End for (13/1312) 1690 End For (13/1312) 1695 End For (13/1312) 1696 End For (13/1312) 1697 An example of the Return Affinity_Matrix (13/1313) returned affinity matrix is presented in Table 12.
(169)
(170) TABLE-US-00022 TABLE 22 below illustrates an exemplary pseudo code implementation of a main program function used to create the main program execution loop for a preferred embodiment of the present invention. Line (FIG/Step) Comment Pseudo Code 2000 Main program Main(event, time_interval, State_Transition_ (14/1415) function for system Matrix, Observation_Matrix) runtime operations. 2005 Initialize the Current_State<−event.Get_Initial_State( ) (14/1404) current state variable. 2010 Starts a loop that Foreach (14/1405) iterates through (t in Split_To_Time_Intervals(event.length, each occurrence Current_State)) within a series of occurrences that comprise an event. Actual splits can be time based, rule based, play based, external input (human, data or otherwise) or otherwise, and any combination thereof. 2020 For each occurrence User_predictions_1[t]<− (14/1406) of the selected Generate_User_Predictions_For_Time_ event, call function Interval(t−1, event, False) 1100 (FIG. 8) to read user predications that were previously captured (prior to the selected occurrence of the same event or using data from past events, or any combination thereof) for each of the questions about said selected occurrence. 2022 For each occurrence User_predictions_2[t]<− (14/1406) of the selected event, Generate_User_Predictions_For_Time_ function 1100 (FIG. 8) Interval(t+1, event, True) is called to read user predications that were captured after said selected occurrence (following the selected occurrence of the same event or using data from other events, or any combination thereof) for each of the questions about said selected occurrence. 2024 Next, the two types User_predictions[t]<− (14/1407) of predictions Combine_Predictions(User_predictions_1, (past and future) User_Predicitons_2) are combined into one matrix . . . 2030 . . . and normalized. User_predictions[t]<− (14/1407) Normalize_Predictions(User_predictions[t]) 2040 Call Function 2100 on Observation_States<− (14/1408) FIG. 15 to calculate Generate_Observation_States(event, what are the likely User_predictions) states based on the predictions of the users. 2050 In at least one States_Sequence<− (14/1409) embodiment, use the Calculate_Likely_States_Sequence(Observation_ backwards recursion States, Observations_Matrix, algorithm for HMM. State_Transition_Matrix) 2060 Get the user's Affinity<− (14/1410) current affinity Determine_Observation_Affinity(States_ based on the latest Sequence.Get_Current_State( ), Observation, prediction. User_Predictions[User][t], event.State_At(t)) 2065 Record event log, Log<− (14/1416) event timeline, (States_Sequence.Get_Current_State( ), user actions. Observation, User_Predictions[User][t], event.State_At(t)) 2070 Monetization and Generate_And_Send_Relevant_Content(event, (14/1411) commercial State_Sequence, affinity, Affinity_Matrix) integration options are called via function 2200 on FIG. 16, (using data from both the present affinity calculation and the Affinity Matrix from the training phase). 2075 Now, update the Current_State<− (14/1412) current state and Determine_Current_State(User_predictions[t]) assess several likely options, choosing the smallest time interval that fits one of them. This way it is less likely to miss anything, while also not creating spurious questions that are sent to users. 2080 End For (14/1413)
(171)
(172) TABLE-US-00023 TABLE 23 below illustrates an exemplary pseudo code implementation of a program function used to generate a list of observations based on the selected events and the user predictions matrix, as applicable to a preferred embodiment of the present invention. Line (FIG/Step) Comment Pseudo Code 2100 Program function to Generate_Observation_States(event, (15/1508) generate list of User_predictions) observations based on the selected events and the user predictions matrix that was created during the training phase. 2110 Populate initial Initial_Observations<− (15/1503) observations matrix. Translate_Predicitons_To_Observations(event, User_predictions) 2120 Calculate probability Likely_Observations<− (15/1504) of observations. Obtain_Top_Likely_Observations(event, User_predictions) 2130 Generate the most Chosen_States<− (15/1505) “likely” states Generate_Chosen_States_And_Probabilities( based on the chosen event, Likely_Observations) likely observations. These states are used in the HMM model in order to deduce the most likely sequence of states. 2140 Return matrix of Return Chosen_States (15/1506) chosen states to the calling function.
(173)
(174) TABLE-US-00024 TABLE 24 below illustrates an exemplary pseudo code implementation of a program function used to create and transmit user-directed content as a result of a user's affinity to a particular entity in the event, as applicable to a preferred embodiment of the present invention. Line (FIG/Step) Comment Pseudo Code 2200 Generate_And_Send_Relevant_Content (16/1612) (event, State_Sequence, Affinity, Affinity_Matrix) 2210 Iterate Active Foreach (User in (16/1604) Users for Event User_Prediction.Get_Users( )) 2220 Iterate Active Foreach (Entity in event.Entities) (16/1605) Entities for Event 2230 Evaluate affinity If (16/1603) relevance against (State_Sequence.Entity_Is_Relevant(Entity) iterated entity 2240 Evaluate affinity If (16/1606) connection against (Positive_Affinity_Exists(User, event, Affinity, iterated entity Affinity_Matrix) 2250 Publish advertising Generate_And_Publish_Content_To_User(User, (16/1607) or other content to Entity, event.Get_Event_Advertisment ( )) user device, for example as illustrated on step 2004 of FIG. 20. 2285 End For (16/1609) 2285 Return Affinity Return (Affinity_Matrix) (16/1610) Matrix to calling function.
(175)
(176) TABLE-US-00025 TABLE 25 below illustrates an exemplary pseudo code implementation of a program function used to analyze user responses and to determine whether there is a sufficient number of users are available with a sufficient legitimacy score, as applicable to a preferred embodiment of the present invention. Line (FIG/Step) Comment Pseudo Code 1700 Analyzes the answers Calculate_User_Response_Time_ (17/1712) provided by all the Fraud_Likelyhood (Response_Time, users and determines Event_Dynamic_Level, User_Details) whether there is a sufficient number of users with a sufficient legitimacy score. 1710 Initialize the object Legitimate_User_Details<−(new) (17/1704) that will contain the users whose reliability exceeds a predefined threshold. 1720 Iterate users Foreach (User in User_Details) (17/1705) 1730 If the user's reliability If (user.Legitimacy_Score < (17/1706) is above the Minimum_Legitimacy_Threshold( ) threshold, it will be used for analysis later 1740 Continue (17/1706) 1750 If the response of the If (User_Response_Is_Consistent_ (17/1707) user is consistent with With_Proximate_Users(User, User_Details)) that of a majority of the users whose geo-location is similar to his, then . . . 1760 . . . add the user to the Legitimate_User_Details.Add(User) (17/1708) list of legitimate users. 1770 End For (17/1709) 1780 Return estimated Return (Estimate_Response_ (17/1710) number and reliability Reliability(Legitimate_User_Details)) of the remaining users and determine a legitimacy score (the higher the better).
(177) Computing System
(178) Referring now to
(179) Generally, program modules include routines, programs, components, data structures, etc., that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the inventive methods can be practiced with other computer system configurations, including single-processor or multiprocessor computer systems, minicomputers, mainframe computers, as well as personal computers, hand-held computing devices, microprocessor-based or programmable consumer electronics, and the like, each of which can be operatively coupled to one or more associated devices, including various architectures such as cloud computing.
(180) The illustrated aspects of the invention may also be practiced in distributed computing environments where certain tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules can be located in both local and remote memory storage devices.
(181) A computer typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media can comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital video disk (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer.
(182) Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, cellular, infrared and other wireless media.
(183) Combinations of the any of the above should also be included within the scope of computer-readable media.
(184) With reference again to
(185) Still referring to
(186) Continuing to refer to
(187)
(188) The computer 1802 depicted in
(189) Referring now to
(190) Still referring to
(191) Wi-Fi, or Wireless Fidelity, allows connection to the Internet from a couch at home, a bed in a hotel room, or a conference room at work, without wires. Wi-Fi is a wireless technology similar to that used in a cell phone that enables such devices, e.g., computers, to send and receive data indoors and out; anywhere within the range of a base station. Wi-Fi networks use radio technologies called IEEE 802.11(a, b, g, etc.) to provide secure, reliable, fast wireless connectivity. A Wi-Fi network can be used to connect computers to each other, to the Internet, and to wired networks (which use IEEE 802.3 or Ethernet). Wi-Fi networks operate in the unlicensed 2.4 and 5 GHz radio bands, at an 11 Mbps (802.11a) or 54 Mbps (802.11b/g) data rate, for example, or with experimental results that contain both bands (dual band), so the networks can provide real-world performance similar to the basic 10/100/1000BaseT wired Ethernet networks used in many offices. A further embodiment can even allow for transmission via a wireless method described in RFC 1149 (See http://tools.ietf.org/pdf/rfc1149.pdf, incorporated herein by reference).
(192) Referring now to
(193) Referring now to
ADVANTAGES
(194) It can be appreciated that various embodiments of the invention confer numerous advantages and benefits. These include, without limitation, being able to generate a transcript of any event which is concurrently observed by a plurality of entities in a manner whereby each such entity can react to a plurality of stimuli and thereby interact with the system contemplated herein such that an accurate transcript will be produced by the system. Further benefit derives from being able to detect any of attempted fraud or cheating by any such entity. Additionally, it can be appreciated that benefits flow from being able to accomplish the above without the requirement for a physical presence at the location of the event and/or without the requirement to have an accurate time reference.
SCOPE NOT LIMITED
(195) Those of ordinary skill in the art will recognize that the method and apparatus of the present invention described herein and others implied have many applications; therefore, the present invention which is the subject of this application is not limited by or to the representative examples and/or methods disclosed herein, nor limited by or to the preferred embodiments described herein. Moreover, the scope to the present inventions covers conventionally known variations and modifications to the system components (hardware, software, devices, methods, etc.) described herein, as would be known by those skilled in the art. Various other embodiments and modifications to these preferred embodiments may be made by those skilled in the relevant art without departing from the scope or spirit of these inventions. Accordingly, the inventions are not to be limited, except as by the appended claims to forthcoming applications.