def rank_article(self, article_as_dict): article_vendor = self.get_vendor(article_as_dict) if article_vendor == None: logger.error("No vendor for '%s'" % article_as_dict['news_vendor']) return stored_article = self.save_article(article_vendor, article_as_dict) if stored_article == None: logger.error("Could not save article") return #get users for vendor users = User.objects(subscriptions = article_vendor) #rank article for each user to her profile for u in users: user_model = UserModelCentroid(user_id = u.id, extractor = self.feature_extractor_) ranking = user_model.rank(stored_article) self.save_rating(u, stored_article, ranking)
class UserModelCentroidTest(unittest.TestCase): def setUp(self): logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.DEBUG) config = load_config(file_path = "/home/karten/Programmierung/frontend/config.yaml", logger = logger, exit_with_error = True) #Connect to test database connect("nyan_test", port = 27017) fill_database() #connect(config['database']['db-name'], # username= config['database']['user'], # password= config['database']['passwd'], # port = config['database']['port']) self.user_id = User.objects(email = u'*****@*****.**').first().id #self.feature_extractor = EsaFeatureExtractor(prefix = config['prefix']) self.feature_extractor = TfidfFeatureExtractor(prefix = config['prefix']) self.trainer = UserModelCentroid(self.user_id, extractor = self.feature_extractor) def tearDown(self): clear_database() @unittest.skip("not for now") def test_train(self): self.trainer.train() self.assertAlmostEqual(self.trainer.learned_user_models_data[0][1], 0.1553, 4) @unittest.skip("no saving yet") def test_save(self): self.trainer.train() self.trainer.save() user_model = UserModel.objects(user_id = self.user_id).first() self.assertAlmostEqual(user_model.data[0][1], 0.0021, 4)
def setUp(self): logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.DEBUG) config = load_config(file_path = "/home/karten/Programmierung/frontend/config.yaml", logger = logger, exit_with_error = True) #Connect to test database connect("nyan_test", port = 27017) fill_database() #connect(config['database']['db-name'], # username= config['database']['user'], # password= config['database']['passwd'], # port = config['database']['port']) self.user_id = User.objects(email = u'*****@*****.**').first().id #self.feature_extractor = EsaFeatureExtractor(prefix = config['prefix']) self.feature_extractor = TfidfFeatureExtractor(prefix = config['prefix']) self.trainer = UserModelCentroid(self.user_id, extractor = self.feature_extractor)
level=logging.DEBUG, filename=options.log) #load config logger = logging.getLogger("main") logging.info("Load config") config_ = load_config(options.config, logger, exit_with_error = True) if config_ == None: logger.error("No config. Exit.") sys.exit(1) #Connect to mongo database connect(config_['database']['db-name'], username= config_['database']['user'], password= config_['database']['passwd'], port = config_['database']['port']) feature_extractor = EsaFeatureExtractor(prefix = config_['prefix']) logger.info("Learn user model...") users = User.objects() for u in users: logger.info("for %s" % u.name) trainer = UserModelCentroid(user_id = u.id, extractor = feature_extractor) trainer.train() trainer.save() logger.info("...done.")