Internet usage has grown significantly in recent years. Businesses often publish a website selling their products in addition to, or instead of, traditional brick and mortar locations to provide growth opportunities for their business. Internet search engines (e.g., Google™, Bing™, Yahoo!™) offer users the capability to search for websites on topics, products or businesses using one or more search terms, i.e., keywords. To increase the volume of traffic to their website, business owners create a Search Engine Marketing (SEM) campaign to bid on keywords that correspond to terms entered by users at a search engine. SEM campaigns include one or more advertisement groups with one or more advertisements and keywords. Businesses with a higher bid on a given keyword may have their advertisement corresponding to the keyword appear higher in the search results in response to user searches, thus giving the business high visibility to users of the search engine. For example, Google™ reports that one billion searches per day occur on their search engine. Thus, entities whose advertisements appear frequently on results pages of a search engine in response to user searches expect to achieve enhanced levels of visibility for their businesses.
To assist business owners managing their campaigns, search engines offer data for analyzing their respective SEM campaigns. For example, data reflecting the number of impressions and clicks for a given advertisement corresponding to a particular set of keywords may be provided. Impressions reflects the number of times the advertisement appeared in the search engine results in response to a user query. Clicks correspond to the number of times a user selected or activated the advertisements. In addition to tracking costs, other data provided by search engines may be keyword recommendations based on aggregate data from similar SEM campaigns.
However, while the data provides basic information regarding the campaign, there is not a direct method for optimizing the keywords or advertisements based on the performance of the keywords or advertisements in the SEM campaign. Thus, businesses can not effectively manage their keyword bid costs and refine the traffic to their website to ensure a high return on investment.
Various embodiments of methods and systems for managing keyword-based traffic refinement are presented. In some embodiments, a plurality of queries entered at the one or more search engines are received for a keyword used in a keyword-based search engine marketing campaign implemented at one or more search engines. In some embodiments the plurality of queries are each a different query that was entered at the one or more search engines and resulted in one or more advertisements associated with the keyword being displayed in search results for the query. In some embodiments analytics data for the one or more advertisements associated with the keyword are received. In some embodiments, the analytics data comprises analytics data for a network site linked to the one or more advertisements pertaining to network traffic received at the network site as a result of the one or more advertisements being activated. In some embodiments, the analytics data is segmented by query for each of the plurality of queries. In some embodiments, the analytics data per query is analyzed to determine one or more of the queries to use as an exact match keyword to modify the keyword-based search engine marketing campaign. In some embodiments, analyzing the analytics data segmented by query further comprises scoring the performance of each query based on the analytics data. In some embodiments, in response to a score for the query being above a performance threshold, the query is added as an exact keyword match in the keyword based search engine marketing campaign.
While the invention is described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the invention is not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention. Headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description.
As discussed in more detail below, embodiments provide systems and methods for managing keyword-based traffic refinement. In some embodiments, for a keyword used in a keyword-based search engine marketing campaign implemented at one or more search engines, a plurality of queries entered at one or more search engines is received. The plurality of queries are each a different query that was entered at the one or more search engines and resulted in one or more advertisements associated with the keyword being displayed in search results for the query. In some embodiments, analytics data for the one or more advertisements associated with the keyword is analyzed. The analytics data includes analytics data for a network site linked to the one or more advertisements pertaining to network traffic received at the network site as a result of the one or more advertisements being activated. The analytics data is segmented by query, in some embodiments, for each of the plurality of queries. The analytics data per query is analyzed to determine one or more of the queries to use as an exact match keyword to modify the keyword-based search engine marketing campaign.
In some embodiments, for a keyword used in a keyword-based search engine marketing campaign implemented at one or more search engines, a plurality of queries entered at one or more search engines are received. The plurality of queries are each a different query that was entered at the one or more search engines and resulted in one or more advertisements associated with the keyword being displayed in search results for the query. In some embodiments, analytics data for the one or more advertisements associated with the keyword is received. The analytics data comprises analytics data for a network site linked to the one or more advertisements pertaining to network traffic received at the network site as a result of the one or more advertisements being activated. In some embodiments, the analytics data is segmented by advertisement for each of the plurality of advertisements. The analytics data per keyword is analyzed to determine advertisements that are candidates for new advertisement groups in the keyword-based search engine marketing campaign, in some embodiments.
In some embodiments, search engine 110 is configured to receive one or more terms from user 120 that facilitate locating information on client websites 150 corresponding to the terms. Search engines (e.g., Google™, Bing™, Yahoo!™) typically employ algorithms to attempt to identify websites available via internet 140. Data identifying these wesbsites is used to create a results listing independent of search engine marketing (SEM) campaigns. Search engine marketing (SEM) campaigns allow clients to increase the visibility of their website in the advertising area of search engine results. For example, most search engines reserve the upper portion and right side portion of the results page. Clients implement and manage their SEM campaigns via keyword-based traffic refinement manager 100. An SEM campaign includes one or more campaigns, each including one or more advertisement groups. Each advertisement group includes one or more advertisements and one or more keywords. For example, an advertisement group may include five advertisements and five hundred keywords corresponding to the client's product and/or service. In some embodiments, an advertisement is text based and includes a selectable link to client website 150. A keyword is a single word or a phrase that search engines match with user 120 queries (e.g., one or more terms entered at search engine 110) to determine the advertisement area of the search results. For example, a client selling dog products can choose keywords such as “dog”, “dog products”, “dog food” and/or any descriptive terms for the products they sell. Within the SEM campaign, these keywords and their corresponding bids are coupled to one or more advertisements that include client website 150. In response to a user entering terms at the search engine (e.g., search engine 110 in
In addition, keyword-based traffic refinement manager 100 receives data from search engine 110 for each SEM campaign. Examples of data provided by search engine 110 include, but are not limited to, clicks, impressions, cost of keyword bids and the queries that matched keywords in the SEM campaign. Impressions represent the number of times a given advertisement appeared in the advertising area of the search results. If user 120 clicks or selects the advertisement, that click or selection is recorded and user 120 is directed to client website 150 corresponding to the link. In some embodiments, both clicks and impressions affect the cost of the keyword bid.
In some embodiments, client websites 150 are implemented on one or more computing devices as part of an advertising campaign for the client and/or as a portal for selling products to wider customer base. It has been estimated that the number of individual websites numbers in the billions (e.g., as indexed by the Google™ search engine). A client website may be a single webpage viewable via a browser that offers basic information about a service with contact information (e.g., pest control, carpet cleaning, etc.), for example. A client website may be a retail website with multiple product web pages providing information about each product, respectively. Other non-limiting examples of client websites 150 are news sources, online magazines, blogs, apps on mobile devices, and/or social media websites.
In some embodiments, analytics server 130 determines client-side website metrics (e.g. of client websites 150). Analytics server 130 monitors all information for client website 150 once a user (e.g., user 120) selects client website 150. Analytics server 130 gathers this data for keyword-based traffic refinement manager 100. One non-limiting example of the data gathered is web traffic data indicating how user 120 arrived at the website. The web traffic data may include the search engine keyword, the queries, the search engine (e.g., Google™, Bing™, Yahoo!™) and the page ranking (e.g., a numerical value indicating the importance of a webpage). Other non-limiting examples are the revenue from each user 120 visit, and/or which SEM campaigns brought user 120 to client website 150.
In some embodiments, keyword traffic refinement manager 100 manages the keyword-based traffic refinement for a SEM campaign. Keyword traffic manager 100 receives analytics data from analytics server 130 and/or search engine 110. As discussed above, non-limiting examples of analytics data include impressions, clicks, cost of keyword bids, and/or the queries and the keyword in the SEM campaign that resulted in the display of the advertisement in the search results. With this analytics data, keyword refinement manager 100 calculates performance data such as click through ratio (CTR) and return on ad spending (ROAS). Examples of additional metrics that can be used as performance thresholds include cost per acquisition (CPA). The number of impressions represents the number of times a given advertisement appears in the search results of search engine 110. The number of clicks represents the number of times a given advertisement in the search results of search engine 110 is selected by user 120. The click through ratio (CTR) is determined by the ratio of clicks to impressions. The number can be indicative of the effectiveness of the advertisement. For example, if the advertisement has a high number of impressions, but low clicks, the resulting low CTR ratio may indicate poor relevance of the advertisement to the search results. The ROAS is determined by the ratio of revenue earned from the traffic directed to client website 150 by a given advertisement to the cost of bidding on the keywords corresponding to the given advertisement.
In some embodiments, keyword-based traffic refinement manager 100 scores the performance of a query or an advertisement based on the analytics data received in order to determine keyword-based traffic refinement. In some embodiments, keyword-based traffic refinement manager 100 segments the received data per keyword by queries received at search engine 110. The performance of each query is scored based on the analytics data. The performance is calculated by keyword-based traffic refinement manager 100. In some embodiments, keyword-based traffic refinement manager 100 segments the received analytics data by advertisement for a given keyword. The performance of each advertisement is scored based on the analytics data. In some embodiments, keyword-based traffic refinement manager 100 is configured to perform keyword-based traffic refinement for both queries and advertisement. In alternate embodiments, keyword-based traffic refinement for queries and advertisements are performed by separate systems configured as a keyword-based traffic refinement manager 100.
For example, a retail business selling clothing bearing a particular university logo may implement a website (e.g., client website 150). The website may have multiple webpages representing each product (e.g., jackets, hats, mugs, etc.) and be associated with a SEM campaign to improve visibility of the website. To optimize the traffic to the website, a keyword traffic refinement manager may analyze SEM campaign analytics data and determine modifications. The campaign may include an ad group for each product (e.g., jackets, hats, mugs, etc.) and within each ad group five ads depicting the respective product may be implemented. The ad group may further include one hundred keywords that represent one or more products. For example, the ad group with hats may include keywords such as “hats”, “baseball caps”, and/or other descriptive words describing the colors, team name, sizes etc in various combinations. After the campaign has been implemented, analytics data such as impressions, clicks, and the queries corresponding to the keywords are determined. The analytics data may be used to calculate CTR and ROAS and may be compared to a client-configured performance threshold for CTR and ROAS (e.g., in keyword-based traffic refinement manager 100). Modifications to the SEM campaign may be determined based on the threshold comparisons. For example, a particular advertisement for jackets may not receive any clicks and have low impressions, resulting in a CTR of zero. A modification may move the advertisement to a new advertisement group and implement one or more other keywords, for example. As another example, if the ROAS is higher than a client-configured performance threshold for a given query corresponding to a keyword, the query may be refined to a new keyword for the SEM campaign.
In some embodiments, analytics data segmenter 230, receives the analytics data from an analytics server (e.g., analytics server 130) or from a search engine (e.g., search engine 110 in
In some embodiments, performance analyzer 220 scores the performance of each query based on the analytics data for each query. In some embodiments, performance analyzer 220 scores the performance of each advertisement based on the analytics data for each advertisement. Performance analyzer 220 retrieves performance thresholds from client configuration 240. In response to the score for the performance of the query being over a given threshold the query is added as a keyword in the keyword-based search engine marketing (SEM) campaign. For example, text of a query may be added as an exact match keyword in the SEM campaign of a respective search engine (e.g., search engine 110). In response to the score for the performance of a query being under a given threshold, the query is added as a negative match keyword. In response to the performance of an advertisement in relation to a subset of the keywords in the advertising group being above a given threshold, the advertisement and associated keywords may be moved to a new advertisement group. The performance analyzer may perform the above described analysis separately and in any order.
In some embodiments, SEM campaign manager 250 implements the changes determined by performance analyzer 220. As described above, in response to the performance of an advertisement in relation to a subset of the keywords in the advertising group being above a given threshold, the advertisement and associated keywords may be moved to a new advertisement group in the SEM campaign of a given search engine. SEM campaign manager 220 implements the changes in the search engine 110. As an example, as described above, in response to the score for the performance of the query being above a threshold, the query is extracted and implemented as a keyword in the SEM campaign. SEM campaign manager 220 implements the changes in the search engine 110. This will be discussed in more detail below.
Although the above described embodiment of the keyword-based traffic refinement manager 100 is configured to segment data by query or advertisement for given keyword, in alternate embodiments, the keyword-based traffic refinement manager 100 is implemented in separate systems. For example, a first system configured as a keyword-based traffic refinement manager 100 may segment the analytics data by query and a second system configured as a keyword-based traffic refinement manager 100 may segment the analytics data by advertisement for a given keyword.
As indicated in block 300, in some embodiments, for a keyword used in a keyword-based search engine marketing campaign implemented at one or more search engines, a plurality of queries entered at the one or more search engines is received. As discussed above, a query is one or more terms entered in a search engine (e.g., search engine 100 in
As indicated in block 310, in some embodiments, analytics data for the one or more advertisements associated with the keyword is received. As described above, for the broad keyword “dog” in a search engine marketing campaign, multiple queries match with the keyword, but not all are related. Analytics data is received (e.g. from search engine 110 or analytics server 130 in
As indicated in block 320, in some embodiments, the analytics data is segmented by query for each of the plurality of queries. As discussed above, a keyword designated as a broad keyword match will have multiple queries that match the keyword. For a given keyword, the analytics data is segmented by the queries that matched with the keyword. In some embodiments, the segmented data may be sorted to highlight the highest quality queries or the lowest quality queries. To continue the example above, the business with the keyword “dog” will have data segmented by the following queries: “dog supplies”, “DOG stock quote”, “World War II dog fights”, “dog treats”, “dog food” and/or “Dog and Duck Pub”.
As indicated in block 330, in some embodiments, the analytics data is analyzed (e.g., by keyword-based traffic refinement manager 100 in
As depicted in
As discussed above, the performance data for each query is determined (e.g., by keyword-based traffic refinement manager 100) based on the analytics data. As depicted in
In this example, the performance thresholds may be determined by the overall performance data for the broad match keyword. As depicted in
The second query 400, xbox kinect 400b, had zero clicks 410 even though there were 600 impressions 405. Since there were zero clicks 410, xbox kinect 400b was not added as an exact match keyword. The query did not earn any revenue for the client website (e.g., client website 150), thus, in some embodiments, the query is added as an exact negative keyword match in the search engine marketing campaign (e.g., by keyword-based traffic refinement manager 100 in
The third query 400, xbox live 400c, has a low CTR 420 compared to the overall CTR 430 of the broad keyword 460. In addition, the ROAS 450 for xbox live 400c is zero. This means that even though there were 20 clicks 410, none of the clicks that directed users (e.g. users 120 in
The fourth query 400, xbox 360 games 400d, has impressions 405 and clicks 410 comparable to the broad match keyword 460. However, the ROAS 450 was below the performance threshold of the broad match keyword 460 ROAS 450. The clicks 410 indicate that users (e.g., users 120 in
The fifth query 400, xbox 360 price 400e, has an ROAS 450 that is much higher than the ROAS 450 for the overall broad match keyword 460. An exact keyword match for the terms xbox 360 price 400e is added to the search engine marketing campaign (e.g., by keyword-based traffic refinement manager 100 in
As indicated in block 500, in some embodiments, the analytics data per query for a given keyword is analyzed to determine one or more of the queries to use as an exact match keyword to modify the keyword-based search engine marketing campaign. As discussed above, analytics data is received from an analytics server (e.g. analytics server 130 in
As indicated in block 510, in some embodiments, the performance of each query is scored based on the analytics data. As described above, examples of analytics data include impressions, clicks, revenue, and cost. The impressions reflect the number of times an advertisement corresponding to the keyword in a search engine marketing campaign appears in the advertisement area of the search results of a search engine (e.g., search engine 110 in
As indicated in block 520, in some embodiments, it is determined whether the score for a query is above a performance threshold. One or more of the scores calculated above for each query are compared to a performance threshold. If a score is above a threshold, then as indicated in block 530, the query is added as an exact keyword match in the keyword-based search engine marketing campaign. As discussed above, the keyword type affects which queries will match to the keyword. Search engine marketing campaigns typically adopt a broad to narrow approach. A broad keyword type will match to any query that contains at least one of the terms of the keyword, any of the terms in the keyword in any order, synonyms, related search and/or other relevant variations of the terms. Beginning with a broad match keyword ensures a large volume of website traffic from the advertisements displayed in the search engine results. This also becomes cost prohibitive since each click on the advertisement incurs the cost of the keyword bid. Based on the scores above, it may be determined that a keyword can be narrowed to an exact match keyword to focus more on traffic quality versus traffic volume to the website (e.g. client website 150 in
As indicated in block 540, in some embodiments, it is determined if the score of a query is below a given performance threshold. If the score for a query is not below a given threshold, then at this point the next query is analyzed as indicated in block 500. If the score is below a given threshold, as indicated in block 550, in some embodiments, the query is added as a negative keyword match in the keyword-based search engine marketing campaign. Queries that include the negative keyword match terms will not cause the advertisement to appear in the search results. At this point the method returns to block 500.
As indicated in block 610, in some embodiments, analytics data for the one or more advertisements associated with the keyword is received. As discussed above, when an advertisement is displayed in response to a query entered at a search engine matching a keyword corresponding to the advertisement, analytics data is gathered. The analytics data may be revenue, impressions, and/or clicks. For example, if a user (e.g., user 120 in
As indicated in block 620, in some embodiments, the analytics data is segmented by advertisement for each of the plurality of advertisements. As discussed above, the analytics data is received by a keyword-based traffic refinement manager (e.g., keyword-based traffic refinement manager 100 in
As indicated in block 630, in some embodiments, the analytics data per keyword is analyzed to determine a modification to the one or more advertisements paired with the keyword. The segmented analytics data is analyzed in a performance analyzer (e.g., performance analyzer 220 in
As depicted in
However, Ad 2700b and Ad5700e have poor CTR 725 as compared to the CTR 725 of all the advertisements corresponding to the keyword. Ad2700b has zero ROAS 735 and Ad5700e has zero CTR 725. However, these advertisements are not deleted, because when paired with another keyword, the advertisements may perform better. Ad2700b and Ad5700e are moved to a new advertisement group with new keywords to determine a better pairing for these advertisements. This may help the cost 715 to convert to better ROAS and improve the quality score. The quality score is a factor determined by search engines (e.g., search engines 110 in
Advertisement Ad4700d has a good ROAS 735 when compared to the overall advertisement ROAS 735 for the overall advertisements 700 for keyword 760. However, the CTR 725 is lower than the CTR 725 for keyword 760. The overall pairing of Ad4700d with keyword 760 appears ideal due to the high ROAS 735, but due to the low CTR 725, the quality score described above may be affected. As discussed above, the quality score affects the bidding process for keyword 760. The threshold for the tradeoff between ROAS 735 and CTR 725 may be determined by the owner of the search engine campaign and configured in a keyword-based traffic refinement manager (e.g., keyword-based traffic refinement manager 100 in
Advertisement Ad3700c has a fair ROAS 735 when compared to the overall advertisement ROAS 735 for keyword 760. However, the CTR 725 is higher than the CTR 725 for keyword 760. The overall pairing of Ad3700c with keyword 760 is not a clear decision due to the fair ROAS 735 and high CTR 725. The ROAS 735 may be marginal as determined by the performance thresholds in the client configuration but the quality score described above may be improved due to this keyword-advertisement pair. If the priority of the client is revenue 420, then the keyword-advertisement pairing may remain the same. If the priority of the client is cost 715 in addition to revenue 720, then Ad3700c may be moved to a new advertisement group (e.g., by keyword based traffic refinement manager 100 in
As indicated in block 800, in some embodiments, the analytics data per keyword is analyzed to determine advertisements that are candidates for new advertisement groups. As described above, analytics data can be received from analytics servers monitoring client websites and/or search engines (e.g., search engine 110 in
As indicated in block 810, in some embodiments, the performance of each advertisement is scored based on the analytics data. The analytics data gathered from the website (e.g., client website 150 in
As indicated in block 820, in some embodiments, it is determined if the score for the advertisement is below a performance threshold. The score, as determined above, for the advertisement is compared to a performance threshold. The performance threshold is predetermined by the client (e.g. in client configuration 240 in keyword traffic refinement manager 100 in
As indicated in block 840, a new advertisement group including the extracted advertisement and one or more new keywords is created. A new advertisement group is created within a search engine marketing campaign for the advertisement. One or more keywords corresponding to the advertisement are added to campaign also. At this point, the method returns to block 800 to analyze the analytics data for the next advertisement.
As indicated in block 900, initial keyword, advertisement, and advertisement groups are implemented for a search engine marketing campaign. As discussed above, a SEM campaign is implemented with one or more advertisement groups each including one or more advertisements and keywords. In response to a query entered at the search engine (e.g. by user 120 in search engine 110 in
As indicated in block 910, analytics data for the search engine marketing campaign is collected. To refine the traffic received at the client website (e.g., client website 150 in
As indicated in block 920, keyword refinement is performed based on the analytics data segmented by query for a given keyword. In response to the comparison of the performance data for a given query being above a threshold, the query is extracted. The extracted query is then added to the SEM campaign (e.g., by SEM campaign manager 250 in
As indicated in block 930, analytics data for the search engine marketing campaign is collected. In some embodiments, once the keyword refinement has been implemented, the keyword—advertisement pairing is optimized. Refining the keywords in the steps above causes the traffic to the website to be more relevant. The SEM campaign can be further optimized. For example, further optimization for each advertisement may improve the ROAS for the advertisement. As in block 910, the analytics data for the SEM campaign is received. The analytics data is the same as described in block 910, but for keyword—advertisement pairing the analytics data is segmented according to advertisement for a given keyword. Each advertisement is scored based on the analytics data for the advertisement. The score is determined by calculating the CTR and the ROAS which are calculated as described above (e.g. in performance analyzer 220 in
As indicated in block 940, keyword-advertisement optimization is performed based on the analytics data segmented by advertisement for a given keyword. In response to the performance data (e.g., the CTR and ROAS calculated in block 930) being below a performance threshold (e.g., as determined by a performance analyzer 220 in
In the illustrated embodiment, computer system 1000 includes one or more processors 1010 coupled to a system memory 1020 via an input/output (I/O) interface 1030. Computer system 1000 further includes a network interface 1040 coupled to I/O interface 1030, and one or more input/output devices 1050, such as cursor control device 1060, keyboard 1070, audio device 1090, and display(s) 1080. In some embodiments, it is contemplated that embodiments may be implemented using a single instance of computer system 1000, while in other embodiments multiple such systems, or multiple nodes making up computer system 1000, may be configured to host different portions or instances of embodiments. For example, in one embodiment some elements may be implemented via one or more nodes of computer system 1000 that are distinct from those nodes implementing other elements.
In various embodiments, computer system 1000 may be a uniprocessor system including one processor 1010, or a multiprocessor system including several processors 1010 (e.g., two, four, eight, or another suitable number). Processors 1010 may be any suitable processor capable of executing instructions. For example, in various embodiments, processors 1010 may be general-purpose or embedded processors implementing any of a variety of instruction set architectures (ISAs), such as the x86, PowerPC, SPARC, or MIPS ISAs, or any other suitable ISA. In multiprocessor systems, each of processors 1010 may commonly, but not necessarily, implement the same ISA.
In some embodiments, at least one processor 1010 may be a graphics processing unit. A graphics processing unit (GPU) may be considered a dedicated graphics-rendering device for a personal computer, workstation, game console or other computer system. GPUs may be very efficient at manipulating and displaying computer graphics and their highly parallel structure may make them more effective than typical CPUs for a range of complex graphical algorithms. For example, a graphics processor may implement a number of graphics primitive operations in a way that makes executing them much faster than drawing directly to the screen with a host central processing unit (CPU). In various embodiments, the methods disclosed herein for layout-preserved text generation may be implemented by program instructions configured for execution on one of, or parallel execution on two or more of, such GPUs. The GPU(s) may implement one or more application programmer interfaces (APIs) that permit programmers to invoke the functionality of the GPU(s). Suitable GPUs may be commercially available from vendors such as NVIDIA Corporation, ATI Technologies, and others.
System memory 1020 may be configured to store program instructions and/or data accessible by processor 1010. In various embodiments, system memory 1020 may be implemented using any suitable memory technology, such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), nonvolatile/Flash-type memory, or any other type of memory. In the illustrated embodiment, program instructions and data implementing desired functions, such as those described above for a layout-preserved text generation method, are shown stored within system memory 1020 as program instructions 1025 and data storage 1035, respectively. In other embodiments, program instructions and/or data may be received, sent or stored upon different types of computer-accessible media or on similar media separate from system memory 1020 or computer system 1000. Generally speaking, a computer-accessible medium may include storage media or memory media such as magnetic or optical media, e.g., disk or CD/DVD-ROM coupled to computer system 1000 via I/O interface 1030. Program instructions and data stored via a computer-accessible medium may be transmitted by transmission media or signals such as electrical, electromagnetic, or digital signals, which may be conveyed via a communication medium such as a network and/or a wireless link, such as may be implemented via network interface 1040. Program instructions may include instructions for implementing the techniques described with respect to methods depicted in
In some embodiments, I/O interface 1030 may be configured to coordinate I/O traffic between processor 1010, system memory 1020, and any peripheral devices in the device, including network interface 1040 or other peripheral interfaces, such as input/output devices 1050. In some embodiments, I/O interface 1030 may perform any necessary protocol, timing or other data transformations to convert data signals from one component (e.g., system memory 1020) into a format suitable for use by another component (e.g., processor 1010). In some embodiments, I/O interface 1030 may include support for devices attached through various types of peripheral buses, such as a variant of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard, for example. In some embodiments, the function of I/O interface 1030 may be split into two or more separate components. In addition, in some embodiments some or all of the functionality of I/O interface 1030, such as an interface to system memory 1020, may be incorporated directly into processor 1010.
Network interface 1040 may be configured to allow data to be exchanged between computer system 1000 and other devices attached to a network (e.g., analytics server 130), such as other computer systems, or between nodes of computer system 1000. In various embodiments, network interface 1040 may support communication via wired or wireless general data networks, such as any suitable type of Ethernet network, for example; via telecommunications/telephony networks such as analog voice networks or digital fiber communications networks; via storage area networks such as Fibre Channel SANs, or via any other suitable type of network and/or protocol.
Input/output devices 1050 may, in some embodiments, include one or more display terminals, keyboards, keypads, touchpads, scanning devices, voice or optical recognition devices, multi-touch screens, or any other devices suitable for entering or retrieving data by one or more computer system 1000. Multiple input/output devices 1050 may be present in computer system 1000 or may be distributed on various nodes of computer system 1000. In some embodiments, similar input/output devices may be separate from computer system 1000 and may interact with one or more nodes of computer system 1000 through a wired or wireless connection, such as over network interface 1040.
Memory 1020 may include program instructions 1025, configured to implement embodiments of a layout-preserved text generation method as described herein, and data storage 1035, comprising various data accessible by program instructions 1025. In one embodiment, program instructions 1025 may include software elements of a method illustrated in the above Figures. Data storage 1035 may include data that may be used in embodiments described herein. In other embodiments, other or different software elements and/or data may be included.
Those skilled in the art will appreciate that computer system 1000 is merely illustrative and is not intended to limit the scope of a layout-preserved text generation method as described herein. In particular, the computer system and devices may include any combination of hardware or software that can perform the indicated functions, including computers, network devices, internet appliances, PDAs, wireless phones, pagers, etc. Computer system 1000 may also be connected to other devices that are not illustrated, or instead may operate as a stand-alone system. In addition, the functionality provided by the illustrated components may in some embodiments be combined in fewer components or distributed in additional components. Similarly, in some embodiments, the functionality of some of the illustrated components may not be provided and/or other additional functionality may be available.
Those skilled in the art will also appreciate that, while various items are illustrated as being stored in memory or on storage while being used, these items or portions of them may be transferred between memory and other storage devices for purposes of memory management and data integrity. Alternatively, in other embodiments some or all of the software components may execute in memory on another device and communicate with the illustrated computer system via inter-computer communication. Some or all of the system components or data structures may also be stored (e.g., as instructions or structured data) on a computer-accessible medium or a portable article to be read by an appropriate drive, various examples of which are described above. In some embodiments, instructions stored on a computer-accessible medium separate from computer system 1000 may be transmitted to computer system 1000 via transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as a network and/or a wireless link. Various embodiments may further include receiving, sending or storing instructions and/or data implemented in accordance with the foregoing description upon a computer-accessible medium. Accordingly, the present invention may be practiced with other computer system configurations. In some embodiments, portions of the techniques described herein (e.g., analyzing analytics data) may be hosted in a cloud computing infrastructure.
Various embodiments may further include receiving, sending or storing instructions and/or data implemented in accordance with the foregoing description upon a computer-accessible medium. Generally speaking, a computer-accessible/readable storage medium may include a non-transitory storage media such as magnetic or optical media, (e.g., disk or DVD/CD-ROM), volatile or non-volatile media such as RAM (e.g. SDRAM, DDR, RDRAM, SRAM, etc.), ROM, etc., as well as transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as network and/or a wireless link.
Various modifications and changes may be to the above technique made as would be obvious to a person skilled in the art having the benefit of this disclosure. It is intended that the invention embrace all such modifications and changes and, accordingly, the above description to be regarded in an illustrative rather than a restrictive sense. While the invention is described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the invention is not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention. Any headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to. As used throughout this application, the singular forms “a”, “an” and “the” include plural referents unless the content clearly indicates otherwise. Thus, for example, reference to “an element” includes a combination of two or more elements. Unless specifically stated otherwise, as apparent from the discussion, it is appreciated that throughout this specification discussions utilizing terms such as “processing”, “computing”, “calculating”, “determining” or the like refer to actions or processes of a specific apparatus, such as a special purpose computer or a similar special purpose electronic computing device. In the context of this specification, therefore, a special purpose computer or a similar special purpose electronic computing device is capable of manipulating or transforming signals, typically represented as physical electronic or magnetic quantities within memories, registers, or other information storage devices, transmission devices, or display devices of the special purpose computer or similar special purpose electronic computing device.