इस परियोजना के लिए मेरे लक्ष्य
- django ढांचे के प्रमुख घटकों को समझें
- सुझाव प्रणाली के मूल सिद्धांतों का वर्णन करें
- सामग्री फ़िल्टरिंग तंत्र के आधार पर Jaccard एल्गोरिथम लागू करके एक साधारण मूवी अनुशंसा ऐप बनाएं
जीथब रिपोजिटरी https://github.com/jamattey/Django-Movie-Recommendation
टेक स्टैक
- Django बैकएंड
- एचटीएमएल फ़्रंटएंड
- बूटस्ट्रैप सीएसएस
- SQLite डेटाबेस
Django फ्रेमवर्क के बारे में
Django अपने एप्लिकेशन लॉजिक को निम्नलिखित तीन मॉडल-व्यू-कंट्रोलर जैसे घटकों में विभाजित करता है:
Django मॉडल डेटा मॉडलिंग और डेटाबेस मैपिंग के साथ-साथ डेटा को संसाधित करने के लिए व्यावसायिक तर्क का प्रबंधन करता है
Django व्यू बताता है कि कौन सा डेटा प्रस्तुत किया गया है, लेकिन यह नहीं कि इसे कैसे प्रस्तुत किया जाता है। आमतौर पर, Django व्यू एक HTML पृष्ठ को प्रस्तुत करता है और प्रस्तुत करता है, जो बताता है कि डेटा कैसे प्रस्तुत किया जाता है
Django टेम्पलेट डेटा प्रस्तुत करने के लिए गतिशील HTML पृष्ठ उत्पन्न करता है
जब कोई क्लाइंट अनुरोध भेजता है, तो Django सर्वर Django URL कॉन्फ़िगरेशन के आधार पर अनुरोध को उचित दृश्य पर रूट करता है और पारंपरिक नियंत्रक के रूप में कार्य करता है
Django मॉडल
Django डेटाबेस तालिकाओं का प्रतिनिधित्व करने के लिए Django मॉडल का उपयोग करता है और उन्हें ऑब्जेक्ट्स पर मैप करता है, जैसे प्रक्रिया को ओआरएम कहा जाता है। Django मॉडल डेटाबेस को अमूर्त करके और ऑब्जेक्ट्स और विधियों को टेबल और SQL क्वेरी में स्वचालित रूप से मैप करके डेवलपर के जीवन को आसान बनाने की कोशिश करता है।
आपको केवल कक्षाओं को Django मॉडल के रूप में परिभाषित करने की आवश्यकता है, और बाद में तदनुसार डेटाबेस तालिकाओं में मैप किया जाएगा। फिर आप SQL की एक भी पंक्ति लिखे बिना डेटाबेस तालिकाओं पर CRUD करने के लिए Django मॉडल API का उपयोग कर सकते हैं
Django दृश्य
Django में, एक दृश्य अनिवार्य रूप से एक पायथन फ़ंक्शन है। ऐसा फ़ंक्शन एक वेब अनुरोध लेता है और वेब प्रतिक्रिया उत्पन्न करने के लिए आवश्यक तर्क लागू करता है, जैसे वेब पेज की HTML सामग्री, एक रीडायरेक्ट, एक 404 त्रुटि, एक XML दस्तावेज़, एक छवि, या कोई अन्य वेब प्रतिक्रिया। अक्सर, वेब प्रतिक्रिया उत्पन्न करने के लिए क्वेरीसेट या ऑब्जेक्ट के रूप में आवश्यक डेटा प्राप्त करने के लिए व्यू Django मॉडल के साथ इंटरैक्ट करता है।
Django अनुप्रयोग विकास प्रक्रिया
सबसे पहले, मैंने एक Django प्रोजेक्ट बनाया जो Django ऐप्स और सेटिंग्स के लिए एक कंटेनर है। यहां, मैं प्रोजेक्ट में एक या अधिक Django ऐप्स बनाने और जोड़ने का निर्णय ले सकता हूं।
कोर डेवलपमेंट में, मैंने डेटा को मॉडल करने के लिए Django मॉडल बनाए और यह निर्धारित करने के लिए दृश्य बनाए कि कौन सा डेटा UI को प्रस्तुत किया जाना है। मैं अनुरोध URL को हमारे विचारों में भी मैप करता हूं ताकि Django URL के माध्यम से संबंधित विचारों के अनुरोधों को अग्रेषित कर सके। तब हम UI को डिजाइन और निर्माण शुरू कर सकते हैं।
यह फिल्में एक CSV में भरी हुई हैं। साइट वास्तविक फिल्मों की मेजबानी नहीं करती है लेकिन यह नियमित कोड और डेटाबेस का उपयोग करने वाला एक अनुशंसा इंजन है।
यह अनुशंसा इंजन मशीन लर्निंग का उपयोग नहीं करता है... फिर भी
सिफारिश को वास्तव में काम करने के लिए, मुझे पहले उन फिल्मों को चिह्नित करना होगा जिन्हें उपयोगकर्ता ने Django Admin साइट का उपयोग करके देखा है। फिर मैंने देखी गई फिल्मों के आधार पर एक अनुशंसा एल्गोरिदम लिखा।
Django Admin में देखी गई मूवी को चिह्नित करना
- Django सर्वर चलाएँ
- व्यवस्थापक url app_url/admin पर जाएं
- फिर आप मूवी प्रविष्टि में क्लिक करें और इसे देखे गए के रूप में चिह्नित करें और सहेजें दबाएं।
अनुशंसाएं जेनरेट करने के लिए make_recommendations CMD चलाएँ
किसी भी सिफारिश प्रणाली के लिए, मुख्य विचार हमेशा यह अनुमान लगाने के लिए एक अच्छे एल्गोरिदम/मॉडल के साथ आना है कि क्या कोई विशिष्ट उपयोगकर्ता अपनी अनदेखी वस्तु को पसंद करेगा या नापसंद करेगा, जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है:
संभवतः सैकड़ों अच्छे अनुशंसा एल्गोरिदम हैं और इन्हें मोटे तौर पर दो श्रेणियों में विभाजित किया जा सकता है:
सामग्री फ़िल्टरिंग आधारित:
सामग्री फ़िल्टरिंग आधारित अनुशंसा एल्गोरिदम यह मानते हैं कि यदि आपने पहले बहुत समान फिल्में देखी हैं तो आपको एक नई फिल्म पसंद आ सकती है। या आपकी उपयोगकर्ता प्रोफ़ाइल (जैसे उम्र, लिंग, रुचियां) के आधार पर, यह आपकी प्रोफ़ाइल से मेल खाने वाली नई फिल्में खोजने का प्रयास करेगा।
सहयोगात्मक फ़िल्टरिंग आधारित:
सहयोगी फ़िल्टरिंग एल्गोरिदम यह मानते हैं कि आप एक नई फिल्म पसंद कर सकते हैं यदि आपके समान अन्य उपयोगकर्ताओं (समान प्रोफ़ाइल या समान फिल्में देखी गई) ने इस फिल्म को देखा है।
इस परियोजना में, हम सामग्री फ़िल्टरिंग आधारित एल्गोरिथम का उपयोग करेंगे, और यदि वे आपकी देखी गई फिल्मों के समान हैं, तो हम आपको न देखी गई/नई फिल्मों की अनुशंसा करने का प्रयास करेंगे।
हम ऐसी मूवी समानता की गणना कैसे करते हैं
यहां हम Jaccard समानता का उपयोग करेंगे जो कि दो सेटों के बीच समानता की गणना करने के लिए शायद सबसे सरल लेकिन बहुत प्रभावी तरीका है।
जैककार्ड समानता को दो सेटों के प्रतिच्छेदन के आकार के रूप में परिभाषित किया जाता है, जो कि दो सेटों के मिलन के आकार से विभाजित होता है।