Konu özeti tabanlı önerici oluşturma

Python ile NLP için Özellik Mühendisliği

Rounak Banik

Data Scientist

Film önerici

Başlık Özet
Shanghai Triad 1930'larda Şanghay'daki bir suç ailesiyle akraba taşralı bir çocuk, amcası tarafından bir çete liderinin metresine hizmet etmek üzere kozmopolit Şanghay'a getirilir.
Cry, the Beloved Country Güney Afrikalı bir papaz, büyük şehirde suç işlemiş yoldan çıkmış oğlunu aramaya gider.
Python ile NLP için Özellik Mühendisliği

Film önerici

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
Python ile NLP için Özellik Mühendisliği

Adımlar

  1. Metni ön işleyin
  2. tf-idf vektörleri oluşturun
  3. Kosinüs benzerliği matrisi oluşturun
Python ile NLP için Özellik Mühendisliği

Önerici işlevi

  1. Argümanlar: bir film adı, kosinüs benzerliği matrisi ve indeks serisi.
  2. Film için ikili kosinüs benzerliği skorlarını çıkarın.
  3. Skorları azalan sırada sıralayın.
  4. En yüksek skorlara karşılık gelen başlıkları döndürün.
  5. En yüksek benzerlik skorunu (1) yok sayın.
Python ile NLP için Özellik Mühendisliği

tf-idf vektörleri oluşturma

# 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)
Python ile NLP için Özellik Mühendisliği

Kosinüs benzerliği matrisi oluşturma

# 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.        ]])
Python ile NLP için Özellik Mühendisliği

linear_kernel işlevi

  • Bir tf-idf vektörünün büyüklüğü 1'dir.
  • İki tf-idf vektörü arasındaki kosinüs skoru, noktasal çarpımlarıdır.
  • Hesaplama süresini ciddi biçimde kısaltır.
  • cosine_similarity yerine linear_kernel kullanın.
Python ile NLP için Özellik Mühendisliği

Kosinüs benzerliği matrisi oluşturma

# 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.        ]])
Python ile NLP için Özellik Mühendisliği

get_recommendations işlevi

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
Python ile NLP için Özellik Mühendisliği

Hadi pratik yapalım!

Python ile NLP için Özellik Mühendisliği

Preparing Video For Download...