Construirea unui sistem de recomandare bazat pe rezumat

Ingineria caracteristicilor pentru NLP în Python

Rounak Banik

Data Scientist

Sistem de recomandare de filme

Titlu Rezumat
Shanghai Triad Un băiat de la țară, rudă cu o familie din crima organizată din Shanghai, este recrutat de unchiul său pentru a fi servitor al amantei unui șef de bandă, în Shanghaiul anilor 1930.
Cry, the Beloved Country Un preot sud-african pleacă în căutarea fiului său rătăcit, care a comis o crimă în marele oraș.
Ingineria caracteristicilor pentru NLP în Python

Sistem de recomandare de filme

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
Ingineria caracteristicilor pentru NLP în Python

Pași

  1. Preprocesarea textului
  2. Generarea vectorilor tf-idf
  3. Generarea matricei de similaritate cosinus
Ingineria caracteristicilor pentru NLP în Python

Funcția de recomandare

  1. Primește ca argumente titlul filmului, matricea de similaritate cosinus și seria de indici.
  2. Extrage scorurile de similaritate cosinus pereche pentru film.
  3. Sortează scorurile în ordine descrescătoare.
  4. Returnează titlurile corespunzătoare celor mai mari scoruri.
  5. Ignoră cel mai mare scor de similaritate (egal cu 1).
Ingineria caracteristicilor pentru NLP în Python

Generarea vectorilor 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)
Ingineria caracteristicilor pentru NLP în Python

Generarea matricei de similaritate cosinus

# 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.        ]])
Ingineria caracteristicilor pentru NLP în Python

Funcția linear_kernel

  • Magnitudinea unui vector tf-idf este 1
  • Scorul cosinus dintre doi vectori tf-idf este produsul lor scalar.
  • Poate îmbunătăți semnificativ timpul de calcul.
  • Utilizați linear_kernel în loc de cosine_similarity.
Ingineria caracteristicilor pentru NLP în Python

Generarea matricei de similaritate cosinus

# 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.        ]])
Ingineria caracteristicilor pentru NLP în Python

Funcția 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
Ingineria caracteristicilor pentru NLP în Python

Să exersăm!

Ingineria caracteristicilor pentru NLP în Python

Preparing Video For Download...