WO2018183306A1 - Generating keywords by associative context with input - Google Patents
Generating keywords by associative context with input Download PDFInfo
- Publication number
- WO2018183306A1 WO2018183306A1 PCT/US2018/024536 US2018024536W WO2018183306A1 WO 2018183306 A1 WO2018183306 A1 WO 2018183306A1 US 2018024536 W US2018024536 W US 2018024536W WO 2018183306 A1 WO2018183306 A1 WO 2018183306A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- inventory
- input
- text strings
- keywords
- word vectors
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0241—Advertisements
- G06Q30/0251—Targeted advertisements
- G06Q30/0255—Targeted advertisements based on user history
- G06Q30/0256—User search
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
Definitions
- the present disclosure relates generally to special-purpose machines that perform natural language processing, and more particularly to systems and methods for generating keywords.
- Many websites, search engines, and other content providers allow users to input text in a native language. In some instances, such websites or providers permit input regarding search terms or phrases. For example, online marketplaces, content providers, libraries, and the like may permit a user to search for a sale item, listing, informational content, entertainment content, or other online material. The provided search results may be related directly to the input word or words that the user enters into the system for the search. In addition, various websites can also allow advertisers and other online content providers to utilize the user input in order to provide a contemporaneous advertisement or other related material. An advertisement triggered by a search term can be provided as a result of a keyword that may be a function of the input search word or words.
- Keywords that are related to an advertisement or other secondary materials triggered by input words or terms are often found using analytics on historical data.
- advertisers submit lists of keywords that they would like to have used to set triggers for their advertisements.
- keywords can be within the titles of item listings promoted by the advertisement. While many techniques for finding keywords related to input words or terms have worked well in the past, improved ways of finding such keywords are desirable.
- FIG. 1 is a block diagram illustrating a networked system, according to some example embodiments.
- FIG. 2 is a system diagram illustrating example functional components of a keyword generation system, according to some example embodiments.
- FIG. 3 is a flow chart illustrating aspects of a method, according to some example embodiments.
- FIG. 4 illustrates an example user interface showing an example user input and resulting primary and secondary media content displayed simultaneously, according to some example embodiments.
- FIG. 5 shows an example output of calculated cosine similarities for words, according to some example embodiments.
- FIG. 6 is a block diagram illustrating an example of a software architecture that may be installed on a machine, according to some example embodiments.
- FIG. 7 illustrates a diagrammatic representation of a machine, in the form of a computer system, within which a set of instructions may be executed for causing the machine to perform any one or more of the
- a keyword generation system receives a text string (e.g., any combination of letters, symbols, numbers, spaces, and punctuation) that may be a user input.
- the user input may be for a different purpose than for the keyword generation system.
- the user input may be for a search of an online website, database, or catalog, and the keyword generation system may generate one or more keywords that may be used to generate a targeted advertisement that is based on that user input.
- the targeted advertisement generated as a result of the one or more keywords may be presented to the user, such as on the same webpage. In one example, the targeted advertisement may be presented simultaneously with search results for the user input.
- the keyword generation system and methods generate keywords that appear in an associative context with other input words, such as a separate user input.
- the keyword generation system computes vectors relating to an associative correlation between the input words and a listing of some or all potential keywords.
- the listing of potential keywords may be, for example, some or all of keywords found in the titles of all listings for an online marketplace or inventory.
- the keyword generation system calculates cosine similarities with respect to the input words and some or all possible output keywords. One or more keywords having the highest cosine similarity are determined as a result.
- the keyword generation system and methods may further include creating revised inventory word vectors for some of the same text strings for which inventory word vectors were originally created, calculating cosine similarities between the input word vector and the revised inventory word vectors, and generating one or more updated keywords from the text strings.
- the one or more updated keywords may be from the text strings having revised inventory word vectors with the highest cosine similarities to the input word vector.
- the user input may be given by a user to access a primary media content.
- the system and methods may also include associating generated keywords with a secondary media content and presenting the secondary media content to the user.
- the primary media content may be a set of search results, and the secondary media content may be a targeted advertisement.
- the primary media content and the secondary media content may be presented to the user simultaneously, such as on the same webpage.
- the inventory items (also termed inventor ⁇ ' item listings herein) may be listings from an online marketplace, and the text strings from each of the plurality of inventory items may be from titles of the inventory items.
- Generating and determining keywords may also include weighing further factors in addition to the inventory word vectors with the highest cosine similarities to the input word vector, such that the word vector association is not the only keyword-generating factor or component.
- Accessing inventory items may include accessing all items available over a predetermined time period, such as several days, weeks, or months.
- Creating inventory word vectors may include reducing the text strings into words only, which may involve removing all special text characters and putting all letters of the words into lower case.
- FIG. 1 is a block diagram illustrating a networked system 100, according to some example embodiments.
- the networked system 100 includes a keyword generation system 102 in communication over a network 104 with network services 106A-C and one or more client devices 108.
- the keyword generation system 102 and network services 106A-C may be, or include, a machine such as a server or any other type of computing machine.
- One or more portions of the network 104 may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WW AN), a metropolitan area network (MAN), a portion of the Internet, a portion of the public switched telephone network (PSTN), a cellular telephone network, a wireless network, a Wi-Fi ® network, a WiMax network, another type of network, or a combination of two or more such networks,
- VPN virtual private network
- LAN local area network
- WLAN wireless LAN
- WAN wide area network
- WW AN wireless WAN
- MAN metropolitan area network
- PSTN public switched telephone network
- PSTN public switched telephone network
- the keyword generation system 102 may receive a text string and generate a keyword based on the text string.
- the text string may be a separate user input.
- the keyword generation system 102 may receive the text string from one of the network services 106A-C or from an external system or sendee in communication with the keyword generation system 102 over the network 104.
- the keyword generation system 102 may be located on the same device or subsystem as one or more of the network services 106A-C.
- the network service 106A provides a web search service that includes a web search engine to search for information related to search queries input by users via client devices 108 (e.g., using a browser or other client application 1 10).
- the network service 106 A may pass received search queries to the keyword generation system 102 prior to searching for information.
- the network service 106B provides a content publication service that receives submissions of content that includes text.
- the network service 106B may provide such text to the keyword generation system 102 prior to performing processing of such text.
- the network service 106C may be an online marketplace having a database or listing of inventory items. Other network services may also be possible in the alternative or in addition.
- the keyword generation system 102 Upon generating a keyword based on a text string such as a user input, the keyword generation system 102 communicates the keyword to at least one of the network services 106A-C or to an external service in communication with the keyword generation system 102 over the network 104.
- the client device 108 may also be referred to herein as a user device or a computing device.
- the client device 108 may comprise, but is not limited to, a mobile phone, desktop computer, laptop, portable digital assistant (PDA), smart phone, tablet, ultra-book, netbook, laptop, multi -processor system, microprocessor-based or programmable consumer electronic, game console, set- top box, computer in a vehicle, or any other communication device that a user may utilize to access the networked system 100.
- the client device 108 may comprise a display module (not shown) to display information (e.g., in the form of user interfaces).
- the client device 108 may comprise one or more of touch screens, accelerometers, gyroscopes, cameras, microphones, global positioning system (GPS) devices, and so forth.
- the client device 108 may be a device of a user that is used to perform search requests for various items and to view search results from the search requests.
- One or more users may interact with the client device 108 (e.g., a person, a machine, or other means of interacting with the client devi ce 108).
- the user may not be part of the system 00, but may interact with the system 100 via the client device 108 or other means.
- the user may provide input (e.g., touch screen input or alphanumeric input) to the client device 108 and the input may be communicated to other entities in the system 100 (e.g., network service 106A-C, keyword generation system 102, etc.) via the network 104.
- the other entities in the system 100 in response to receiving the input from the user, may communicate information to the client device 108 via the network 104 to be presented to the user. In this way, the user may interact with the various entities in the system 100 using the client device 108.
- the client device 108 may access the various data and
- client applications provided by other entities in the system 100 via a web client (e.g., a browser, such as the Internet Explorer® browser developed by Microsoft® Corporation of Redmond, Washington State) or one or more client applications 1 10.
- client applications 110 also referred to as "apps" such as, but not limited to, a web browser, messaging application, electronic mail (email) application, an e- commerce site application, a mapping or location application, media content viewing application, and the like.
- the one or more client applications 1 10 may be included in a given one of the client device 108, and configured to locally provide the user interface and at least some of the functionalities of the client application 1 10.
- the client application 1 10 may be configured to communicate with other entities in the system 100, on an as-needed basis, for data and/or processing capabilities not locally available (e.g., for processing search queries, to access location information, to authenticate a user, to verify a method of payment, access media content stored on a server, sync media content between the client device 108 and a server computer, etc.).
- one or more applications 1 10 may not be included in the client device 108, and then the client device 108 may use its web browser to access the one or more applications hosted on other entities in the system 100.
- Other entities may provide server- side functionality via the network 104 (e.g., the Internet or wide area network (WAN)) to the one or more client devices 108.
- the network 104 e.g., the Internet or wide area network (WAN)
- FIG. 2 is a system diagram illustrating example functional components of the keyword generation system 102, according to some example embodiments. It is noted that various functional components (e.g., modules, engines, and databases) that are not germane to conveying an understanding of the example embodiments may have been omitted from FIG. 2. A skilled artisan, however, will readily recognize that various additional functional components may be supported by the keyword generation system 102 to facilitate additional functionality that is not specifically described herein.
- various functional components e.g., modules, engines, and databases
- FIG. 2 is a system diagram illustrating example functional components of the keyword generation system 102, according to some example embodiments. It is noted that various functional components (e.g., modules, engines, and databases) that are not germane to conveying an understanding of the example embodiments may have been omitted from FIG. 2. A skilled artisan, however, will readily recognize that various additional functional components may be supported by the keyword generation system 102 to facilitate additional functionality that is not specifically described herein.
- the keyword generation system 102 includes an interface module 200, a vector creation module 202, a cosine similarity module 204, a keyword ranking module 206, and a data store 208. These functional components of the keyword generation system 102 are configured to communicate with each other (e.g., via a bus, shared memory, a switch, or APIs). Any one or more of the functional components illustrated in FIG. 2 and described herein may be implemented using hardware (e.g., a processor of a machine) or a combination of hardware and software. For example, any one of the components described herein may configure a processor to perform the operations described herein for that component.
- any two or more of these components may be combined into a single component, and the functions described herein for a single component may be subdivided among multiple components.
- any of the functional components illustrated in FIG. 2 may be implemented together or separately within a single machine, database, or device or may be distributed across multiple machines, databases, or devices.
- the interface module 200 includes one or more APIs that facilitate communication (e.g., an exchange of data) between the keyword generation system 102 and the network services 106A-C as well as external systems and services.
- the interface module 200 may receive requests (e.g., requests to generate a keyword based on a user input) from the network seivices 106A-C, and communicate appropriate responses (e.g., generated keywords) to the network services 106A-C.
- the interface module 200 may access inventory items from a separate source, such as an online marketplace having listed inventory items, for example.
- the interface module 200 may also receive a user input, such as from the online marketplace or another source.
- the interface module 200 may also return resulting keyword(s) and/or secondary media content to the online marketplace or another provider.
- the vector creation module 202 may also include one or more
- the vector creation module 202 may be used to create word vectors (also known as word embeddings) from both the inventory items and separate user inputs, such as search queries submitted by a user.
- the vector creation module 202 may create inventory word vectors for existing and known inventory items in advance. These inventory word vectors are stored for later use and calculations by other system components, such as the cosine similarity module 204.
- a recurrent neural network trains on words from inventory items, and once trained may be used to generate keywords that appear in the same context as user inputs. In this manner, the keyword generation system 102 may have inventory word vectors stored and ready for use when user inputs are later received.
- the vector creation module 202 may also create input word vectors from the received user inputs. Various aspects regarding word vector creation are provided in greater detail below.
- the cosine similarity module 204 may also include one or more
- the cosine similarity module 204 may calculate cosine similarities between a given input word vector and some or all of the various inventory word vectors.
- the cosine similarity module 204 may- output raw numbers or data for all of the various calculated cosine similarities. The output may be provided to a different module or component, such as a keyword ranking module 206.
- the keyword ranking module 206 may accept data (e.g., cosine similarities) calculated by the cosine similarity module 204, and may use this data to rank the various cosine similarities or ratings between the input word and the various inventory.
- the data store 208 includes a computer-readable storage device to store data related to the functioning of the keyword generation system 102.
- the data store 208 may serve as storage (e.g., a cache) for inventory items at various times, created inventory word vectors, user inputs, input word vectors, calculated cosine similarities, generated keywords resulting from various user inputs, or any combination thereof.
- FIG. 3 is a flow chart illustrating aspects of a method 300, according to some example embodiments, for providing a keyword generation service.
- method 300 is described with respect to the networked system 100 of FIG. 1. It is to be understood that method 300 may be practiced with other system configurations in other embodiments.
- a machine- readable storage device may comprise instructions stored thereon that are executable by at least one processor to cause a machine to perform the operations of method 300.
- the keyword generation system 102 accesses inventory items over a network.
- the inventory items may include one or more text strings, such as in a title of an inventory item.
- Such inventory items may be, for example, some or ail listings on an online marketplace.
- the keyword generation system 102 may access inventor ⁇ ' items within a particular time window (e.g., within the last day, week, ten days, month, for specific dates, etc.).
- the keyword generation system 102 creates inventory word vectors for at least some of the text strings of the inventory items.
- the keyword generation system 102 may transform the letters of all words in the one or more text strings of the inventory items into lower-case letters.
- the keyword generation system 102 may reduce the text strings into words only. For example, the keyword generation system 102 may replace all special characters (e.g., "/", "%", etc.) with spaces.
- the result may be one or more cleaned-up text strings.
- the keyword generation system 102 uses the one or more cleaned-up text stings to compute word vectors (e.g., using open source tools or other tools for computing word vectors) for each word.
- the result is a mapping of a word to a vector.
- the keyword generation system 102 stores the computed inventor ⁇ ' word vectors in one or more data stores 208.
- the inventory word vectors are used to determine keywords in a similar context as a user input word, as explained below.
- the inventory word vectors are used to determine additional keywords in a similar context as keywords for an advertising campaign (e.g., to trigger an advertisement based on a user input).
- keywords for an advertising campaign e.g., to trigger an advertisement based on a user input.
- a manufacturer of shavers may want to run an advertisement to promote shavers.
- the keyword set for triggering the advertisement may be expanded to include additional keywords in a similar context as the keywords provided. For example, keywords such as "trimmers,” “blades,” other shaver manufacturer names, and so forth, may be generated using example embodiments described herein.
- an entity may be running a campaign for the movie
- a vector may be created for each word.
- the length of the vectors may be specified. For example:
- the keyword generation system 102 receives or accepts a user input including an input word.
- An input word may be a term or string, such as a text siring describe earlier (e.g., any combination of letters, symbols, numbers, spaces, and punctuation).
- a user may input a word or words into a search field on a website as shown in FIG. 4, FIG. 4 shows an example user interface 400 on a computing device (e.g., client device 108) with a search field 406 for a user input 402.
- the user has input the word "cookware" to search for pots and pans and the like.
- An advertisement or other media content 404 related to the user input may also be displayed to the user along with the search results 408 for the user input 402,
- the keyword generation system 102 may receive the user input 402 directly from the client device 108 or via a network service 106A-C or other system.
- the user input 402 may be input by the user to access a primary media content (e.g., search results related to "cookware").
- the keyword generation system 102 creates an input word vector for the input word from the user, as shown in operation 308.
- the input word vector is created as described above for computed word vectors for inventory items.
- the keyword generation system 102 calculates cosine similarities between the input word vector and the inventory word vectors.
- the output of the calculation may include raw numbers or data for all of the various calculated cosine similarities.
- the output may be a list of words that appear in the same context.
- the keyword generation system 102 analyzes the calculated cosine similarities to determine one or more keywords from the one or more text strings.
- the one or more keywords may be from the text strings having inventory word vectors with the highest cosine similarities to the input word vector.
- the keyword generation system 102 may sort the list of words that appear in the same context and choose a subset of the words (e.g., the top 10 words) that have the highest cosine similarity.
- the keyword generation system 102 may choose a subset of the words based on a predetermined threshold (e.g., only choose words above a predetermined amount of similarity).
- the subset of words that have the highest cosine similarity are the keywords determined to be the most similar in context to the input word.
- the one or more keywords have an associative context with the user input word based on the cosine similarities, rather than a context based on historical data analysis or direct manual listing by a secondary media content provider.
- the keyword generation system 102 may use a combination of total keywords which are determined from the one or more keywords and also keywords based on history data analysis and direct manual listing, or other methods.
- the keyword generation system 102 when the keyword generation system 102 is analyzing the calculated cosine similarities to determine one or more keywords, the keyword generation system 102 may weigh further factors in addition to the inventory word vectors with the highest cosine similarities to the input word vector.
- FIG. 5 shows an example output 500 of calculated cosine similarities for words 504 in the same context of an input word 502 "frozen.”
- Each word 504 is listed with an associated cosign distance 506.
- An example pseudo code, using the "Frozen” example, may comprise:
- the one or more keywords are used to produce a set of search results (e.g., a primary media content) in response to the input word by the user.
- the one or more keywords may be used to pull information associated with the one or more keywords to be displayed to the user as search results.
- the one or more keywords are used to trigger a secondary media content such as an advertisement (e.g., a targeted advertisement).
- a secondary media content such as an advertisement (e.g., a targeted advertisement).
- the keyword generation system may associate the one or more keywords with a secondary media content. These one or more keywords act as triggers for providing the secondary media content to be displayed to a user.
- a user may input a word 402 "cookware.”
- the word "cookware” may trigger a secondary media content, such as an advertisement 404 for an online store selling cookware.
- the results 408 for the search for "cookware” may be displayed simultaneously with an advertisement 404 for an online store selling cookware.
- Inventory word vectors may periodically be updated or revised.
- the keyword generation system 102 creates revised inventory word vectors for at least some of the same text strings for which inventory word vectors were originally created.
- the keyword generation system 102 may create revised inventory word vectors periodically, based on predetermined criteria, or other methods.
- the keyword generation system 102 may create revised inventory word vectors when an entity wishes to revise a particular advertisement campaign.
- the keyword generation system 102 may create revised inventory word vectors based on a date or time that the originally created (or previously created) inventor ⁇ - word vectors were created (e.g., every few hours, each day, one a week, etc.).
- the originally created or previously created inventory word vectors may be associated with a creation timestamp.
- the keyword generation system 102 may check the creation timestamp of the originally created inventory word vectors and create revised inventory word vectors if the creation timestamp is before a predetermine date or time,
- the keyword generation system 102 may then calculate cosine similarities between the input word vector and the revised inventory word vectors, as explained above.
- the keyword generation system 102 then analyzes the calculated cosine similarities to determine one or more updated keywords from the one or more text strings, as also explained above.
- the one or more updated keywords may be from the text strings having inventory word vectors with the highest cosine similarities to the input word vector.
- FIG. 6 is a block diagram 600 illustrating software architecture
- client devices 108, the keyword generation system 102, and network services 106A-C may be implemented using some or all of the elements of software architecture 602.
- FIG. 6 is merely a non- limiting example of a software architecture, and it will be appreciated that many other architectures can be implemented to facilitate the functionality described herein.
- the software architecture 602 is implemented by hardware such as machine 700 of FIG. 7 that includes processors 710, memory 730, and I/O components 750.
- the software architecture 602 can be conceptualized as a stack of layers where each layer may provide a particular functionality.
- the software architecture 602 includes layers such as an operating system 604, libraries 606, frameworks 608, and applications 610.
- the applications 610 invoke application programming interface (API) calls 612 through the software stack and receive messages 614 in response to the API calls 612, consistent with some
- the operating system 604 manages hardware resources and provides common services.
- the operating system 604 includes, for example, a kernel 620, sendees 622, and drivers 624.
- the kernel 620 acts as an abstraction layer between the hardware and the other software layers, consistent with some embodiments.
- the kernel 620 provides memory management, processor management (e.g., scheduling), component management, networking, and security settings, among other functionality.
- the services 622 can provide other common services for the other software layers.
- the drivers 624 are responsible for controlling or interfacing with the underlying hardware, according to some embodiments.
- the drivers 624 can include display drivers, camera drivers, BLUETOOTH 1 ⁇ or BLUETOOTH® Low Energy drivers, flash memory drivers, serial
- USB Universal Serial Bus
- WI-FI® drivers audio drivers
- power management drivers and so forth.
- the libraries 606 provide a low-level common infrastructure utilized by the applications 610.
- the libraries 606 can include system libraries 630 (e.g., C standard library) that can provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like.
- the libraries 606 can include API libraries 632 such as media libraries (e.g., libraries to support presentation and manipulation of various media formats such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), graphics libraries (e.g., an OpenGL framework used to render in two dimensions (2D) and three dimensions (3D) in graphic content on a display), database libraries (e.g., SQLite to provide various relational database functions), web libraries (e.g., WebKit to provide web browsing functionality), and the like.
- the libraries 606 can also include a wide variety of other libraries 634 to provide many other APIs to the applications 610.
- the frameworks 608 provide a high-level common infrastructure that can be utilized by the applications 610, according to some embodiments.
- the frameworks 608 provide various graphic user interface (GUI) functions, high-level resource management, high-level location services, and so forth.
- GUI graphic user interface
- the frameworks 608 can provide a broad spectrum of other APIs that can be utilized by the applications 610, some of which may be specific to a particular operating system 604 or platform.
- the applications 610 include a home application 650, a contacts application 652, a browser application 654, a book reader application 656, a location application 658, a media application 660, a messaging application 662, a game application 664, and a broad assortment of other applications such as third party applications 666 and 667,
- the applications 610 are programs that execute functions defined in the programs.
- Various programming languages can be employed to create one or more of the applications 610, structured in a variety of manners, such as object-oriented programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C or assembly language).
- the third party application 666 may be mobile software running on a mobile operating system such as IOSTM, ANDROIDTM, WINDOWS® Phone, or another mobile operating system.
- the third party application 666 can invoke the API calls 612 provided by the operating system 604 to facilitate functionality described herein.
- some embodiments may particularly include a browser application 654 or other application that allows a user to search for media content. In certain embodiments, this may be a stand-alone application that operates to manage communications with a server system such as the keyword generation system 102 or network services 106A-C.
- this functionality may be integrated with another application such as a messaging application 662, location application 658, and so forth.
- Browser application 654 may request and display various media content items and may provide the capability for a user to input data (e.g., an input word) related to media content items via a touch interface, keyboard, or using a camera device of machine 700, communication with the keyword generation system 102 via I/O components 750, and receipt and storage of media content items in memory 730, Presentation of media content items and user inputs associated with media content items may be managed by browser application 654 using different frameworks 608, library 606 elements, or operating system 604 elements operating on a machine 700.
- FIG. 7 is a block diagram illustrating components of a machine
- FIG. 7 shows a diagrammatic representation of the machine 700 in the example form of a computer system, within which instructions 716 (e.g., software, a program, an application 610, an applet, an app, or other executable code) for causing the machine 700 to perform any one or more of the methodologies discussed herein can be executed.
- instructions 716 e.g., software, a program, an application 610, an applet, an app, or other executable code
- the machine 700 operates as a standalone device or can be coupled (e.g., networked) to other machines.
- the machine 700 may operate in the capaci ty of the keyword generation system 102, network services 106A-C, or related server or system, or a client device 108 in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
- the machine 700 can comprise, but not be limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a personal digital assistant (PDA), an entertainment media system, a j 1 cellular telephone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing the instructions 716, sequentially or otherwise, that specify actions to be taken by the machine 700.
- the term "machine” shall also be taken to include a collection of machines 700 that individually or jointly execute the instructions 716 to perform any one or more of the methodologies discussed herein.
- the machine 700 comprises processors
- processors 710 e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio-frequency integrated circuit (RFIC), another processor, or any suitable combination thereof
- processors 710 include, for example, a processor 712 and a processor 714 that may execute the instructions 716.
- the term "processor” is intended to include multi-core processors 710 that may comprise two or more independent processors 712, 714 (also referred to as "cores”) that can execute instructions 716
- FIG. 7 shows multiple processors 710
- the machine 700 may include a single processor 710 with a single core, a single processor 710 with multiple cores (e.g., a multi-core processor 710), multiple processors 712, 714 with a single core, multiple processors 712, 714 with multiples cores, or any combination thereof.
- the memory 730 comprises a main memory 732, a static memory
- the storage unit 736 can include a machine- readable medium 738 on which are stored the instructions 716 embodying any one or more of the methodologies or functions described herein.
- the instructions 716 can also reside, completely or at least partially, within the main memory 732, within the static memory 734, within at least one of the processors 710 (e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by the machine 700, Accordingly, in various embodiments, the main memory 732, the static memory 734, and the processors 710 are considered machine-readable media 738.
- the term "memory” refers to a machine-readable medium 738 able to store data temporarily or permanently and may be taken to include, but not be limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, and cache memory. While the machine-readable medium 738 is shown, in an example embodiment, to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store the instructions 716.
- machine-readable medium shall also be taken to include any medium, or combination of multiple media, that is capable of storing instructions (e.g., instructions 716) for execution by a machine (e.g., machine 700), such that the instructions 716, when executed by one or more processors of the machine 700 (e.g., processors 710), cause the machine 700 to perform any one or more of the methodologies described herein.
- a “machine-readable medium” refers to a single storage apparatus or device, as well as “cloud-based” storage systems or storage networks that include multiple storage apparatus or devices.
- machine-readable medium shall accordingly be taken to include, but not be limited to, one or more data repositories in the form of a solid-state memory (e.g., flash memory), an optical medium, a magnetic medium, other non-volatile memory (e.g., erasable programmable read-only memory
- machine-readable medium specifically excludes non-statutor signals per se.
- the TO components 750 include a wide variety of components to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on. In general, it will be appreciated that the I/O components 750 can include many other components that are not shown in FIG. 7. The I/O components 750 are grouped according to
- the I/O components 750 include output components 752 and input components 754.
- the output components 752 include visual components (e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), acoustic components (e.g., speakers), haptic components (e.g., a vibratory motor), other signal generators, and so forth.
- a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)
- acoustic components e.g., speakers
- haptic components e.g., a vibratory motor
- the input components 754 include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, a photo-optical keyboard, or other alphanumeric input components), point- based input components (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or other pointing instruments), tactile input components (e.g., a phy sical button, a touch screen that provides location and force of touches or touch gestures, or other tactile input components), audio input components (e.g., a microphone), and the like.
- alphanumeric input components e.g., a keyboard, a touch screen configured to receive alphanumeric input, a photo-optical keyboard, or other alphanumeric input components
- point- based input components e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or other pointing instruments
- tactile input components e.g., a
- the I/O components 750 include biometric components 756, motion components 758, environmental components 760, or position components 762, among a wide array of other components.
- the biometric components 756 include components to detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body gestures, or eye tracking), measure biosignals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identify a person (e.g., voice identif cation, retinal identification, facial identification, fingerprint identification, or electroencephalogram based identification), and the like.
- the motion components 758 include acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components (e.g., gyroscope), and so forth.
- the environmental components 760 include, for example, illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensor components (e.g., machine olfaction detection sensors, gas detection sensors to detect concentrations of hazardous gases for safety or to measure pollutants in the atmosphere), or other components that may provide indications, measurements, or signals corresponding to a surrounding physical environment.
- illumination sensor components e.g., photometer
- temperature sensor components e.g., one or more thermometers that detect ambient temperature
- humidity sensor components e.g., pressure sensor components (
- the position components 762 include location sensor components (e.g., a Global Positioning System (GPS) receiver component), altitude sensor components (e.g., altimeters or barometers that detect air pressure from which altitude may be derived), orientation sensor components (e.g., magnetometers), and the like.
- location sensor components e.g., a Global Positioning System (GPS) receiver component
- altitude sensor components e.g., altimeters or barometers that detect air pressure from which altitude may be derived
- orientation sensor components e.g., magnetometers
- the I/O components 750 may include communication components 764 operable to couple the machine 700 to a network 780 or devices 770 via a coupling 782 and a coupling 772, respectively.
- the communication components 764 include a network interface component or another suitable device to interface with the network 780.
- communication components 764 include wired communication components, wireless
- cellular communication components cellular communication components, near field com muni cation (NFC) components, BLUETOOTH® components (e.g.,
- the devices 770 may be another machine 700 or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a Universal Serial Bus (USB)).
- peripheral devices e.g., a peripheral device coupled via a Universal Serial Bus (USB)
- the communication components are configured to communicate with each other.
- the communication components are configured to communicate with each other.
- the communication components 764 detect identifiers or include components operable to detect identifiers.
- the communication components 764 include radio frequency identification (RFID) tag reader components, NFC smart tag detection components, optical reader components (e.g., an optical sensor to detect a one- dimensional bar codes such as a Universal Product Code (UPC) bar code, multidimensional bar codes such as a Quick Response (QR) code, Aztec Code, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, Uniform Commercial Code Reduced Space Symbol ogy (UCC RSS)-2D bar codes, and other optical codes), acoustic detection components (e.g., microphones to identify tagged audio signals), or any suitable combination thereof.
- RFID radio frequency identification
- NFC smart tag detection components e.g., NFC smart tag detection components
- optical reader components e.g., an optical sensor to detect a one- dimensional bar codes such as a Universal Product Code (UPC) bar code, multidimensional bar codes such as a Quick Response (Q
- IP Internet Protocol
- WI-FI® Wireless Fidelity
- NFC beacon a variety of information can be derived via the communication components 764, such as location via Internet Protocol (IP) geo-location, location via WI-FI® signal tri angulation, location via detecting a BLUETOOTH® or NFC beacon signal that may indicate a particular location, and so forth.
- IP Internet Protocol
- one or more portions of the network 780 can be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WW AN), a metropolitan area network (MAN), the Internet, a portion of the Internet, a portion of the public switched telephone network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, a WI-FI® network, another type of network, or a combination of two or more such networks.
- VPN virtual private network
- LAN local area network
- WLAN wireless LAN
- WAN wide area network
- WW AN wireless WAN
- MAN metropolitan area network
- PSTN public switched telephone network
- POTS plain old telephone service
- the network 780 or a portion of the network 780 may include a wireless or cellular network
- the coupling 782 may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile communications (GSM) connection, or another type of cellular or wireless coupling.
- the coupling 782 can implement any of a variety of types of data transfer technology, such as Single Carrier Radio Transmission Technology (lxRTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Sen/ice (GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE) technology, third Generation Partnership Project (3 GPP) including 3G, fourth generation wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Worldwide
- WiMAX Microwave Access
- LTE Long Term Evolution
- the instructions 716 are transmitted or received over the network 780 using a transmission medium via a network interface device (e.g., a network interface component included in the
- the instructions 716 are transmitted or received using a transmission medium via the coupling 772 (e.g., a peer-to-peer coupling) to the devices 770.
- the term "transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying the instructions 716 for execution by the machine 700, and includes digital or analog com muni cations signals or other intangible media to facilitate communication of such software.
- machine-readable medium 738 is non-transitory
- machine-readable medium 738 (in other words, not having any transitory signals) in that it does not embody a propagating signal.
- labeling the machine-readable medium 738 "non- transitory" should not be construed to mean that the medium is incapable of movement; the medium 738 should be considered as being transportable from one physical location to another. Additionally, since the machine-readable medium 738 is tangible, the medium 738 may be considered to be a machine- readable device.
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Theoretical Computer Science (AREA)
- Development Economics (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Economics (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Game Theory and Decision Science (AREA)
- Entrepreneurship & Innovation (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Operations Research (AREA)
- Algebra (AREA)
- Software Systems (AREA)
Abstract
Systems and methods are provided for accessing a plurality of inventory item listings accessible over a network, wherein each of the plurality of inventory item listings includes one or more text strings, and creating inventory word vectors for at least some of the text strings of the plurality of inventory item listings. The systems and methods further provide for receiving a user input including an input word, wherein the user input is input by a user to access a primary media content, creating an input word vector for the input word, calculating cosine similarities between the input word vector and the inventory word vectors, and analyzing the calculated cosine similarities to determine one or more keywords from the one or more text strings, wherein the one or more keywords are from the text strings having inventory word vectors with the highest cosine similarities to the input word vector.
Description
GENERATING KEYWORDS BY ASSOCIATIVE CONTEXT WITH INPUT
CLAIM OF PRIORITY
[0001] This application claims the benefit of priority of U.S. Application
Serial Number 15/472,982, filed March 29, 2017, which is hereby incorporated by reference in its entirety.
TECHNICAL FIELD
[0002] The present disclosure relates generally to special-purpose machines that perform natural language processing, and more particularly to systems and methods for generating keywords.
BACKGROUND
[0003] Many websites, search engines, and other content providers allow users to input text in a native language. In some instances, such websites or providers permit input regarding search terms or phrases. For example, online marketplaces, content providers, libraries, and the like may permit a user to search for a sale item, listing, informational content, entertainment content, or other online material. The provided search results may be related directly to the input word or words that the user enters into the system for the search. In addition, various websites can also allow advertisers and other online content providers to utilize the user input in order to provide a contemporaneous advertisement or other related material. An advertisement triggered by a search term can be provided as a result of a keyword that may be a function of the input search word or words.
[0004] Keywords that are related to an advertisement or other secondary materials triggered by input words or terms are often found using analytics on historical data. In some instances, advertisers submit lists of keywords that they would like to have used to set triggers for their advertisements. In some cases, keywords can be within the titles of item listings promoted by the advertisement. While many techniques for finding keywords related to input words or terms
have worked well in the past, improved ways of finding such keywords are desirable.
BRIEF DESCRIPTION OF THE DRAWINGS
[0005] Various embodiments of the present disclosure regarding keyword generation systems and methods are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like reference numbers indicate similar elements.
[0006] FIG. 1 is a block diagram illustrating a networked system, according to some example embodiments.
[0007] FIG. 2 is a system diagram illustrating example functional components of a keyword generation system, according to some example embodiments.
[0008] FIG. 3 is a flow chart illustrating aspects of a method, according to some example embodiments.
[0009] FIG. 4 illustrates an example user interface showing an example user input and resulting primary and secondary media content displayed simultaneously, according to some example embodiments.
[0010] FIG. 5 shows an example output of calculated cosine similarities for words, according to some example embodiments.
[0011] FIG. 6 is a block diagram illustrating an example of a software architecture that may be installed on a machine, according to some example embodiments.
[0012] FIG. 7 illustrates a diagrammatic representation of a machine, in the form of a computer system, within which a set of instructions may be executed for causing the machine to perform any one or more of the
methodologies discussed herein, according to an example embodiment.
DETAILED DESCRIPTION
[0013] Aspects of the present disclosure include a system and methods for generating keywords. In example embodiments, a keyword generation system receives a text string (e.g., any combination of letters, symbols, numbers, spaces, and punctuation) that may be a user input. The user input may be for a different purpose than for the keyword generation system. For example, the user input may be for a search of an online website, database, or catalog, and the keyword generation system may generate one or more keywords that may be
used to generate a targeted advertisement that is based on that user input. The targeted advertisement generated as a result of the one or more keywords may be presented to the user, such as on the same webpage. In one example, the targeted advertisement may be presented simultaneously with search results for the user input.
[0014] In general, the keyword generation system and methods generate keywords that appear in an associative context with other input words, such as a separate user input. In one example, the keyword generation system computes vectors relating to an associative correlation between the input words and a listing of some or all potential keywords. The listing of potential keywords may be, for example, some or all of keywords found in the titles of all listings for an online marketplace or inventory. Once the keyword generation system computes the vectors, the keyword generation system calculates cosine similarities with respect to the input words and some or all possible output keywords. One or more keywords having the highest cosine similarity are determined as a result.
[0015] The keyword generation system and methods may further include creating revised inventory word vectors for some of the same text strings for which inventory word vectors were originally created, calculating cosine similarities between the input word vector and the revised inventory word vectors, and generating one or more updated keywords from the text strings. The one or more updated keywords may be from the text strings having revised inventory word vectors with the highest cosine similarities to the input word vector.
[0016] In some embodiments, the user input may be given by a user to access a primary media content. The system and methods may also include associating generated keywords with a secondary media content and presenting the secondary media content to the user. The primary media content may be a set of search results, and the secondary media content may be a targeted advertisement. The primary media content and the secondary media content may be presented to the user simultaneously, such as on the same webpage. The inventory items (also termed inventor}' item listings herein) may be listings from an online marketplace, and the text strings from each of the plurality of inventory items may be from titles of the inventory items.
[0017] Generating and determining keywords may also include weighing further factors in addition to the inventory word vectors with the highest cosine similarities to the input word vector, such that the word vector association is not the only keyword-generating factor or component. Accessing inventory items may include accessing all items available over a predetermined time period, such as several days, weeks, or months. Creating inventory word vectors may include reducing the text strings into words only, which may involve removing all special text characters and putting all letters of the words into lower case.
[0018] FIG. 1 is a block diagram illustrating a networked system 100, according to some example embodiments. The networked system 100 includes a keyword generation system 102 in communication over a network 104 with network services 106A-C and one or more client devices 108. As discussed below, the keyword generation system 102 and network services 106A-C may be, or include, a machine such as a server or any other type of computing machine.
[0019] The keyword generation system 102, the network services 106A-
C, and the client devices 108 may communicate over the network 104 via one or more Application Programming Interfaces (APIs). One or more portions of the network 104 may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WW AN), a metropolitan area network (MAN), a portion of the Internet, a portion of the public switched telephone network (PSTN), a cellular telephone network, a wireless network, a Wi-Fi® network, a WiMax network, another type of network, or a combination of two or more such networks,
[0020] The keyword generation system 102 may receive a text string and generate a keyword based on the text string. In one example, the text string may be a separate user input. The keyword generation system 102 may receive the text string from one of the network services 106A-C or from an external system or sendee in communication with the keyword generation system 102 over the network 104. In some arrangements, the keyword generation system 102 may be located on the same device or subsystem as one or more of the network services 106A-C. In one example, the network service 106A provides a web search
service that includes a web search engine to search for information related to search queries input by users via client devices 108 (e.g., using a browser or other client application 1 10). In this example, the network service 106 A may pass received search queries to the keyword generation system 102 prior to searching for information. In another example, the network service 106B provides a content publication service that receives submissions of content that includes text. In this example, the network service 106B may provide such text to the keyword generation system 102 prior to performing processing of such text. In another example, the network service 106C may be an online marketplace having a database or listing of inventory items. Other network services may also be possible in the alternative or in addition.
[0021] Upon generating a keyword based on a text string such as a user input, the keyword generation system 102 communicates the keyword to at least one of the network services 106A-C or to an external service in communication with the keyword generation system 102 over the network 104.
[0022] The client device 108 may also be referred to herein as a user device or a computing device. The client device 108 may comprise, but is not limited to, a mobile phone, desktop computer, laptop, portable digital assistant (PDA), smart phone, tablet, ultra-book, netbook, laptop, multi -processor system, microprocessor-based or programmable consumer electronic, game console, set- top box, computer in a vehicle, or any other communication device that a user may utilize to access the networked system 100. In some embodiments, the client device 108 may comprise a display module (not shown) to display information (e.g., in the form of user interfaces). In further embodiments, the client device 108 may comprise one or more of touch screens, accelerometers, gyroscopes, cameras, microphones, global positioning system (GPS) devices, and so forth. The client device 108 may be a device of a user that is used to perform search requests for various items and to view search results from the search requests.
[0023] One or more users may interact with the client device 108 (e.g., a person, a machine, or other means of interacting with the client devi ce 108). In example embodiments, the user may not be part of the system 00, but may interact with the system 100 via the client device 108 or other means. For
instance, the user may provide input (e.g., touch screen input or alphanumeric input) to the client device 108 and the input may be communicated to other entities in the system 100 (e.g., network service 106A-C, keyword generation system 102, etc.) via the network 104. In this instance, the other entities in the system 100, in response to receiving the input from the user, may communicate information to the client device 108 via the network 104 to be presented to the user. In this way, the user may interact with the various entities in the system 100 using the client device 108.
[0024] The client device 108 may access the various data and
applications provided by other entities in the system 100 via a web client (e.g., a browser, such as the Internet Explorer® browser developed by Microsoft® Corporation of Redmond, Washington State) or one or more client applications 1 10. As described above, the client device 108 may include one or more client applications 110 (also referred to as "apps") such as, but not limited to, a web browser, messaging application, electronic mail (email) application, an e- commerce site application, a mapping or location application, media content viewing application, and the like.
[0025] In some embodiments, the one or more client applications 1 10 may be included in a given one of the client device 108, and configured to locally provide the user interface and at least some of the functionalities of the client application 1 10. The client application 1 10 may be configured to communicate with other entities in the system 100, on an as-needed basis, for data and/or processing capabilities not locally available (e.g., for processing search queries, to access location information, to authenticate a user, to verify a method of payment, access media content stored on a server, sync media content between the client device 108 and a server computer, etc.). Conversely, one or more applications 1 10 may not be included in the client device 108, and then the client device 108 may use its web browser to access the one or more applications hosted on other entities in the system 100. Other entities may provide server- side functionality via the network 104 (e.g., the Internet or wide area network (WAN)) to the one or more client devices 108.
[0026] FIG. 2 is a system diagram illustrating example functional components of the keyword generation system 102, according to some example
embodiments. It is noted that various functional components (e.g., modules, engines, and databases) that are not germane to conveying an understanding of the example embodiments may have been omitted from FIG. 2. A skilled artisan, however, will readily recognize that various additional functional components may be supported by the keyword generation system 102 to facilitate additional functionality that is not specifically described herein.
[0027] As shown in FIG. 2, the keyword generation system 102 includes an interface module 200, a vector creation module 202, a cosine similarity module 204, a keyword ranking module 206, and a data store 208. These functional components of the keyword generation system 102 are configured to communicate with each other (e.g., via a bus, shared memory, a switch, or APIs). Any one or more of the functional components illustrated in FIG. 2 and described herein may be implemented using hardware (e.g., a processor of a machine) or a combination of hardware and software. For example, any one of the components described herein may configure a processor to perform the operations described herein for that component. Moreover, any two or more of these components may be combined into a single component, and the functions described herein for a single component may be subdivided among multiple components. Furthermore, according to various example embodiments, any of the functional components illustrated in FIG. 2 may be implemented together or separately within a single machine, database, or device or may be distributed across multiple machines, databases, or devices.
[0028] The interface module 200 includes one or more APIs that facilitate communication (e.g., an exchange of data) between the keyword generation system 102 and the network services 106A-C as well as external systems and services. The interface module 200 may receive requests (e.g., requests to generate a keyword based on a user input) from the network seivices 106A-C, and communicate appropriate responses (e.g., generated keywords) to the network services 106A-C. The interface module 200 may access inventory items from a separate source, such as an online marketplace having listed inventory items, for example. The interface module 200 may also receive a user input, such as from the online marketplace or another source. The interface
module 200 may also return resulting keyword(s) and/or secondary media content to the online marketplace or another provider.
[0029] The vector creation module 202 may also include one or more
APIs that facilitate communication between various modules and components within the keyword generation system 102. The vector creation module 202 may be used to create word vectors (also known as word embeddings) from both the inventory items and separate user inputs, such as search queries submitted by a user.
[0030] In various embodiments, the vector creation module 202 may create inventory word vectors for existing and known inventory items in advance. These inventory word vectors are stored for later use and calculations by other system components, such as the cosine similarity module 204. In one example, a recurrent neural network trains on words from inventory items, and once trained may be used to generate keywords that appear in the same context as user inputs. In this manner, the keyword generation system 102 may have inventory word vectors stored and ready for use when user inputs are later received.
[0031] The vector creation module 202 may also create input word vectors from the received user inputs. Various aspects regarding word vector creation are provided in greater detail below.
[0032] The cosine similarity module 204 may also include one or more
APIs that facilitate communication between various modules and components within the keyword generation system 102. The cosine similarity module 204 may calculate cosine similarities between a given input word vector and some or all of the various inventory word vectors. The cosine similarity module 204 may- output raw numbers or data for all of the various calculated cosine similarities. The output may be provided to a different module or component, such as a keyword ranking module 206.
[0033] The keyword ranking module 206 may accept data (e.g., cosine similarities) calculated by the cosine similarity module 204, and may use this data to rank the various cosine similarities or ratings between the input word and the various inventory.
[0034] The data store 208 includes a computer-readable storage device to store data related to the functioning of the keyword generation system 102. For example, the data store 208 may serve as storage (e.g., a cache) for inventory items at various times, created inventory word vectors, user inputs, input word vectors, calculated cosine similarities, generated keywords resulting from various user inputs, or any combination thereof.
[0035] FIG. 3 is a flow chart illustrating aspects of a method 300, according to some example embodiments, for providing a keyword generation service. For illustrative purposes, method 300 is described with respect to the networked system 100 of FIG. 1. It is to be understood that method 300 may be practiced with other system configurations in other embodiments. A machine- readable storage device may comprise instructions stored thereon that are executable by at least one processor to cause a machine to perform the operations of method 300.
[0036] At operation 302, the keyword generation system 102 (e.g., via a server computer or other computing device) accesses inventory items over a network. As explained above, the inventory items may include one or more text strings, such as in a title of an inventory item. Such inventory items may be, for example, some or ail listings on an online marketplace. In one example, the keyword generation system 102 may access inventor}' items within a particular time window (e.g., within the last day, week, ten days, month, for specific dates, etc.).
[0037] At operation 304, the keyword generation system 102 creates inventory word vectors for at least some of the text strings of the inventory items. In one example, the keyword generation system 102 may transform the letters of all words in the one or more text strings of the inventory items into lower-case letters. In another example, the keyword generation system 102 may reduce the text strings into words only. For example, the keyword generation system 102 may replace all special characters (e.g., "/", "%", etc.) with spaces. The result may be one or more cleaned-up text strings. The keyword generation system 102 then uses the one or more cleaned-up text stings to compute word vectors (e.g., using open source tools or other tools for computing word vectors) for each word. The result is a mapping of a word to a vector. The keyword
generation system 102 stores the computed inventor}' word vectors in one or more data stores 208. In one example, the inventory word vectors are used to determine keywords in a similar context as a user input word, as explained below.
[0038] In another example, the inventory word vectors are used to determine additional keywords in a similar context as keywords for an advertising campaign (e.g., to trigger an advertisement based on a user input). For example, a manufacturer of shavers may want to run an advertisement to promote shavers. Besides keywords in items corresponding to target items and a list of keywords provided by the manufacturer, the keyword set for triggering the advertisement may be expanded to include additional keywords in a similar context as the keywords provided. For example, keywords such as "trimmers," "blades," other shaver manufacturer names, and so forth, may be generated using example embodiments described herein.
[0039] For instance, an entity may be running a campaign for the movie
"Frozen." Using synonyms to get keywords similar in context to "Frozen" would result in words such as "snow," "ice," and the like. Instead, the results should be keywords such as "Olaf," "Elsa," and so forth. Keywords for other children's movies, such as "Pinocchio" and "Cinderella," may also be useful. In one example, a vector may be created for each word. In another example, the length of the vectors may be specified. For example:
Vector size 3
- Elsa: [1 2 1 ]
- Olaf: [10 19 11]
[0040] At operation 306, the keyword generation system 102 receives or accepts a user input including an input word. An input word may be a term or string, such as a text siring describe earlier (e.g., any combination of letters, symbols, numbers, spaces, and punctuation). For example, a user may input a word or words into a search field on a website as shown in FIG. 4, FIG. 4 shows an example user interface 400 on a computing device (e.g., client device 108) with a search field 406 for a user input 402. In this example, the user has input the word "cookware" to search for pots and pans and the like. An advertisement or other media content 404 related to the user input may also be displayed to the
user along with the search results 408 for the user input 402, The keyword generation system 102 may receive the user input 402 directly from the client device 108 or via a network service 106A-C or other system. The user input 402 may be input by the user to access a primary media content (e.g., search results related to "cookware").
[0041] Referring again to FIG. 3, the keyword generation system 102 creates an input word vector for the input word from the user, as shown in operation 308. The input word vector is created as described above for computed word vectors for inventory items.
[0042] In operation 310, the keyword generation system 102 calculates cosine similarities between the input word vector and the inventory word vectors. The output of the calculation may include raw numbers or data for all of the various calculated cosine similarities. For example, the output may be a list of words that appear in the same context.
[0043] Two words will be similar if their cosign similarity is higher than with other words. Using the example above related to the movie "Frozen," the cosine similarity for Elsa and Olaf may be calculated by:
- Dot product V ector(El sa), V ector(01af)/product of magnitude of vectors
- Cosine similarity = 1 * 10 + 2 * 19 + 1 * 11/(12 + 22 + I2)0·5 *(102 + 192 + I I2) 0·5
[0044] In operation 312, the keyword generation system 102 analyzes the calculated cosine similarities to determine one or more keywords from the one or more text strings. The one or more keywords may be from the text strings having inventory word vectors with the highest cosine similarities to the input word vector. For example, the keyword generation system 102 may sort the list of words that appear in the same context and choose a subset of the words (e.g., the top 10 words) that have the highest cosine similarity. In another example, the keyword generation system 102 may choose a subset of the words based on a predetermined threshold (e.g., only choose words above a predetermined amount of similarity). The subset of words that have the highest cosine similarity are the keywords determined to be the most similar in context to the input word.
|0045| In one example, the one or more keywords have an associative context with the user input word based on the cosine similarities, rather than a
context based on historical data analysis or direct manual listing by a secondary media content provider. In another example, the keyword generation system 102 may use a combination of total keywords which are determined from the one or more keywords and also keywords based on history data analysis and direct manual listing, or other methods.
[0046] In one example, when the keyword generation system 102 is analyzing the calculated cosine similarities to determine one or more keywords, the keyword generation system 102 may weigh further factors in addition to the inventory word vectors with the highest cosine similarities to the input word vector.
[0047] FIG. 5 shows an example output 500 of calculated cosine similarities for words 504 in the same context of an input word 502 "frozen."
Each word 504 is listed with an associated cosign distance 506.
[0048] An example pseudo code, using the "Frozen" example, may comprise:
Input: Mapping[word] H> vectors
Output: List of words that appear in same context
Compute cosine similarity ("Frozen" with all words in Mapping) Sort all cosine similarities for "Frozen" with all word in Mapping Pick the top 10 words that have highest cosine similarity
These top 10 words are the words most similar in context to "Frozen" [0049] In one example, the one or more keywords are used to produce a set of search results (e.g., a primary media content) in response to the input word by the user. For example, the one or more keywords may be used to pull information associated with the one or more keywords to be displayed to the user as search results.
[0050] In another example, the one or more keywords are used to trigger a secondary media content such as an advertisement (e.g., a targeted
advertisement). For example, the keyword generation system may associate the one or more keywords with a secondary media content. These one or more keywords act as triggers for providing the secondary media content to be displayed to a user. Returning to FIG. 4 as an example, a user may input a word 402 "cookware." The word "cookware" may trigger a secondary media content,
such as an advertisement 404 for an online store selling cookware. The results 408 for the search for "cookware" may be displayed simultaneously with an advertisement 404 for an online store selling cookware.
[0051 ] Inventory word vectors may periodically be updated or revised.
For example, the time period of the inventory items may be changed, new inventory items may be added, and so forth. For example, the keyword generation system 102 creates revised inventory word vectors for at least some of the same text strings for which inventory word vectors were originally created. The keyword generation system 102 may create revised inventory word vectors periodically, based on predetermined criteria, or other methods. For example, the keyword generation system 102 may create revised inventory word vectors when an entity wishes to revise a particular advertisement campaign. In another example, the keyword generation system 102 may create revised inventory word vectors based on a date or time that the originally created (or previously created) inventor}- word vectors were created (e.g., every few hours, each day, one a week, etc.). For instance, the originally created or previously created inventory word vectors may be associated with a creation timestamp. When the keyword generation system 102 receives an input word, it may check the creation timestamp of the originally created inventory word vectors and create revised inventory word vectors if the creation timestamp is before a predetermine date or time,
[0052] The keyword generation system 102 may then calculate cosine similarities between the input word vector and the revised inventory word vectors, as explained above. The keyword generation system 102 then analyzes the calculated cosine similarities to determine one or more updated keywords from the one or more text strings, as also explained above. The one or more updated keywords may be from the text strings having inventory word vectors with the highest cosine similarities to the input word vector.
[0053] FIG. 6 is a block diagram 600 illustrating software architecture
602, which can be installed on any one or more of the devices described above. For example, in various embodiments, client devices 108, the keyword generation system 102, and network services 106A-C may be implemented using some or all of the elements of software architecture 602. FIG. 6 is merely a non-
limiting example of a software architecture, and it will be appreciated that many other architectures can be implemented to facilitate the functionality described herein. In various embodiments, the software architecture 602 is implemented by hardware such as machine 700 of FIG. 7 that includes processors 710, memory 730, and I/O components 750. In this example, the software architecture 602 can be conceptualized as a stack of layers where each layer may provide a particular functionality. For example, the software architecture 602 includes layers such as an operating system 604, libraries 606, frameworks 608, and applications 610. Operationally, the applications 610 invoke application programming interface (API) calls 612 through the software stack and receive messages 614 in response to the API calls 612, consistent with some
embodiments.
[0054] In various implementations, the operating system 604 manages hardware resources and provides common services. The operating system 604 includes, for example, a kernel 620, sendees 622, and drivers 624. The kernel 620 acts as an abstraction layer between the hardware and the other software layers, consistent with some embodiments. For example, the kernel 620 provides memory management, processor management (e.g., scheduling), component management, networking, and security settings, among other functionality. The services 622 can provide other common services for the other software layers. The drivers 624 are responsible for controlling or interfacing with the underlying hardware, according to some embodiments. For instance, the drivers 624 can include display drivers, camera drivers, BLUETOOTH1© or BLUETOOTH® Low Energy drivers, flash memory drivers, serial
communication drivers (e.g.. Universal Serial Bus (USB) drivers), WI-FI® drivers, audio drivers, power management drivers, and so forth.
[0055] In some embodiments, the libraries 606 provide a low-level common infrastructure utilized by the applications 610. The libraries 606 can include system libraries 630 (e.g., C standard library) that can provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like. In addition, the libraries 606 can include API libraries 632 such as media libraries (e.g., libraries to support presentation and manipulation of various media formats such as Moving Picture Experts Group-4
(MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), graphics libraries (e.g., an OpenGL framework used to render in two dimensions (2D) and three dimensions (3D) in graphic content on a display), database libraries (e.g., SQLite to provide various relational database functions), web libraries (e.g., WebKit to provide web browsing functionality), and the like. The libraries 606 can also include a wide variety of other libraries 634 to provide many other APIs to the applications 610.
[0056] The frameworks 608 provide a high-level common infrastructure that can be utilized by the applications 610, according to some embodiments. For example, the frameworks 608 provide various graphic user interface (GUI) functions, high-level resource management, high-level location services, and so forth. The frameworks 608 can provide a broad spectrum of other APIs that can be utilized by the applications 610, some of which may be specific to a particular operating system 604 or platform.
[0057] In an example embodiment, the applications 610 include a home application 650, a contacts application 652, a browser application 654, a book reader application 656, a location application 658, a media application 660, a messaging application 662, a game application 664, and a broad assortment of other applications such as third party applications 666 and 667, According to some embodiments, the applications 610 are programs that execute functions defined in the programs. Various programming languages can be employed to create one or more of the applications 610, structured in a variety of manners, such as object-oriented programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C or assembly language). In a specific example, the third party application 666 (e.g., an application developed using the ANDROID™ or IOS™ software development kit (SDK) by an entity other than the vendor of the particular platform) may be mobile software running on a mobile operating system such as IOS™, ANDROID™, WINDOWS® Phone, or another mobile operating system. In this example, the third party application 666 can invoke the API calls 612 provided by the operating system 604 to facilitate functionality described herein.
[0058] As explained above, some embodiments may particularly include a browser application 654 or other application that allows a user to search for media content. In certain embodiments, this may be a stand-alone application that operates to manage communications with a server system such as the keyword generation system 102 or network services 106A-C. In other embodiments, this functionality may be integrated with another application such as a messaging application 662, location application 658, and so forth. Browser application 654 may request and display various media content items and may provide the capability for a user to input data (e.g., an input word) related to media content items via a touch interface, keyboard, or using a camera device of machine 700, communication with the keyword generation system 102 via I/O components 750, and receipt and storage of media content items in memory 730, Presentation of media content items and user inputs associated with media content items may be managed by browser application 654 using different frameworks 608, library 606 elements, or operating system 604 elements operating on a machine 700.
[0059] FIG. 7 is a block diagram illustrating components of a machine
700, according to some embodiments, able to read instructions from a machine- readable medium (e.g., a machine-readable storage medium) and perform any¬ one or more of the methodologies discussed herein. Specifically, FIG. 7 shows a diagrammatic representation of the machine 700 in the example form of a computer system, within which instructions 716 (e.g., software, a program, an application 610, an applet, an app, or other executable code) for causing the machine 700 to perform any one or more of the methodologies discussed herein can be executed. In alternative embodiments, the machine 700 operates as a standalone device or can be coupled (e.g., networked) to other machines. In a networked deployment, the machine 700 may operate in the capaci ty of the keyword generation system 102, network services 106A-C, or related server or system, or a client device 108 in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine 700 can comprise, but not be limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a personal digital assistant (PDA), an entertainment media system, a j 1
cellular telephone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing the instructions 716, sequentially or otherwise, that specify actions to be taken by the machine 700. Further, while only a single machine 700 is illustrated, the term "machine" shall also be taken to include a collection of machines 700 that individually or jointly execute the instructions 716 to perform any one or more of the methodologies discussed herein.
[0060] In various embodiments, the machine 700 comprises processors
710, memory 730, and 170 components 750, which can be configured to communicate with each other via a bus 702. In an example embodiment, the processors 710 (e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio-frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) include, for example, a processor 712 and a processor 714 that may execute the instructions 716. The term "processor" is intended to include multi-core processors 710 that may comprise two or more independent processors 712, 714 (also referred to as "cores") that can execute instructions 716
contemporaneously. Although FIG. 7 shows multiple processors 710, the machine 700 may include a single processor 710 with a single core, a single processor 710 with multiple cores (e.g., a multi-core processor 710), multiple processors 712, 714 with a single core, multiple processors 712, 714 with multiples cores, or any combination thereof.
[0061] The memory 730 comprises a main memory 732, a static memory
734, and a storage unit 736 accessible to the processors 710 via the bus 702, according to some embodiments. The storage unit 736 can include a machine- readable medium 738 on which are stored the instructions 716 embodying any one or more of the methodologies or functions described herein. The instructions 716 can also reside, completely or at least partially, within the main memory 732, within the static memory 734, within at least one of the processors 710 (e.g., within the processor's cache memory), or any suitable combination
thereof, during execution thereof by the machine 700, Accordingly, in various embodiments, the main memory 732, the static memory 734, and the processors 710 are considered machine-readable media 738.
[0062] As used herein, the term "memory" refers to a machine-readable medium 738 able to store data temporarily or permanently and may be taken to include, but not be limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, and cache memory. While the machine-readable medium 738 is shown, in an example embodiment, to be a single medium, the term "machine-readable medium" should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store the instructions 716. The term "machine-readable medium" shall also be taken to include any medium, or combination of multiple media, that is capable of storing instructions (e.g., instructions 716) for execution by a machine (e.g., machine 700), such that the instructions 716, when executed by one or more processors of the machine 700 (e.g., processors 710), cause the machine 700 to perform any one or more of the methodologies described herein. Accordingly, a "machine-readable medium" refers to a single storage apparatus or device, as well as "cloud-based" storage systems or storage networks that include multiple storage apparatus or devices. The term "machine-readable medium" shall accordingly be taken to include, but not be limited to, one or more data repositories in the form of a solid-state memory (e.g., flash memory), an optical medium, a magnetic medium, other non-volatile memory (e.g., erasable programmable read-only memory
(EPROM)), or any suitable combination thereof. The term "machine-readable medium" specifically excludes non-statutor signals per se.
[0063] The TO components 750 include a wide variety of components to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on. In general, it will be appreciated that the I/O components 750 can include many other components that are not shown in FIG. 7. The I/O components 750 are grouped according to
functionality merely for simplifying the following discussion, and the grouping is in no way limiting. In various example embodiments, the I/O components 750 include output components 752 and input components 754. The output
components 752 include visual components (e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), acoustic components (e.g., speakers), haptic components (e.g., a vibratory motor), other signal generators, and so forth. The input components 754 include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, a photo-optical keyboard, or other alphanumeric input components), point- based input components (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or other pointing instruments), tactile input components (e.g., a phy sical button, a touch screen that provides location and force of touches or touch gestures, or other tactile input components), audio input components (e.g., a microphone), and the like.
[0064] In some further example embodiments, the I/O components 750 include biometric components 756, motion components 758, environmental components 760, or position components 762, among a wide array of other components. For example, the biometric components 756 include components to detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body gestures, or eye tracking), measure biosignals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identify a person (e.g., voice identif cation, retinal identification, facial identification, fingerprint identification, or electroencephalogram based identification), and the like. The motion components 758 include acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components (e.g., gyroscope), and so forth. The environmental components 760 include, for example, illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensor components (e.g., machine olfaction detection sensors, gas detection sensors to detect concentrations of hazardous gases for safety or to measure pollutants in the atmosphere), or other components that may provide indications, measurements, or signals corresponding to a surrounding
physical environment. The position components 762 include location sensor components (e.g., a Global Positioning System (GPS) receiver component), altitude sensor components (e.g., altimeters or barometers that detect air pressure from which altitude may be derived), orientation sensor components (e.g., magnetometers), and the like.
[0065] Communication can be implemented using a wide variety of technologies. The I/O components 750 may include communication components 764 operable to couple the machine 700 to a network 780 or devices 770 via a coupling 782 and a coupling 772, respectively. For example, the communication components 764 include a network interface component or another suitable device to interface with the network 780. In further examples, communication components 764 include wired communication components, wireless
communication components, cellular communication components, near field com muni cation (NFC) components, BLUETOOTH® components (e.g.,
BLUETOOTH® Low Energy), WI-FI® components, and other communication components to provide communication via other modalities. The devices 770 may be another machine 700 or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a Universal Serial Bus (USB)).
[0066] Moreover, in some embodiments, the communication components
764 detect identifiers or include components operable to detect identifiers. For example, the communication components 764 include radio frequency identification (RFID) tag reader components, NFC smart tag detection components, optical reader components (e.g., an optical sensor to detect a one- dimensional bar codes such as a Universal Product Code (UPC) bar code, multidimensional bar codes such as a Quick Response (QR) code, Aztec Code, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, Uniform Commercial Code Reduced Space Symbol ogy (UCC RSS)-2D bar codes, and other optical codes), acoustic detection components (e.g., microphones to identify tagged audio signals), or any suitable combination thereof. In addition, a variety of information can be derived via the communication components 764, such as location via Internet Protocol (IP) geo-location, location via WI-FI® signal tri angulation, location via detecting a BLUETOOTH® or NFC beacon signal that may indicate a particular location, and so forth.
[0067] In various example embodiments, one or more portions of the network 780 can be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WW AN), a metropolitan area network (MAN), the Internet, a portion of the Internet, a portion of the public switched telephone network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, a WI-FI® network, another type of network, or a combination of two or more such networks. For example, the network 780 or a portion of the network 780 may include a wireless or cellular network, and the coupling 782 may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile communications (GSM) connection, or another type of cellular or wireless coupling. In this example, the coupling 782 can implement any of a variety of types of data transfer technology, such as Single Carrier Radio Transmission Technology (lxRTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Sen/ice (GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE) technology, third Generation Partnership Project (3 GPP) including 3G, fourth generation wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Worldwide
Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE) standard, others defined by various standard-setting organizations, other long range protocols, or other data transfer technology.
[0068] In example embodiments, the instructions 716 are transmitted or received over the network 780 using a transmission medium via a network interface device (e.g., a network interface component included in the
communication components 764) and utilizing any one of a number of well- known transfer protocols (e.g., Hypertext Transfer Protocol (HTTP)). Similarly, in other example embodiments, the instructions 716 are transmitted or received using a transmission medium via the coupling 772 (e.g., a peer-to-peer coupling) to the devices 770. The term "transmission medium" shall be taken to include any intangible medium that is capable of storing, encoding, or carrying the instructions 716 for execution by the machine 700, and includes digital or analog
com muni cations signals or other intangible media to facilitate communication of such software.
[0069] Furthermore, the machine-readable medium 738 is non-transitory
(in other words, not having any transitory signals) in that it does not embody a propagating signal. However, labeling the machine-readable medium 738 "non- transitory" should not be construed to mean that the medium is incapable of movement; the medium 738 should be considered as being transportable from one physical location to another. Additionally, since the machine-readable medium 738 is tangible, the medium 738 may be considered to be a machine- readable device.
[0070] Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.
[0071] Although an overview of the inventive subject matter has been described with reference to specific example embodiments, various
modifications and changes may be made to these embodiments without departing from the broader scope of embodiments of the present disclosure [0072] The embodiments illustrated herein are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed. Other embodiments may be used and derived therefrom, such that staictural and logical substitutions and changes may be made without departing from the scope of this disclosure. The Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.
[0073] As used herein, the term "or" may be construed in either an inclusive or exclusive sense. Moreover, plural instances may be provided for resources, operations, or structures described herein as a single instance.
Additionally, boundaries between various resources, operations, modules, engines, and data stores are somewhat arbitrary, and particular operations are illustrated in a context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within a scope of various embodiments of the present disclosure. In general, staictures and functionality presented as separate resources in the example configurations may be implemented as a combined structure or resource. Similarly, structures and functionality presented as a single resource may be implemented as separate resources. These and other variations, modifications, additions, and improvements fail within a scope of embodiments of the present disclosure as represented by the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Claims
1. A system, comprising:
one or more processors; and
a machine-readable storage medium storing a set of instructions that, when executed by the one or more processors, cause a machine to perform operations comprising:
accessing a plurality of inventory item listings accessible over a network, wherein each of the plurality of inventor}' item listings includes one or more text strings;
creating inventor}' word vectors for at least some of the text strings of the plurality of inventory item listings;
receiving a user input including an input word, wherein the user input is input by a user to access a primary media content;
creating an input word vector for the input word, calculating cosine similarities between the input word vector and the inventory word vectors; and
analyzing the calculated cosine similarities to determine one or more keywords from the one or more text strings, wherein the one or more keywords are from the text strings having inventory word vectors with the highest cosine similarities to the input word vector.
2. The system of claim 1, wherein the operations further comprise:
associating the one or more keywords with a secondary media content; and
providing the secondary media content to be presented to the user,
3. The system of claim 2, wherein the primary media content is a set of search results.
4. The system of claim 2, wherein the secondary media content is a targeted advertisement.
5. The system of claim 2, wherein the primary media content and the secondary media content are presented to the user simultaneously.
6. The system of claim 1, wherein the plurality of inventory item listings are listings from an online marketplace.
7. The system of claim I, wherein the one or more text strings from each of the plurality of inventory item listings are from titles of the inventory item listings.
8. The system of claim 1, wherein the operations further comprise;
creating revised inventory word vectors for at least some of the same text strings for which the inventory word vectors were originally created,
calculating cosine similarities between the input word vector and the revised inventory word vectors; and
analyzing the calculated cosine similarities to determine one or more updated keywords from the one or more text strings, wherein the one or more updated keywords are from the text strings having inventory word vectors with the highest cosine similarities to the input word vector.
9. The system of claim 1, wherein analyzing the calculated cosine similarities to determine the one or more keywords includes weighing further factors in addition to the inventor}' word vectors with the highest cosine similarities to the input word vector,
10. The system of claim 1, wherein accessing a plurality of inventor}' item listings includes accessing all item listings available over a predetermined time period.
1 1. The system of claim 1 , wherein creating the inventory word vectors includes reducing the text strings to words only.
12. The system of claim 1 1 , wherein reducing the text strings to words only includes removing all special text characters and putting all words into lower case.
13. The system of claim 1, wherein the one or more keywords have an associative context with the user input based on the cosine similarities rather than a context based on historical data analytics or direct manual listings by a secondary media content provider.
14. A method, comprising;
accessing, by a server computer, a plurality of inventory item listings accessible over a network, wherein each of the plurality of inventory item listings includes one or more text strings;
creating, by the server computer, inventory word vectors for at least some of the text strings of the plurality of inventory item listings;
receiving, by the server computer, a user input including an input word, wherein the user input is given by a user to access a primary media content; creating, by the server computer, an input word vector for the input word, calculating, by the server computer, cosine similarities between the input word vector and the inventory word vectors; and
analyzing, by the server computer, the calculated cosine similarities to determine one or more keywords from the one or more text strings, wherein the one or more keywords are from the text strings having inventor)' word vectors with the highest cosine similarities to the input word vector.
15. The method of claim 14, further comprising:
associating the one or more keywords with a secondary media content; and
providing the secondary media content to be presented to the user.
16. The method of claim 15, wherein the primary media content is a set of search results and the secondary media content is a targeted advertisement. z /
17. The method of claim 14, wherein the plurality of inventory item listings are listings from an online marketpl ace.
18. The method of claim 14, further comprising:
creating revi sed inventory word vectors for at l east some of the same text strings for which inventory word vectors were originally created;
calculating cosine similarities between the input word vector and the revised inventory word vectors; and
analyzing the calculated cosign similarities to determine one or more updated keywords from the one or more text strings, wherein the one or more updated keywords are from the text strings having revised inventory word vectors with the highest cosine similarities to the input word vector.
19. The method of claim 18, wherein the revised inventor)' word vectors are created at least one day after the inventory word vectors were originally created.
20. A machine-readable storage device embodying instructions that are executable by at least one processor to cause a machine to perform operations comprising:
accessing a plurality of inventory item listings accessible over a network, wherein each of the plurality of inventor}' item listings includes one or more text strings;
creating inventory word vectors for at least some of the text strings of the plurality of inventory item listings;
receiving a user input including an input word, wherein the user input is input by a user to access a primary media content;
creating an input word vector for the input word;
calculating cosine similarities between the input word vector and the inventory word vectors; and
analyzing the calculated cosine similarities to determine one or more keywords from the one or more text strings, wherein the one or more keywords are from the text strings having inventory word vectors with the highest cosine similarities to the input word vector.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/472,982 | 2017-03-29 | ||
| US15/472,982 US10699302B2 (en) | 2017-03-29 | 2017-03-29 | Generating keywords by associative context with input words |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2018183306A1 true WO2018183306A1 (en) | 2018-10-04 |
Family
ID=63671811
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2018/024536 Ceased WO2018183306A1 (en) | 2017-03-29 | 2018-03-27 | Generating keywords by associative context with input |
Country Status (2)
| Country | Link |
|---|---|
| US (4) | US10699302B2 (en) |
| WO (1) | WO2018183306A1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2020082560A1 (en) * | 2018-10-25 | 2020-04-30 | 平安科技(深圳)有限公司 | Method, apparatus and device for extracting text keyword, as well as computer readable storage medium |
| US10699302B2 (en) | 2017-03-29 | 2020-06-30 | Ebay | Generating keywords by associative context with input words |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109408826A (en) * | 2018-11-07 | 2019-03-01 | 北京锐安科技有限公司 | A kind of text information extracting method, device, server and storage medium |
| CN110059178A (en) * | 2019-02-12 | 2019-07-26 | 阿里巴巴集团控股有限公司 | Problem distributing method and device |
| US12223957B2 (en) | 2019-08-29 | 2025-02-11 | Boe Technology Group Co., Ltd. | Voice interaction method, system, terminal device and medium |
| CN110473540B (en) * | 2019-08-29 | 2022-05-31 | 京东方科技集团股份有限公司 | Voice interaction method and system, terminal device, computer device and medium |
| CN115917527A (en) * | 2020-07-22 | 2023-04-04 | 昭和电工株式会社 | Document retrieval device, document retrieval system, document retrieval program, and document retrieval method |
| CN111931494B (en) * | 2020-08-10 | 2022-06-28 | 北京字节跳动网络技术有限公司 | Method, apparatus, electronic device, and medium for generating prediction information |
| US20240303280A1 (en) * | 2023-03-06 | 2024-09-12 | Salesforce, Inc. | Techniques for automatic subject line generation |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6862586B1 (en) * | 2000-02-11 | 2005-03-01 | International Business Machines Corporation | Searching databases that identifying group documents forming high-dimensional torus geometric k-means clustering, ranking, summarizing based on vector triplets |
| US20060212350A1 (en) * | 2005-03-07 | 2006-09-21 | Ellis John R | Enhanced online advertising system |
| US20080248815A1 (en) * | 2007-04-08 | 2008-10-09 | James David Busch | Systems and Methods to Target Predictive Location Based Content and Track Conversions |
| US20110035379A1 (en) * | 2009-08-10 | 2011-02-10 | Ye Chen | Probabilistic clustering of an item |
| US20140040723A1 (en) * | 2012-07-31 | 2014-02-06 | International Business Machines Corporation | Enriching website content |
| US20150235278A1 (en) * | 2005-12-21 | 2015-08-20 | Ebay Inc. | Computer-implemented method and system for managing keyword bidding prices |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6167397A (en) * | 1997-09-23 | 2000-12-26 | At&T Corporation | Method of clustering electronic documents in response to a search query |
| JP4426894B2 (en) * | 2004-04-15 | 2010-03-03 | 株式会社日立製作所 | Document search method, document search program, and document search apparatus for executing the same |
| US8503995B2 (en) * | 2005-09-14 | 2013-08-06 | Jumptap, Inc. | Mobile dynamic advertisement creation and placement |
| US20090094209A1 (en) * | 2007-10-05 | 2009-04-09 | Fujitsu Limited | Determining The Depths Of Words And Documents |
| US8166049B2 (en) * | 2008-05-29 | 2012-04-24 | Accenture Global Services Limited | Techniques for computing similarity measurements between segments representative of documents |
| WO2010075889A1 (en) * | 2008-12-30 | 2010-07-08 | Telecom Italia S.P.A. | Method and system for content classification |
| US20110302167A1 (en) * | 2010-06-03 | 2011-12-08 | Retrevo Inc. | Systems, Methods and Computer Program Products for Processing Accessory Information |
| US9286391B1 (en) * | 2012-03-19 | 2016-03-15 | Amazon Technologies, Inc. | Clustering and recommending items based upon keyword analysis |
| US10162882B2 (en) * | 2014-07-14 | 2018-12-25 | Nternational Business Machines Corporation | Automatically linking text to concepts in a knowledge base |
| CN104462060B (en) * | 2014-12-03 | 2017-08-01 | 百度在线网络技术(北京)有限公司 | Pass through computer implemented calculating text similarity and search processing method and device |
| US9727906B1 (en) * | 2014-12-15 | 2017-08-08 | Amazon Technologies, Inc. | Generating item clusters based on aggregated search history data |
| CN106484678A (en) * | 2016-10-13 | 2017-03-08 | 北京智能管家科技有限公司 | A kind of short text similarity calculating method and device |
| EP3376400A1 (en) * | 2017-03-14 | 2018-09-19 | Fujitsu Limited | Dynamic context adjustment in language models |
| US10699302B2 (en) | 2017-03-29 | 2020-06-30 | Ebay | Generating keywords by associative context with input words |
| CN108647322B (en) * | 2018-05-11 | 2021-12-17 | 四川师范大学 | Method for identifying similarity of mass Web text information based on word network |
-
2017
- 2017-03-29 US US15/472,982 patent/US10699302B2/en active Active
-
2018
- 2018-03-27 WO PCT/US2018/024536 patent/WO2018183306A1/en not_active Ceased
-
2020
- 2020-06-08 US US16/895,991 patent/US11216844B2/en active Active
-
2021
- 2021-11-05 US US17/520,387 patent/US11769173B2/en active Active
-
2023
- 2023-08-17 US US18/235,040 patent/US12190351B2/en active Active
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6862586B1 (en) * | 2000-02-11 | 2005-03-01 | International Business Machines Corporation | Searching databases that identifying group documents forming high-dimensional torus geometric k-means clustering, ranking, summarizing based on vector triplets |
| US20060212350A1 (en) * | 2005-03-07 | 2006-09-21 | Ellis John R | Enhanced online advertising system |
| US20150235278A1 (en) * | 2005-12-21 | 2015-08-20 | Ebay Inc. | Computer-implemented method and system for managing keyword bidding prices |
| US20080248815A1 (en) * | 2007-04-08 | 2008-10-09 | James David Busch | Systems and Methods to Target Predictive Location Based Content and Track Conversions |
| US20110035379A1 (en) * | 2009-08-10 | 2011-02-10 | Ye Chen | Probabilistic clustering of an item |
| US20140040723A1 (en) * | 2012-07-31 | 2014-02-06 | International Business Machines Corporation | Enriching website content |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10699302B2 (en) | 2017-03-29 | 2020-06-30 | Ebay | Generating keywords by associative context with input words |
| US11216844B2 (en) | 2017-03-29 | 2022-01-04 | Ebay Inc. | Generating keywords by associative context with input words |
| US11769173B2 (en) | 2017-03-29 | 2023-09-26 | Ebay Inc. | Generating keywords by associative context with input words |
| US12190351B2 (en) | 2017-03-29 | 2025-01-07 | Ebay Inc. | Generating keywords by associative context with input words |
| WO2020082560A1 (en) * | 2018-10-25 | 2020-04-30 | 平安科技(深圳)有限公司 | Method, apparatus and device for extracting text keyword, as well as computer readable storage medium |
Also Published As
| Publication number | Publication date |
|---|---|
| US11769173B2 (en) | 2023-09-26 |
| US20200302479A1 (en) | 2020-09-24 |
| US12190351B2 (en) | 2025-01-07 |
| US20220058690A1 (en) | 2022-02-24 |
| US20180285928A1 (en) | 2018-10-04 |
| US20230394526A1 (en) | 2023-12-07 |
| US10699302B2 (en) | 2020-06-30 |
| US11216844B2 (en) | 2022-01-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12190351B2 (en) | Generating keywords by associative context with input words | |
| US11836776B2 (en) | Detecting cross-lingual comparable listings | |
| US11100564B2 (en) | Regional item recommendations | |
| US10565562B2 (en) | Hashing query and job posting features for improved machine learning model performance | |
| US20190019157A1 (en) | Generalizing mixed effect models for personalizing job search | |
| US10726355B2 (en) | Parent company industry classifier | |
| US10969922B2 (en) | Messaging system for providing multi-zone messages | |
| US20210056265A1 (en) | Snippet generation and item description summarizer | |
| US20180276302A1 (en) | Search provider selection using statistical characterizations | |
| US11126628B2 (en) | System, method and computer-readable medium for enhancing search queries using user implicit data | |
| US20170270418A1 (en) | Point in time predictive graphical model exploration | |
| US20160328765A1 (en) | Enhanced supply and demand tool | |
| US20200410537A1 (en) | Keyword discovery system | |
| US11797587B2 (en) | Snippet generation system | |
| US12248530B2 (en) | Optimized partial and delta processing system | |
| CN113779354B (en) | System and method for generating target page | |
| US10769695B2 (en) | Generating titles for a structured browse page | |
| US12056204B2 (en) | Retroactive and predefined text search |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18777769 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 18777769 Country of ref document: EP Kind code of ref document: A1 |