در اینجا یک راهنمای ساده برای ساخت سیستم پیشنهادگر با پایتون و کتابخانههای محبوب مانند Pandas و Scikit-learn ارائه میشود. ما از روشهای ساده مانند فیلتر کردن بر اساس محتوا (Content-Based Filtering) و فیلتر کردن Collaborative استفاده خواهیم کرد. در این مثال، تمرکز بر استفاده از فیلتر کردن بر اساس محتوا است.
سرفصل های مقاله
مرحله 1: نصب کتابخانههای مورد نیاز
ابتدا مطمئن شوید که کتابخانههای لازم را نصب کردهاید. میتوانید از pip برای نصب استفاده کنید:
pip install pandas scikit-learn
مرحله 2: ایجاد دادههای نمونه
ما ابتدا یک DataFrame ساده ایجاد میکنیم که شامل اطلاعات محصول یا فیلم باشد. برای مثال:
import pandas as pd
# دادههای نمونه
data = {
'title': ['The Shawshank Redemption', 'The Godfather', 'The Dark Knight', 'Pulp Fiction', 'Forrest Gump'],
'description': [
'Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.',
'The aging patriarch of an organized crime dynasty transfers control of his clandestine empire to his reluctant son.',
'When the menace known as the Joker emerges from his mysterious past, he wreaks havoc and chaos on the people of Gotham.',
'The lives of two mob hitmen, a boxer, a gangster’s wife, and a pair of diner bandits intertwine in four tales of violence and redemption.',
'The presidencies of Kennedy and Johnson, the Vietnam War, the counterculture, and other historical events unfold through the perspective of an Alabama man.'
]
}
df = pd.DataFrame(data)
مرحله 3: پردازش متن
برای ایجاد پیشنهادات، باید توضیحات را تبدیل به نمایههای عددی کنیم. ما از تکنیک TF-IDF (Term Frequency-Inverse Document Frequency) استفاده خواهیم کرد:
from sklearn.feature_extraction.text import TfidfVectorizer
# ایجاد تبدیلکننده TF-IDF
tfidf = TfidfVectorizer(stop_words='english')
tfidf_matrix = tfidf.fit_transform(df['description'])
print(tfidf_matrix.shape) # نمایش ابعاد ماتریس
مرحله 4: محاسبه شباهت
برای پیشنهاد دادن، باید شباهت بین محصولات را محاسبه کنیم. میتوانیم از مربع کسینوسی (Cosine Similarity) استفاده کنیم:
from sklearn.metrics.pairwise import cosine_similarity
# محاسبه شباهت
cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)
# نمایش نتایج شباهت
print(cosine_sim)
مرحله 5: ایجاد تابع پیشنهادگر
اکنون میتوانیم یک تابع برای ارائه پیشنهادها بر اساس ورودی کاربر ایجاد کنیم:
def get_recommendations(title):
# یافتن ایندکس فیلم
idx = df[df['title'] == title].index[]
# دریافت امتیازات شباهتها
sim_scores = list(enumerate(cosine_sim[idx]))
# مرتبسازی فیلمها بر اساس شباهت
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
# انتخاب 10 فیلم مشابه
sim_scores = sim_scores[1:6]
# دریافت ایندکسهای فیلمهای مشابه
movie_indices = [i[] for i in sim_scores]
# برگرداندن فیلمهای پیشنهادی
return df['title'].iloc[movie_indices]
# تست تابع
recommended_movies = get_recommendations('The Shawshank Redemption')
print(recommended_movies)
نتیجه گیری
در اینجا یک سیستم پیشنهادگر با پایتون بر اساس محتوای فیلمها ایجاد کردیم. میتوانید این مدل را با استفاده از دادههای واقعی و بیشتر بهبود دهید یا از تکنیکهای پیچیدهتری مانند یادگیری ماشین و یادگیری عمیق بهره ببرید. این راهنما یک نقطه شروع برای گسترش بیشتر سیستم پیشنهادگر است.
امیر: ببینید تجربه نشون داده مواردی که تو برنامه نویسی مستقیما منجر به افزایش فروش بشه میتونه دستمزد بالاتری داشته باشه، در کل سیستم های پیشنهادگر که اینجا یه مثال خیلی کوچیک ازش زدیم، اگر بتونه باعث افزایش فروش محصولات یک فروشگاه بشه کارفرما حاضره پول بیشتری بده، کلا جذابه دیگه، فکر کن تو یه سیستم بنویسی فروش طرف و بالاتر ببره، خب طبیعیه هم از ایده استقبال میکنه و هم پول بیشتری بابتش میده!