(19)
(11)EP 3 516 879 B1

(12)EUROPEAN PATENT SPECIFICATION

(45)Mention of the grant of the patent:
09.09.2020 Bulletin 2020/37

(21)Application number: 18706173.4

(22)Date of filing:  13.02.2018
(51)International Patent Classification (IPC): 
H04N 21/234(2011.01)
H04N 21/81(2011.01)
(86)International application number:
PCT/US2018/018051
(87)International publication number:
WO 2018/148749 (16.08.2018 Gazette  2018/33)

(54)

PREDICTING BREAK DURATIONS IN CONTENT STREAMS

VORHERSAGE DER UNTERBRECHUNGSDAUER BEI INHALTSSTRÖMEN

PRÉDICTION DE DURÉES D'INTERRUPTION DE FLUX DE CONTENU


(84)Designated Contracting States:
AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

(30)Priority: 13.02.2017 WO PCT/US2017/017687

(43)Date of publication of application:
31.07.2019 Bulletin 2019/31

(73)Proprietor: Google LLC
Mountain View, CA 94043 (US)

(72)Inventors:
  • FRADLIS, Igor
    Mountain View, CA 94043 (US)
  • WEILL, Charles
    Mountain View, CA 94043 (US)
  • DINN, Christopher
    Mountain View, CA 94043 (US)

(74)Representative: Morrall, Jonathan Ian McLachlan et al
Kilburn & Strode LLP Lacon London 84 Theobalds Road
London WC1X 8NL
London WC1X 8NL (GB)


(56)References cited: : 
EP-A1- 3 110 158
US-A1- 2010 205 049
US-A1- 2003 145 323
US-A1- 2014 068 662
  
  • Wikipedia: "Long short-term memory", Wikipedia , 17 December 2016 (2016-12-17), XP002779035, Retrieved from the Internet: URL:https://en.wikipedia.org/w/index.php?t itle=Long_short-term_memory&oldid=75525295 3 [retrieved on 2018-03-13]
  
Note: Within nine months from the publication of the mention of the grant of the European patent, any person may give notice to the European Patent Office of opposition to the European patent granted. Notice of opposition shall be filed in a written reasoned statement. It shall not be deemed to have been filed until the opposition fee has been paid. (Art. 99(1) European Patent Convention).


Description

RELATED APPLICATIONS



[0001] The present application claims the benefit of and priority to P.C.T. Application No. PCT/US2017/017687, entitled "Predicting Break Durations in Content Streams," filed February 13, 2017.

BACKGROUND



[0002] Content providers can stream media to remote client devices. The streams can include breaks for secondary content, and the secondary content can be provided to the client devices from a secondary server, upon request by said client devices. When the stream content is predetermined such that breaks for secondary content are identified well in advance, client devices may request and receive the content similarly well in advance. However, if the stream content is dynamic or live, the secondary server may not know the length of the of the break in advance and may not be able to select and deliver secondary content of a corresponding length in advance: only once the secondary server is informed of the length of the break can the secondary server can retrieve a secondary content item for delivery to the client device. Because of this delay, if large numbers of client devices simultaneously request secondary content, the secondary server may be unable to fulfill the requests efficiently or in time. US2014/068662 discloses a method including: receiving a user input requesting an event to be displayed; playing out the requested event; identifying a type of the requested event; estimating a duration of a next commercial break occurring in the requested event according to the type; selecting at least one advertisement having a duration corresponding to the estimated duration of the next commercial break; and playing out the at least one advertisement. Related systems, apparatus and methods are also described.

SUMMARY OF THE DISCLOSURE



[0003] To provide a scalable system capable of fulfilling large numbers of requests from client devices, a secondary server may generate dynamic estimates of durations of breaks in first content streams, such that secondary content streams may be pre-selected and generated which better match those breaks. Further, such estimates may be generated in advance of any in-band markers that are provided within the first content streams, providing a longer window in which to generate and pre-cache secondary content streams which are specific to each of the plurality of user devices. Additionally, breaks may be determined that allow for first content to be watched simultaneously by a plurality of first users.

[0004] In a first aspect of the invention there is provided a system for providing content to a plurality of client devices, comprising a computing device comprising a processor and a memory device, the processor executing a classifier. The classifier is configured to receive an indication of a first content stream transmitted to a plurality of client devices, the first content stream comprising a content item and a secondary content item slot, receive an array comprising durations of a plurality of secondary content item slots associated with the content stream, determine for the first content stream, a plurality of classes, each of the plurality of classes associated with a different time duration of a corresponding plurality of time durations, classify the secondary content item slot of the first content stream into a first class of the plurality of classes based on the array comprising durations of a plurality of secondary content item slots associated with the content stream, and retrieve, based on a time duration of the first class of the plurality of classes into which the secondary content item slot was classified, a secondary content item. A different secondary content item is retrieved for each of the plurality of client devices to display during the secondary content item slot of the first content stream.

[0005] For example, different content items may be sent to different users, but where each content item belongs in the first class.

[0006] The classifier may be further configured to calculate a confidence score for the classification of the secondary content item slot into the first class of the plurality of classes, determine that the confidence score is below a predetermined threshold, and select a second content item having a default time duration to place in the secondary content item slot of the first content stream responsive to the determination that the confidence score is below the predetermined threshold.

[0007] The classifier may be further configured to determine a number of the plurality of client devices is below a predetermined threshold, receive an indication of the duration of the length of the secondary content item slot for the secondary content item, and select a second content item to place into the secondary content item slot of the first content stream responsive to the indication of the duration of the length of the secondary content item slot for the secondary content item, responsive to the determination that the number of the plurality of client devices is below the predetermined threshold.

[0008] The classifier may be further configured to receive a publisher identifier of the first content stream and a display time of the first content stream, and classify the secondary content item slot into the one of the plurality of classes based on the publisher identifier and the display time.

[0009] The classifier may be further configured to select one or more weights of a classification model based on the publisher identifier.

[0010] Each of the durations in the array may be time durations of previously measured slots in the first data stream.

[0011] The classifier may be further configured to determine a content stream characteristic of the first data stream, and determine, for the first content stream, the plurality of classes based on the content stream characteristic.

[0012] The classifier may comprise a long term-short term neural network.

[0013] The classifier may be further configured to receive a duration of the secondary content item slot, and update the array to include the duration of the secondary content item slot.

[0014] In a second aspect of the invention there is provided a method for providing content to a plurality of client devices. The method comprises, receiving, by a classifier executed by a processor of a computing device, an indication of first content stream transmitted to a plurality of client devices, the first content stream comprising a content item and a secondary content item slot, receiving, by the classifier, an array comprising durations of a plurality of secondary content item slots associated with the content stream, determining, by the classifier, for the first content stream, a plurality of classes, each of the plurality of classes associated with a different time duration of a corresponding plurality of time durations classifying, by the classifier, the slot for the secondary content item into a first class of the plurality of classes based on the array comprising durations of a plurality of secondary content item slots associated with the content stream, and retrieving, based on a time duration of the first class, a secondary content item. A different secondary content item is retrieved for each of the plurality of client devices to display during the secondary content item slot of the first content stream.

[0015] For example, different content items may be sent to different users, but where each content item belongs in the first class.

[0016] The method may further comprise calculating, by the classifier, a confidence score for the classification of the secondary content item slot into the first class of the plurality of classes, determining that the confidence score is below a predetermined threshold, and selecting a second content item having a default time duration to place in the secondary content item slot of the first content stream, responsive to the determination that the confidence score is below the predetermined threshold.

[0017] The method may further comprise determining a number of the plurality of client devices is below a predetermined threshold, receiving an indication of the duration of the length of the secondary content item slot, and selecting a second content item to place into the secondary content item slot of the first content stream responsive to the indication of the duration of the length of the secondary content item slot for the secondary content item, responsive to the determination that the number of the plurality of client devices is below the predetermined threshold.

[0018] The method may further comprise, receiving, by the classifier, a publisher identifier of the first content stream and a display time of the first content stream, and classifying, by the classifier executed by the processors of the data processing system, the secondary content item slot into the one of the plurality of classes based on the publisher identifier and the display time.

[0019] The method may further comprise selecting one or more weights of a classification model based on the publisher identifier.

[0020] Each of the durations in the array may be time durations of previous secondary content item slots in the first data stream.

[0021] The method may further comprise determining a content stream characteristic of the first data stream, and determining, by the classifier, for the first content stream, the plurality of classes based on the content stream characteristic.

[0022] The classifier may comprise a long term-short term neural network.

[0023] The method may further comprise receiving a duration of the secondary content item slot; and updating the array to include the duration of the secondary content item slot.

