# Patent

## Title
System and method to increase efficiency and speed of analytics report generation in audience measurement systems

## Abstract

A method of generating television Audience Measurement System (AMS) reports and a system executing the method are disclosed. The method comprises the steps of receiving a plurality of encoded report payloads from a plurality of client devices, storing the encoded report payloads in a database, transferring at least one encoded report payload from the database into randomly addressable memory (RAM), decoding the at least one encoded report payload in RAM, parsing the decoded data in RAM with at least one matching algorithm to determine the occurrence of events, compiling a database of parsed data, and generating an AMS report from the database of parsed data.

## Background
REFERENCE TO RELATED APPLICATIONS
This application claims priority to U.S. provisional Application Ser. No. 61/489,422, filed May 24, 2011, entitled “System and Method for Audience Measurement System Increase in Efficiency and Speed of Analytics Report Generation,” which is hereby specifically and entirely incorporated by reference.


BACKGROUND
1. Field of the Invention
The invention is directed to television advertisements. Specifically, the invention is directed to reporting viewership of television advertisements and programs.
2. Background of the Invention
Audience Measurement Systems (AMS) should record all events generated by a consumer device, sends them to a centralized location, and allows interested parties to generate reports on all viewed content units, including channel, program, advertisements, etc. Audience Behavior Measurement Systems (BMS) should allow for the recording and monitoring of an audience's interaction with virtually any device or system, including household appliances, radio, TV, gaming consoles, smart phones, tablets, PCs, and so forth.
Due to the amount of data that needs to be collected, transported, stored, retrieved, and processed, the capabilities of existing cost-effective systems can be easily exceeded if the systems are used to generate reports on each and every content unit (program, ad, interactive TV applications, video-on-demand content, etc.) with no margin of error while allowing the user to look back and generate any type of report based on historical data. For example, the PayTV industry in the U.S.A has 60 million digital TV subscribers, where each subscriber generates, on average, approximately one hundred events per day. An Audience Measurement System with such capabilities would need to generate, transport, and store approximately 6 billion events to generate a report on every subscriber. To generate a program or ad rating report, such a system, for each report, will have to process 6 billion records per day of data. Moreover, considering that a typical linear channel lineup in the U.S.A is approximately 300 channels, and each hour of a broadcasted programming has up to 22 minutes allocated for ad spots (which are typically 30 seconds or less), there are up to 316,800 ad units per day which need to be mapped to about 1,000 socioeconomic, demographic, purchasing, housing, and other profiles. Such an amount of data currently makes creation of such systems impractical.
To date, no AMS have been created for the PayTV industry with the abovementioned capabilities, within a reasonable budget, because they have not overcome the limitations caused by the set-top-box return path (i.e. the set-top-box's upstream bandwidth to the head-end), the speed of data retrieval from centralized storage, the cost of CPU data processing to generate the necessary reports, and the time necessary to complete the requested reports (with 316,800 ad units, six billion US records per user per day, and 0.01 millisecond per one comparison, report generation can take up to 602 years to process on a modern computer).
Existing systems (for example, the one described in U.S. Pat. No. 6,983,478 entitled Method and System For Tracking Network Use) propose to create event timelines for each panel participant in a Parse and Merge Data engine by decoding and parsing data received from each panel participant's set-top-box, merging event records data with programming and ad data, and forming even timeline records for each of panel participant's set-top-boxes
Such a design and listed operations present two problems. The first challenge is that the systems require substantial amount of processing power to perform parsing, and a substantial amount of I/O (read and write) operations to create and store timeline records. This requirement dramatically limits the ability to cost-effectively scale, to provide support panels with reasonable number of panel participants, and to accurately represent viewing patterns of a requested targeting profile.
A second problem associated with the abovementioned approach creates timeline data records which are very large by their nature. Considering that the final product of this process is analytics report(s), and to generate such report analytics system has to run database queries over very large number of records, and each report generation consumes a substantial amount of time and computing resources.
SUMMARY OF THE INVENTION
The present invention overcomes the problems and disadvantages associated with current strategies and designs and provides new tools and methods of measuring viewership of many types of content.
One embodiment of the invention is directed to a method of generating television analytics Audience Measurement System (AMS) reports. The method comprises the steps of, on a processor, receiving a plurality of encoded report payloads from a plurality of client devices, storing the encoded report payloads in a database, transferring at least one encoded report payload from the database into randomly addressable memory (RAM), decoding the at least one encoded report payload in RAM, parsing the decoded data in RAM with at least one matching algorithm to determine the occurrence of events, compiling a database of parsed data, and generating an AMS report from the database of parsed data.
Preferably, the steps of decoding the at least one encoded report payload in the RAM and parsing the decoded data in RAM with at least one analytics matching algorithm to determine the occurrence of events are repeated for each encoded report payload. In the preferred embodiment, the decoded report payload is not saved. Preferably, the step of compiling a database of parsed data comprises storing the parsed data in one of an intermediate panel report database or a final panel report database.
An event preferably is at least one of an advertisement was displayed, a TV broadcast was displayed, a button was pressed on a remote control, a biometric recording of a viewer was obtained, or an activation of an interactive element of an advertisement. Preferably, each encoded report payload comprises a client device identifier and a plurality of encoded AMS events. In the preferred embodiment, the step of parsing the decoded data with at least one matching algorithm to determine the occurrence of events is completed via a bitmask algorithm.
The method of claim 1, wherein one encoded report payload is parsed before a second encoded report payload is parsed.
Preferably, each set of decoded data is parsed for at least one specific event determined by a panel definition. The report preferably comprises a count of the number of times a specific event occurred. In the preferred embodiment, each client device is one of a set top box, a TV, a computer, a tablet, a smartphone, or a streaming media device.
Another embodiment of the invention is directed to a system for generating analytics television Audience Measurement System (AMS) reports. The system comprises a processor, randomly accessible memory (RAM) in communication with the processor, an encoded reports payloads database in communication with the processor, a parsed data database in communication with the processor, a transceiver in communication with the processor, and software executing on the processor. The software receives a plurality of encoded report payloads from a plurality of client devices, stores the plurality of encoded report payloads in the encoded reports payloads database, transfers at least one encoded report payload from the encoded reports payloads database into RAM, decodes each encoded report payload in RAM, parses the decoded data in RAM with at least one matching algorithm to determine the occurrence of events, compiles a record of parsed data for storage in the parsed data database, and generates an AMS report from the data stored in the parsed data database.
Preferably the software repeats the steps of decoding the at least one encoded report payload in RAM and parsing the decoded data in the RAM with at least one analytics matching algorithm to determine the occurrence of events for each encoded report payload. In the preferred embodiment, the decoded report payload is not saved. The database of parsed data preferably comprises an intermediate panel report database and a final panel report database.
Preferably, an event is at least one of an advertisement was displayed, a TV broadcast was displayed, a button was pressed on a remote control, a biometric recording of a viewer was obtained, or an activation of an interactive element of an advertisement. Each encoded report payload preferably comprises a client device identifier and a plurality of encoded AMS events.
Preferably the software uses a bitmask algorithm as the matching algorithm. In the preferred embodiment, one encoded report payload is parsed before a second encoded report payload is parsed. Preferably, each encoded report payload does not store timestamp records. Each set of decoded data is preferably parsed for at least one specific event determined by a panel definition. Preferably, the report comprises a count of the number of times a specific event occurred. Preferably, each client device is one of a set top box, a TV, a computer, a tablet, a smartphone, or a streaming media device.
Other embodiments and advantages of the invention are set forth in part in the description, which follows, and in part, may be obvious from this description, or may be learned from the practice of the invention.



DESCRIPTION OF THE DRAWING
The invention is described in greater detail by way of example only and with reference to the attached drawing, in which:
FIG. 1 depicts an embodiment of system dataflow from an AMS-A to the AMS-L subsystem.
FIG. 2 depicts an embodiment of a method of processing data without bitmask execution.
FIG. 3 depicts an embodiment of a method of processing data with bitmask execution.



DESCRIPTION OF THE INVENTION
As embodied and broadly described herein, the disclosures herein provide detailed embodiments of the invention. However, the disclosed embodiments are merely exemplary of the invention that may be embodied in various and alternative forms. Therefore, there is no intent that specific structural and functional details should be limiting, but rather the intention is that they provide a basis for the claims and as a representative basis for teaching one skilled in the art to variously employ the present invention
A problem in the art capable of being solved by the embodiments of the present invention is measuring TV viewership. It has been surprisingly discovered that by reducing the processing, storage, and read/write (I/O) requirements of an AMS, cost-effective and fast analytics report generation for a system with a large number of panels and a large number of panel participates can be achieved.
The embodiments of the present invention do not process or record timeline database records. Instead, the client devices store original encoded report payloads. The payloads are preferably decoded into RAM using an analytics reports bitmask algorithm and stored in a Panel's report database.
The AMS collects data and creates cost-effective, census level accuracy reports. In the preferred embodiment the AMS is comprised of several tiers of distributed computing components residing at different typological network points within the content distribution system to enable cost-effective processing of large amount of collected data. Tier 1 is comprised of AMS-A, Tier 2 of AMS-L, Tier 3 AMS-C. AMS-A is an AMS client application which resides in video playback device, e.g TV set, set top box, video streaming adapter. AMS-L is a backend server based sub-system which acts as a first collecting and pre-processing point for the data generated by AMS-A components. After data pre-processing is completed, AMS-L sends data to AMS-C. AMS-C is a backend server based sub-system which acts as a last data processing prior to data being archived and exported to ad agencies. Depending on content distribution network topology and scale, locations and total number of AMS-L components would vary. For example, small content distribution system would only have AMS-A and AMS-L components and utilize AMS-C component located outside of that particular content distribution network.
Each AMS-A (client device level) is preferably responsible for receiving configuration messages from the AMS-L and executing the logging, processing, and report of events in accordance with the received configuration messages. Each AMS-A is preferably a client's set top box, TV, computer, tablet, smartphone, streaming media device, or other media playing device.
Each AMS-L (local node level) is preferably responsible for receiving panel definitions, subscriber profile information, and program and ad schedules from the AMS-C, a TV Traffic System, an Electronic Program Guide Server, and/or a Video-on-Demand server. The AMS-L is also preferably responsible for sending configuration messages to each AMS-A and performing upstream bandwidth optimization. The AMS-L is also preferably responsible for receiving reports from each AMS-A, merging panel reports, and sending requested reports to the AMS-C for further merging. Each AMS-L is preferably maintained by a media service provider such as a cable company, a satellite TV company, a streaming media company, or an internet service provider.
The AMS-C (central level) is preferably responsible for receiving panel definitions from ad agencies, subscriber demographics and socioeconomic metadata from source agencies, programming metadata from national broadcasters, and ad schedules from ad agencies or broadcasters. The AMC-C is preferably responsible for merging requested information and mapping the information into available AMS-L subscriber bases. The AMS-C can receive and merge reports from multiple AMS-Ls. An AMS-C is preferably maintained by a media company such as a broadcaster, a cable TV channel, or an internet web-page.
FIG. 1 depicts an embodiment of system dataflow from an AMS-A 804 to the AMS-L subsystem 108. AMS client application 804 sends AMS Client Report Message 919 to AMS-L subsystem 108, specifically to the AMS-L subsystem's Client's Report Catcher and Database Importer 515. AMS client application 804 receives reporting from AMS-L subsystem 108. Transmission can occur on a regular schedule (e.g. hourly, daily, or weekly), on-demand from the AMS-L subsystem 108, as requested by an advertiser, randomly, after a specific amount of data is recorded (e.g. after a specific number of hours of TV have been watched), or at other intervals.
Each message 919 preferably includes a report header 918 having a client device identifier 917 (e.g. a MAC address) and control information 916 (e.g. report sequence number), and the encoded report payload 915. The encoded report payload 915 includes each AMS event 914.
Events may include who watched a show or commercial, what their reactions were to the show and the commercials, biometric data of the viewers, button presses on the remote control (e.g. if a viewer changed the channel, changed the volume, or fast forwarded through a portion of the content), activation of an interactive element on an advertisement, or other events that can be recorded by the STB.
AMS-L subsystem 108 receives each message 919 via module 515 and stores the STB reports in STB reports database 521. Preferably, STB reports database 521 stores each STB report in the format shown in module 911. The format includes a client device identifier 912 and Encoded Report Payload 915. The reports do not store timestamp records.
Panel reports are generated by module 528. Module 528 retrieves the STB reports from STB reports database 521 and obtains advertising data from local advertising database 525, programming data from local programming database 526, demographics data from local demographics database 524 and panel information from local panels configuration database 523.
Module 528 decodes the encoded report payload in module 900. Module 904 depicts a preferred embodiment of the format of the decoded report payload. The format includes a timestamp associated with an event 905. 906-910 are various possible examples of the decoded events 914.
The decoded data is matched using one or more algorithms to determine what was watched by the viewer in module 901 and the panel report database 531 is updated by module 902. Module 901 can parse the data for specific events (e.g. a specific show that was watched), specific time slots, or other data determined by the panel definition. Module 903 causes AMS-L subsystem 108 to repeat the process for each STB. When the system finishes counting a number of event occurrences, it may add an updated count to the panel report database 531.
FIG. 2 depicts an embodiment of a method of data processing without bitmask execution. At step 1001, the panel's report generator retrieves STB reports payload using a “select” SQL (structured query language) query. The next STB report record is obtained at step 1002. At step 1003 the system determines if there are additional STB report records, if there are, the method continues, if not, the method ends. At step 1004, the AMS-L subsystem decodes all events from the STB report payload into RAM and orders the events by timestamp. At step 1005, the AMS-L subsystem retrieves analytics report definitions from the local panel configuration database using a panel ID number and SQL query (e.g. SELECT * FROM PanelAnalyticsTable WHERE PanelID=“xyz”). The system then parses each event at step 1008, executes analytics request to the STB report and stores the results in the panel's report database at step 1009. At step 1006 once all the events in a first STB report record are exhausted, a new STB report record is parsed until no more STB report records remain.
FIG. 3 depicts an embodiment of a method of data processing with bitmask execution. A bitmask can check for all ads from one STB in a single operation. At step 1101, the panel's report generator retrieves STB reports payload using a “select” SQL (structured query language) query. The next STB report record is obtained at step 1102. At step 1103 the system determines if there are additional STB report records, if there are, the method continues, if not, the method ends. At step 1104, the AMS-L subsystem decodes all events from the STB report payload into RAM and generates at timestamp based bitmask. At step 1005, the AMS-L subsystem retrieves analytics report definitions bitmasks from the local panel configuration database. At step 1107 the system executes an analytics reports bitmask algorithm to the STB report record and stores the results in the panel's report database. At step 1106, the process is repeated for each remaining STB report record.
Using the methods described herein, Event Data 914 stays encoded in STB Reports Database 521 and decoded into RAM by 900 of AMS-L System 108 only during data analysis. By analyzing data in RAM, the system can achieve significant increases in speed of analysis while reducing necessary overall computing power requirements.
While the examples provided herein are for TV viewing systems, the invention is also applicable to other video and audio applications involving an audience, including, but not limited to, video viewing on PCs, tablets, smart phones, game consoles, radio receivers, MP3 players, and other streaming and linear programming devices. Furthermore, the invention is equally applicable to the monitoring of other electronic devices in the environment of an audience member, such as other home appliances.
Although the exemplary environment described herein employs a hard disk database, it should be appreciated by those skilled in the art that other types of computer readable media which can store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, digital versatile disks, cartridges, random access memories (RAMs), read only memory (ROM), a cable or wireless signal containing a bit stream and the like, may also be used in the exemplary operating environment.
For clarity of explanation, the illustrative system embodiment is presented as comprising individual functional blocks (including functional blocks labeled as a “processor”). The functions these blocks represent may be provided through the use of either shared or dedicated hardware, including, but not limited to, hardware capable of executing software. For example the functions of one or more processors presented in FIG. 1 may be provided by a single shared processor or multiple processors. (Use of the term “processor” should not be construed to refer exclusively to hardware capable of executing software.) Illustrative embodiments may comprise microprocessor and/or digital signal processor (DSP) hardware, read-only memory (ROM) for storing software performing the operations discussed below, and random access memory (RAM) for storing results. Very large scale integration (VLSI) hardware embodiments, as well as custom VLSI circuitry in combination with a general purpose DSP circuit, may also be provided.
Embodiments within the scope of the present invention may also include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or combination thereof) to a computer, the computer properly views the connection as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of the computer-readable media.
Computer-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Computer-executable instructions also include program modules that are executed by computers in stand-alone or network environments. Generally, program modules include routines, programs, objects, components, and data structures, etc. that perform particular tasks or implement particular abstract data types. Computer-executable instructions, associated data structures, and program modules represent examples of the program code means for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps.
Those of skill in the art will appreciate that other embodiments of the invention may be practiced in network computing environments with many types of computer system configurations, including personal computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. Networks may include the Internet, one or more Local Area Networks (“LANs”), one or more Metropolitan Area Networks (“MANs”), one or more Wide Area Networks (“WANs”), one or more Intranets, etc. Embodiments may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination thereof) through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Other embodiments and uses of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. All references cited herein, including all publications, U.S. and foreign patents and patent applications, are specifically and entirely incorporated by reference. It is intended that the specification and examples be considered exemplary only with the true scope and spirit of the invention indicated by the following claims. Furthermore, the term “comprising of” includes the terms “consisting of” and “consisting essentially of.”

