Moje cele w tym projekcie
- Poznaj kluczowe komponenty frameworka django
- Opisz podstawowe zasady systemu rekomendacji
- Utwórz prostą aplikację do rekomendacji filmów, stosując algorytm Jaccard oparty na mechanizmie filtrowania treści
Repozytorium Github https://github.com/jamattey/Django-Movie-Recommendation
Stos techniczny
- Zaplecze Django
- Interfejs HTML
- Bootstrap CSS
- Baza danych SQLite
O Django Framework
Django dzieli swoją logikę aplikacji na następujące trzy komponenty typu Model-View-Controller:
Model Django zarządza modelowaniem danych i mapowaniem baz danych, a także logiką biznesową do przetwarzania danych
Django View opisuje, jakie dane są prezentowane, ale nie w jaki sposób. Zazwyczaj Django View deleguje i renderuje stronę HTML, która opisuje sposób prezentacji danych
Szablon Django generuje dynamiczne strony HTML do prezentacji danych
Gdy klient wysyła żądanie, serwer Django kieruje żądanie do odpowiedniego widoku na podstawie konfiguracji adresu URL Django i działa jako tradycyjny kontroler
Modele Django
Django używa modeli Django do reprezentowania tabel bazy danych i mapowania ich na obiekty, takie jak proces zwany ORM. Django Models stara się ułatwić życie programistom, abstrahując bazy danych i automatycznie mapując obiekty i metody na tabele i zapytania SQL.
Wystarczy zdefiniować klasy jako modele Django, które zostaną później odpowiednio zmapowane do tabel bazy danych. Następnie możesz po prostu użyć Django Models API do wykonania CRUD na tabelach bazy danych bez pisania ani jednej linii SQL
Widoki Django
W Django widok jest zasadniczo funkcją Pythona. Taka funkcja przyjmuje żądanie sieci Web i stosuje niezbędną logikę do wygenerowania odpowiedzi sieciowej, takiej jak zawartość HTML strony sieci Web, przekierowanie, błąd 404, dokument XML, obraz lub jakakolwiek inna odpowiedź sieciowa. Często View współdziała z modelami Django, aby uzyskać wymagane dane w postaci QuerySetu lub obiektów w celu wygenerowania odpowiedzi sieciowej.
Proces tworzenia aplikacji Django
Najpierw stworzyłem projekt Django, który jest kontenerem na aplikacje i ustawienia Django. Tutaj mogę zdecydować o utworzeniu i dodaniu do projektu jednej lub więcej aplikacji Django.
W Core Development stworzyłem modele Django do modelowania danych i stworzyłem widoki, aby określić, które dane mają być prezentowane w interfejsie użytkownika. Mapuję również adresy URL żądań na nasze widoki, aby Django mogło przekazywać żądania do odpowiednich widoków za pośrednictwem adresów URL. Następnie możemy zacząć projektować i budować interfejs użytkownika.
Te filmy są umieszczane w pliku CSV. Witryna nie zawiera prawdziwych filmów, ale jest to silnik rekomendacji wykorzystujący zwykły kod i bazę danych.
Ten silnik rekomendacji nie korzysta jeszcze z uczenia maszynowego .......
Aby rekomendacja rzeczywiście działała, musiałem najpierw zaznaczyć filmy, które użytkownik obejrzał za pomocą strony Django Admin. Następnie napisałem algorytm rekomendacji na podstawie obejrzanych filmów.
Oznaczanie obejrzanych filmów w Django Admin
- Uruchom serwer Django
- odwiedź url administratora app_url/admin
- Następnie klikasz wpis filmu i oznaczasz go jako obejrzany i naciskasz Zapisz.
Uruchom make_recommendations CMD, aby wygenerować rekomendacje
W przypadku każdego systemu rekomendacji kluczową ideą jest zawsze wymyślenie dobrego algorytmu/modelu, aby przewidzieć, czy określony użytkownik polubi lub nie lubi swojego niewidocznego przedmiotu, jak pokazano na poniższym zrzucie ekranu:
Istnieją prawdopodobnie setki dobrych algorytmów rekomendacji i można je z grubsza podzielić na dwie kategorie:
Na podstawie filtrowania treści:
Algorytmy rekomendacji oparte na filtrowaniu treści zakładają, że nowy film może Ci się spodobać, jeśli wcześniej oglądałeś bardzo podobne filmy. Lub na podstawie Twojego profilu użytkownika (np. wieku, płci, zainteresowań) spróbuje znaleźć nowe filmy pasujące do Twojego profilu.
Filtrowanie oparte na współpracy:
Algorytmy wspólnego filtrowania zakładają, że nowy film może Ci się spodobać, jeśli inni użytkownicy podobni do Ciebie (podobny profil lub oglądali podobne filmy) obejrzeli ten film.
W tym projekcie użyjemy algorytmu opartego na filtrowaniu treści i postaramy się polecić Ci nieobejrzane/nowe filmy, jeśli są podobne do oglądanych przez Ciebie filmów.
Jak obliczyć takie podobieństwo filmów
Tutaj użyjemy podobieństwa Jaccarda, które jest prawdopodobnie najprostszą, ale bardzo skuteczną metodą obliczania podobieństwa między dwoma zestawami.
Podobieństwo Jaccarda jest definiowane jako wielkość przecięcia dwóch zbiorów podzielona przez wielkość połączenia tych dwóch zbiorów.