[0024] In a third aspect of the invention there is provided a system for providing content to a plurality of client devices, comprising a computing device comprising a processor and a memory device, the processor executing a classifier. The classifier includes a long term-short term neural network The classifier is configured to receive an indication of a first content stream transmitted to a plurality of client devices, the first content stream comprising a content item and a secondary content item slot, receive an array comprising durations of a plurality of secondary content item slots associated with the content stream, determine for the first content stream, a plurality of classes, each of the plurality of classes associated with a different time duration of a corresponding plurality of time durations, classify the secondary content item slot of the first content stream into a first class of the plurality of classes based on the array comprising durations of a plurality of secondary content item slots associated with the content stream, and retrieve, based on a time duration of the first class of the plurality of classes into which the secondary content item slot was classified, a secondary content item.

[0025] The foregoing general description and following description of the drawings and detailed description are exemplary and explanatory and are intended to provide further explanation of the invention as claimed. Other objects, advantages, and novel features will be readily apparent to those skilled in the art from the following brief description of the drawings and detailed description of the invention. The scope of the invention is defined by the appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS



[0026] The skilled artisan will understand that the figures, described herein, are for illustration purposes only. It is to be understood that in some instances various aspects of the described implementations may be shown exaggerated or enlarged to facilitate an understanding of the described implementations. In the drawings, like reference characters generally refer to like features, functionally similar and/or structurally similar elements throughout the various drawings. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the teachings. The drawings are not intended to limit the scope of the present teachings in any way. The system and method may be better understood from the following illustrative description with reference to the following drawings in which:

FIG. 1 illustrates a block diagram of a system for predicting break durations in content streams.

FIG. 2 illustrates a block diagram of an implementation of a content stream that can be streamed with the system illustrated in FIG. 1.

FIG. 3 illustrates a block diagram of a method for predicting content slot duration using the system illustrated in FIG. 1.

FIG. 4 illustrates a block diagram of an implementation of a computer system.


DETAILED DESCRIPTION



[0027] The various concepts introduced above and discussed in greater detail below may be implemented in any of numerous ways, as the described concepts are not limited to any particular manner of implementation. Examples of specific implementations and applications are provided primarily for illustrative purposes.

[0028] Providing linear/live Dynamic Content Insertion (DCI) to large numbers of devices may be difficult during traffic spikes. To enable each viewer to receive selected secondary content, when a break is announced in-band of the video stream, the DCI system typically has under ten seconds to perform N unique secondary content requests where N is the number of concurrent viewers. When N is sufficiently large (e.g., above 100,000), the secondary content system can be overwhelmed. In some implementations, the system can throttle responses after a certain of requests. This can result in a low fill rate of the content slots streaming to the concurrent viewers.

[0029] One possible method to mitigate the traffic spike is to pre-fetch content for the upcoming secondary content break (or open content slots). To retrieve an appropriate content item, the system needs to know the length of the content slot. With pre-scheduled content (e.g. broadcast television with secondary content breaks of known lengths predetermined by producers), this may be straightforward. However, with live or user-produced content, the length of the content slot may only be available to the server or client within a small window prior to the content slot, such as 5 seconds or less, limiting the ability of the system to pre-fetch content. The present system can predict open content slot durations across channels using advanced machine learning models.

[0030] Content streams for playback on a user device may include one or more playback breaks so that secondary content streams may be dynamically inserted into the content stream for playback during the breaks. Generally, markers are included in in-band messaging or metadata of the content stream to indicate a duration of an upcoming break so that the provider of the secondary content stream can provide a secondary content stream of a correct duration (i.e., a duration that best matches the duration of the break). In-band markers are normally provided only a short time before the break, such that a provider of secondary content has a correspondingly short window to prepare the secondary content for dynamic insertion into the content stream. The short windows have not generally presented problems where a single secondary content stream is to be provided to each of the user devices. However, it may be desirable to provide each user device with a secondary content stream that is specific to that user device (e.g. specific to a user of that user device). The Internet and related technologies have enabled geographically separate users to engage in "social viewing", whereby a group of users (who may be known to one another) view a first content stream simultaneously. During viewing of the content stream, reactions of one or more users in the group may be obtained in order to generate a secondary content stream for playback to other users in the group during a break in the first content stream. In a social viewing arrangement, therefore, users may be provided with secondary content streams that are specific to them (e.g. secondary content streams based upon other users within their group). This may be difficult to accommodate in a short time window provided by in-band markers within the first content stream.

[0031] In other implementations, a first content stream may not include a predetermined break. It may, however, be desirable to provide a break in the first content stream and to provide secondary content streams for playback during the break. During social viewing, users of a particular social viewing group may be streaming the first content stream over connections of differing bandwidth and therefore have different buffering requirements. It may therefore be desirable to determine a duration of a break into the first content stream that would allow viewing of the first content stream to be synchronized for each user of a social viewing group. It will be appreciated that the determination of a duration of a break in a first content stream may be useful in areas other than social viewing as will be apparent to the skilled person from the teaching herein.

[0032] By providing dynamic estimates of durations of breaks in first content streams, secondary content streams may be generated which better match those breaks. Further, such estimates may be generated in advance of any in-band markers that are provided within the first content streams, providing a longer window in which to generate and pre-cache secondary content streams which are specific to each of the plurality of user devices. Additionally, breaks may be determined that allow for first content to be watched simultaneously by a plurality of first users.

[0033] FIG. 1 illustrates a block diagram of a system 100 for predicting break durations in content streams. The system 100 includes a primary content publisher server 101 and a dynamic content insertion server 103 (also referred to as a content server 103), which includes a data processing system 107. The system also includes a secondary content server 102 and a plurality of client devices 104. The components of the system 100 communicate over a network 105. In some implementations, the network 105 may include a LAN network, a Wi-Fi network, a cellular network, a wide area network (WAN), a telephone network, such as the Public Switched Telephone Network (PSTN), a wireless link, a satellite link, a device-to-device mesh network, an intranet, the Internet, or combinations thereof.

[0034] As an overview, and briefly referring to FIG. 2 also, the dynamic content insertion server 103 streams content streams to one or more client devices 104. FIG. 2 illustrates an implementation of a content stream 200. The content stream can be a video stream that includes primary content, such as, but not limited to, the video, audio, metadata, or subtitles of a movie, TV show, sporting event, or a news broadcast. The primary content can be divided into content segments 201, which can be separated from one another from secondary content slots 202. The secondary content server 102 can provide the content for the secondary content slots 202 and the primary content publisher server 101 can provide the primary content. While each of the plurality of client devices 104 can receive the same primary content stream, the secondary content provided to each of the client devices 104 can be selected by the secondary content server 102 for delivery to a specific client device 104. Each of the client devices 104 can receive a content stream for the same football game as the game is played live, however, the secondary content server 102 can select a customized secondary content item to be steamed to each of the client devices 104 during the secondary content slots of the football game.

[0035] Referring to FIG. 1, the primary content publisher server 101 and the secondary content server 102 can store content in their respective content databases 106. The dynamic content insertion server 103 can generate content streams that are transmitted to the plurality of client devices 104. The dynamic content insertion server 103 can transmit a copy of the same content stream to many of the client devices 104 at the same time. The content streams can include primary content that is provided by the primary content publisher server 101. The content streams can include secondary content slots. The secondary content server 102 can provide the content for the secondary content slots of the content stream. In some implementations, the content stream can include processor executable instructions that cause the client device 104 to fetch (or request) a secondary content item from the secondary content server 102 when the client device 104 reaches the secondary content slot. For example, a web browser on the client device can execute a video player that fetches secondary video content items from the secondary content server 102. The video player can then display the secondary video content when it is received form the secondary content server 102. The dynamic content insertion server 103 can also insert the secondary content items into the content stream such that the client device does not contact the secondary content server 102 to fetch the secondary content item.

[0036] The primary content publisher server 101 can include primary content that is stored in the server's respective database 106. The primary content can be provided to a plurality of the client devices 104 as content streams over the network 105. As described further in relation to FIG. 2, the content streams can include secondary content slots. The primary content can include video content, such as, but not limited to movies, television shows, sporting events, user generated video content, and audio content, such as podcasts.

[0037] The secondary content server 102 can include secondary content stored on the server's database 106. The secondary content can include supplemental content or related content that is supplied to fill the secondary content slots of the content stream.

[0038] The dynamic content insertion server 103 can include the data processing system 107, which includes a processor 108 that is in electrical communication with a memory 109. The memory stores instructions for a classifier 110 and a confidence scorer 111. The data processing system 107 also includes a classifier database 112 and a pre-fetched content database 113. The classifier database 112, the pre-fetched content database 113, and the database 106 can be stored in the memory 109.

