Oslovila nás místní knihovna s tím, že by ráda vytvořila systém pro doporučování knih svým čtenářům. Pro náš vývoj dostaneme k dispozici databázi knih, čtenářů a vztah "jaký čtenář přečetl jakou knihu". V našem řešení budeme předpokládat, že když 2 lidé přečetli stejnou knihu, mají podobný vkus a můžeme jim doporučit i další knihy, které jeden z nich četl a druhý ne. Zároveň lze říci, že čím více stejných knih oba přečetli, tím je pravděpodobnější, že mají podobný vkus a budou se jim líbit další knihy toho druhého. Navrhněte a napište co nejefektivnější algoritmus pro doporučování knih.
Příklad vstupních dat:
users = [
{"id": 1, "name": "František Dobrota"},
{"id": 2, "name": "Karel Černý"},
...
]
books = [
{"id": 1, "title": "Saturnin"},
{"id": 2, "title": "1984"},
{"id": 3, "title": "Povídání o pejskovi a kočičce"}
...
]
lends = [
{"book_id": 1, "user_id": 23},
{"book_id": 872, "user_id": 2},
...
]
solve_for_user_id = 2
Výstupem může být seznam názvů nebo id knih, které čtenář ještě nečetl, seřazený od nejrelevantnějších pro daného čtenáře.
- Základní doporučování.
- Kolaborativní filtrování.
- Doporučování dnes bývá nedílnou součástí systémů, ve kterých uživatel konzumuje nějaký obsah.
- Může se jednat o doporučování článků, hudby, videí, filmů, reklamy.
- Například Youtube je schopen vám na základě vámi zhlédnutých videí doporučit další, která jste ještě neviděli, ale mohla by vám přijít zajímavá.