Budowanie rekomendatora opartego na opisach fabuły

Inżynieria cech dla NLP w Pythonie

Rounak Banik

Data Scientist

Rekomendator filmów

Tytuł Opis
Shanghai Triad Prowincjonalny chłopiec spokrewniony z szanghajską rodziną przestępczą zostaje zwerbowany przez wuja do służby u kochanki gangstera w Szanghaju lat 30.
Cry, the Beloved Country Południowoafrykański pastor wyrusza szukać zbłąkanego syna, który popełnił przestępstwo w wielkim mieście.
Inżynieria cech dla NLP w Pythonie

Rekomendator filmów

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
Inżynieria cech dla NLP w Pythonie

Kroki

  1. Wstępne przetwarzanie tekstu
  2. Generowanie wektorów tf-idf
  3. Generowanie macierzy podobieństwa kosinusowego
Inżynieria cech dla NLP w Pythonie

Funkcja rekomendatora

  1. Przyjmuje tytuł filmu, macierz podobieństwa kosinusowego i serię indeksów jako argumenty.
  2. Wyodrębnia parami wyniki podobieństwa kosinusowego dla danego filmu.
  3. Sortuje wyniki malejąco.
  4. Zwraca tytuły odpowiadające najwyższym wynikom.
  5. Pomija najwyższy wynik podobieństwa (równy 1).
Inżynieria cech dla NLP w Pythonie

Generowanie wektorów tf-idf

# 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)
Inżynieria cech dla NLP w Pythonie

Generowanie macierzy podobieństwa kosinusowego

# 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.        ]])
Inżynieria cech dla NLP w Pythonie

Funkcja linear_kernel

  • Długość wektora tf-idf wynosi 1
  • Wynik kosinusowy dwóch wektorów tf-idf to ich iloczyn skalarny.
  • Może znacznie skrócić czas obliczeń.
  • Użyj linear_kernel zamiast cosine_similarity.
Inżynieria cech dla NLP w Pythonie

Generowanie macierzy podobieństwa kosinusowego

# 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.        ]])
Inżynieria cech dla NLP w Pythonie

Funkcja 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
Inżynieria cech dla NLP w Pythonie

Czas na ćwiczenia!

Inżynieria cech dla NLP w Pythonie

Preparing Video For Download...