Rumah  >  Artikel  >  pangkalan data  >  Membina sistem pengesyoran menggunakan Redis dan Python: Cara memberikan pengesyoran yang diperibadikan

Membina sistem pengesyoran menggunakan Redis dan Python: Cara memberikan pengesyoran yang diperibadikan

王林
王林asal
2023-07-29 15:33:331593semak imbas

Membina sistem pengesyoran menggunakan Redis dan Python: Cara memberikan pengesyoran yang diperibadikan

Dalam era Internet, sistem pengesyoran telah menjadi salah satu fungsi teras platform utama. Dengan menganalisis gelagat pengguna dan pilihan peribadi, sistem pengesyoran boleh menyediakan pengguna dengan pengesyoran kandungan yang diperibadikan. Artikel ini akan memperkenalkan cara menggunakan Redis dan Python untuk membina sistem pengesyoran mudah, dan memberikan contoh kod yang berkaitan.

  1. Pengenalan kepada Redis

Redis ialah sistem storan nilai kunci berprestasi tinggi sumber terbuka. Ia menyokong pelbagai struktur data, seperti rentetan, senarai, set, set tertib, dsb., dan menyediakan pelbagai perintah dan fungsi yang sesuai untuk pelbagai senario. Dalam sistem pengesyoran, Redis boleh digunakan untuk menyimpan data tingkah laku pengguna dan hasil pengesyoran, serta melaksanakan pertanyaan dan pengiraan data dengan pantas.

  1. Membina modul rakaman gelagat pengguna

Langkah pertama dalam sistem pengesyoran ialah mengumpul dan merekod data gelagat pengguna. Kita boleh menggunakan struktur data set yang dipesan Redis untuk melaksanakan modul rakaman tingkah laku pengguna. Berikut ialah contoh mudah:

import redis

# 连接Redis
r = redis.Redis(host='localhost', port=6379, db=0)

# 记录用户行为
def record_user_behavior(user_id, item_id):
    r.zincrby('user_behavior', 1, f'{user_id}:{item_id}')

# 获取用户行为排行榜
def get_user_behavior_ranking():
    return r.zrevrange('user_behavior', 0, -1, withscores=True)

Dalam contoh di atas, kami merekodkan tingkah laku pengguna dalam koleksi pesanan user_behavior melalui perintah zincrby dan menggunakan ID pengguna dan ID item dikenal pasti sebagai ahli set yang dipesan. Perintah zincrby boleh melakukan operasi kenaikan automatik pada ahli tertentu bagi set yang dipesan, menjadikannya lebih mudah untuk kami mengira bilangan tindakan pengguna pada item yang berbeza. zincrby命令将用户的行为记录在user_behavior有序集合中,并使用用户ID和物品ID作为有序集合的成员进行标识。zincrby命令可以对有序集合的指定成员进行自增操作,方便我们统计用户在不同物品上的行为次数。

  1. 构建推荐模型并计算推荐结果

推荐系统的核心是推荐模型和推荐算法。在本文中,我们将使用协同过滤算法来实现一个基于用户的推荐系统。以下是一个简单示例:

# 构建协同过滤推荐模型
def build_collaborative_filtering_model():
    # 获取用户行为数据
    behavior_data = get_user_behavior_ranking()
    
    # 构建用户相似度矩阵
    similarity_matrix = {}
    for i in range(len(behavior_data)):
        user1, behavior1 = behavior_data[i]
        user1 = user1.split(':')[0]
        for j in range(i+1, len(behavior_data)):
            user2, behavior2 = behavior_data[j]
            user2 = user2.split(':')[0]
            
            # 计算用户相似度(这里简化为用户行为次数的比较)
            similarity = abs(int(behavior1) - int(behavior2))
            
            # 更新用户相似度矩阵
            if user1 not in similarity_matrix:
                similarity_matrix[user1] = {}
            similarity_matrix[user1][user2] = similarity
            
            if user2 not in similarity_matrix:
                similarity_matrix[user2] = {}
            similarity_matrix[user2][user1] = similarity
    
    return similarity_matrix

# 根据用户行为和相似度矩阵进行推荐
def recommend_items(user_id, similarity_matrix):
    user_similarities = similarity_matrix[user_id]
    items = {}
    
    for user, similarity in user_similarities.items():
        for item in r.zscan_iter(f'user_behavior', match=f'{user}:*'):
            item_id = item.decode().split(':')[1]
            items[item_id] = items.get(item_id, 0) + similarity
            
    sorted_items = sorted(items.items(), key=lambda x: x[1], reverse=True)
    return [item[0] for item in sorted_items[:5]]

在上述示例中,我们通过build_collaborative_filtering_model函数构建协同过滤推荐模型,计算用户间的相似度,并使用recommend_items

    Bina model pengesyoran dan kira hasil pengesyoran
    1. Inti sistem pengesyoran ialah model pengesyoran dan algoritma pengesyoran. Dalam artikel ini, kami akan menggunakan algoritma penapisan kolaboratif untuk melaksanakan sistem pengesyoran berasaskan pengguna. Berikut ialah contoh mudah:
    # 记录用户行为
    record_user_behavior(1, 'item1')
    record_user_behavior(1, 'item2')
    record_user_behavior(2, 'item2')
    record_user_behavior(2, 'item3')
    
    # 构建推荐模型
    similarity_matrix = build_collaborative_filtering_model()
    
    # 获取推荐结果
    recommendations = recommend_items(1, similarity_matrix)
    print(recommendations)

    Dalam contoh di atas, kami membina model pengesyoran penapisan kolaboratif melalui fungsi build_collaborative_filtering_model, mengira persamaan antara pengguna dan menggunakan recommend_item fungsi berdasarkan matriks Persamaan untuk cadangan. Ini memudahkan pengiraan persamaan dan pemerolehan keputusan pengesyoran, dan boleh dioptimumkan dan ditambah baik mengikut keperluan khusus dalam projek sebenar.

    Contoh panggilan🎜🎜rrreee🎜Dalam contoh panggilan, kami mula-mula merekodkan tingkah laku dua pengguna, kemudian membina model pengesyoran dan memperoleh hasil pengesyoran pengguna 1. Output akan mengembalikan senarai item yang pengguna 1 mungkin berminat. 🎜🎜Melalui gabungan Redis dan Python, kami boleh membina sistem pengesyoran diperibadikan ringkas dengan cepat. Sudah tentu, sistem pengesyoran sebenar melibatkan algoritma dan model yang lebih kompleks, dan artikel ini hanya menyediakan rangka kerja asas dan contoh untuk rujukan. Pembaca boleh membuat penambahbaikan dan pengembangan selanjutnya berdasarkan keperluan sebenar. 🎜

Atas ialah kandungan terperinci Membina sistem pengesyoran menggunakan Redis dan Python: Cara memberikan pengesyoran yang diperibadikan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn