| | 1 | == Чекор 8 - Тестирање на препораките == |
| | 2 | |
| | 3 | Пример повик: |
| | 4 | |
| | 5 | {{{ |
| | 6 | SELECT * |
| | 7 | FROM recommend_books_for_member_pgvector(10835, 10); |
| | 8 | }}} |
| | 9 | |
| | 10 | Функцијата успешно враќа листа од препорачани книги за членот, сортирани според cosine similarity. |
| | 11 | |
| | 12 | [PLACEHOLDER: Screenshot од recommend_books_for_member_pgvector(10835,10)] |
| | 13 | |
| | 14 | === Recommended Books Generated by the System === |
| | 15 | |
| | 16 | || Similarity || Recommended Book || Genres || Categories || Authors || |
| | 17 | || 0.751 || Confirmation || Fantasy, Philosophy || Creative, Home 2, Garden, Art, Science, Health 1, Urban, Music || James Thomas || |
| | 18 | || 0.748 || My First Book: My First Steps to Reading || Physics || Art, Creative 1, Creative, Digital 1, Kids, Garden 2 || Samantha Mason || |
| | 19 | || 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 || |
| | 20 | || 0.735 || Publication Manual of the American Psychological Association || Mystery, Philosophy, Travel || Art, Sports, Digital, Classic 1, Garden, Home 2 || Michael Cardenas, Stephen Hill || |
| | 21 | || 0.731 || The Everyday Writer || Romance, Young Adult || History, Advanced 1 || Melissa Allen, Melissa Boone || |
| | 22 | || 0.731 || American Literary Criticism From the Thirties to the Eighties || Biography, Physics || Books, Science, Global || Gabriel García Márquez, Nikola White || |
| | 23 | || 0.730 || The Art and Craft of Handmade Paper || Children, Horror || Garden, Tech 1, Global, Food || Donald Jackson, Sierra Thomas || |
| | 24 | || 0.730 || Ethics & National Defense: The Timeless Issues || Computer Science, Crime || Fashion, Nature || Anna Anderson || |
| | 25 | || 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 || |
| | 26 | || 0.727 || Achieving Authentic Success || Cooking, Romance || Books, Nature 2 || Jason Reed || |
| | 27 | |
| | 28 | == Чекор 9 - Доказ дека не се препорачуваат веќе позајмени книги == |
| | 29 | |
| | 30 | Беше извршена дополнителна проверка за да се потврди дека системот не препорачува книги кои членот веќе ги има позајмено. |
| | 31 | |
| | 32 | {{{ |
| | 33 | SELECT COUNT(*) |
| | 34 | FROM loan_history lh |
| | 35 | JOIN book_copy bc ON bc.copy_id = lh.copy_id |
| | 36 | WHERE lh.member_user_id = 10835 |
| | 37 | AND bc.barcode IN ( |
| | 38 | SELECT barcode |
| | 39 | FROM recommend_books_for_member_pgvector(10835, 10) |
| | 40 | ); |
| | 41 | }}} |
| | 42 | |
| | 43 | Резултат: |
| | 44 | |
| | 45 | {{{ |
| | 46 | 0 |
| | 47 | }}} |
| | 48 | |
| | 49 | Ова докажува дека ниту една од препорачаните книги не се појавува во претходната историја на позајмувања на членот. |
| | 50 | |
| | 51 | [PLACEHOLDER: Screenshot од COUNT = 0] |
| | 52 | |
| | 53 | == Чекор 10 - Валидација на препораките == |
| | 54 | |
| | 55 | За да се покаже дека препораките не се случајни, беа анализирани книгите што членот претходно ги има позајмено и препораките што ги генерира системот. |
| | 56 | |
| | 57 | Прво беа прикажани книгите од loan history за членот: |
| | 58 | |
| | 59 | {{{ |
| | 60 | SELECT DISTINCT |
| | 61 | b.title, |
| | 62 | string_agg(DISTINCT g.name, ', ') AS genres, |
| | 63 | string_agg(DISTINCT c.name, ', ') AS categories, |
| | 64 | string_agg(DISTINCT a.first_name || ' ' || a.last_name, ', ') AS authors |
| | 65 | FROM loan_history lh |
| | 66 | JOIN book_copy bc ON bc.copy_id = lh.copy_id |
| | 67 | JOIN book b ON b.barcode = bc.barcode |
| | 68 | LEFT JOIN book_genre bg ON bg.barcode = b.barcode |
| | 69 | LEFT JOIN genre g ON g.genre_id = bg.genre_id |
| | 70 | LEFT JOIN category_book cb ON cb.barcode = b.barcode |
| | 71 | LEFT JOIN category c ON c.category_id = cb.category_id |
| | 72 | LEFT JOIN book_author ba ON ba.barcode = b.barcode |
| | 73 | LEFT JOIN author a ON a.author_id = ba.author_id |
| | 74 | WHERE lh.member_user_id = 10835 |
| | 75 | GROUP BY b.barcode, b.title |
| | 76 | LIMIT 10; |
| | 77 | }}} |
| | 78 | |
| | 79 | [PLACEHOLDER: Screenshot од loan history книги] |
| | 80 | |
| | 81 | Потоа беа прикажани препорачаните книги со нивните жанрови, категории и автори. |
| | 82 | |
| | 83 | [PLACEHOLDER: Screenshot од препораки со genre/category/author] |
| | 84 | |
| | 85 | === Конкретни примери === |
| | 86 | |
| | 87 | Пример 1 |
| | 88 | |
| | 89 | {{{ |
| | 90 | Loan history: |
| | 91 | A Wizard Alone: The Sixth Book in the Young Wizards |
| | 92 | |
| | 93 | Recommended: |
| | 94 | My First Book: My First Steps to Reading |
| | 95 | }}} |
| | 96 | |
| | 97 | Иако не се исти книги, двете се поврзани со литература наменета за помлади читатели и содржини поврзани со читање и едукација. |
| | 98 | |
| | 99 | Пример 2 |
| | 100 | |
| | 101 | {{{ |
| | 102 | Loan history: |
| | 103 | Sharing the Pie: A Citizen's Guide to Wealth |
| | 104 | |
| | 105 | Recommended: |
| | 106 | Publication Manual of the American Psychological Association |
| | 107 | The Everyday Writer |
| | 108 | }}} |
| | 109 | |
| | 110 | Во овој случај системот препознава интерес за едукативни, академски и информативни книги. Иако жанровите не се идентични, содржината и намената на книгите се слични. |
| | 111 | |
| | 112 | Пример 3 |
| | 113 | |
| | 114 | {{{ |
| | 115 | Loan history: |
| | 116 | The Oxford Dictionary of Popes |
| | 117 | |
| | 118 | Recommended: |
| | 119 | Encyclopedia of Discovery: Science and History |
| | 120 | }}} |
| | 121 | |
| | 122 | Двете книги припаѓаат на групата reference-oriented книги, односно книги кои служат за информирање, истражување и стекнување знаење. |
| | 123 | |
| | 124 | === Recommendation Analysis === |
| | 125 | |
| | 126 | Системот генерираше препораки со similarity вредности помеѓу 0.72 и 0.75. |
| | 127 | |
| | 128 | При споредба на loan history и препорачаните книги беше забележано преклопување во повеќе жанрови и категории, како што се: |
| | 129 | |
| | 130 | {{{ |
| | 131 | Young Adult |
| | 132 | Classic Literature |
| | 133 | Children |
| | 134 | Physics |
| | 135 | Horror |
| | 136 | Nature |
| | 137 | Books |
| | 138 | Global |
| | 139 | Food |
| | 140 | Art |
| | 141 | Kids |
| | 142 | Health |
| | 143 | Creative |
| | 144 | Smart |
| | 145 | }}} |
| | 146 | |
| | 147 | Ова покажува дека препораките не се случајни, туку се базирани на семантичка сличност помеѓу книгите. |
| | 148 | |
| | 149 | == Screenshots / Proof of Work == |
| | 150 | |
| | 151 | [[Image(vector_extension.png)]] |
| | 152 | |
| | 153 | Проверка дека pgvector екстензијата е успешно инсталирана. |
| | 154 | |
| | 155 | [[Image(embeddings_generated.png)]] |
| | 156 | |
| | 157 | Потврда дека се генерирани embeddings за 10000 книги. |
| | 158 | |
| | 159 | [[Image(recommendation_results.png)]] |
| | 160 | |
| | 161 | Резултат од функцијата recommend_books_for_member_pgvector. |
| | 162 | |
| | 163 | [[Image(validation_result.png)]] |
| | 164 | |
| | 165 | Проверка дека не се препорачуваат веќе позајмени книги. |
| | 166 | |
| | 167 | [[Image(loan_history.png)]] |
| | 168 | |
| | 169 | Пример книги од претходната историја на позајмувања. |