شما اینجا هستید

ایجاد مجموعه داده ها بر اساس مقایسه آیتم ها

پیغام خطا

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls در book_prev() (خط 775 در /home/molavy/public_html/modules/book/book.module).

برای مقایسه آیتم ها، اولین چیزی که باید انجام دهید این است که تابعی بنویسیم که مجموعه کاملی از آیتم های شبیه به هم بسازد. یک بار دیگر، نیازی نیست که این کار برای هر دفعه ای که نیاز به نمایش پیشنهادات داشتیم انجام شود-- به جای آن، این مجموعه داده را یک بار میسازیم و در هر بار که به آن نیاز داشته باشیم از آن استفاده می کنیم.

برای تولید مجموعه داده، تابع زیر را به فایل recommendations.py اضافه می کنیم:

 

 def calculateSimilarItems(prefs,n=10):
    # Create a dictionary of items showing which other items they
    # are most similar to.
    result={}
    # Invert the preference matrix to be item-centric
    itemPrefs=transformPrefs(prefs)
    c=0
    for item in itemPrefs:
        # Status updates for large datasets
        c+=1
        if c%100==0: print "%d / %d" % (c,len(itemPrefs))
        # Find the most similar items to this one
        scores=topMatches(itemPrefs,item,n=n,similarity=sim_distance)
        result[item]=scores
    return result

این تابع اول با استفاده از تابع transformPrefs که قبلا ایجادکردیم، دیکشنری رتبه ها را معکوس می کند، یک لیست از آیتم ها و اینکه هر کاربر چه امتیازی به آن داده را می گرداند.

سپس حلقه ای برای هر آیتم ایجاد می کند و دیکشنری تبدیل شده را به تابع topMatches می دهد تا یک لیست از آیتم های که بیشتر از همه شبیه به هم هستند را بر اساس رتبه شباهت بگیرد.

در انتها یک دیکشنری می سازد و برای هر آیتم، لیستی از شبیه ترین آیتم ها به آنرا بر می گرداند.

در محیط اینتر اکتیو پایتون برای یک آیتم مجموعه شباهت ها را بسازید و ببینید شبیه به چه چیزی است:

 

 >>> reload(recommendations)
>>> itemsim=recommendations.calculateSimilarItems(recommendations.critics)
>>> itemsim
{'Lady in the Water': [(0.40000000000000002, 'You, Me and Dupree'),
(0.2857142857142857, 'The Night Listener'),...
'Snakes on a Plane': [(0.22222222222222221, 'Lady in the Water'),
(0.18181818181818182, 'The Night Listener'),... 

به خاطر داشته باشید، این تابع تنها نیاز است که هر چند وقت یک بار اجرا شود تا لیست آیتم های شبیه به هم به روز باشد. این کار بیشتر مواقعی نیاز است که تعداد کاربران و امتیاز های داده شده کم است، اما بعد از مدتی که تعداد کاربران زیاد می شود، اغلب رتبه های شباهت بین آیتم ها کمتر تغییر می کنند.

دیدگاه جدیدی بگذارید