Косинус Сходство, основанное на нескольких статьях, прочитанных пользователем - PullRequest
0 голосов
/ 22 марта 2019

Я делаю систему рекомендаций (из статей), используя подход фильтрации контента. Для этого я использую Cosine Similarity.

Я пробовал скрипт (из учебника), который в основном возвращает 'n' статей на основе данной статьи / прочитано

Это мой скрипт, который я пробовал

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
ds = pd.read_csv("Booksss.csv") 
tf = TfidfVectorizer(analyzer='word', ngram_range=(1, 3), min_df=0,     stop_words='english')


tfidf_matrix = tf.fit_transform(ds['Title'])
cosine_similarities = cosine_similarity(tfidf_matrix,tfidf_matrix)

results = {} # dictionary created to store the result in a dictionary format (ID : (Score,item_id))

for idx, row in ds.iterrows(): 

    similar_indices = cosine_similarities[idx].argsort()[:-5:-1] #stores 5 most similar books, you can change it as per your needs
   similar_items = [(cosine_similarities[idx][i], ds['ID'][i]) for i in similar_indices]
   results[row['ID']] = similar_items[1:]


def item(id):
    return ds.loc[ds['ID'] == id]['Title'].tolist()[0]
def recommend(id, num):
    if (num == 0):
        print("Unable to recommend any book as you have not chosen the number of book to be recommended")
    elif (num==1):
    print("Recommending " + str(num) + " book similar to " + item(id))

    else :
        print("Recommending " + str(num) + " books similar to " + item(id))

print("----------------------------------------------------------")
recs = results[id][:num]
test=[]
for rec in recs:
    test.append(item(rec[1]))
    #print("You may also like to read: " + item(rec[1]) + " (score:" + str(rec[0]) + ")")
return test,item(id)

метод def рекомендует (id, num) принимает рекомендованный идентификатор книги и n статей, но что нужно сделать, чтобы изменить скрипт так, чтобы он брал несколько идентификаторов из списка идентификаторов книг, которые пользователь прочитал, и возвращает рекомендацию на основе этих идентификаторов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...