## Claims

1. A method of generating television analytics Audience Measurement System (AMS) reports, the method comprising the steps of, on a processor:
receiving a plurality of encoded report payloads from a plurality of client devices, wherein each encoded report payload does not include timestamp records;
storing the encoded report payloads in a report payload database;
obtaining data from each of a local advertising database, a local programming database, a local demographics database, and a local panels configuration database;
transferring each encoded report payload from the database into randomly addressable memory (RAM);
decoding each encoded report payload in RAM;
comparing the decoded data in RAM to the data from the local advertising database, local programming database, local demographics database, and local panels configuration database with at least one matching algorithm to determine the occurrence of events from each decoded report payload;
determining a timestamp for each event in RAM;
compiling a database of event occurrences from each of the plurality of decoded report payloads based on the timestamped events; and
generating an AMS report from the database of event occurrences.

2. The method of claim 1, wherein the decoded report payload is not saved.

3. The method of claim 1, wherein the step of compiling a database of parsed data from the plurality of encoded report payloads comprises storing the parsed data in one of an intermediate panel report database or a final panel report database.

4. The method of claim 1, wherein an event is at least one of an advertisement was displayed, a TV broadcast was displayed, a button was pressed on a remote control, a biometric recording of a viewer was obtained, or an activation of an interactive element of an advertisement.

