From 8ad9f066350ba4d4e85787e8da32f795313520fa Mon Sep 17 00:00:00 2001 From: Tássia Camões Araújo Date: Thu, 17 Mar 2011 17:21:35 -0300 Subject: [PATCH] Profile strategy that ignores auto-installed packages. Small fix on how packages list populates user's item_score dict. It was missing any package that has 'install' in its name. --- src/app_recommender.py | 1 + src/user.py | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/app_recommender.py b/src/app_recommender.py index 29695a5..4c48ddd 100755 --- a/src/app_recommender.py +++ b/src/app_recommender.py @@ -37,6 +37,7 @@ if __name__ == '__main__': cfg = Config() rec = Recommender(cfg) user = LocalSystem() + user.maximal_pkg_profile() begin_time = datetime.datetime.now() logging.debug("Recommendation computation started at %s" % begin_time) diff --git a/src/user.py b/src/user.py index 57a92f8..73309c1 100644 --- a/src/user.py +++ b/src/user.py @@ -20,6 +20,7 @@ import commands import xapian import logging +import apt class FilterTag(xapian.ExpandDecider): def __call__(self, term): @@ -30,15 +31,26 @@ class FilterTag(xapian.ExpandDecider): class User: """ """ - def __init__(self,item_score,user_id=0,demo_profile=0): + def __init__(self,item_score,user_id=0,demographic_profile=0): """ """ self.id = user_id self.item_score = item_score - self.demo_profile = demo_profile + self.demographic_profile = demographic_profile def items(self): return self.item_score.keys() + def maximal_pkg_profile(self): + cache = apt.Cache() + old_profile_size = len(self.item_score) + for p in self.item_score.keys(): + pkg = cache[p] + if pkg.is_auto_installed: + del self.item_score[p] + profile_size = len(self.item_score) + logging.info("Reduced packages profile size from %d to %d." % + (old_profile_size, profile_size)) + def axi_tag_profile(self,apt_xapian_index,profile_size): terms = [] for item in self.items(): @@ -65,6 +77,7 @@ class LocalSystem(User): def __init__(self): item_score = {} dpkg_output = commands.getoutput('/usr/bin/dpkg --get-selections') - for p in dpkg_output.replace('install','\t').split(): - item_score[p] = 1 + for line in dpkg_output.splitlines(): + pkg = line.split('\t')[0] + item_score[pkg] = 1 User.__init__(self,item_score) -- libgit2 0.21.2