Bygga en handlingsbaserad rekommendationsmotor

Funktionsutveckling för NLP i Python

Rounak Banik

Data Scientist

Filmrekommendation

Titel Översikt
Shanghai Triad En pojke från landet med kopplingar till en shanghaikriminell familj rekryteras av sin farbror till att tjäna en gangsterledares älskarinna i 1930-talets Shanghai.
Cry, the Beloved Country En sydafrikansk predikant söker efter sin vilsne son, som begått ett brott i storstaden.
Funktionsutveckling för NLP i Python

Filmrekommendation

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
Funktionsutveckling för NLP i Python

Steg

  1. Textförbehandling
  2. Generera tf-idf-vektorer
  3. Generera kosinuslikhetsmatris
Funktionsutveckling för NLP i Python

Rekommendationsfunktionen

  1. Ta emot en filmtitel, kosinuslikhetsmatris och ett indexserieargument.
  2. Extrahera parvisa kosinuslikhetspoäng för filmen.
  3. Sortera poängen i fallande ordning.
  4. Returnera titlar som motsvarar de högsta poängen.
  5. Ignorera den högsta likhetspoängen (1).
Funktionsutveckling för NLP i Python

Generera tf-idf-vektorer

# 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)
Funktionsutveckling för NLP i Python

Generera kosinuslikhetsmatris

# 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.        ]])
Funktionsutveckling för NLP i Python

Funktionen linear_kernel

  • En tf-idf-vektors magnitud är 1
  • Kosinuspoängen mellan två tf-idf-vektorer är deras skalärprodukt.
  • Kan avsevärt förbättra beräkningstiden.
  • Använd linear_kernel i stället för cosine_similarity.
Funktionsutveckling för NLP i Python

Generera kosinuslikhetsmatris

# 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.        ]])
Funktionsutveckling för NLP i Python

Funktionen 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
Funktionsutveckling för NLP i Python

Nu kör vi en övning!

Funktionsutveckling för NLP i Python

Preparing Video For Download...