Commit dfcac4b1e7d3900e660ad42287b81316a0c1131e
1 parent
b07dbf63
Exists in
master
and in
1 other branch
Small fixes.
Showing
4 changed files
with
23 additions
and
23 deletions
Show diff stats
src/data.py
| ... | ... | @@ -123,13 +123,12 @@ class PopconXapianIndex(xapian.WritableDatabase): |
| 123 | 123 | """ |
| 124 | 124 | Data source for popcon submissions defined as a singleton xapian database. |
| 125 | 125 | """ |
| 126 | - def __init__(self,cfg,reindex=0,recluster=0): | |
| 126 | + def __init__(self,cfg): | |
| 127 | 127 | """ |
| 128 | 128 | Set initial attributes. |
| 129 | 129 | """ |
| 130 | 130 | self.axi = xapian.Database(cfg.axi) |
| 131 | 131 | self.path = os.path.expanduser(cfg.popcon_index) |
| 132 | - self.source_dir = cfg.popcon_dir | |
| 133 | 132 | if cfg.index_mode.startswith("1") or not self.load_index(): |
| 134 | 133 | if not os.path.exists(cfg.popcon_dir): |
| 135 | 134 | os.makedirs(cfg.popcon_dir) |
| ... | ... | @@ -279,11 +278,11 @@ class KMedoidsClustering(cluster.KMeansClustering): |
| 279 | 278 | medoidDistance = sys.maxint |
| 280 | 279 | for i in range(len(cluster)): |
| 281 | 280 | totalDistance = sum(self.distanceMatrix[cluster[i].user_id].values()) |
| 282 | - print "totalDistance[",i,"]=",totalDistance | |
| 281 | + logging.debug("totalDistance[%d]=%f" % (i,totalDistance)) | |
| 283 | 282 | if totalDistance < medoidDistance: |
| 284 | 283 | medoidDistance = totalDistance |
| 285 | 284 | medoid = i |
| 286 | - print "medoidDistance:",medoidDistance | |
| 285 | + logging.debug("medoidDistance: %f" % medoidDistance) | |
| 287 | 286 | logging.debug("Cluster medoid: [%d] %s" % (medoid, |
| 288 | 287 | cluster[medoid].user_id)) |
| 289 | 288 | return cluster[medoid] | ... | ... |
src/recommender.py
| ... | ... | @@ -63,8 +63,8 @@ class Recommender: |
| 63 | 63 | Set initial parameters. |
| 64 | 64 | """ |
| 65 | 65 | self.items_repository = xapian.Database(cfg.axi) |
| 66 | - self.users_repository = data.PopconXapianIndex(cfg) #[FIXME] only cfg fields | |
| 67 | - self.clustered_users_repository = data.PopconXapianIndex(cfg) #[FIXME] | |
| 66 | + self.users_repository = data.PopconXapianIndex(cfg) | |
| 67 | + #self.clustered_users_repository = data.PopconXapianIndex(cfg) | |
| 68 | 68 | self.set_strategy(cfg.strategy) |
| 69 | 69 | if cfg.weight == "bm25": |
| 70 | 70 | self.weight = xapian.BM25Weight() | ... | ... |
src/tests/user_tests.py
| ... | ... | @@ -125,12 +125,12 @@ class UserTests(unittest2.TestCase): |
| 125 | 125 | self.user.full_profile(self.sample_axi,10)) |
| 126 | 126 | |
| 127 | 127 | def test_tag_profile(self): |
| 128 | - self.assertEqual(self.user.tag_profile(self.sample_axi,2), | |
| 129 | - ['XTuse::editing', 'XTworks-with-format::jpg']) | |
| 128 | + self.assertEqual(self.user.tag_profile(self.sample_axi,1), | |
| 129 | + ['XTuse::editing']) | |
| 130 | 130 | |
| 131 | 131 | def test_desc_profile(self): |
| 132 | - self.assertEqual(self.user.desc_profile(self.sample_axi,2), | |
| 133 | - ['image', 'the']) | |
| 132 | + self.assertEqual(self.user.desc_profile(self.sample_axi,1), | |
| 133 | + ['image']) | |
| 134 | 134 | |
| 135 | 135 | def test_full_profile(self): |
| 136 | 136 | self.assertEqual(self.user.full_profile(self.sample_axi,10), | ... | ... |
src/web/server.py
| ... | ... | @@ -215,6 +215,9 @@ class RandomRequest(Request): |
| 215 | 215 | #self.storage = web.Storage() |
| 216 | 216 | |
| 217 | 217 | class AppRecommender: |
| 218 | + def __init__(self): | |
| 219 | + self.rec = Recommender(Config()) | |
| 220 | + | |
| 218 | 221 | def POST(self): |
| 219 | 222 | request = Request(web.input(pkgs_file={})) |
| 220 | 223 | if not request.validates(): |
| ... | ... | @@ -233,6 +236,17 @@ class AppRecommender: |
| 233 | 236 | return render.apprec(recommendation, pkg_summaries, |
| 234 | 237 | FeedbackForm(request.selected_strategies),request) |
| 235 | 238 | |
| 239 | + def _recommends(self,request): | |
| 240 | + user = User(dict.fromkeys(request.pkgs_list,1),request.user_id) | |
| 241 | + user.maximal_pkg_profile() | |
| 242 | + results = dict() | |
| 243 | + for strategy_str in request.selected_strategies: | |
| 244 | + self.rec.set_strategy(strategy_str) | |
| 245 | + prediction = self.rec.get_recommendation(user).get_prediction(request.limit) | |
| 246 | + results[strategy_str] = \ | |
| 247 | + [result[0] for result in prediction] | |
| 248 | + return results | |
| 249 | + | |
| 236 | 250 | # parsing json from screenshots - can be usefull in the future... |
| 237 | 251 | # def _packages_attrs(self, recommends): #recommends is result of _recommends() |
| 238 | 252 | # all_recommended_packages = [] |
| ... | ... | @@ -247,19 +261,6 @@ class AppRecommender: |
| 247 | 261 | # recommended_pkgs_attrs[pkg_attrs_dict['name']] = pkg_attrs_dict |
| 248 | 262 | # return recommended_pkgs_attrs |
| 249 | 263 | |
| 250 | - def _recommends(self,request): | |
| 251 | - user = User(dict.fromkeys(request.pkgs_list,1),request.user_id) | |
| 252 | - user.maximal_pkg_profile() | |
| 253 | - cfg = Config() | |
| 254 | - rec = Recommender(cfg) | |
| 255 | - results = dict() | |
| 256 | - for strategy_str in request.selected_strategies: | |
| 257 | - rec.set_strategy(strategy_str) | |
| 258 | - prediction = rec.get_recommendation(user).get_prediction(request.limit) | |
| 259 | - results[strategy_str] = \ | |
| 260 | - [result[0] for result in prediction] | |
| 261 | - return results | |
| 262 | - | |
| 263 | 264 | def add_global_hook(): |
| 264 | 265 | g = web.storage({"counter": "1"}) |
| 265 | 266 | def _wrapper(handler): | ... | ... |