public function collaborativeFilteringWithSlopeOnePreprocess() { $this->dm->executeSqlFile(__DIR__ . "\\col_table.sql"); $item = array(); $user = array(); $item_results = $this->dm->query("select * from item"); while ($item_row = mysql_fetch_array($item_results)) { $item[$item_row['name']] = $item_row['id']; } $user_results = $this->dm->query("select * from keyword"); while ($user_row = mysql_fetch_array($user_results)) { $user[$user_row['keyword']] = $user_row['id']; } $pair_results = $this->dm->query("select * from keyword_item_weight"); while ($pair_row = mysql_fetch_array($pair_results)) { $this->dm->query("insert into oso_user_ratings values(" . $user[$pair_row['keyword']] . "," . $item[$pair_row['item']] . "," . $pair_row['weight'] . ")"); } $openslopeone = new OpenSlopeOne(); $openslopeone->initSlopeOneTable('MySQL'); }
Нужно решить, что самое важное в этих действия, а что нет. Зачем? Например, если пользователь просматривал, можно ему в след. раз напомнить эту статью. Если он проголосовал, то нету смысла уже её рекомендовать он сделал своё дело. Также эти все рекомендации берутся и у других пользователей, кто делаем максимум похожих действия и находит у пользователя (про которого мы сейчас говорим) самые жирные статьи, например, где на них все голосовали (значит там есть что-то интересное, если голосуют). Максимум действия это 100%, можно их разбить по важности: 1. голосовать 50% 2. просматривать 10% 3. просмотреть под катом 20% 4. добавить в избранное 20% */ //включаем класс с функциями require './OpenSlopeOne.php'; //создаем класс $openslopeone = new OpenSlopeOne(); //инициализируем таблицу `oso_slope_one` $openslopeone->initSlopeOneTable(); $openslopeone->initSlopeOneTable('MySQL'); ?> <html> <head> <title>Test</title> </head> <body> <!-- Пользователь может сделать 4 действия и его вес важности в скобках --> <a href='http://demo.ms.dp.ua/analytics/index.php?action=1'>1 action (50%)</a> <br/> <a href='http://demo.ms.dp.ua/analytics/index.php?action=2'>2 action (20%)</a> <br/> <a href='http://demo.ms.dp.ua/analytics/index.php?action=3'>3 action (20%)</a>