Doporučování knih

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.

Co se touto úlohou naučím a o čem si něco přečíst?
  • Základní doporučování.
  • Kolaborativní filtrování.
Kde se s touhle úlohou typově setkám?
  • 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á.
Úroveň znalostí
Středně pokročilý