5. The method of claim 1, wherein each encoded report payload comprises a client device identifier and a plurality of encoded AMS events.

6. The method of claim 1, wherein the step of parsing the decoded data with at least one matching algorithm to determine the occurrence of events from each encoded report payload is completed via a bitmask algorithm.

7. The method of claim 1, wherein one encoded report payload is parsed before a second encoded report payload is parsed.

8. The method of claim 1, wherein each set of decoded data is parsed for at least one specific event determined by a panel definition.

9. The method of claim 1, wherein the report comprises a count of the number of times a specific event occurred.

10. The method of claim 1, wherein each client device is one of a set top box, a TV, a computer, a tablet, a smartphone, or a streaming media device.

11. The method of claim 1, wherein each encoded report payload is generated without timestamping events.

12. The method of claim 1, wherein each encoded report payload is maintained encoded in the report payload database and is decoded into RAM only during data analysis.

13. The method of claim 12, wherein timestamps are only determined and analyzed in RAM.

14. A system for generating analytics television Audience Measurement System (AMS) reports, comprising:
a processor;
randomly accessible memory (RAM) in communication with the processor;
an encoded reports payloads database in communication with the processor;
a local advertising database, a local programming database, a local demographics database, and a local panels configuration database each in communication with the processor;
a parsed data database in communication with the processor;
a transceiver in communication with the processor; and
software executing on the processor, wherein the software:
receives a plurality of encoded report payloads from a plurality of client devices, wherein each encoded report payload does not include timestamp records;
stores the plurality of encoded report payloads in the encoded reports payloads database;
transfers each encoded report payload from the encoded reports payloads database into RAM;
decodes each encoded report payload in RAM;
compares the decoded data in RAM to the data from the local advertising database, local programming database, local demographics database, and local panels configuration database with at least one matching algorithm to determine the occurrence of events from each decoded report payload;
determines a timestamp for each event in RAM;
compiles a record of event occurrences from each of the plurality of decoded report payloads based on the timestamped events in an event occurrence database; and
generates an AMS report from the data stored in the event occurrence database.

15. The system of claim 14, wherein the decoded report payload is not saved.

16. The system of claim 14, wherein the database of parsed data comprises an intermediate panel report database and a final panel report database.

17. The system of claim 14, wherein an event is at least one of an advertisement was displayed, a TV broadcast was displayed, a button was pressed on a remote control, a biometric recording of a viewer was obtained, or an activation of an interactive element of an advertisement.

18. The system of claim 14, wherein each encoded report payload comprises a client device identifier and a plurality of encoded AMS events.

19. The system of claim 14, wherein the software uses a bitmask algorithm as the matching algorithm.

20. The system of claim 14, wherein one encoded report payload is parsed before a second encoded report payload is parsed.

21. The system of claim 14, wherein each set of decoded data is parsed for at least one specific event determined by a panel definition.

22. The system of claim 14, wherein the report comprises a count of the number of times a specific event occurred.

23. The system of claim 14, wherein each client device is one of a set top box, a TV, a computer, a tablet, a smartphone, or a streaming media device.