Feature vector based recommender system

A recommender system that represents items in a catalog by first feature vectors in a first vector space based on first characteristics of the items and second feature vectors in a second vector space based on second characteristics of the items different from the first characteristics and maps a feature vector defined in the first vector space for an item to a vector in the second vector space to provide recommendations based on the item.

BACKGROUND

Modern communication networks, such as mobile phone networks and the Internet, and the plethora of devices that provide access to services that they provide have not only made people intensely aware of each other, but have inundated them with a surfeit of information and options for satisfying any from the simplest to the most complex needs and desires. All too often, the information is overwhelmingly abundant and diluted with irrelevant information.

Various recommender systems and algorithms have been developed to attempt to deal with the challenges and opportunities that the abundance of information has generated, and to automatically focus and filter information to match an interest and/or need of a business, organization, or person, generically referred to as a person. Common recommender algorithms for automatically inferring and recommending items that a person might be interested in are algorithms referred to as “collaborative filtering” (CF) and “content-based filtering” (CB) algorithms. A recommender system using a CF algorithm recommends an item to an individual if persons sharing a commonality of preferences with the individual have exhibited a preference for the item. For example, if the individual has shown a preference for item “A” in the past, and persons in the database who have shown preference for item A have also shown preference for an item “B”, then item B may preferentially be recommended to the individual. In accordance with a CB algorithm, a recommender system recommends an item to an individual if the item shares a similarity with items previously preferred by the individual. For example, if the individual has shown a preference for action movies, the algorithm may preferentially recommend an action movie to the individual.

SUMMARY

An aspect of an embodiment of the disclosure, relates to providing a recommender system that represents items in a catalog of items by respective first feature vectors in a first vector space and respective second feature vectors in a second vector space. The first feature vectors are configured to encode data responsive to a first set of characteristics of the catalog items. The second feature vectors are configured to encode data responsive to a second, different set of characteristics of the catalog items. The recommender system, optionally referred to as a “Janus recommender” or simply “Janus”, may use a neural network, which may be referred to as a “MapNet neural network” or simply “MapNet”, to map feature vectors from the first vector space to feature vectors in the second vector space. Janus may use feature vectors in the second space that are mapped by MapNet from the first vector space to recommend an item from the catalog of items to a user of Janus. The feature vectors in the first and second vector spaces may be referred to as respectively providing first and second perspectives of the items in the catalog and may be used to recommend items from, or items that may be included in, the catalog based respectively on the first and second perspectives. Feature vectors in the second vector space that are mapped by MapNet from first feature vectors include attributes based on both the first and second perspectives and may be used to recommend items from the catalog, or items that may be included in the catalog, based on both the first and second perspectives.

First feature vectors may be referred to as source vectors (SRC vectors) and the first vector space as a source vector space, and second feature vectors and the second vector space may be referred to as target vectors (TGT vectors) and a target vector space respectively. A given vector space may be referred to as a SRC or TGT vector space and vectors in the given vector space as SRC or TGT vectors depending upon how the given vector space is related to another vector space. The given vector space may be a SRC vector space if MapNet maps vectors from the given vector space to the other vector space. The same given vector space may be a TGT vector space if MapNet maps vectors from the other vector space to the given vector space.

DETAILED DESCRIPTION

In the detailed discussion below a Janus recommender system in accordance with an embodiment of the disclosure is discussed with reference toFIGS. 1A and 1B.FIG. 1Aschematically shows a configuration of components of the Janus recommender system that cooperate to support functioning of the recommender system.FIG. 1Bshows a high-level flow diagram that illustrates operation of the Janus shown inFIG. 1Aand use of a MapNet by Janus to generate a recommendation for a user in reply to a user query.FIG. 2Ashows a schematic configuration of a “movie MapNet” neural network, which may be used to recommend movies to a user of Janus in accordance with an embodiment of the disclosure. The MapNet shown inFIG. 2Acomprises a module that processes descriptive text of movie plots as bags of words (BOW) to recommend movies to users. A CNN module for processing plot descriptive texts of movies that may be used by a MapNet in accordance with an embodiment to provide recommendations to users is discussed with reference toFIG. 2B.