[0039] The data processing system 107 can make predictions of the duration of upcoming secondary content slots in the content stream. As illustrated in FIG. 1, the data processing system 107 is a component of the dynamic content insertion server 103. In some implementations, the data processing system 107 can be a stand-alone server. In other implementations, the data processing system 107 can be a component of the secondary content server 102 or the primary content publisher server 101.

[0040] The classifier 110 can make predictions of the duration for an upcoming secondary content slots. After making a prediction of the duration of an upcoming secondary content slot, the data processing system 107 can pre-fetch secondary content for each of the client devices 104 receiving the content stream. The pre-fetched secondary content can be stored in the pre-fetched content database 113. When the client device 104 makes a request for secondary content to the secondary content server 102, the data processing system 107 can retrieve the pre-fetched secondary content from the pre-fetched content database 113 and transmit the pre-fetched secondary content to the requesting client device 104.

[0041] The classifier 110 can use machine learning to predict the duration of upcoming secondary content slots. In some implementations, the classifier 110 can use logistic regression to predict the length of the next secondary content slot. The logistic regression can provide the probability of the upcoming secondary content slot belonging to one of a group of classes (where each of the classes are associated with a different time duration). The logistic function can provide the probability F(x) of the upcoming secondary content slot x belonging to a class:

where β0 and β1 are the parameters defining the relationship between a single input feature and the class. The input feature can be an array of duration of past secondary content item slots. In addition to the array, other input features can include content stream ID, title, genre, total duration, display time, producer or publisher ID, or a combination thereof. Multinomial logistic regression can be used to classify the upcoming secondary content item into a class based on a plurality of input features by repeating the logistic regression for each of the input features.

[0042] The classifier 110 can predict the duration of upcoming secondary content slots using neural networks. In some implementations, the classifier 110 can use a recurrent neural network, such as a Long Short Term Memory (LSTM) neural network. An array of previous secondary content slot durations can be provided to the LSTM neural network. The values of the array can be associated with one or more input features that the LSTM uses to classify the upcoming secondary content slot duration into a class. In these implementations, the classifier 110 can classify an upcoming secondary content slot into classes that each correspond to different durations. The classes can be created by binning longest possible duration into nonoverlapping classes. If the bin length was 5 seconds, slots between 0 and 5 seconds would be classified into the first bin, slots between 5 and 10 seconds into the second bin, slots between 10 and 15 seconds into the third bin, etc. The bin length can be between about 5 and 60 seconds, between about 5 and 30 seconds, or between about 5 and 15 seconds.

[0043] The LSTM neural network can include interconnected memory blocks in place of neurons. Each of the memory blocks can include gates that control the current state and output of the memory block. The gates can include a forget gate, input gate, and output gate. The forget gate can determine which information in the memory block is deleted, the input gate can determine which input information is used to update the memory block, and the output gate can determine what is output from the memory block. Each of the gates can include a sigmoid based function and a pointwise multiplication operation. An input into the memory block is first processed through the forget gate, which outputs a number between 0 (forget) and 1 (retain), which is multiplied against the memory block's current state to determine which values are forgotten and which are retained. The input gate can then determine which values are to be updated and generates new candidate values that are added to the memory block's current state. The memory block's current state then passes through the output gate. The output gate's sigmoid based function determines which values from the memory block's current state are output. Each of the gates include weights and biases that control operation of the gate. The weights and biases can be initially random values and then tunes through training of the neural network. The weights and biases can also be turned during the operation of the neural network on upcoming content slots. The training can include a gradient-based training, such as the Backpropagation Through Time method of training the LSTM neural network. The training of the classifier can be conducted offline - for example, prior to step 301 described below in relation to the method 300 illustrated in FIG. 3. The model generated during the offline training phase can be stored in a database of the data processing system. The classifier can generate a different model specifically for each of the different primary content publishers. For example, if each of the different primary content servers are associated with a different television channel, the classifier can generate a different model for each of the channels. The classifier can also generate a single model that can differentiate between publishers by characteristics such as a channel ID or a publisher ID.

[0044] The confidence scorer 111 can determine a confidence score that relates to the accuracy of the prediction. The confidence score can be calculated as a root mean squared error function. If confidence scorer 111 calculates a low confidence score for the prediction, the data processing system 107 may not pre-fetch secondary content or may pre-fetch secondary content of a default length.

[0045] Referring again to FIG. 2, and in greater detail, FIG. 2 illustrates a block diagram of an implementation of a content stream 200. The content stream 200 includes primary content segments 201(1)-201(n) (generally referred to as content segments 201). Each of the content segments 201 can be a portion of a primary content item or can be individual primary content items. The content segments 201 are separated by respective secondary content slots 202. The secondary content slots 202 can have different durations. The secondary content slots 202 can be between about 5 seconds and about 900 seconds in some implementations, although shorter and longer slots are also possible. The spacing between neighboring secondary content slots 202 (e.g., the length of the content segments 201) can also vary. The content stream 200 can also include indications 203 of content slot durations. An indication can precede each of the content slots 202. In the implementation illustrated, indication 203(2) precedes content slot 202(2). The indications 203 can precede the respective content slots 202 by a relatively short period of time. The time between the indication 203 and the content slot 202 can be between about 0 seconds and about 20 seconds, between about 0 seconds and about 15 seconds, between about 0 seconds and about 10 seconds, or between about 0 seconds and about 5 seconds, or any other such value or pair of values.

[0046] The dynamic content insertion server 103 can transmit the content stream 200 to the plurality of client devices 104. The primary content item can be a sporting event that the dynamic content insertion server 103 is streaming to each of the client devices 104. The secondary content slots 202 can be breaks that are inserted into the content stream 200. Each of the client devices can transmit a notification to the secondary content server that they are receiving the content stream 200. In some implementations, the dynamic content insertion server 103 can transmit a notification to the secondary content server 102 that the dynamic content insertion server 103 is transmitting the content stream 200 to the client devices 104. The content stream 200 can include instructions that instruct each of the client devices 104 to request content from the secondary content server 102. The instructions to request the content from the secondary content server 102 can be included in the content stream 200 substantially close in time to the secondary content slots 202. The instructions to request the content can be within 5 seconds of the start of the secondary content slots 202. Because each of the client devices 104 can be receiving a copy of the same content stream 200 (e.g., the client devices 104 are streaming the same sporting event), the requests for content from each of the client devices 104 are received by the secondary content server 102 within a short duration of when the secondary content server 102 needs to transmit the secondary content to the client device 104. If N client devices 104 are receiving the content stream 200, the secondary content server 102 must perform N lookups for secondary content prior to the start of the secondary content slot 202. In some implementations, the secondary content server 102 can handle X lookups for a given time period. When N is larger than X, the secondary content server cannot perform the lookups in the allotted time and cannot return secondary content to each of the client devices 104. When N is larger than X, the secondary content server can make predictions about the length and occurrence of the upcoming secondary content slot 202. The prediction can be made at substantially enough time before the occurrence of the secondary content slot 202 such that the data processing system can pre-fetch and store secondary content items for each of the client devices.

[0047] FIG. 3 illustrates a block diagram of a method 300 for predicting content slot duration. As an overview of the steps of method 300, the method 300 includes the data processing system receiving an indication of a data stream that is transmitted to one or more client devices (step 301). The data processing system can receive an array of past secondary content slot durations (step 302). The method 300 can also include generating a plurality of different classes (step 303). The method 300 can include determining if a number of devices concurrently receiving the first data stream is above a threshold (step 304). If the number is above the threshold, the method 300 can include classifying the upcoming secondary content slot into one of the plurality of classes (step 305). The data processing system can determine a confidence score of the classification of the upcoming secondary content slot (step 306). If at step 307, the confidence score is above a threshold, the data processing system can fetch a secondary content item (step 308).

[0048] Returning to step 304, if the number of concurrent devices is below the threshold, the data processing system can wait until an indication secondary content slot's actual duration is received (step 309). The data processing system can retrieve a secondary content item based on the slot's actual duration (step 310). In some implementations, step 304 can occur after step 301 such that steps 302 and 303 only occur if the number of concurrent devices is above the threshold. Determining if the number of concurrent devices is above the threshold earlier in the method 300 can reduce computational waste because steps 302 and 303 would not be performed in cases where the classifier ultimately does not make a classification.

