== Чекор 8 - Тестирање на препораките == Пример повик: {{{ SELECT * FROM recommend_books_for_member_pgvector(10835, 10); }}} Функцијата успешно враќа листа од препорачани книги за членот, сортирани според cosine similarity. [[Image(recommend_books_for_member_pgvector.png, 800px)]] === Recommended Books Generated by the System === || Similarity || Recommended Book || Genres || Categories || Authors || || 0.751 || Confirmation || Fantasy, Philosophy || Creative, Home 2, Garden, Art, Science, Health 1, Urban, Music || James Thomas || || 0.748 || My First Book: My First Steps to Reading || Physics || Art, Creative 1, Creative, Digital 1, Kids, Garden 2 || Samantha Mason || || 0.739 || Write Source 2000: A Guide to Writing, Thinking & Learning || Classic Literature || Fashion, Health 1, Premium, Health, Urban, Global 2 || Eric Stevens, James Foster || || 0.735 || Publication Manual of the American Psychological Association || Mystery, Philosophy, Travel || Art, Sports, Digital, Classic 1, Garden, Home 2 || Michael Cardenas, Stephen Hill || || 0.731 || The Everyday Writer || Romance, Young Adult || History, Advanced 1 || Melissa Allen, Melissa Boone || || 0.731 || American Literary Criticism From the Thirties to the Eighties || Biography, Physics || Books, Science, Global || Gabriel García Márquez, Nikola White || || 0.730 || The Art and Craft of Handmade Paper || Children, Horror || Garden, Tech 1, Global, Food || Donald Jackson, Sierra Thomas || || 0.730 || Ethics & National Defense: The Timeless Issues || Computer Science, Crime || Fashion, Nature || Anna Anderson || || 0.729 || Encyclopedia of Discovery: Science and History || Autobiography, Children || Digital, Art 1, Music, Premium 1, Smart, Health 3, Sports, Classic 2 || Olivia Shaw, Peter Anderson || || 0.727 || Achieving Authentic Success || Cooking, Romance || Books, Nature 2 || Jason Reed || == Чекор 9 - Доказ дека не се препорачуваат веќе позајмени книги == Беше извршена дополнителна проверка за да се потврди дека системот не препорачува книги кои членот веќе ги има позајмено. {{{ SELECT COUNT(*) FROM loan_history lh JOIN book_copy bc ON bc.copy_id = lh.copy_id WHERE lh.member_user_id = 10835 AND bc.barcode IN ( SELECT barcode FROM recommend_books_for_member_pgvector(10835, 10) ); }}} Резултат: {{{ 0 }}} Ова докажува дека ниту една од препорачаните книги не се појавува во претходната историја на позајмувања на членот. [PLACEHOLDER: Screenshot од COUNT = 0] == Чекор 10 - Валидација на препораките == За да се покаже дека препораките не се случајни, беа анализирани книгите што членот претходно ги има позајмено и препораките што ги генерира системот. Прво беа прикажани книгите од loan history за членот: {{{ SELECT DISTINCT b.title, string_agg(DISTINCT g.name, ', ') AS genres, string_agg(DISTINCT c.name, ', ') AS categories, string_agg(DISTINCT a.first_name || ' ' || a.last_name, ', ') AS authors FROM loan_history lh JOIN book_copy bc ON bc.copy_id = lh.copy_id JOIN book b ON b.barcode = bc.barcode LEFT JOIN book_genre bg ON bg.barcode = b.barcode LEFT JOIN genre g ON g.genre_id = bg.genre_id LEFT JOIN category_book cb ON cb.barcode = b.barcode LEFT JOIN category c ON c.category_id = cb.category_id LEFT JOIN book_author ba ON ba.barcode = b.barcode LEFT JOIN author a ON a.author_id = ba.author_id WHERE lh.member_user_id = 10835 GROUP BY b.barcode, b.title LIMIT 10; }}} [PLACEHOLDER: Screenshot од loan history книги] Потоа беа прикажани препорачаните книги со нивните жанрови, категории и автори. [PLACEHOLDER: Screenshot од препораки со genre/category/author] === Конкретни примери === Пример 1 {{{ Loan history: A Wizard Alone: The Sixth Book in the Young Wizards Recommended: My First Book: My First Steps to Reading }}} Иако не се исти книги, двете се поврзани со литература наменета за помлади читатели и содржини поврзани со читање и едукација. Пример 2 {{{ Loan history: Sharing the Pie: A Citizen's Guide to Wealth Recommended: Publication Manual of the American Psychological Association The Everyday Writer }}} Во овој случај системот препознава интерес за едукативни, академски и информативни книги. Иако жанровите не се идентични, содржината и намената на книгите се слични. Пример 3 {{{ Loan history: The Oxford Dictionary of Popes Recommended: Encyclopedia of Discovery: Science and History }}} Двете книги припаѓаат на групата reference-oriented книги, односно книги кои служат за информирање, истражување и стекнување знаење. === Recommendation Analysis === Системот генерираше препораки со similarity вредности помеѓу 0.72 и 0.75. При споредба на loan history и препорачаните книги беше забележано преклопување во повеќе жанрови и категории, како што се: {{{ Young Adult Classic Literature Children Physics Horror Nature Books Global Food Art Kids Health Creative Smart }}} Ова покажува дека препораките не се случајни, туку се базирани на семантичка сличност помеѓу книгите. == Screenshots / Proof of Work == [[Image(vector_extension.png)]] Проверка дека pgvector екстензијата е успешно инсталирана. [[Image(embeddings_generated.png)]] Потврда дека се генерирани embeddings за 10000 книги. [[Image(recommendation_results.png)]] Резултат од функцијата recommend_books_for_member_pgvector. [[Image(validation_result.png)]] Проверка дека не се препорачуваат веќе позајмени книги. [[Image(loan_history.png)]] Пример книги од претходната историја на позајмувања.