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,13 +123,12 @@ class PopconXapianIndex(xapian.WritableDatabase): | ||
123 | """ | 123 | """ |
124 | Data source for popcon submissions defined as a singleton xapian database. | 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 | Set initial attributes. | 128 | Set initial attributes. |
129 | """ | 129 | """ |
130 | self.axi = xapian.Database(cfg.axi) | 130 | self.axi = xapian.Database(cfg.axi) |
131 | self.path = os.path.expanduser(cfg.popcon_index) | 131 | self.path = os.path.expanduser(cfg.popcon_index) |
132 | - self.source_dir = cfg.popcon_dir | ||
133 | if cfg.index_mode.startswith("1") or not self.load_index(): | 132 | if cfg.index_mode.startswith("1") or not self.load_index(): |
134 | if not os.path.exists(cfg.popcon_dir): | 133 | if not os.path.exists(cfg.popcon_dir): |
135 | os.makedirs(cfg.popcon_dir) | 134 | os.makedirs(cfg.popcon_dir) |
@@ -279,11 +278,11 @@ class KMedoidsClustering(cluster.KMeansClustering): | @@ -279,11 +278,11 @@ class KMedoidsClustering(cluster.KMeansClustering): | ||
279 | medoidDistance = sys.maxint | 278 | medoidDistance = sys.maxint |
280 | for i in range(len(cluster)): | 279 | for i in range(len(cluster)): |
281 | totalDistance = sum(self.distanceMatrix[cluster[i].user_id].values()) | 280 | totalDistance = sum(self.distanceMatrix[cluster[i].user_id].values()) |
282 | - print "totalDistance[",i,"]=",totalDistance | 281 | + logging.debug("totalDistance[%d]=%f" % (i,totalDistance)) |
283 | if totalDistance < medoidDistance: | 282 | if totalDistance < medoidDistance: |
284 | medoidDistance = totalDistance | 283 | medoidDistance = totalDistance |
285 | medoid = i | 284 | medoid = i |
286 | - print "medoidDistance:",medoidDistance | 285 | + logging.debug("medoidDistance: %f" % medoidDistance) |
287 | logging.debug("Cluster medoid: [%d] %s" % (medoid, | 286 | logging.debug("Cluster medoid: [%d] %s" % (medoid, |
288 | cluster[medoid].user_id)) | 287 | cluster[medoid].user_id)) |
289 | return cluster[medoid] | 288 | return cluster[medoid] |
src/recommender.py
@@ -63,8 +63,8 @@ class Recommender: | @@ -63,8 +63,8 @@ class Recommender: | ||
63 | Set initial parameters. | 63 | Set initial parameters. |
64 | """ | 64 | """ |
65 | self.items_repository = xapian.Database(cfg.axi) | 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 | self.set_strategy(cfg.strategy) | 68 | self.set_strategy(cfg.strategy) |
69 | if cfg.weight == "bm25": | 69 | if cfg.weight == "bm25": |
70 | self.weight = xapian.BM25Weight() | 70 | self.weight = xapian.BM25Weight() |
src/tests/user_tests.py
@@ -125,12 +125,12 @@ class UserTests(unittest2.TestCase): | @@ -125,12 +125,12 @@ class UserTests(unittest2.TestCase): | ||
125 | self.user.full_profile(self.sample_axi,10)) | 125 | self.user.full_profile(self.sample_axi,10)) |
126 | 126 | ||
127 | def test_tag_profile(self): | 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 | def test_desc_profile(self): | 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 | def test_full_profile(self): | 135 | def test_full_profile(self): |
136 | self.assertEqual(self.user.full_profile(self.sample_axi,10), | 136 | self.assertEqual(self.user.full_profile(self.sample_axi,10), |
src/web/server.py
@@ -215,6 +215,9 @@ class RandomRequest(Request): | @@ -215,6 +215,9 @@ class RandomRequest(Request): | ||
215 | #self.storage = web.Storage() | 215 | #self.storage = web.Storage() |
216 | 216 | ||
217 | class AppRecommender: | 217 | class AppRecommender: |
218 | + def __init__(self): | ||
219 | + self.rec = Recommender(Config()) | ||
220 | + | ||
218 | def POST(self): | 221 | def POST(self): |
219 | request = Request(web.input(pkgs_file={})) | 222 | request = Request(web.input(pkgs_file={})) |
220 | if not request.validates(): | 223 | if not request.validates(): |
@@ -233,6 +236,17 @@ class AppRecommender: | @@ -233,6 +236,17 @@ class AppRecommender: | ||
233 | return render.apprec(recommendation, pkg_summaries, | 236 | return render.apprec(recommendation, pkg_summaries, |
234 | FeedbackForm(request.selected_strategies),request) | 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 | # parsing json from screenshots - can be usefull in the future... | 250 | # parsing json from screenshots - can be usefull in the future... |
237 | # def _packages_attrs(self, recommends): #recommends is result of _recommends() | 251 | # def _packages_attrs(self, recommends): #recommends is result of _recommends() |
238 | # all_recommended_packages = [] | 252 | # all_recommended_packages = [] |
@@ -247,19 +261,6 @@ class AppRecommender: | @@ -247,19 +261,6 @@ class AppRecommender: | ||
247 | # recommended_pkgs_attrs[pkg_attrs_dict['name']] = pkg_attrs_dict | 261 | # recommended_pkgs_attrs[pkg_attrs_dict['name']] = pkg_attrs_dict |
248 | # return recommended_pkgs_attrs | 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 | def add_global_hook(): | 264 | def add_global_hook(): |
264 | g = web.storage({"counter": "1"}) | 265 | g = web.storage({"counter": "1"}) |
265 | def _wrapper(handler): | 266 | def _wrapper(handler): |