[0049] Returning to step 307, if the confidence score is below the threshold, the data processing system can fetch a secondary content item based on a default duration (step 311). In some implementations, the data processing system can fetch the secondary content item based on the last measured duration. The method 300 can include measuring the actual duration of the content slot's duration (step 312). The duration of the content slot can be appended to the array of past content slot durations (step 313).

[0050] As discussed above, and in greater detail, the method 300 can include receiving an indication of a first data stream (step 301). The data stream can be transmitted to a plurality of client devices. The data stream can include primary content and one or more secondary content slots. The content stream can be similar to the content stream discussed above in relation to FIG. 2. The content stream can include a video that is streamed to one or more client devices from a dynamic content insertion server. As the dynamic content insertion server transmits the content stream to the client device, the dynamic content insertion server can transmit an indication to a data processing system that the content stream is being streamed to the client device. In other implementations, when a client device receives a content stream, the client device can send an indication to the data processing system that the client device is receiving the video of the content stream. The indication can include an identification of the content stream and the receiving client device (or list thereof).

[0051] The method can also include receiving an array of past secondary content slot durations (step 302). The array can be retrieved by the data processing system. The data processing system can maintain a database of the durations of prior secondary content slots. The array can include prior content slot durations of the currently streamed content item. The array can include prior content slot durations of any content from the primary content publisher content server. The array can include durations of the last five secondary content slots, or a larger or fewer number of content slots. The array can include between the duration of the last 5 and 20, 5 and 15, or 5 and 10 secondary content slots. The array can include the duration of the secondary content slots included in the content stream over the past 30 minutes, 1 hour, 2 hours, 6 hours, 1 day, or 1 week. The array can include prior secondary content slot durations that match a characteristic of the currently streamed content item. In some implementations, the data processing system can determine characteristics of the content stream. The characteristics of the content stream can include content stream ID, title, genre, total duration, display time, producer, or a combination thereof. The secondary content can take any form, including advertisements. At step 302, the data processing system can also retrieve characteristics of the content stream such as genre, time of day, day of the week, publisher ID, or a combination thereof.

[0052] The method 300 can also include generating classes (step 303). The data processing system can determine the possible classes into which the secondary content slot can be classified. In some implementations, the classes are based on possible secondary content slot durations. In one such implementation, each of the classes can be about 5 seconds long. In a case where the longest possible content slot is 900 seconds, class 1 can be 0-5 seconds, class 2 can be 5-10 seconds, ... , class 180 can be 895-900 second. In some implementations, only a portion of the possible classes are used. The selection of the portion of possible classes can be based on one or more characteristics of the content stream such as genre, time of day, day of the week, or a combination thereof. In some implementations, during movies the secondary content slots can be more likely to have a duration of 30 seconds, 1 minute, 1.5 minutes, or 2 minutes; and the classes corresponding to 30 seconds, 1 minute, 1.5 minute, and 2 minute durations can be selected as the portion of possible classes. For other genres or types of content, different durations may be employed. For a content stream of a sporting event, the secondary content items may have more varied durations. The system can select a greater portion of the possible classes (or all of the possible classes) to use.

[0053] The method 300 can include determining if the number of concurrent devices receiving the content stream is above a threshold (step 304). When the number of concurrent devices receiving the content stream is below the threshold, the data processing system can retrieve a secondary content item for each of the devices within the time between the receipt of the secondary content slot's duration and the beginning of the secondary content slot. As described above, the content stream can include an indication of the length of the secondary content slot. The indication of the length can be included in the content stream a predetermined amount of time before the start of the secondary content slot (e.g., the indication can precede the start of the secondary content slot by about 5 seconds). When the number (n) of concurrent devices is below the threshold, the data processing system can fetch secondary content items n number of times between the receipt of the indication and the beginning of the secondary content slot. The threshold for step 304 can be between about 25,000 and about 500,000, between about 50,000 and about 250,000, or between about 100,000 and about 250,000 concurrent devices.

[0054] When the number of concurrent devices is below the threshold, the data processing system can wait for the receipt to the secondary content slot's duration. The secondary content server can receive an indication of the secondary content slot duration (step 309). Once the data processing system knows the duration of the content slot, the data processing system can fetch a secondary content item with a duration that matches (or is shorter than) the duration of the content slot (step 310). The data processing system can fetch a secondary content item for each of the computing devices concurrently receiving the content stream.

[0055] Returning to step 304, when the number of devices concurrently receiving the content stream is above the predetermined threshold, the data processing system can predict the length of the next secondary content slot by classifying the upcoming secondary content slot into one of the classes generated during step 303 (step 305). The classifier can predict the upcoming secondary content slot duration by classifying the secondary content slot into one of a plurality of classes. As described above, the data processing system can predict the length of the upcoming secondary content slot using a neural network, such as a LSTM neural network. The classifier can use the array received at step 302 as input into the classifier. The classifier can use characteristics of the content stream as input. The previous content slots can be used as input into the LSTM neural network. The times of the previous content slot durations can be used as expected outputs (or dependent variables) for the LSTM neural network. The characteristics of the content slot durations can be input features (or independent variables) that are input into the LSTM neural network to generate the expected outputs. The LSTM neural network can be trained using the data contained in the array. The LSTM neural network can be trained using gradient descent and backpropagation techniques to generate the weights and biases that the LSTM neural network uses to classify secondary content slots of the content stream.

[0056] The method 300 can include calculating a confidence score for the classification (step 306). The data processing system can calculate a confidence interval using a root mean squared error function of the classification. The confidence score can be based on the number of past slot durations stored in the array received at step 302. The classifier can use the past durations stored in the array to calculate a root mean squared error between the actual past durations and the durations predicted by the neural network or other model of the classifier. The root mean squared error function can represent the standard deviation of the differences between predicted durations and observed durations stored in the array. In some implementations, when the number of slot durations in the array is low (e.g., below 5), as can happen at the beginning of a content stream, the confidence score can be low. As the secondary content server makes more classifications, the confidence of subsequent classifications can be increased. The confidence score can be the accuracy that was observed during an offline training of the classifier for content streams from the publisher associated with the current content stream.

[0057] If the confidence score is below a predetermined threshold, the data processing system can fetch a content item based on a default duration (step 311). If the confidence score is below 60%, 70%, 80%, 90%, or 95%, the data processing system can fetch the content item based on a default duration. In some implementations, the default duration can be 30 seconds. The default duration can be the most common duration included in the content stream or the average of the past secondary content slot durations.

[0058] If the confidence score is above the predetermined threshold, the data processing system can fetch a content item based on the duration from the classifier (step 308). The data processing system can retrieve a secondary content item for each of the client devices concurrently receiving the content stream. The data processing system can save the secondary content item as a pre-fetched content item into the pre-fetched content database.

[0059] The method 300 can also include receiving the duration of the secondary content slot (step 312). Receiving the actual duration of the content slot can be an optional step. When the data processing system receives the actual secondary content slot duration, the actual secondary content slot duration can be appended to the array in step 313. In other implementations, when step 312 is skipped, the predicted secondary content slot duration can be appended to the array in step 313. Using the actual secondary content slot duration can enable the data processing system to improve the accuracy of the classifier. The predicted and actual duration can be compared to strengthen the connections within the neural network.

[0060] The method 300 can also include appending the duration to the array (step 313). The measured or predicted content slot duration can be appended to the array received during step 302. Increasing the number of secondary content slot durations in the array can increase the accuracy of the prediction made at step 305.

[0061] Accordingly, disclosed herein are systems and methods for providing content to a plurality of client devices. According to one aspect of the disclosure, a system for providing content to a plurality of client devices includes at least one computing device that includes at least one processor and at least one memory device. The at least one processor executes a classifier. The classifier is configured to receive an indication of a first content stream that is transmitted to a plurality of client devices. The first content stream includes a content item and a secondary content item slot. The classifier may also be configured to receive an array that includes durations of a plurality of past secondary content item slots. The past secondary content item slots may be associated with the content stream or may be associated with other content streams. The classifier is also configured to determine for the first content stream, a plurality of classes. Each of the plurality of classes is associated with a different time duration of a corresponding plurality of time durations. The classifier is also configured to classify the secondary content item slot for the first content stream into a first class of the plurality of classes. The classifier may also configured to transmit an indication of the time duration of the first class of the plurality of classes into which the secondary content item slot was classified to a secondary content server.

[0062] The dynamic content insertion server may be provided by the same computing device executing the classifier. Transmitting the indication of the time duration may comprise any way of making the indication of the time duration available to the dynamic content insertion server. Where an array including durations of a plurality of past secondary content items slots is received, determination of a plurality of classes for the first content stream may be based at least partially upon the array.