In the discussion, unless otherwise stated, adjectives such as “substantially” and “about” modifying a condition or relationship characteristic of a feature or features of an embodiment of the disclosure, are understood to mean that the condition or characteristic is defined to within tolerances that are acceptable for operation of the embodiment for an application for which it is intended. Unless otherwise indicated, the word “or” in the description and claims is considered to be the inclusive “or” rather than the exclusive or, and indicates at least one of, or any combination of items it conjoins.

FIG. 1schematically shows a Janus recommender system20operating to provide recommendations to users21that may access Janus20using any of various stationary or mobile communication devices, such as by way of example, a smartphone, laptop, notebook, or desktop computer. A numeral22generically labels all the communication devices. Access to Janus20may be via any suitable communication network to which the communication devices may connect, such as the Internet, a mobile phone network, or local area network (LAN). For convenience of presentation, the communication devices are schematically shown as communicating with Janus20via the Internet.

Janus20optionally comprises or has access to a database31that is stored in a suitable memory and has data that identifies catalog items that may be recommended to users of Janus20, a MapNet neural network trainer40, a MapNet50, and a Janus processor70. Database31may comprise data for each catalog item that characterizes the item and may be used to generate a source, SRC, vector in a SRC vector space for each catalog item. The database may also comprise a vector that is a surrogate for the catalog item, which may function as a target, TGT, vector in a TGT vector space for the item. MapNet neural network trainer40may process target TGT vectors of catalog items in database31and data characterizing the catalog items to train MapNet50to generate a SRC vector for each of the catalog items and map the SRC vector to the respective TGT vector of the catalog item. Janus processor70is configured to receive a transmission, which may be in the form of a query23, from a user21identifying a catalog item or an item that shares sufficient features with catalog items so that it may reasonably be included in database31, and use MapNet50to process the query to provide a recommendation24to the user based on the item identified in the query.

Janus recommender system20may comprise any electronic and/or optical processing and/or control circuitry, to provide and enable functionalities that Janus20may require to support its operation in embodiments that are described below and embodiments similar to the described embodiments. By way of example, Janus processor70may comprise any one, or any combination of more than one of, a microprocessor, an application specific circuit (ASIC), field programmable array (FPGA) and/or system on a chip (SOC). And a memory in which database31is at least partially stored may comprise any electronic and/or optical circuitry suitable for storing data and/or computer executable instructions and may, by way of example, comprise any one or any combination of more than one of a flash memory, random access memory (RAM), read only memory (ROM), and/or erasable programmable read-only memory (EPROM). Components of Janus20may comprise real, physical, and/or virtual components, and may be distributed components or locally centralized components. Janus20may, at least in part, be cloud based.

FIG. 1Bshows a flow diagram of a procedure100that Janus recommender system20executes to provide recommendations to a user21. In a block102Janus20receives a query from a user21that identifies a catalog item in database31or an item that shares sufficient features with catalog items in database31so that it may reasonably be included in the database. An item that is not, but reasonably may be included in database31is an item for which MapNet50may determine a target, TGT, vector in a TGT vector space defined for items included in the database. Hereinafter, a catalog item or an item that may reasonably be included in database31may generically be referred to as a catalog item and a catalog item identified in a query may be referred to as a query item.

In a block104processor70optionally uses MapNet50to generate a SRC vector for the query item based on data, also referred to as input data, characterizing the query item that is available in database31, in the query, and/or that may be available from another database accessible by Janus, for example, via the Internet. In a block106processor70may use MapNet50to map the SRC vector determined for the query item to a vector, hereinafter also referred to as a query TGT vector, in the TGT vector space in which the catalog TGT vectors in database31are defined. In a block108, processor70compares the query TGT vector to TGT vectors stored in database31to identify a TGT vector or TGT vectors in the database that may be considered sufficiently similar to the query TGT vector so that they may be used to recommend the items they represent to the user. Optionally, processor70uses a nearest neighbor algorithm to identify TGT vectors in database31that are similar to the query TGT vector. In an embodiment, processor70uses magnitudes of scalar products between the query TGT vector and catalog TGT vectors, and an appropriate scalar product threshold for the magnitudes to identify catalog TGT vectors similar to the query TGT vector. In a block110, processor70recommends a catalog item or catalog items from database31based on the identified similar TGT vector or vectors. InFIG. 1Janus20is schematically shown providing the user21who transmitted query23to Janus20with a recommendation list24comprising at least one catalog item included in database31.

