Einen Plotline-basierten Empfehlungsgeber bauen

Feature Engineering für NLP in Python

Rounak Banik

Data Scientist

Film-Empfehlung

Titel Übersicht
Shanghai Triad Ein Provinzbursche aus einer Shanghai-Gangsterfamilie wird in den 1930ern von seinem Onkel nach Shanghai geholt, um Diener der Geliebten eines Gangsterbosses zu werden.
Cry, the Beloved Country Ein südafrikanischer Prediger sucht in der Großstadt seinen auf Abwege geratenen Sohn, der ein Verbrechen begangen hat.
Feature Engineering für NLP in Python

Film-Empfehlung

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 für NLP in Python

Schritte

  1. Textvorverarbeitung
  2. tf-idf-Vektoren erzeugen
  3. Kosinus-Ähnlichkeitsmatrix erzeugen
Feature Engineering für NLP in Python

Die Empfehlungsfunktion

  1. Nimmt Filmtitel, Kosinus-Ähnlichkeitsmatrix und Index-Serie als Argumente.
  2. Extrahiert paarweise Kosinuswerte für den Film.
  3. Sortiert die Werte absteigend.
  4. Gibt die Titel mit den höchsten Werten aus.
  5. Ignoriere den höchsten Ähnlichkeitswert (1).
Feature Engineering für NLP in Python

tf-idf-Vektoren erzeugen

# 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 für NLP in Python

Kosinus-Ähnlichkeitsmatrix erzeugen

# 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 für NLP in Python

Die Funktion linear_kernel

  • Betrag eines tf-idf-Vektors ist 1
  • Kosinuswert zwischen zwei tf-idf-Vektoren ist ihr Skalarprodukt.
  • Beschleunigt die Berechnung deutlich.
  • Verwende linear_kernel statt cosine_similarity.
Feature Engineering für NLP in Python

Kosinus-Ähnlichkeitsmatrix erzeugen

# 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 für NLP in Python

Die Funktion 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 für NLP in Python

Lass uns üben!

Feature Engineering für NLP in Python

Preparing Video For Download...