Moje cíle pro tento projekt
- Pochopte klíčové součásti rámce django
- Popište základní principy systému doporučení
- Vytvořte jednoduchou aplikaci pro doporučení filmů použitím Jaccardova algoritmu založeného na mechanismu filtrování obsahu
Úložiště Github https://github.com/jamattey/Django-Movie-Recommendation
Tech Stack
- Backend Django
- Rozhraní HTML
- Bootstrap CSS
- Databáze SQLite
O Django Framework
Django rozděluje svou aplikační logiku do následujících tří komponent podobných Model-View-Controller:
Django Model spravuje datové modelování a mapování databází a také obchodní logiku pro zpracování dat
Django View popisuje, která data jsou prezentována, ale ne jak jsou prezentována. Django View obvykle deleguje a vykresluje stránku HTML, která popisuje, jak jsou data prezentována
Šablona Django generuje dynamické HTML stránky pro prezentaci dat
Když klient odešle požadavek, server Django směruje požadavek do příslušného zobrazení na základě konfigurace adresy URL Django a chová se jako tradiční řadič
Modely Django
Django používá modely Django k reprezentaci databázových tabulek a jejich mapování na objekty, například proces se nazývá ORM. Django Models se snaží usnadnit vývojářům život tím, že abstrahuje databáze a automaticky mapuje objekty a metody do tabulek a SQL dotazů.
Stačí definovat třídy jako modely Django a později budou odpovídajícím způsobem mapovány do databázových tabulek. Pak můžete jednoduše použít Django Models API k provedení CRUD na databázových tabulkách bez psaní jediného řádku SQL
Pohledy na Django
V Django je View v podstatě funkcí Pythonu. Taková funkce přijímá webový požadavek a aplikuje nezbytnou logiku pro generování webové odpovědi, jako je obsah HTML webové stránky, přesměrování, chyba 404, dokument XML, obrázek nebo jakákoli jiná webová odpověď. View často spolupracuje s Django Models, aby získal požadovaná data ve formě QuerySet nebo objektů pro generování webové odpovědi.
Proces vývoje aplikací Django
Nejprve jsem vytvořil projekt Django, což je kontejner pro aplikace a nastavení Django. Zde se mohu rozhodnout vytvořit a přidat do projektu jednu nebo více aplikací Django.
V Core Development jsem vytvořil modely Django pro modelování dat a vytvořil pohledy, abych určil, která data je třeba prezentovat do uživatelského rozhraní. Také mapuji adresy URL požadavků na naše zobrazení, takže Django může předávat požadavky odpovídajícím zobrazením prostřednictvím adres URL. Poté můžeme začít navrhovat a budovat uživatelské rozhraní.
Tyto filmy jsou vyplněny ve formátu CSV. Tato stránka nehostuje skutečné filmy, ale jedná se o nástroj pro doporučení využívající běžný kód a databázi.
Tento modul doporučení nepoužívá strojové učení.......zatím 😂😂
Aby doporučení skutečně fungovalo, musel jsem nejprve označit filmy, které uživatel sledoval pomocí webu Django Admin. Pak jsem napsal algoritmus doporučení založený na sledovaných filmech.
Označení sledovaných filmů ve správci Django
- Spusťte Django Server
- navštivte admin url app_url/admin
- Potom kliknete na záznam filmu a označíte jej jako zhlédnutý a stisknete Uložit.
Spusťte make_recommendations CMD pro generování doporučení
U všech systémů doporučení je klíčovou myšlenkou vždy přijít s dobrým algoritmem/modelem, který předpovídá, zda se konkrétnímu uživateli bude líbit nebo nelíbí jeho/její neviditelná položka, jak ukazuje následující snímek obrazovky:
Existují pravděpodobně stovky dobrých algoritmů doporučení a lze je zhruba rozdělit do dvou kategorií:
Na základě filtrování obsahu:
Algoritmy doporučení založené na filtrování obsahu předpokládají, že se vám nový film může líbit, pokud jste již dříve sledovali velmi podobné filmy. Nebo se na základě vašeho uživatelského profilu (jako je věk, pohlaví, zájmy) pokusí najít nové filmy odpovídající vašemu profilu.
Na základě kolaborativního filtrování:
Algoritmy kolaborativního filtrování předpokládají, že se vám nový film může líbit, pokud tento film sledovali jiní uživatelé jako vy (podobný profil nebo sledovali podobné filmy).
V tomto projektu použijeme algoritmus založený na filtrování obsahu a pokusíme se vám doporučit nezhlédnuté/nové filmy, pokud jsou podobné vašim sledovaným filmům.
Jak vypočítáme takovou podobnost filmu
Zde použijeme Jaccardovu podobnost, což je pravděpodobně nejjednodušší, ale velmi efektivní metoda pro výpočet podobnosti mezi dvěma množinami.
Jaccardova podobnost je definována jako velikost průniku dvou množin dělená velikostí spojení těchto dvou množin.