In an embodiment, the SRC feature vectors may be CB-SRC feature vectors that encode CB data, which is data responsive to content based features of the catalog items that define and/or characterize the items, and may be used to provide CB recommendations to a Janus user. The TGT vectors in database31may be CF-TGT feature vectors that encode CF data responsive to frequencies with which items in the catalog are mutually associated and may be used to provide CF, CF recommendations to a user of the catalog. Janus20may use MapNet50to map CB-SRC vectors to CF-TGT vectors to recommend items to users based on both CB and CF perspectives of the items.

The CF-TGT vectors in database31may be generated by any suitable algorithm that provides CF vectors for catalog items based on frequencies of association of the catalog items. For example, the CF-TGT vectors may be generated by a matrix factorization (MF) algorithm operating on a ranking matrix that comprises user rankings of catalog items in a catalog. Optionally, the CF-TGT vectors are generated at least in part by a neural network operating on information that characterizes frequencies with which items are associated. The neural network may comprise an item2vec neural network operating on pairs of the catalog items that are frequently associated to generate the CF-TGT vectors.

FIG. 2Aschematically shows a movie MapNet50comprised in Janus20configured to recommend movies to a user21, in accordance with an embodiment of the disclosure. The recommendations are made based on CB input data and CF-TGT vectors that Janus20generates for a query movie received by Janus20from the user.

Movie MapNet50may be trained by MapNet neural network trainer40in Janus20to receive CB input data that is associated with and characterizes a given movie, such as a movie identified in a query from a user21, and generate a CB-SRC vector and therefrom a CF-TGT vector for the movie. Examples of CB input data comprise tags, numerical data, and movie descriptive text associated with the movie. Tags associated with a movie may comprise nomenclature identifying features of the movie, and may comprise by way of example, at least one or any combination of more than one of genre, a name of a director, a producer, and/or author of a story line of the movie. Numerical data may comprise by way of example, a release date of the movie, duration of the movie, and/or production cost of the movie. Descriptive text may comprise for example, a summary of a plot line of the movie.

By way of example movie MapNet50optionally comprises a plurality of six input mapping modules51,52,53,54,55, and56, and a CF-TGT generator module60. Each input mapping module51-56receives a different type of CB input data associated with a query movie and maps the input data it receives to a CB component vector for input to CF-TGT generator module60. CF-TGT generator module60receives the CB component vectors respectively generated by input mapping modules51-56, concatenates the CB component vectors to form a CB-SRC vector61, and processes the CB-SRC to generate a query CF-TGT for the movie.

In an embodiment input mapping modules51-54are tag data input modules that map different type of tag data to CB component vectors. Each Tag data input module comprises a neural network optionally having an input CB data layer and a single hidden layer fully connected to the input layer in which nodes generate outputs in accordance with a rectified linear unit (ReLU) activation function. The input layer of a given tag input module51-54is, optionally, a binary vector whose length in bits is equal to a number of different possible tags that the given tag input module may receive for the CB data that that the module maps. Each different tag input to the given tag input module may be represented in the input layer of the module by a different single bit encoded with a 1 with all the rest of the bits encoded with 0.

