From e70f4e1c03a60712ab8c3e6d573e8c2e757d6762 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 9 Mar 2012 06:20:07 -0600 Subject: [PATCH] train a whole user --- scripts/trainuser.php | 81 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 scripts/trainuser.php diff --git a/scripts/trainuser.php b/scripts/trainuser.php new file mode 100644 index 0000000000..8ee6387081 --- /dev/null +++ b/scripts/trainuser.php @@ -0,0 +1,81 @@ +. + */ + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../../..')); + +$shortoptions = 'i:n:'; +$longoptions = array('id=', 'nickname='); + +$helptext = <<nickname); + + $profile = Profile::staticGet('id', $user->id); + + $str = new ProfileNoticeStream($profile, $profile); + + $offset = 0; + $limit = 100; + + do { + $notice = $str->getNotices($offset, $limit); + while ($notice->fetch()) { + try { + printfv("Training notice %d...", $notice->id); + $filter->trainOnError($notice, $category); + $result = $filter->test($notice); + $score = Spam_score::save($notice, $result); + printfv("%s\n", ($result->isSpam) ? "SPAM" : "HAM"); + } catch (Exception $e) { + printfnq("ERROR training notice %d\n: %s", $notice->id, $e->getMessage()); + } + } + $offset += $notice->N; + } while ($notice->N > 0); +} + +try { + $filter = null; + Event::handle('GetSpamFilter', array(&$filter)); + if (empty($filter)) { + throw new Exception(_("No spam filter.")); + } + $user = getUser(); + $category = get_option_value('t', 'category'); + if ($category !== SpamFilter::HAM && + $category !== SpamFilter::SPAM) { + throw new Exception(_("No such category.")); + } + trainUser($filter, $user, $category); +} catch (Exception $e) { + print $e->getMessage()."\n"; + exit(1); +}