Metin tabanlı benzerlikler

Python ile Öneri Motorları Geliştirme

Rob O'Callaghan

Director of Data

Açık öznitelikler olmadan çalışmak

Amazon'dan bir ürün açıklaması örneği.

Python ile Öneri Motorları Geliştirme

Terim frekansı-ters belge frekansı

$$ \Large{\text{TF-IDF} = \frac{\frac{\text{Kelimelerin görülme sayısı}}{\text{Belgedeki toplam kelime}}}{\log({\frac{\text{Kelimenin geçtiği belge sayısı}}{\text{Toplam belge sayısı}}})}} $$

Python ile Öneri Motorları Geliştirme

Verimiz

book_summary_df:

Kitap Açıklama
The Hobbit "Bilbo Baggins, Shire’da diğer hobbitlerle sade bir hayat sürer..."
The Great Gatsby "Caz Çağı New York’unda geçen roman, Jay’in trajik hikâyesini anlatır ..."
A Game of Thrones "Robert’ın isyanının üzerinden 15 yıl geçmiştir; dokuz yıl süren ..."
Macbeth "Cesur bir İskoç generali, üç cadıdan bir kehanet alır ..."
... ...
Python ile Öneri Motorları Geliştirme

Vektörleştiriciyi başlatma

from sklearn.feature_extraction.text import TfidfVectorizer
tfidfvec = TfidfVectorizer(        ,           )
Python ile Öneri Motorları Geliştirme

Veriyi filtreleme

from sklearn.feature_extraction.text import TfidfVectorizer
tfidfvec = TfidfVectorizer(min_df=2,           )
Python ile Öneri Motorları Geliştirme

Veriyi filtreleme

from sklearn.feature_extraction.text import TfidfVectorizer
tfidfvec = TfidfVectorizer(min_df=2, max_df=0.7)
Python ile Öneri Motorları Geliştirme

Veriyi vektörleştirme

vectorized_data = tfidfvec.fit_transform(book_summary_df['Descriptions'])

print(tfidfvec.get_feature_names)
['age', 'ancient', 'angry', 'brave', 'battle', 'fellow', 'game', 'general', ...]
print(vectorized_data.to_array())
[[0.21,      0.53,    0.41,    0.64,     0.01,     0.02,     ...
 [0.31,      0.00,    0.42,    0.03,     0.00,     0.73,     ...
 [...,        ...,     ...,     ...,      ...,      ...,     ...
Python ile Öneri Motorları Geliştirme

Veriyi biçimlendirme

tfidf_df = pd.DataFrame(vectorized_data.toarray(),
                        columns=tfidfvec.get_feature_names())

tfidf_df.index = book_summary_df['Book']
print(tfidf_df)
                   | 'age'| 'ancient'| 'angry'| 'brave'| 'battle'| 'fellow'|...
|------------------|------|----------|--------|--------|---------|---------|...
| The Hobbit       |  0.21|      0.53|    0.41|    0.64|     0.01|     0.02|...
| The Great Gatsby |  0.31|      0.00|    0.42|    0.03|     0.00|     0.73|...
| A Game of Thrones|  0.61|      0.42|    0.77|    0.31|     0.83|     0.03|...
|               ...|   ...|       ...|     ...|     ...|      ...|      ...|...
Python ile Öneri Motorları Geliştirme

Kosinüs benzerliği

Kosinüs uzaklığı: $$cos(\theta)=\frac{A.B }{||A||\cdot||B||}$$

Python ile Öneri Motorları Geliştirme

Kosinüs benzerliği

from sklearn.metrics.pairwise import cosine_similarity

# Tüm öğeler arasındaki benzerliği bulun
cosine_similarity_array = cosine_similarity(tfidf_summary_df)
# İki öğe arasındaki benzerliği bulun
cosine_similarity(tfidf_df.loc['The Hobbit'].values.reshape(1, -1),
                  tfidf_df.loc['Macbeth'].values.reshape(1, -1))
Python ile Öneri Motorları Geliştirme

Hadi pratik yapalım!

Python ile Öneri Motorları Geliştirme

Preparing Video For Download...