By way of example, tag input module52may be a Tag-Actor module that processes movie tag CB input data that identifies actors and actresses that act in a query movie. In an embodiment Tag-Actor module52may be configured to receive data identifying a movie's actors and actress from among about 1500 actors and actresses and may therefore have an input layer52-1comprising about 1500 nodes. For each actor or actress from the 1500 actors and actresses that might act in the query movie a different bit in input layer52-1may be set to one with the remainder of the bits set to 0. A query movie in which 10 of the 1500 actors and actresses appear in the query movie, 10 different bits in input layers52-1may therefore be set to 1 with the remaining 1490 bits set to zero. The Tag-Actor module may have a hidden layer52-2comprising 100 nodes fully connected to input layer52-1that generates an output CB component vector having dimension equal to 100. Tag input module51may be a Tag-Genre module that processes CB input data that identifies a movie's genre and may have an input layer51-1comprising about 23 nodes that define a 23 bit binary input vector, and an optionally fully connected hidden layer51-2that generates an output CB component vector having dimension equal to 100. Tag input module53, may be a Tag-Director module that processes CB input data that identifies a movie's director and may have an input layer53-1comprising about 470 nodes that define a 470 bit binary input vector and an optionally fully connected hidden layer53-2that generates an output CB component vector having dimension equal to 40. Tag input module54may be a Tag-Language module that processes CB input data that identifies a movie's language from among 72 possible languages and may therefore have an input layer54-1comprising about 72 nodes that define a 72 bit binary input vector, and an optionally fully connected hidden layer54-2that generates an output CB component vector having dimension equal to 20.

CB data input module56may be a numerical module that receives numerical data56-1that by way of example comprises a release year of a movie, and presents the release year as a CB component vector56-2advantageously formatted for example as a binary or decimal number.

CB data input module55may comprise a bag of words (BOW) text, “BOW-Text”, neural network module, which processes descriptive text associated with movies, for example descriptive text that describes plots of movies. Optionally, BOW-Text module55comprises an input layer55-1, a hidden layer55-2fully connected with the input layer, and a second hidden layer55-3fully connected with hidden layer55-2. Hidden layers55-1and55-2optionally have dimension 250.

BOW-Text module55may be configured to receive raw descriptive text of up to 500 words that summarizes the plot of a query movie. If the descriptive text comprises less than 500 words BOW-Text module55may pad the text with “blank” words to 500 words. BOW-Text module55may represent each word in the received “plot text” by a vector representing the word that is generated by training a word 2vec (w2v) neural network. A w2v neural network typically comprises a one hot input layer, a single hidden layer fully connected to the input layer and an output layer fully connected to the hidden layer. When provided a given word, a trained w2v neural network, generates probabilities for other words, which may be referred to as contextual words, in a document being in proximity to the given word. Training a w2v network comprises processing a corpus of training texts to generate sequences of words, for which at least one of the words from a natural, consecutive sequence of the words as they appear in the texts is deleted. Words in a text are conventionally referred to as “grams” and the sequences with the “missing” words are therefore conventionally often referred to as skip-grams. The skip-grams are used to train the w2v network to predict probabilities for contextual words for a given input word. The output weights of the trained hidden layer may be used as w2v vector representations of the input words. A w2v network may be trained using hierarchical softmax and/or negative sampling. BOW-Text module55processes the w2v representations of the words in the text using a k-means algorithm with soft alignment to cluster the w2v words into “b” clusters. The number of words in each cluster is, optionally, normalized to a total number of different words in the text to produce a probability histogram which provides values for input layer55-1. An output vector having dimension 250 generated by hidden layer55-3for the plot text input to BOW-Text module55for the query movie is used as a CB component vector for input to generator module60.

In an embodiment generator module60concatenates the CB component vectors that it receives from CB data input modules51-56to generate a CB-SRC vector at an input layer61. For the CB component vectors provided by CB input modules51-56, the input layer61, and the CB-SRC vector has' have a dimension of about 515. Generator module60may process the CB-SRC vector using two fully connected hidden layers62and63to generate a query CF-TGT vector at the output of layer63for use in recommending movies to a user base, as discussed with reference toFIG. 1B.