[0063] The dynamic content insertion server can be configured to select, responsive to the transmitted indication of the time duration, a second content item for each of the plurality of client devices to display during the secondary content item slot of the first content stream. The selection of a second content item for a particular client device may be further based upon a characteristic of that client device. The dynamic content insertion server may transmit the respective selected second content items to the client devices. The classifier can be configured to calculate a confidence score for the classification of the secondary content item slot into the first class of the plurality of classes. The classifier can also determine that the confidence score is below a predetermined threshold and select a second content item having a default time duration. The second content item with the default time duration can be placed in the secondary content item slot of the first content stream responsive to the determination that the confidence score is below the predetermined threshold.

[0064] The classifier can be configured to determine that a number of the plurality of client devices concurrently receiving the content stream is below a predetermined threshold. The classifier can receive an indication of the duration of the length of the secondary content item slot for the secondary content item. The classifier can select a second content item to place into the secondary content item slot of the first content stream responsive to the indication of the duration of the length of the secondary content item slot for the secondary content item

[0065] The classifier can be configured to receive a publisher identifier of the first content stream and a display time of the first content stream. The classifier can classify the secondary content item slot into the one of the plurality of classes based on the publisher identifier and the display time. The classifier can be configured to set one or more weights of a classification model based on the publisher identifier. Each of the durations in the array can be time durations of previously measured slots in the first data stream.

[0066] The classifier can be configured to determine a content stream characteristic of the first data stream and determine, for the first content stream, the plurality of classes based on the content stream characteristic. The classifier can be a long term-short term neural network.

[0067] According to another aspect of the disclosure, a method for providing content to a plurality of client devices includes receiving, by a classifier executed by at least one processor of a computing device, an indication of first content stream transmitted to a plurality of client devices. The first content stream can include a content item and a secondary content item slot. The method can include receiving, by the classifier, an array that includes durations of a plurality of secondary content item slots associated with the content stream. The method can include determining, by the classifier, for the first content stream, a plurality of classes. Each of the plurality of classes can be associated with a different time duration of a corresponding plurality of time durations. The method can include classifying, by the classifier, the slot for the secondary content item into a first class of the plurality of classes. The method can include transmitting, by the classifier to a dynamic content insertion server, an indication of the time duration of the first class.

[0068] The dynamic content insertion server may be provided by the same computing device executing the classifier. Transmitting the indication of the time duration may comprise any way of making the indication of the time duration available to the dynamic content insertion server. Where an array including durations of a plurality of past secondary content items slots is received, determination of a plurality of classes for the first content stream may be based at least partially upon the array.

[0069] The method can include selecting by the classifier, responsive to the transmitted indication of the time duration, a second content item for each of the plurality of client devices to display during the secondary content item slot of the first content stream.

[0070] The method can include calculating, by the classifier, a confidence score for the classification of the secondary content item slot into the first class of the plurality of classes and determining that the confidence score is below a predetermined threshold. The method can include selecting a second content item having a default time duration to place in the secondary content item slot of the first content stream.

[0071] The method can include determining a number of the plurality of client devices is below a predetermined threshold. The method can include receiving an indication of the duration of the length of the secondary content item slot. The method can include selecting a second content item to place into the secondary content item slot of the first content stream responsive to the indication of the duration of the length of the secondary content item slot for the secondary content item. The selection can be responsive to the determination that the number of the plurality of client devices is below the predetermined threshold.

[0072] The method can include receiving, by the classifier, a publisher identifier of the first content stream and a display time of the first content stream. The method can include classifying, by the classifier executed by the processors of the data processing system, the secondary content item slot into the one of the plurality of classes based on the publisher identifier and the display time. The method can include selecting one or more weights of a classification model based on the publisher identifier. Each of the durations in the array can be time durations of previous secondary content item slots in the first data stream.

[0073] The method can include determining a content stream characteristic of the first data stream, and determining, by the classifier, for the first content stream, the plurality of classes based on the content stream characteristic. The classifier can be a long term-short term neural network. The method can include receiving a duration of the secondary content item slot and updating the array to include the duration of the secondary content item slots.

[0074] FIG. 4 illustrates a block diagram of an implementation of a computer system 400. The computer system or computing device 400 can include or be used to implement the system 100 or its components such as the dynamic content insertion server 103. The computing system 400 includes a bus 405 or other communication component for communicating information and a processor 410 or processing circuit coupled to the bus 405 for processing information. The computing system 400 can also include one or more processors 410 or processing circuits coupled to the bus for processing information. The computing system 400 also includes main memory 415, such as a random access memory (RAM) or other dynamic storage device, coupled to the bus 405 for storing information, and instructions to be executed by the processor 410. The main memory 415 can be or include the data repository 145. The main memory 415 can also be used for storing position information, temporary variables, or other intermediate information during execution of instructions by the processor 410. The computing system 400 may further include a read only memory (ROM) 420 or other static storage device coupled to the bus 405 for storing static information and instructions for the processor 410. A storage device 425, such as a solid state device, magnetic disk or optical disk, can be coupled to the bus 405 to persistently store information and instructions. The storage device 425 can include or be part of the data repository 145.

[0075] The computing system 400 may be coupled via the bus 405 to a display 435, such as a liquid crystal display, or active matrix display, for displaying information to a user. An input device 430, such as a keyboard including alphanumeric and other keys, may be coupled to the bus 405 for communicating information and command selections to the processor 410. The input device 430 can include a touch screen display 435. The input device 430 can also include a cursor control, such as a mouse, a trackball, or cursor direction keys, for communicating direction information and command selections to the processor 410 and for controlling cursor movement on the display 435. The display 435 can be part of the data processing system 105, the client computing device 150 or other components of FIG. 1.

[0076] The processes, systems and methods described herein can be implemented by the computing system 400 in response to the processor 410 executing an arrangement of instructions contained in main memory 415. Such instructions can be read into main memory 415 from another computer-readable medium, such as the storage device 425. Execution of the arrangement of instructions contained in main memory 415 causes the computing system 400 to perform the illustrative processes described herein. One or more processors in a multiprocessing arrangement may also be employed to execute the instructions contained in main memory 415. Hard-wired circuitry can be used in place of or in combination with software instructions together with the systems and methods described herein. Systems and methods described herein are not limited to any specific combination of hardware circuitry and software.

[0077] Although an example computing system has been described in FIG. 4, the subject matter including the operations described in this specification can be implemented in other types of digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them.

[0078] For situations in which the systems discussed herein collect personal information about users, or may make use of personal information, the users may be provided with an opportunity to control whether programs or features that may collect personal information (e.g., information about a user's social network, social actions or activities, a user's preferences, or a user's location), or to control whether or how to receive content from a content server or other data processing system that may be more relevant to the user. In addition, certain data may be anonymized in one or more ways before it is stored or used, so that personally identifiable information is removed when generating parameters. For example, a user's identity may be anonymized so that no personally identifiable information can be determined for the user, or a user's geographic location may be generalized where location information is obtained (such as to a city, postal code, or state level), so that a particular location of a user cannot be determined. Thus, the user may have control over how information is collected about him or her and used by the content server.

[0079] The subject matter and the operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. The subject matter described in this specification can be implemented as one or more computer programs, e.g., one or more circuits of computer program instructions, encoded on one or more computer storage media for execution by, or to control the operation of, data processing apparatuses. Alternatively or in addition, the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. A computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. While a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. The computer storage medium can also be, or be included in, one or more separate components or media (e.g., multiple CDs, disks, or other storage devices). The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.

[0080] The terms "data processing system" "computing device" "component" or "data processing apparatus" encompass various apparatuses, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations of the foregoing. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures. The components described above in relation to FIG. 1 can include or share one or more data processing apparatuses, systems, computing devices, or processors.

[0081] A computer program (also known as a program, software, software application, app, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program can correspond to a file in a file system. A computer program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.

[0082] The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs (e.g., components of the data processing system 105) to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatuses can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

[0083] The subject matter described herein can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a web browser through which a user can interact with an implementation of the subject matter described in this specification, or a combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network ("LAN") and a wide area network ("WAN"), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad-hoc peer-to-peer networks).

[0084] The computing system such as system 100 or system 400 can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network (e.g., the network 165). The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some implementations, a server transmits data (e.g., data packets representing a content item) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device). Data generated at the client device (e.g., a result of the user interaction) can be received from the client device at the server (e.g., received by the data processing system from the client device or the content provider computing device or the service provider computing device).

[0085] While operations are depicted in the drawings in a particular order, such operations are not required to be performed in the particular order shown or in sequential order, and all illustrated operations are not required to be performed. Actions described herein can be performed in a different order.

