An advertisement program attempts to select advertisements to display on a given web page based on how likely a user is to click on the advertisement. Selecting a relevant advertisement based on the content of a web page is one way to increase the likelihood of a user of the web page clicking on the advertisement. Several factors are considered in determining the relevancy of an advertisement to the content of a web page. One factor relates to keywords, which are words or phrases that are associated with advertisements and web pages. An advertiser may, for example, select keywords for an advertisement through an online keyword auction. Keywords may be selected for a web page by, for example, a content analysis engine or a web page owner. An advertisement whose keywords are closely matched with the keywords of a web page may have an increased likelihood of being clicked on. Therefore, a closely matched advertisement has a high likelihood of being selected by the advertisement program to be displayed on a given web page.
Advertisers strive to select a group of keywords that will increase the likelihood of their advertisement appearing on a web page. They frequently monitor the success of their keyword strategy and continue to improve their keyword selection to maximize their revenues. Advertisements may be matched to a web page using all the keywords associated with the advertisement. As a result, it is difficult for advertisers to monitor the effect a single keyword has on their advertisement being selected and clicked on by a user.
An aspect of the present disclosure is directed to a system to provide network activity performance data in a content infrastructure. The system comprises: one or more processors; and a memory storing instructions. The instructions, when executed by the one or more processors, cause the one or more processors to: identify a content item provided by a content provider device, the content item associated with a set of keywords, each keyword of the set of keywords selected for use in an online content selection process; calculate a set of keyword scores for the set of keywords, each keyword score calculated for a different one of the set of keywords such that each keyword has a corresponding keyword score particular to the keyword, each keyword score calculated to measure a relationship between a semantic word cluster of the keyword and a semantic word cluster of an other content for which the content item was previously selected, wherein the each keyword score is calculated based on one or more parameters generated by an automated training process, the automated training process being a process that adjusts that the one or more parameters iteratively; determine an effect that a particular keyword of the set of keywords has on the online content selection process based on the set of keyword scores; generate a report indicating the effect that the particular keyword has on the online content selection process; and provide, via a network, the report to a client device.
In some embodiments, the other content is a web page that previously included the content item.
In some embodiments, the instructions, when executed by the one or more processors, further cause the one or more processors to: predict an effect the particular keyword of the set of keywords has on the content selection process, wherein generating the report includes adding to the report the predicted effect of the particular keyword of the set of keywords has on the online content selection process.
In some embodiments, the instructions, when executed by the one or more processors, further cause the one or more processors to: receive a request for adding, deleting, or changing the set of keywords of the content item; perform the adding, deleting, or changing to set of keywords of the content item; and calculate, responsive to a request for content, a second set of keyword scores for the set of keywords of the content item.
In some embodiments, the instructions, when executed by the one or more processors, cause the one or more processors to: calculate each keyword score in the set of keyword scores based at least in part on at least one of a quality score, a predicted click through rate, or a content category.
In some embodiments, the instructions, when executed by the one or more processors, cause the one or more processors to: generate the report to include a hypothetical interaction rate associated with the particular keyword.
In some embodiments, the instructions, when executed by the one or more processors, cause the one or more processors to: generate the report to indicate a metric of the content item based on selection of the content item corresponding to a highest determined keyword score.
In some embodiments, the instructions, when executed by the one or more processors, cause the one or more processors to: generate the report to indicate a comparison between (i) a metric before an addition, deletion, or change of a subset of the set of keywords, and (ii) the metric after the addition, deletion, or change of the subset of the plurality of keywords.
In some embodiments, the instructions, when executed by the one or more processors, further cause the one or more processors to: determine the semantic word cluster of the keyword by gathering sets of words related to a common semantic concept associated with the keyword.
In some embodiments, the automated training process adjusting the one or more parameters iteratively is based on a comparison between metrics of a test subset of search engine traffic and metrics of a control subset of the search engine traffic.
An aspect of the present disclosure is directed to a method to provide network activity performance data in a content infrastructure. The method comprises: identifying, by one or more processors, a content item provided by a content provider device, the content item associated with a set of keywords, each keyword of the set of keywords selected for use in an online content selection process; calculating, by the one or more processors, a set of keyword scores for the set of keywords, each keyword score calculated for a different one of the set of keywords such that each keyword has a corresponding keyword score particular to the keyword, each keyword score calculated to measure a relationship between a semantic word cluster of the keyword and a semantic word cluster of an other content for which the content item was previously selected, wherein the each keyword score is calculated based on one or more parameters generated by an automated training process, the automated training process being a process that adjusts that the one or more parameters iteratively; determining, by the one or more processors, an effect that a particular keyword of the set of keywords has on the online content selection process based on the set of keyword scores; generating, by the one or more processors, a report indicating the effect that the particular keyword has on the online content selection process; and providing, by the one or more processors, via a network, the report to a client device.
Other aspects of the present disclosure include corresponding apparatuses and computer-readable media configured to perform the actions of the method.
The details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.
Like reference numbers and designations in the various drawings indicate like elements.
Systems and methods of the present solution are directed to a per keyword scoring and attribution process and tool that allows an advertisement program to select an advertisement to display based on an individual keywords. The technology allows an advertiser to achieve per keyword target control. The technology further allows an advertiser to predict or analyze the result of adding, deleting, editing or changing bidding for target keywords.
At block 102, an advertisement request is received from a publisher of a web page. In one implementation, this advertisement request is in response to a user visiting a content page on the website of a publisher, e.g., a newspaper article, blog, classifieds site, game site, etc. Associated with the content web page may be a plurality of keywords. The keywords may be automatically generated based on the content of the web page. Keywords may be automatically generated for a content page using a plurality of methods and systems. In one implementation, the keywords may be all or a subset of words and phrases that appear on the web page. In another implementation, keywords may include synonyms of words that appear on the web page or root words. In yet another implementation, a content analysis engine may analyze the content on a web page to determine one or more representative keyword. For example, for an article about camping, the process may generate “camping,” “tents,” etc. as keywords for the content page. In another implementation, the web page publisher may select one or more keywords for the web page and store it in a computer readable medium. Keywords may be any combination of text in any language. In some implementations, the keywords are words or phrases. In another implementation, the keywords may be a combination of letters and numbers.
At block 104, advertisements having keywords that match those of the content page are identified. Each advertisement may contain one or more keywords stored in a computer readable memory. These keywords may be any combination of text in any language. In some implementations, the keywords are words or phrases. In another implementation, the keywords may be a combination of letters and numbers. The keywords may have been selected by an advertiser. In some implementations, the advertiser may have selected the keywords via an online auction process. These advertisements may have been created by any entity and may relate to any product, business, service, etc. These advertisements may include text, an image, video, interactive game, audio, or any other form of communication, and any combination thereof. In some implementations, block 104 may include receiving only a pre-defined group of advertisements that meet a certain criteria. The criteria may be set by the advertisement program, the web page publisher, or the advertiser. The criteria may be the content of the advertisement, the quality of the advertisement, media type, language, demographics, product, service, or any other criteria. In some implementations, the criteria may be defined by age-appropriateness of the material. In another implementation, the group of advertisements may be defined by its pixel display size. The advertisements may be received from a database or any other computer-readable memory via a network.
Matching advertisements may be identified using a plurality of methods and systems. In some implementations, the process may include comparing each advertisement keyword with a content web page keyword for a match. In other implementations, the process may also compare keyword synonyms, root words, etc. to identify additional matches.
At block 106, keyword data are received from a computer readable memory. The keyword data may be based on historic values, fixed variables, and so on. The keyword data may also be determined based on real-time analysis. The type and value of keyword data may vary each time the block 106 is triggered, or the keyword data may be fixed. The keyword data may include data related to such parameters as predicted clickthrough rate, semantic relevancy, semantic word cluster (“phil cluster”), content vertical, etc. The keyword data may also include data related to the advertisement a keyword is associated with, including the quality score of the advertisement.
In one implementation, the keyword data includes the clickthrough rate for the advertisement the keyword is associated with. Clickthrough rate for an advertisement is defined as the number of clicks on an advertisement divided by the number of times the advertisement is shown (impressions). The clickthrough rate may be determined using historic data about the advertisement. In another implementation, the keyword data includes a predicted clickthrough rate for the advertisement. The predicted clickthrough rate represents the clickthrough rate an advertisement may have in the future if displayed on a given content web page. The predicted clickthrough rate may be determined by comparing the clickthrough rate of a plurality of similar advertisements displayed on the given web page, or web pages with similar content. Similarity may be determined in a plurality of ways, including, e.g., overlapping keywords, product category, content, market, etc. Predicted clickthrough rate may be determined by any method or system capable of providing a clickthrough rate prediction. In some implementations, the predicted clickthrough rate may be based on a model that uses past performance history. The model may include analyzing how a keyword performs in one advertisement group as compared to another advertisement group. The analysis may include a form of Bayesian clickthrough rate prediction, or any other analysis that can provide a predicted clickthrough rate.
In another implementation, the keyword data includes data that is determined based on real time analysis, such as data relating to semantic relevancy. Semantic relevancy refers to the relevancy between an advertisement keyword and a content web page keyword. A plurality of methods and systems may be used to calculate semantic relevancy. The process of calculating semantic relevancy may include comparing an advertisement keyword to a content web page keyword. An advertisement keyword that is closely matched to the content web page keyword is given a high semantic relevancy score. In another implementation, semantic relevancy may be calculated using latent semantic analysis, or any other form of content analysis that can determine semantic relevancy.
In some implementations, the keyword data may include the content vertical of the keyword. The content vertical of a keyword may refer to a topic, media type, genre, or segment a keyword falls into, e.g., baseball. The content vertical may be pre-determined for each keyword or may be determined on a real-time basis. The keyword data may include one or more content verticals for a keyword. The content vertical may be determined using a content analysis engine, further described below, or by any other system or method.
In some implementations, the keyword data received in process 100 may include semantic word clusters, also known as a phil cluster. A semantic word cluster may be determined by a content analysis engine. A content analysis engine relates words together and finds associations between them. The content analysis engine may be a clustering tool that gathers sets of words that relate to a common semantic concept. The engine may identify semantic similarity among documents, keywords, web pages, advertisements, etc. A content analysis engine may contain a training component that defines sets of words that are related to specific topics or semantic concepts, e.g., baseball, photography, camping, etc. A content analysis engine may also contain a component that evaluates a text fragment and returns word sets that are likely to match the text fragment. The text fragment may be words, phrases or numbers in a search query, web page, and/ or advertisement. For example, a content analysis engine may automatically analyze the content of a web page to determine that the content of the web page is related to car insurance.
In another implementation, the keyword data may include the quality score of the advertisement. The quality score may be calculated in real-time using a plurality of factors. In some implementations, the quality score may be calculated using at least one of the following factors: the past performance of the advertisement on this and similar web pages; the relevance of the advertisement and keywords to the web page; the quality of the landing page of the advertisement; and other relevance factors. The past performance may include a plurality of factors, including clickthrough rate, predicted clickthrough rate, conversion rate, etc.
At block 108, a keyword score is calculated for each keyword for each advertisement identified in block 104. The keyword score may be calculated in real-time. The keyword score may be calculated using a plurality of factors. In some implementations, the keyword score is a sum of keyword matching scores. The keyword matching score represents how closely matched a keyword is to the content of a given web page, topic, vertical, semantic word cluster, etc. The keyword matching score may be calculated based on one or more keyword data. In one implementation, the keyword matching score may be the semantic relevancy of a keyword to the content of a web page. In another implementation, a keyword matching score may be the relationship between a semantic word cluster of a keyword and a semantic word cluster of a web page. For example, the task may be determine the matching score between the keyword “car” and a web page about “car insurance”. While the keyword, at first, may seem to be related to the web page, that may not necessarily be the case. The advertiser may specify, or the content analysis engine may automatically determine, that the advertisement is about selling car parts, thus making the keyword “car” belong to the automotive part's semantic word cluster. In this example, matching score may be low because an advertisement about selling car parts is not that relevant to a web page discussing car insurance.
In another implementation, the keyword score may be a weighted sum of one or more keyword matching scores. In one implementation, the weighting factor may be based on a historic model. In another implementation, an automated training process generates a weighting factor for each keyword matching score that maximizes advertisement revenue. The training process may include monitoring the affect process 100 has on the clickthrough rate, conversion rate, or any other metric on a subset of search engine users as compared to a control subset of search engine users. In some implementations, the weights are determined by statistical and/ or quality experiments.
At block 112, a maximum keyword score is calculated by a processing circuit. The maximum score refers to the highest keyword score that was calculated in block 108.
At block 114, an advertisement with the highest keyword score is selected to be displayed on a web page. This advertisement may then be returned to the publisher to be presented to the user as part of the content page.
The process of selecting an advertisement based on a per keyword score may be illustrated by the following example. In this example, an advertisement request has been received (block 102) and two advertisements are identified as matching the content of the web page (block 104). The two advertisements are Ads1 and Ads2. Adsl has three keywords: k1, k2, k3; and Ads2 has two keywords: k4, k5. In this example, each keyword has the following keyword data (block 106), where “n” is the keyword number: (1) quality score (Q_n); (2) semantic relevancy score (doc_weight_n); and (3) phil cluster advertisements (“phil_ads_n”).
Using this keyword data, two intermediate scores are calculated for each keyword (block 108), where “*” represents a mathematical dot product. The first intermediate score is a keyword score (kw_n) which is calculated as follows: kw_1=Q_1*doc_weight_1; kw_2=Q_2*doc_weight_1; kw_3=Q_3*doc_weight_3; kw_4=Q_4*doc_weight_4; and kw_5=Q_5*doc_weight_5. The second intermediate score is a phil cluster score (phil_nx) which is calculated as follows: phil_1=phil_ads_1*doc_weight_1; phil_2=phil_ads_2* doc_weight_2; phil_3=phil_ads_3*doc_weight_3; phil_4=phil_ads_4*doc_weight_4; and phil_5=phil_ads_5*doc_weight_5.
Thereafter, the calculation of the final keyword score (still referring to block 108) for each keyword (KW_score_n) is a weighted sum of the intermediate keyword score (kw_n) and the phil cluster score (phil_n): KW_score_1=weight_kw*kw_1+weight_phil* phil_11; KW_score_2=weight_kw*kw_2+weight_phil*phil_21; KW_score_3=weight_kw*kw_3+weight_phil*phil_31; KW_score_4=weight_kw*kw_4+weight_phil*phil_41; KW_score_5=weight_kw*kw_5+weight_phil*phil_51. The weight_kw and weight_phil are weighting factors for the intermediate keyword score and phil cluster score, respectively, that were determined by statistical or quality experiments to maximize advertisement revenue (block 110).
The web page in this example contains keywords k1, k2, and k5, as well as phil clusters phil_21, and phil_25. The result, in this example, is: KW_score_1=weight_kw* kw_1+weight_phil*phil_11=0.3; KW_score_2=weight_kw*kw_2+weight_phil* phil_21=0.5; KW_score_3=weight_kw*kw_3+weight_phil*phil_31=0; KW_score_4 =weight_kw*kw_4+weight_phil*phil_41=0; KW_score_5=weight_kw*kw_5+weight_phil*phil_51=0.4. Keywords three and four have a score of zero because those keywords or corresponding phil clusters are not present on the web page. Keyword two has the highest score because the web page contains k2 as well as phil_21.
In one implementation, per keyword scoring may be facilitated via an advertisements group keyword criteria session that is built by aggregating the information related to each keyword. For example, keywords, top phil clusters, and top verticals may be organized under a hierarchical structure that allows for more efficient processing.
After calculating a keyword score for each keyword for each advertisement, the advertisement with the highest keyword score can be selected to be displayed on a web page (block 112). In this example, the keyword with the highest score is k2, which is associated with Ads1. Therefore, Adsl will be selected to be displayed on the web page (block 114).
With this method, all advertisements are selected by individual target keyword performance. Furthermore, individual keyword reports can be generated for advertisers. Advertisers can use these reports to monitor the effect an addition, deletion, or change of an individual keyword has on their advertisement campaign. Advertisers can control their targeting keywords on a truly keyword base and can achieve per keyword control and attribution.
At block 126, the selected advertisements are retrieved. In one implementation, a user may select, via a user interface, one or more advertisements from one or more advertisement campaigns. Each advertisement may contain one or more keywords. The advertisements may be retrieved from computer readable memory or a database.
At block 128, an advertisement score is retrieved by the processing circuit. The advertisement score may be retrieved from a computer readable memory or a database. In one implementation, the advertisement score may be a historical average advertisement score based on all the times the advertisement was displayed. In another implementation, the advertisement score may be the historical average advertisement score based on all the times the advertisement was displayed on web pages about a specific topic, falling within a content vertical, belonging to a specific semantic word cluster, or containing certain keywords.
At block 130, the advertisement score is attributed to a keyword. Using the previously discussed example, the advertisement score may be correspond to the score of keyword two. Thus, using this process, an advertisement score may be attributed to that single keyword. This may be repeated for one or more advertisements for one or more content verticals or any other category. For example, it may be beneficial to determine the one or more keywords that have the most significant affect on an advertisement being displayed on a web page with baseball content. In one implementation, this process may use historical advertisement selection data and criteria to determine the advertisement score and the keyword responsible for that advertisement score.
The advertisement retrieval module 204 may be configured to retrieve one or more advertisements associated with one or more keywords. The advertisements and associated keywords may be stored in computer readable memory or transmitted to another module in the tool 202. The module 204 may be further configured to maintain the association between a keyword and an advertisement. The module 204 may, via the network, have access to an internal database that contains all this information, e.g., an advertisement program database. The module 204 may also retrieve keywords belonging to an entity by utilizing a variety of third-party services. In some implementations, the module may translate keywords from one language to another. The module 204 may store these keywords in a database so they may be later used by the user or a subsequent user of the keyword extension tool.
The keyword data retrieval module 208 is configured to retrieve data relating to keywords, such as the data described above in connection with
The scoring module 206 may be configured to calculate a keyword score, a keyword matching score, and/or an advertisement score. For example, the scoring module may be configured to calculate the scores discussed above in connection with
The weighting module 210 may be configured to calculate the weightings discussed above in connection with
In one implementation, the weighting module 210 may be configured to perform a training process to generate a weight. In some implementations, the weighting module 210 may be configured to perform statistical and/or quality experiments. The training process may be an iterative process that adjusts weighting factors to optimize a metric. The process may include monitoring advertisement metrics such as clickthrough rate, conversion rate, etc. for a test subset of search engine traffic, and comparing it with a control subset of search engine traffic. By iteratively varying the weighting factors and monitoring the effects, the weighting module may generate an optimal weighting factor to be used by the scoring module 206.
In some implementations, the selection system 202 may include a report generation module 214. The report may be displayed to a user via a display, as described in
In some implementations, the report generation module 214 may automatically provide a report when there is a change in keywords being used, on a periodic basis, and/or upon user request.
In some implementations, the user may be able to generate a hypothetical report prior to adding or deleting a keyword from an advertisement. The report generation module 214 may be configured to employ one or more modules in the selection system 202 to generate a hypothetical report. In some implementations, the report generation module may be configured to add or delete a keyword from an advertisement. For example, a user may determine, from the report, that a single keyword has a negligible affect on the clickthrough rate of an advertisement. In this example, the user may choose to remove the keyword and direct the report generation module to generate a hypothetical report showing the effects of deleting the keyword. The user may, upon reviewing the hypothetical report, choose to actually remove the keyword from the advertisement campaign.
The user interface module 216 provides a way for the user to input information to the selection system 202, and a way for the tool to output information to the user. In one implementation, the user interface module 216 may interact with input devices, e.g., keyboard, mouse, touch surface, etc., and output devices, e.g., display, monitor, speakers, etc. associated with a user device. In some implementations, the tool may generate a graphical user interface that the user may directly manipulate. In another implementation, the tool may interface with another program, e.g., an advertisement program which then interfaces directly with the user. In this implementation, the per keyword scoring and attribution tool may be a backend tool that is part of an advertisement program. In another implementation, the selection system 202 may be a stand alone tool with its own user interface. In yet another implementation, the per keyword scoring and attribution tool may be a stand alone API that third parties may integrate with.
In some implementations, the user interface module 216 may provide information to the user in real-time. In another implementation, the module may send information via an electronic message, notification, alert, etc., to the user. In some implementations, the user may interface with the tool via these electronic messages. The user interface may be configured according to any implementations described herein.
Aspects of the methods and systems discussed previously may be operate in the foregoing environment as well as associated system components (e.g., hardware elements). Referring to
Although
The network 304 may be any type and/or form of network and may include any of the following: a point-to-point network, a broadcast network, a wide area network, a local area network, a telecommunications network, a data communication network, a computer network, an ATM (Asynchronous Transfer Mode) network, a SONET (Synchronous Optical Network) network, a SDH (Synchronous Digital Hierarchy) network, a wireless network and a wireline network. In some implementations, the network 304 may comprise a wireless link, such as an infrared channel or satellite band. The topology of the network 304 may be a bus, star, or ring network topology. The network 304 may be of any such network topology as known to those ordinarily skilled in the art capable of supporting the operations described herein. The network may comprise mobile telephone networks utilizing any protocol or protocols used to communicate among mobile devices, including AMPS, TDMA, CDMA, GSM, GPRS or UMTS. In some implementations, different types of data may be transmitted via different protocols. In other implementations, the same types of data may be transmitted via different protocols.
In some implementations, the system may include multiple, logically-grouped servers 306. In one of these implementations, the logical group of servers may be referred to as a server farm 38 or a machine farm 38. In another of these implementations, the servers 306 may be geographically dispersed. In other implementations, a machine farm 38 may be administered as a single entity. In still other implementations, the machine farm 38 includes a plurality of machine farms 38. The servers 306 within each machine farm 38 can be heterogeneous—one or more of the servers 306 or machines 306 can operate according to one type of operating system platform (e.g., WINDOWS NT, manufactured by Microsoft Corp. of Redmond, Washington), while one or more of the other servers 306 can operate on according to another type of operating system platform (e.g., Unix or Linux).
In one implementation, servers 306 in the machine farm 38 may be stored in high-density rack systems, along with associated storage systems, and located in an enterprise data center. In this implementation, consolidating the servers 306 in this way may improve system manageability, data security, the physical security of the system, and system performance by locating servers 306 and high performance storage systems on localized high performance networks. Centralizing the servers 306 and storage systems and coupling them with advanced system management tools allows more efficient use of server resources.
The servers 306 of each machine farm 38 do not need to be physically proximate to another server 306 in the same machine farm 38. Thus, the group of servers 306 logically grouped as a machine farm 38 may be interconnected using a wide-area network (WAN) connection or a metropolitan-area network (MAN) connection. For example, a machine farm 38 may include servers 306 physically located in different continents or different regions of a continent, country, state, city, campus, or room. Data transmission speeds between servers 306 in the machine farm 38 can be increased if the servers 306 are connected using a local-area network (LAN) connection or some form of direct connection. Additionally, a heterogeneous machine farm 38 may include one or more servers 306 operating according to a type of operating system, while one or more other servers 306 execute one or more types of hypervisors rather than operating systems. In these implementations, hypervisors may be used to emulate virtual hardware, partition physical hardware, virtualize physical hardware, and execute virtual machines that provide access to computing environments. Hypervisors may include those manufactured by VMWare, Inc., of Palo Alto, California; the Xen hypervisor, an open source product whose development is overseen by Citrix Systems, Inc.; the VirtualServer or virtual PC hypervisors provided by Microsoft or others.
Management of the machine farm 38 may be de-centralized. For example, one or more servers 106 may comprise components, subsystems and modules to support one or more management services for the machine farm 38. In one of these implementations, one or more servers 306 provide functionality for management of dynamic data, including techniques for handling failover, data replication, and increasing the robustness of the machine farm 38. Each server 306 may communicate with a persistent store and, in some implementations, with a dynamic store.
Server 306 may be a file server, application server, web server, proxy server, appliance, network appliance, gateway, gateway, gateway server, virtualization server, deployment server, SSL VPN server, or firewall. In one implementation, the server 306 may be referred to as a remote machine or a node.
The client 302 and server 306 may be deployed as and/or executed on any type and form of computing device, such as a computer, network device or appliance capable of communicating on any type and form of network and performing the operations described herein.
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. In another implementation, the input device 430 has a touch screen display 435. The input device 430 can 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.
According to various implementations, the processes 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 multi-processing arrangement may also be employed to execute the instructions contained in main memory 415. In alternative implementations, hard-wired circuitry may be used in place of or in combination with software instructions to effect illustrative implementations. Thus, implementations are not limited to any specific combination of hardware circuitry and software.
Although an example computing system has been described in
Implementations of 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, i.e., one or more modules of computer program instructions, encoded on one or more computer storage media for execution by, or to control the operation of, data processing apparatus. 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. Moreover, 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). Accordingly, the computer storage medium is both tangible and non-transitory.
The operations described in this specification can be performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
The term “data processing apparatus” or “computing device” encompasses all kinds of apparatus, 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.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it 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 may, but need not, correspond to a file in a file system. A 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.
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. 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.
To provide for interaction with a user, implementations of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any inventions or of what may be claimed, but rather as descriptions of features specific to particular implementations of particular inventions. Certain features described in this specification in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated in a single software product or packaged into multiple software products.
Thus, particular implementations of the subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.
This application claims the benefit of priority under 35 U.S.C. § 120 as a continuation of U.S. patent application Ser. No. 16/823,861, filed Mar. 19, 2020, which claims the benefit of priority under 35 U.S.C. § 120 as a continuation of U.S. patent application Ser. No. 15/720,733, filed Sep. 29, 2017, which claims the benefit of priority under 35 U.S.C. § 120 as a continuation of U.S. patent application Ser. No. 15/218,903, filed Jul. 25, 2016, which claims the benefit of priority under 35 U.S.C. § 120 as a continuation of U.S. patent application Ser. No. 13/277,171, filed Oct. 19, 2011, each of which are incorporated herein by reference in their entirety.
Number | Date | Country | |
---|---|---|---|
Parent | 16823861 | Mar 2020 | US |
Child | 18233069 | US | |
Parent | 15720733 | Sep 2017 | US |
Child | 16823861 | US | |
Parent | 15218903 | Jul 2016 | US |
Child | 15720733 | US | |
Parent | 13277171 | Oct 2011 | US |
Child | 15218903 | US |