A MapNet50in accordance with an embodiment of the disclosure may comprise a convolution neural network text (CNN-Text) module155shown inFIG. 2B, in place of, or in addition to BOW-Text module55for processing a plot text of a query movie. Similarly to BOW-Text module55, CNN-Text module155may be configured to receive a raw descriptive plot text of up to 500 words that summarizes the plot of a query movie and pad the received text with blank words if the plot text comprises less than 500 words. The CNN-Text module represents words in the received plot text by respective w2v vectors and in an input layer155-1arrays the vectors in a matrix155-2in which, optionally, a given row in the matrix comprises components from only one w2v vector. Optionally a sequential order of the w2v vectors by row in matrix155-2is the same as the sequential order of the words they represent in the plot text. For example, row one in matrix155-2comprises w2v components w2v11, w2v12, w2v13. . . from the w2v1vector representing the first word in the plot text and the second and third rows comprise the components w2v21, w2v22, w2v23. . . and w2v31, w2v32, w2v33. . . respectively for w2v2and w2v3vectors representing the second and third words in the text. In an embodiment each w2v vector comprises 100 components so that matrix155-2has 500 rows and 100 columns.

CNN-Text module155uses a CNN layer155-3comprising a plurality of feature maps155-4to processes matrix155-2. Optionally, the CNN layer comprises 300 feature maps each having a receptive field of length optionally equal to the number of elements in a row of matrix155-2and depth equal to a plurality of, optionally, three rows. For matrix155-2, which as noted above has 500 rows of 100 elements, each, feature map155-4therefore has a 3×100 receptive field and generates a vector having 498 components. A global max pooling layer155-5may pool the 498 components of the output vector that each feature map generates to extract a maximum component from the components. The max pooling layer presents the maximum components of the 300 feature map vectors as a 300 component input vector to a fully connected hidden layer155-6having an output which provides a CB component vector for CF-TGT generator module60.

MapNet50is optionally trained on a training set of CF-TGT vectors from database31so that given an input comprising the Tag data, numerical data, and plot text for a movie in the database having a CF-TGT vector in the training set, MapNet50generates a CF-TGT vector that approximates the movie's CF-TGT vector in the database to a degree that satisfies a suitable similarity criterion. In an embodiment MapNet50may be trained to minimize a Mean Square Error cost function for CF-TGT target vectors that MapNet50generates relative to the training CF-TGT vectors. The CF-TGT training vectors in database31may be generated by any suitable algorithm that maps movies to vectors that reflect CF relationships between the movies. For example, a set of training CF-TGT vectors may be generated by matrix factorization of a ranking matrix in which movies are rated by users or ranked by attendance at or purchase of movies.

In an embodiment, training CF-TGT vectors for movies are generated by a Skip Gram with Negative Sampling (SGNS) type neural network referred to as “item2vec”. Item2vec operates on catalog items rather than words to generate CF vectors which represent catalog items based on frequencies with which the catalog items are associated. For items that are movies, item2vec may operate on movies in a database of movies ranked by users to generate CF vectors representing the movies similarly to the way in which word2vec operates on text to generate vectors representing the words in the text. A set of movies from the database that are assigned ranks greater than a predetermined threshold rank by a same user may be considered to be a set of co-occurring movies, optionally referred to as a “movie string”, analogous to a sequence of words in a text on which word2vec operates. Optionally, the set of co-occurring movies ranked by the user is an ordered set ordered by sequence in which the movies were watched or purchased by the user. Item2vec processes original strings of movies provided by many users to generate movie strings, “skip-movie strings” for which at least one of the movies appearing in the original strings is deleted. Item2vec may be trained on the skip-movie strings similarly to the way in which word2vec trains on skip-grams to generate vector representations of the movies that function as CF-TGT vectors for the movies.

Descriptions of embodiments of the disclosure in the present application are provided by way of example and are not intended to limit the scope of the disclosure. The described embodiments comprise different features, not all of which are required in all embodiments of the disclosure. Some embodiments utilize only some of the features or possible combinations of the features. Variations of embodiments of the disclosure that are described, and embodiments of the disclosure comprising different combinations of features noted in the described embodiments, will occur to persons of the art. The scope of the disclosure is limited only by the claims.