[0086] The separation of various system components does not require separation in all implementations, and the described program components can be included in a single hardware or software product.

[0087] Having now described some illustrative implementations, it is apparent that the foregoing is illustrative and not limiting, having been presented by way of example. In particular, although many of the examples presented herein involve specific combinations of method acts or system elements, those acts and those elements may be combined in other ways to accomplish the same objectives. Acts, elements and features discussed in connection with one implementation are not intended to be excluded from a similar role in other implementations or implementations.

[0088] The phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of "including" "comprising" "having" "containing" "involving" "characterized by" "characterized in that" and variations thereof herein, is meant to encompass the items listed thereafter, equivalents thereof, and additional items, as well as alternate implementations consisting of the items listed thereafter exclusively. In one implementation, the systems and methods described herein consist of one, each combination of more than one, or all of the described elements, acts, or components.

[0089] Any references to implementations or elements or acts of the systems and methods herein referred to in the singular may also embrace implementations including a plurality of these elements, and any references in plural to any implementation or element or act herein may also embrace implementations including only a single element. References in the singular or plural form are not intended to limit the presently disclosed systems or methods, their components, acts, or elements to single or plural configurations. References to any act or element being based on any information, act or element may include implementations where the act or element is based at least in part on any information, act, or element.

[0090] Any implementation disclosed herein may be combined with any other implementation or embodiment, and references to "an implementation," "some implementations," "one implementation" or the like are not necessarily mutually exclusive and are intended to indicate that a particular feature, structure, or characteristic described in connection with the implementation may be included in at least one implementation or embodiment. Such terms as used herein are not necessarily all referring to the same implementation. Any implementation may be combined with any other implementation, inclusively or exclusively, in any manner consistent with the aspects and implementations disclosed herein.

[0091] References to "or" may be construed as inclusive so that any terms described using "or" may indicate any of a single, more than one, and all of the described terms. For example, a reference to "at least one of 'A' and 'B'" can include only 'A', only 'B', as well as both 'A' and 'B'. Such references used in conjunction with "comprising" or other open terminology can include additional items.

[0092] Where technical features in the drawings, detailed description or any claim are followed by reference signs, the reference signs have been included to increase the intelligibility of the drawings, detailed description, and claims. Accordingly, neither the reference signs nor their absence have any limiting effect on the scope of any claim elements.

[0093] The systems and methods described herein may be embodied in other specific forms without departing from the characteristics thereof. The foregoing implementations are illustrative rather than limiting of the described systems and methods. Scope of the systems and methods described herein is thus indicated by the appended claims, rather than the foregoing description,


Claims

1. A system for providing content to a plurality of client devices, comprising a computing device comprising a processor and a memory device, the processor executing a classifier, the classifier configured to:

receive an indication of a first content stream transmitted to the plurality of client devices, the first content stream comprising a content item and a secondary content item slot;

receive an array comprising durations of a plurality of previous secondary content item slots associated with the content stream;

determine for the first content stream, a plurality of classes, each of the plurality of classes associated with a different time duration of a corresponding plurality of time durations;

determine a number of the plurality of client devices concurrently receiving the content stream;

if the determined number of the plurality of client devices is above a predetermined threshold:

classify the secondary content item slot of the first content stream into a first class of the plurality of classes based on the array comprising the durations of the plurality of previous secondary content item slots associated with the content stream; and

retrieve, based on a time duration of the first class of the plurality of classes into which the secondary content item slot was classified, a different secondary content item for each of the plurality of client devices to display during the secondary content item slot of the first content stream;

if the determined number of the plurality of client devices is below the predetermined threshold:

wait for receipt of an indication of the duration of the length of the secondary content item slot for the secondary content item, the indication being included in the content stream a predetermined amount of time before the start of the secondary content slot; and

select a second content item to place into the secondary content item slot of the first content stream responsive to the indication of the duration of the length of the secondary content item slot for the secondary content item.


 
2. The system of claim 1, wherein the classifier is further configured to:

calculate a confidence score for the classification of the secondary content item slot into the first class of the plurality of classes;

determine that the confidence score is below a predetermined threshold; and

select a second content item having a default time duration to place in the secondary content item slot of the first content stream responsive to the determination that the confidence score is below the predetermined threshold.


 
3. The system of claim 1, wherein the classifier is further configured to:

receive a publisher identifier of the first content stream and a display time of the first content stream; and

classify the secondary content item slot into the one of the plurality of classes based on the publisher identifier and the display time.


 
4. The system of claim 3, wherein the classifier is further configured to select one or more weights of a classification model based on the publisher identifier.
 
5. The system of claim 1, wherein each of the durations in the array are time durations of previously measured slots in the first content stream.
 
6. The system of claim 1, wherein the classifier is further configured to:

determine a content stream characteristic of the first content stream; and

determine, for the first content stream, the plurality of classes based on the content stream characteristic.


 
7. The system of claim 1, wherein the classifier comprises a long term-short term neural network.
 
8. The system of claim 1, wherein the classifier is further configured to:

receive a duration of the secondary content item slot; and

update the array to include the duration of the secondary content item slot.


 
9. A method for providing content to a plurality of client devices, comprising:

receiving, by a classifier executed by a processor of a computing device, an indication of a first content stream transmitted to the plurality of client devices, the first content stream comprising a content item and a secondary content item slot;

receiving, by the classifier, an array comprising durations of a plurality of previous secondary content item slots associated with the content stream;

determining, by the classifier, for the first content stream, a plurality of classes, each of the plurality of classes associated with a different time duration of a corresponding plurality of time durations;

determining a number of the plurality of client devices concurrently receiving the content stream;

if the determined number of the plurality of client devices is above a predetermined threshold:

classifying, by the classifier, the slot for the secondary content item into a first class of the plurality of classes based on the array comprising the durations of the plurality of previous secondary content item slots associated with the content stream; and

retrieving, based on a time duration of the first class, a different secondary content item for each of the plurality of client devices to display during the secondary content item slot of the first content stream;

if the determined number of the plurality of client devices is below the predetermined threshold:

waiting for receipt of an indication of the duration of the length of the secondary content item slot for the secondary content item, the indication being included in the content stream a predetermined amount of time before the start of the secondary content slot; and

selecting a second content item to place into the secondary content item slot of the first content stream responsive to the indication of the duration of the length of the secondary content item slot for the secondary content item.


 
10. The method of claim 9, further comprising:

calculating, by the classifier, a confidence score for the classification of the secondary content item slot into the first class of the plurality of classes;

determining that the confidence score is below a predetermined threshold; and

selecting a second content item having a default time duration to place in the secondary content item slot of the first content stream, responsive to the determination that the confidence score is below the predetermined threshold.


 
11. The method of claim 9, further comprising:

receiving, by the classifier, a publisher identifier of the first content stream and a display time of the first content stream; and

classifying, by the classifier executed by the processor of the data processing system, the secondary content item slot into the one of the plurality of classes based on the publisher identifier and the display time, and optionally, further comprising selecting one or more weights of a classification model based on the publisher identifier.


 
12. The method of claim 9, wherein each of the durations in the array are time durations of previously measured secondary content item slots in the first content stream.
 
13. The method of claim 9, further comprising:

determining a content stream characteristic of the first content stream; and

determining, by the classifier, for the first content stream, the plurality of classes based on the content stream characteristic.


 
14. The method of claim 9, wherein the classifier comprises a long term-short term neural network.
 
15. The method of claim 9, further comprising:

receiving a duration of the secondary content item slot; and

updating the array to include the duration of the secondary content item slot.


 


Ansprüche

1. System zum Bereitstellen von Inhalt an eine Vielzahl von Client-Vorrichtungen, umfassend eine Rechenvorrichtung, umfassend einen Prozessor und eine Speichervorrichtung, wobei der Prozessor einen Klassifizierer ausführt, wobei der Klassifizierer konfiguriert ist, um:

eine Anzeige eines ersten Inhaltsstroms zu empfangen, der an die Vielzahl von Client-Vorrichtung gesendet wird, wobei der erste Inhaltsstrom einen Inhaltsartikel und einen sekundären Inhaltsartikelschlitz umfasst;

eine Matrix zu empfangen, die Dauern einer Vielzahl vorhergehender sekundärer Inhaltsartikelschlitze umfasst, die dem Inhaltsstrom zugeordnet sind;

für den ersten Inhaltsstrom eine Vielzahl von Klassen zu bestimmen, wobei jede der Vielzahl von Klassen einer unterschiedlichen Zeitdauer einer entsprechenden Vielzahl von Zeitdauern zugeordnet ist;

