Answers.Body: <p>From what I understood you will not have any cold start problem because you basically process the user preferences description against movies descriptions to get recommendations. So you don't use other users feedback at any time of the process which is not collaborative filtering.</p>
  
  <blockquote>
    <p>Here is instead the approach I would suggest in your case to get movies recommendations for each user:</p>
  </blockquote>
  
  <ul>
  <li><p>Compute the similarity between the user description and each movie description. This can be done using the <strong><a href="https://tfhub.dev/google/universal-sentence-encoder/1" rel="nofollow noreferrer">Universal Sentence Encoder</a></strong>. It's an 2018 <a href="https://arxiv.org/abs/1803.11175" rel="nofollow noreferrer">paper</a> by Google which represents any sentence as a vector of 215 values <em>(i.e embeddings)</em>. 
  The semantic similarity between 2 sentences is computed using the dot product of their embeddings. Fortunately, the implementation was integrated to Tensorflow Hub and easily be used (see <a href="https://ai.stackexchange.com/questions/4965/sentence-similarity-in-python">my answer here</a> for details).</p></li>
  <li><p>Choose the highest similarity values and recommend the corresponding movies to the user. Notice that you can still use this approach along with a collaborative filtering one.</p></li>
  </ul>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-08T14:16:42.697Z
Answers.LastActivityDate: 2019-05-09T21:27:16.143Z
Answers.LastEditDate: 2019-05-09T21:27:16.143Z
Answers.UserDisplayName: HLeb
Body: <p>I’m looking to match two pieces of text - e.g. IMDb movie descriptions and each person’s description of the type of movies they like. I have an existing set of ~5000 matches between the two.</p>
  <p>I particularly want to overcome the cold-start problem: what movies to recommend to a new user? When a new movie comes out, to which users should it be recommended?</p>
  <p>I see two options:</p>
  <ol>
  <li>Run each description of a person through an LSTM; do the same for each movie description; concatenate the results for some subset of possible combinations of people and movies, and attach to a dense net to then predict whether it’s a match or not</li>
  <li>Attempt to augment collaborative filtering with the output from running the movie description and person description through a text learner.</li>
  </ol>
  <p>Are these tractable approaches?</p>
  
Tags: <natural-language-processing><recommender-system><collaborative-filtering><cold-start-problem>
Title: Cold start collaborative filtering with NLP
UserDisplayName: Derek Hans
ThreadText: # Cold start collaborative filtering with NLP
  
  (Asked by: username_0 on 2019-04-01)
  
  I’m looking to match two pieces of text - e.g. IMDb movie descriptions and each person’s description of the type of movies they like. I have an existing set of ~5000 matches between the two.
  
  I particularly want to overcome the cold-start problem: what movies to recommend to a new user? When a new movie comes out, to which users should it be recommended?
  
  I see two options:
  
  1. Run each description of a person through an LSTM; do the same for each movie description; concatenate the results for some subset of possible combinations of people and movies, and attach to a dense net to then predict whether it’s a match or not
  2. Attempt to augment collaborative filtering with the output from running the movie description and person description through a text learner.
  
  Are these tractable approaches?
  
  **Tags:** natural-language-processing, recommender-system, collaborative-filtering, cold-start-problem
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2019-05-08. Score: 2
  
  From what I understood you will not have any cold start problem because you basically process the user preferences description against movies descriptions to get recommendations. So you don't use other users feedback at any time of the process which is not collaborative filtering.
  
  > Here is instead the approach I would suggest in your case to get movies recommendations for each user:
  
  * Compute the similarity between the user description and each movie description. This can be done using the **[Universal Sentence Encoder](https://tfhub.dev/google/universal-sentence-encoder/1)**. It's an 2018 [paper](https://arxiv.org/abs/1803.11175) by Google which represents any sentence as a vector of 215 values *(i.e embeddings)*.
    The semantic similarity between 2 sentences is computed using the dot product of their embeddings. Fortunately, the implementation was integrated to Tensorflow Hub and easily be used (see [my answer here](https://ai.stackexchange.com/questions/4965/sentence-similarity-in-python) for details).
  * Choose the highest similarity values and recommend the corresponding movies to the user. Notice that you can still use this approach along with a collaborative filtering one.
  
  
  ---
  
  