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): | ... | ... |