eine Anzahl der Vielzahl von Client-Vorrichtungen zu bestimmen, die gleichzeitig den Inhaltsstrom empfangen;

wenn die bestimmte Anzahl der Vielzahl von Client-Vorrichtungen über einem vorgegebenen Schwellwert ist:

basierend darauf, dass die Matrix die Dauern der Vielzahl vorhergehender sekundärer Inhaltsartikelschlitze umfasst, die dem Inhaltsstrom zugeordnet sind, den sekundären Inhaltsartikelschlitz des ersten Inhaltsstroms in eine erste Klasse der Vielzahl von Klassen zu klassifizieren; und

basierend auf einer Zeitdauer der ersten Klasse der Vielzahl von Klassen, in die der sekundäre Inhaltsartikelschlitz klassifiziert war, einen unterschiedlichen sekundären Inhaltsartikel für jede der Vielzahl von Client-Vorrichtungen zur Anzeige während des sekundären Inhaltsartikelschlitzes des ersten Inhaltsstroms abzurufen;

wenn die bestimmte Anzahl der Vielzahl von Client-Vorrichtungen unter einem vorgegebenen Schwellwert ist:

auf den Empfang einer Anzeige der Dauer der Länge des sekundären Inhaltsartikelschlitzes für den sekundären Inhaltsartikel zu warten, wobei die Anzeige im einer vorgegebenen Zeit vor dem Start des sekundären Inhaltsartikelschlitzes im Inhaltsstrom enthalten ist; und

in Reaktion auf die Anzeige der Dauer der Länge des sekundären Inhaltsartikelschlitzes für den sekundären Inhaltsartikel einen zweiten Inhaltsartikel zum Platzieren in den sekundären Inhaltsartikelschlitzes des ersten Inhaltsstroms auszuwählen.


 
2. System nach Anspruch 1, wobei der Klassifizierer ferner konfiguriert ist, um:

einen Vertrauenswert für die Klassifizierung des sekundären Inhaltsartikelschlitzes in die erste Klasse der Vielzahl von Klassen zu berechnen;

zu bestimmen, dass der Vertrauenswert unter einem vorgegebenen Schwellwert ist; und

in Reaktion auf die Bestimmung, dass der Vertrauenswert unter dem vorgegebenen Schwellwert ist einen zweiten Inhaltsartikel mit einer voreingestellten Zeit zur Platzierung in den sekundären Inhaltsartikelschlitz des ersten Inhaltsstroms auszuwählen.


 
3. System nach Anspruch 1, wobei der Klassifizierer ferner konfiguriert ist, um:

eine Herausgeberkennung des ersten Inhaltsstroms und eine Anzeigezeit des ersten Inhaltsstroms zu empfangen; und

basierend auf der Herausgeberkennung und der Anzeigezeit den sekundären Inhaltsartikelschlitz in die eine der Vielzahl von Klassen
zu klassifizieren.


 
4. System nach Anspruch 3, wobei der Klassifizierer ferner konfiguriert ist, um basierend auf der Herausgeberkennung eine oder mehrere Gewichtungen eines Klassifizierungsmodells auszuwählen.
 
5. System nach Anspruch 1, wobei jede der Dauern in der Matrix Zeitdauern von zuvor gemessenen Schlitzen im ersten Inhaltsstrom sind.
 
6. System nach Anspruch 1, wobei der Klassifizierer ferner konfiguriert ist, um:

eine Inhaltsstromeigenschaft des ersten Inhaltsstroms zu bestimmen; und

basierend auf der Inhaltsstromeigenschaft, für den ersten Inhaltsstrom, die Vielzahl von Klassen
zu bestimmen.


 
7. System nach Anspruch 1, wobei der Klassifizierer ein neuronales Langzeit/Kurzzeit-Netzwerk umfasst.
 
8. System nach Anspruch 1, wobei der Klassifizierer ferner konfiguriert ist, um:

eine Dauer des sekundären Inhaltsartikelschlitzes zu empfangen; und

die Matrix zu aktualisieren, um die Dauer des sekundären Inhaltsartikelschlitzes zu beinhalten.


 
9. Verfahren zum Bereitstellen von Inhalt an eine Vielzahl von Client-Vorrichtungen, umfassend:

ein Empfangen, durch einen durch einen Prozessor einer Rechenvorrichtung ausgeführten Klassifizierer, einer an die Vielzahl von Client-Vorrichtungen gesendeten Anzeige eines ersten Inhaltsstroms, wobei der erste Inhaltsstrom einen Inhaltsartikel und einen sekundären Inhaltsartikelschlitz umfasst;

ein Empfangen, durch den Klassifizierer, einer Matrix, die Dauern einer Vielzahl vorhergehender sekundärer Inhaltsartikelschlitze umfasst, die dem Inhaltsstrom zugeordnet sind;

ein Bestimmen, durch den Klassifizierer, für den ersten Inhaltsstrom, einer Vielzahl von Klassen, wobei jede der Vielzahl von Klassen einer unterschiedlichen Zeitdauer einer entsprechenden Vielzahl von Zeitdauern zugeordnet ist;

ein Bestimmen einer Anzahl der Vielzahl von Client-Vorrichtungen, die gleichzeitig den Inhaltsstrom empfangen;

wenn die bestimmte Anzahl der Vielzahl von Client-Vorrichtungen über einem vorgegebenen Schwellwert ist:

basierend darauf, dass die Matrix die Dauern der Vielzahl vorhergehender sekundärer Inhaltsartikelschlitze umfasst, die dem Inhaltsstrom zugeordnet sind, ein Klassifizieren, durch den Klassifizierer, des Schlitzes für den sekundären Inhaltsartikel in eine erste Klasse der Vielzahl von Klassen; und

basierend auf einer Zeitdauer der ersten Klasse der Vielzahl von Klassen, ein Abrufen eines unterschiedlichen sekundären Inhaltsartikels für jede der Vielzahl von Client-Vorrichtungen zur Anzeige während des sekundären Inhaltsartikelschlitzes des ersten Inhaltsstroms;

wenn die bestimmte Anzahl der Vielzahl von Client-Vorrichtungen unter einem vorgegebenen Schwellwert ist:

ein Warten auf den Empfang einer Anzeige der Dauer der Länge des sekundären Inhaltsartikelschlitzes für den sekundären Inhaltsartikel, wobei die Anzeige im einer vorgegebenen Zeit vor dem Start des sekundären Inhaltschlitzes im Inhaltsstrom enthalten ist; und

in Reaktion auf die Anzeige der Dauer der Länge des sekundären Inhaltsartikelschlitzes für den sekundären Inhaltsartikel ein Auswählen eines zweiten Inhaltsartikels zum Platzieren in den sekundären Inhaltsschlitzes des ersten Inhaltsstroms.


 
10. Verfahren nach Anspruch 9, ferner umfassend:

ein Berechnen, durch den Klassifizierer, eines Vertrauenswerts für die Klassifizierung des sekundären Inhaltsartikelschlitzes in die erste Klasse der Vielzahl von Klassen;

ein Bestimmen, dass der Vertrauenswert unter einem vorgegebenen Schwellwert ist; und

in Reaktion auf die Bestimmung, dass der Vertrauenswert unter dem vorgegebenen Schwellwert ist, ein Auswählen eines zweiten Inhaltsartikels mit einer voreingestellten Zeit zur Platzierung in den sekundären Inhaltsartikelschlitz des ersten Inhaltsstroms.


 
11. Verfahren nach Anspruch 9, ferner umfassend:

ein Empfangen, durch den Klassifizierer, einer Herausgeberkennung des ersten Inhaltsstroms und einer Anzeigezeit des ersten Inhaltsstroms; und

ein Klassifizieren, durch den vom Prozessor des Datenverarbeitungssystems ausgeführten Klassifizieren, des sekundären Inhaltsartikelschlitzes in die eine der Vielzahl von Klassen basierend auf der Herausgeberkennung und der Anzeigezeit, und optional ferner umfassend ein Auswählen einer oder mehrerer Gewichtungen eines Klassifizierungsmodells basierend auf der Herausgeberkennung.


 
12. Verfahren nach Anspruch 9, wobei jede der Dauern in der Matrix Zeitdauern von zuvor gemessenen sekundären Inhaltsartikelschlitzen im ersten Inhaltsstrom sind.
 
13. Verfahren nach Anspruch 9, ferner umfassend:

ein Bestimmen einer Inhaltsstromeigenschaft des ersten Inhaltsstroms; und

