Example #1
0
 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) 
Example #2
0
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)    
Example #3
0
    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)
Example #4
0
File: main.py Project: JOSMANC/nyan
                            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.")