Рекомендації за сюжетом

Інженерія ознак для NLP у Python

Rounak Banik

Data Scientist

Рекомендації фільмів

Назва Опис
Shanghai Triad Провінційного хлопця, родича шанхайської кримінальної родини, дядько в 1930-х забирає до космополітичного Шанхаю слугою до коханки глави банди.
Cry, the Beloved Country Південноафриканський священник шукає свого заблудлого сина, який скоїв злочин у великому місті.
Інженерія ознак для NLP у Python

Рекомендації фільмів

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
Інженерія ознак для NLP у Python

Кроки

  1. Попередня обробка тексту
  2. Створення векторів tf-idf
  3. Обчислення матриці косинусної подібності
Інженерія ознак для NLP у Python

Функція рекомендацій

  1. Приймає назву фільму, матрицю косинусної подібності та Series індексів як аргументи.
  2. Витягує попарні косинусні оцінки для цього фільму.
  3. Сортує оцінки за спаданням.
  4. Повертає назви з найбільшими оцінками.
  5. Ігнорує найвищу подібність (1).
Інженерія ознак для NLP у Python

Створення векторів 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)
Інженерія ознак для NLP у Python

Обчислення матриці косинусної подібності

# 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.        ]])
Інженерія ознак для NLP у Python

Функція linear_kernel

  • Довжина вектора tf-idf дорівнює 1
  • Косинусна оцінка між двома векторами tf-idf — це їхній скалярний добуток.
  • Може суттєво пришвидшити обчислення.
  • Використовуйте linear_kernel замість cosine_similarity.
Інженерія ознак для NLP у Python

Обчислення матриці косинусної подібності

# 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.        ]])
Інженерія ознак для NLP у Python

Функція 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
Інженерія ознак для NLP у Python

Давайте потренуємось!

Інженерія ознак для NLP у Python

Preparing Video For Download...