ein Bestimmen, durch den Klassifizierer, für den ersten Inhaltsstrom, basierend auf der Inhaltsstromeigenschaft der Vielzahl von Klassen.


 
14. Verfahren nach Anspruch 9, wobei der Klassifizierer ein neuronales Langzeit/Kurzzeit-Netzwerk umfasst.
 
15. Verfahren nach Anspruch 9, ferner umfassend:

ein Empfangen einer Dauer des sekundären Inhaltsartikelschlitzes; und

ein Aktualisieren der Matrix, um die Dauer des sekundären Inhaltsartikelschlitzes zu beinhalten.


 


Revendications

1. Système de fourniture de contenu à une pluralité de dispositifs clients, comprenant un dispositif informatique comprenant un processeur et un dispositif de mémoire, le processeur exécutant un classificateur, le classificateur configuré pour :

recevoir une indication d'un premier flux de contenu transmis à la pluralité de dispositifs clients, le premier flux de contenu comprenant un élément de contenu et un créneau d'éléments de contenu secondaire ;

recevoir un tableau comprenant des durées d'une pluralité de précédents créneaux d'éléments de contenu secondaire associés au flux de contenu ;

déterminer pour le premier flux de contenu, d'une pluralité de classes, chacune de la pluralité de classes associée à une durée différente d'une pluralité correspondante de durées ;

déterminer un nombre de la pluralité de dispositifs clients recevant simultanément le flux de contenu ;

si le nombre déterminé de la pluralité de dispositifs clients est supérieur à un seuil prédéterminé :

classer le créneau d'éléments de contenu secondaire du premier flux de contenu en une première classe de la pluralité de classes sur la base du tableau comprenant les durées de la pluralité de précédents créneaux d'éléments de contenu secondaire associés au flux de contenu ; et

récupérer, sur la base d'une durée de la première classe de la pluralité de classes dans laquelle le créneau d'éléments de contenu secondaire a été classé, un élément de contenu secondaire différent pour chacun de la pluralité de dispositifs clients à afficher pendant le créneau d'éléments de contenu secondaire du premier flux de contenu ;

si le nombre déterminé de la pluralité de dispositifs clients est inférieur au seuil prédéterminé :

attendre la réception d'une indication de la durée de la longueur du créneau d'éléments de contenu secondaire pour l'élément de contenu secondaire, l'indication étant incluse dans le flux de contenu une durée prédéterminée avant le début du créneau de contenu secondaire; et

sélectionner un deuxième élément de contenu à placer dans le créneau d'éléments de contenu secondaire du premier flux de contenu en réponse à l'indication de la durée de la longueur du créneau d'éléments de contenu secondaire pour l'élément de contenu secondaire.


 
2. Système selon la revendication 1, dans lequel le classificateur est en outre configuré pour :

calculer un score de confiance pour la classification du créneau d'éléments de contenu secondaire dans la première classe de la pluralité de classes ;

déterminer que le score de confiance est inférieur à un seuil prédéterminé ; et

sélectionner un deuxième élément de contenu ayant une durée par défaut à placer dans le créneau d'éléments de contenu secondaire du premier flux de contenu en réponse à la détermination que le score de confiance est inférieur au seuil prédéterminé.


 
3. Système selon la revendication 1, dans lequel le classificateur est en outre configuré pour :

recevoir un identifiant d'éditeur du premier flux de contenu et un temps d'affichage du premier flux de contenu ; et

classer le créneau d'éléments de contenu secondaire dans l'une de la pluralité de classes sur la base de l'identifiant de l'éditeur et du temps d'affichage.


 
4. Système selon la revendication 3, dans lequel le classificateur est en outre configuré pour sélectionner un ou plusieurs poids d'un modèle de classification sur la base de l'identifiant de l'éditeur.
 
5. Système selon la revendication 1, dans lequel chacune des durées dans le tableau sont des durées de créneaux précédemment mesurés dans le premier flux de contenu.
 
6. Système selon la revendication 1, dans lequel le classificateur est en outre configuré pour :

déterminer une caractéristique de flux de contenu du premier flux de contenu ; et

déterminer, pour le premier flux de contenu, la pluralité de classes sur la base de la caractéristique du flux de contenu.


 
7. Système selon la revendication 1, dans lequel le classificateur comprend un réseau neuronal à long terme et à court terme.
 
8. Système selon la revendication 1, dans lequel le classificateur est en outre configuré pour :

recevoir une durée du créneau d'éléments de contenu secondaire ; et

actualiser le tableau pour inclure la durée du créneau d'éléments de contenu secondaire.


 
9. Procédé de fourniture de contenu à une pluralité de dispositifs clients, comprenant :

la réception, par un classificateur exécuté par un processeur d'un dispositif informatique, d'une indication d'un premier flux de contenu transmis à la pluralité de dispositifs clients, le premier flux de contenu comprenant un élément de contenu et un créneau d'éléments de contenu secondaire ;

la réception, par le classificateur, d'un tableau comprenant des durées d'une pluralité de précédents créneaux d'éléments de contenu secondaire associés au flux de contenu ;

la détermination, par le classificateur, pour le premier flux de contenu, d'une pluralité de classes, chacune de la pluralité de classes associée à une durée différente d'une pluralité correspondante de durées ;

la détermination d'un certain nombre de la pluralité de dispositifs clients recevant simultanément le flux de contenu ;

si le nombre déterminé de la pluralité de dispositifs clients est supérieur à un seuil prédéterminé :

la classification, par le classificateur, du créneau pour l'élément de contenu secondaire dans une première classe de la pluralité de classes sur la base du tableau comprenant les durées de la pluralité de précédents créneaux d'éléments de contenu secondaire associés au flux de contenu ; et

la récupération, sur la base d'une durée de la première classe, d'un élément de contenu secondaire différent pour chacun de la pluralité de dispositifs clients à afficher pendant le créneau d'éléments de contenu secondaire du premier flux de contenu ;

si le nombre déterminé de la pluralité de dispositifs clients est inférieur au seuil prédéterminé :

l'attente de la réception d'une indication de la durée de la longueur du créneau d'éléments de contenu secondaire pour l'élément de contenu secondaire, l'indication étant incluse dans le flux de contenu une quantité de temps prédéterminée avant le début du créneau de contenu secondaire ; et

la sélection d'un deuxième élément de contenu à placer dans le créneau d'éléments de contenu secondaire du premier flux de contenu en réponse à l'indication de la durée de la longueur du créneau d'éléments de contenu secondaire pour l'élément de contenu secondaire.


 
10. Procédé selon la revendication 9, comprenant en outre :

le calcul, par le classificateur, d'un score de confiance pour la classification du créneau d'éléments de contenu secondaire dans la première classe de la pluralité de classes ;

la détermination que le score de confiance est inférieur à un seuil prédéterminé ; et

la sélection d'un deuxième élément de contenu ayant une durée par défaut à placer dans le créneau d'éléments de contenu secondaire du premier flux de contenu, en réponse à la détermination que le score de confiance est inférieur au seuil prédéterminé.


 
11. Procédé selon la revendication 9, comprenant en outre :

la réception, par le classificateur, d'un identifiant d'éditeur du premier flux de contenu et d'un temps d'affichage du premier flux de contenu ; et

la classification, par le classificateur exécuté par le processeur du système de traitement de données, du créneau d'éléments de contenu secondaire dans celle de la pluralité de classes sur la base de l'identifiant de l'éditeur et du temps d'affichage, et éventuellement, comprenant en outre la sélection d'un ou plusieurs poids d'un modèle de classification basé sur l'identifiant de l'éditeur.


 
12. Procédé selon la revendication 9, dans lequel chacune des durées dans le tableau sont des durées de créneaux d'éléments de contenu secondaire précédemment mesurées dans le premier flux de contenu.
 
13. Procédé selon la revendication 9, comprenant en outre :

la détermination d'une caractéristique de flux de contenu du premier flux de contenu ; et

la détermination, par le classificateur, pour le premier flux de contenu, de la pluralité de classes sur la base de la caractéristique de flux de contenu.


 
14. Procédé selon la revendication 9, dans lequel le classificateur comprend un réseau neuronal à long terme et à court terme.
 
15. Procédé selon la revendication 9, comprenant en outre :

la réception d'une durée du créneau d'éléments de contenu secondaire ; et

l'actualisation du tableau pour inclure la durée du créneau d'éléments de contenu secondaire.


 




Drawing

















Cited references

REFERENCES CITED IN THE DESCRIPTION



This list of references cited by the applicant is for the reader's convenience only. It does not form part of the European patent document. Even though great care has been taken in compiling the references, errors or omissions cannot be excluded and the EPO disclaims all liability in this regard.

Patent documents cited in the description