Een aanbeveler op basis van verhaallijn bouwen

Feature Engineering voor NLP in Python

Rounak Banik

Data Scientist

Film-aanbeveler

Titel Samenvatting
Shanghai Triad Een plattelandsjongen met banden met een misdaadfamilie in Shanghai wordt in de jaren 30 door zijn oom naar het kosmopolitische Shanghai gehaald om dienaar te worden van de minnares van een bendeleider.
Cry, the Beloved Country Een Zuid-Afrikaanse predikant zoekt in de grote stad zijn ontspoorde zoon die een misdrijf heeft gepleegd.
Feature Engineering voor NLP in Python

Film-aanbeveler

get_recommendations("The Godfather")
1178               The Godfather: Part II
44030    The Godfather Trilogy: 1972-1990
1914              The Godfather: Part III
23126                          Blood Ties
11297                    Household Saints
34717                   Start Liquidation
10821                            Election
38030                          Goodfellas
17729                   Short Sharp Shock
26293                  Beck 28 - Familjen
Name: title, dtype: object
Feature Engineering voor NLP in Python

Stappen

  1. Tekst voorbewerken
  2. tf-idf-vectoren genereren
  3. Cosinus-similariteitsmatrix genereren
Feature Engineering voor NLP in Python

De aanbeveler-functie

  1. Neem een filmtitel, cosinus-similariteitsmatrix en indexreeks als argumenten.
  2. Haal paarsgewijze cosinus-scores voor de film op.
  3. Sorteer scores aflopend.
  4. Geef titels met de hoogste scores terug.
  5. Negeer de hoogste similariteitsscore (1).
Feature Engineering voor NLP in Python

tf-idf-vectoren genereren

# Import TfidfVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer

# Create TfidfVectorizer object
vectorizer = TfidfVectorizer()

# Generate matrix of tf-idf vectors
tfidf_matrix = vectorizer.fit_transform(movie_plots)
Feature Engineering voor NLP in Python

Cosinus-similariteitsmatrix genereren

# Import cosine_similarity
from sklearn.metrics.pairwise import cosine_similarity

# Generate cosine similarity matrix
cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)
array([[1.        , 0.27435345, 0.23092036, ..., 0.        , 0.        ,
        0.00758112],
       [0.27435345, 1.        , 0.1246955 , ..., 0.        , 0.        ,
        0.00740494],
       ...,
       [0.00758112, 0.00740494, 0.        , ..., 0.        , 0.        ,
        1.        ]])
Feature Engineering voor NLP in Python

De functie linear_kernel

  • De lengte van een tf-idf-vector is 1.
  • Cosinusscore tussen twee tf-idf-vectoren is hun scalair product.
  • Kan rekentijd sterk verkorten.
  • Gebruik linear_kernel in plaats van cosine_similarity.
Feature Engineering voor NLP in Python

Cosinus-similariteitsmatrix genereren

# Import cosine_similarity
from sklearn.metrics.pairwise import linear_kernel

# Generate cosine similarity matrix
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)
array([[1.        , 0.27435345, 0.23092036, ..., 0.        , 0.        ,
        0.00758112],
       [0.27435345, 1.        , 0.1246955 , ..., 0.        , 0.        ,
        0.00740494],
       ...,
       [0.00758112, 0.00740494, 0.        , ..., 0.        , 0.        ,
        1.        ]])
Feature Engineering voor NLP in Python

De functie get_recommendations

get_recommendations('The Lion King', cosine_sim, indices)
7782                      African Cats
5877    The Lion King 2: Simba's Pride
4524                         Born Free
2719                          The Bear
4770     Once Upon a Time in China III
7070                        Crows Zero
739                   The Wizard of Oz
8926                   The Jungle Book
1749                 Shadow of a Doubt
7993                      October Baby
Name: title, dtype: object
Feature Engineering voor NLP in Python

Laten we oefenen!

Feature Engineering voor NLP in Python

Preparing Video For Download...