Commit 089fe5afb918f0322024f5d753f4744e71ad0f20

Authored by Tássia Camões Araújo
1 parent 19f1de42
Exists in master and in 1 other branch add_vagrant

Updated config options. Still pending to fix config options by comand line and help.

Showing 2 changed files with 126 additions and 57 deletions   Show diff stats
src/bin/app_recommender.cfg
... ... @@ -3,39 +3,52 @@
3 3 [general]
4 4 # logging level
5 5 debug = 0
6   -verbose = 1
  6 +verbose = 0
7 7 # output file
8   -#output = /dev/null
9   -output = log-popindex-desktop-full
  8 +output = apprec.log
  9 +# output = /dev/null
10 10  
11 11 [data_sources]
12   -# path to recommender filters
13   -filters = ~/.app-recommender/filters
14   -# path to apt-xapian-index
15   -#axi = /var/lib/apt-xapian-index/index
16   -axi = /root/.app-recommender/axi_desktop
17   -# DDE url
18   -#dde_url = http://dde.debian.net/dde/q/udd/packages/all/%s?t=json
19   -dde_url = http://46.4.235.200:8000/q/udd/packages/all/%s?t=json
  12 +base_dir = ~/.app-recommender/
  13 +# filters for valid packages
  14 +filters_dir = filters
  15 +pkgs_filter = programs
  16 +# package information indexes
  17 +axi = /var/lib/apt-xapian-index/index
  18 +axi_programs = axi_programs
  19 +axi_desktopapps = axi_desktopapps
20 20 # old, reindex, cluster, recluster
21   -index_mode = old
22   -# path to popcon index
23   -popcon_index = ~/.app-recommender/popcon-index_desktop
24   -# path to popcon submissions dir
25   -popcon_dir = ~/.app-recommender/popcon-entries
26   -# path to valid_pkgs file
27   -pkgs_filter = desktop
28   -# path to popcon clusters dir
29   -clusters_dir = ~/.app-recommender/clusters_dir_full
30   -# number of medoids for clustering
31   -k_medoids = 100
  21 +#index_mode = old
  22 +# popcon indexes
  23 +# check if there are popcon indexes available
  24 +popcon = 1
  25 +popcon_programs = popcon_programs
  26 +popcon_desktopapps = popcon_desktopapps
  27 +popcon_index = popcon_programs
  28 +popcon_dir = popcon-entries
32 29 # number of popcon submission for indexing
33 30 max_popcon = 100000000
  31 +# popcon clustering
  32 +clusters_dir = clusters_dir_full
  33 +k_medoids = 100
  34 +# Connection to DDE
  35 +dde_url = http://46.4.235.200:8000/q/udd/packages/all/%s?t=json
  36 +self.dde_server = 46.4.235.200
  37 +self.dde_port = 8000
34 38  
35 39 [recommender]
36   -# recommendation strategy
37   -strategy = cb
38 40 # search weighting scheme ('trad' or 'bm25')
39 41 weight = bm25
40   -# user profile size
  42 +# bm25 parameters
  43 +bm25_k1 = 1.2
  44 +bm25_k2 = 0
  45 +bm25_k3 = 7
  46 +bm25_b = 0.75
  47 +bm25_nl = 0.5
  48 +# recommendation strategy
  49 +strategy = cb
  50 +# user content profile size
41 51 profile_size = 50
  52 +# neighborhood size
  53 +k_neighbors = 50
  54 +popcon_profiling = full
... ...
src/config.py
... ... @@ -37,28 +37,52 @@ class Config(Singleton):
37 37 Set default configuration options.
38 38 """
39 39 if not hasattr(self, 'initialized'):
  40 + ## general options
40 41 self.debug = 0
41 42 self.verbose = 1
42   - #self.output = "/dev/null"
43 43 self.output = "log"
44   - self.filters = os.path.expanduser("~/.app-recommender/filters")
45   - #self.axi = "/var/lib/apt-xapian-index/index"
46   - self.axi = os.path.expanduser("~/.app-recommender/ProgramAxi")
47   - #self.dde_url = "http://dde.debian.net/dde/q/udd/packs/all/%s?t=json"
48   - self.dde_url = "http://46.4.235.200:8000/q/udd/packages/all/%s?t=json"
49   - self.popcon_index = os.path.expanduser("~/.app-recommender/popcon-index")
50   - self.popcon_dir = os.path.expanduser("~/.app-recommender/popcon-entries")
51   - self.pkgs_filter = "program"
52   - self.clusters_dir = os.path.expanduser("~/.app-recommender/clusters-dir")
53   - self.k_medoids = 100
54   - self.max_popcon = 1000
  44 +
  45 + ## data_source options
  46 + self.base_dir = os.path.expanduser("~/.app-recommender/")
  47 + # filters for valid packages
  48 + self.filters_dir = os.path.join(self.base_dir,"filters")
  49 + self.pkgs_filter = os.path.join(self.filters_dir,"programs")
  50 + # package information packages
  51 + self.axi = "/var/lib/apt-xapian-index/index"
  52 + self.axi_programs = os.path.join(self.base_dir,"axi_programs")
  53 + self.axi_desktopapps = os.path.join(self.base_dir,"axi_desktopapps")
  54 + # popcon indexes
55 55 self.index_mode = "old"
  56 + # check if there are popcon indexes available
  57 + self.popcon = 1
  58 + self.popcon_programs = os.path.join(self.base_dir,"popcon_programs")
  59 + self.popcon_desktopapps = os.path.join(self.base_dir,"popcon_desktopapps")
  60 + self.popcon_index = self.popcon_programs
  61 + self.popcon_dir = os.path.join(self.base_dir,"popcon-entries")
  62 + self.max_popcon = 1000
  63 + # popcon clustering
  64 + self.clusters_dir = os.path.join(self.base_dir,"clusters-dir")
  65 + self.k_medoids = 100
  66 + # self.dde_url = "http://dde.debian.net/dde/q/udd/packs/all/%s?t=json"
  67 + self.dde_url = "http://46.4.235.200:8000/q/udd/packages/all/%s?t=json"
  68 + self.dde_server = "46.4.235.200"
  69 + self.dde_port = "8000"
  70 +
  71 + ## recomender options
56 72 self.strategy = "cb"
57 73 self.weight = "bm25"
  74 + self.bm25_k1 = 1.2
  75 + self.bm25_k2 = 0
  76 + self.bm25_k3 = 7
  77 + self.bm25_b = 0.75
  78 + self.bm25_nl = 0.5
  79 + # user content profile size
58 80 self.profile_size = 50
59   - # options: maximal, voted, desktop
60   - self.profiling = ["maximal"]
61   - self.k_neighbors = 100
  81 + # neighborhood size
  82 + self.k_neighbors = 50
  83 + # popcon profiling method: full, voted
  84 + self.popcon_profiling = "full"
  85 +
62 86 self.load_options()
63 87 self.set_logger()
64 88 self.initialized = 1
... ... @@ -68,6 +92,7 @@ class Config(Singleton):
68 92 """
69 93 Print usage help.
70 94 """
  95 + print "[FIXME: deprecated help]"
71 96 print "\n [ general ]"
72 97 print " -h, --help Print this help"
73 98 print " -d, --debug Set logging level to debug"
... ... @@ -75,7 +100,7 @@ class Config(Singleton):
75 100 print " -o, --output=PATH Path to file to save output"
76 101 print ""
77 102 print " [ data sources ]"
78   - print " -f, --filters=PATH Path to filters directory"
  103 + print " -f, --filtersdir=PATH Path to filters directory"
79 104 print " -b, --pkgsfilter=FILTER File containing packages to be considered for recommendations"
80 105 print " -a, --axi=PATH Path to apt-xapian-index"
81 106 print " -e, --dde=URL DDE url"
... ... @@ -130,29 +155,60 @@ class Config(Singleton):
130 155  
131 156 self.debug = int(self.read_option('general', 'debug'))
132 157 self.debug = int(self.read_option('general', 'verbose'))
133   - self.output = self.read_option('general', 'output')
134   -
135   - self.filters = os.path.expanduser(self.read_option('data_sources','filters'))
136   - self.pkgs_filter = self.read_option('data_sources', 'pkgs_filter')
137   - self.axi = os.path.expanduser(self.read_option('data_sources', 'axi'))
138   - self.dde_url = self.read_option('data_sources', 'dde_url')
139   - self.popcon_index = os.path.expanduser(self.read_option('data_sources','popcon_index'))
140   - self.popcon_dir = os.path.expanduser(self.read_option('data_sources', 'popcon_dir'))
141   - self.index_mode = self.read_option('data_sources', 'index_mode')
142   - self.clusters_dir = os.path.expanduser(self.read_option('data_sources', 'clusters_dir'))
143   - self.k_medoids = int(self.read_option('data_sources', 'k_medoids'))
  158 + self.output = os.path.join(self.base_dir,
  159 + self.read_option('general','output'))
  160 + self.filters_dir = os.path.join(self.base_dir,
  161 + self.read_option('data_sources',
  162 + 'filters_dir'))
  163 + self.pkgs_filter = os.path.join(self.filters_dir,
  164 + self.read_option('data_sources',
  165 + 'pkgs_filter'))
  166 + self.axi = self.read_option('data_sources', 'axi')
  167 + self.axi_programs = os.path.join(self.base_dir,
  168 + self.read_option('data_sources',
  169 + 'axi_programs'))
  170 + self.axi_desktopapps = os.path.join(self.base_dir,
  171 + self.read_option('data_sources',
  172 + 'axi_desktopapps'))
  173 + #self.index_mode = self.read_option('data_sources', 'index_mode')
  174 + self.popcon = int(self.read_option('data_sources', 'popcon'))
  175 + self.popcon_programs = os.path.join(self.base_dir,
  176 + self.read_option('data_sources',
  177 + 'popcon_programs'))
  178 + self.popcon_desktopapps = os.path.join(self.base_dir,
  179 + self.read_option('data_sources',
  180 + 'popcon_desktopapps'))
  181 + self.popcon_index = os.path.join(self.base_dir,
  182 + self.read_option('data_sources',
  183 + 'popcon_index'))
  184 + self.popcon_dir = os.path.join(self.base_dir,
  185 + self.read_option('data_sources',
  186 + 'popcon_dir'))
144 187 self.max_popcon = int(self.read_option('data_sources', 'max_popcon'))
  188 + self.clusters_dir = os.path.join(self.base_dir,
  189 + self.read_option('data_sources',
  190 + 'clusters_dir'))
  191 + self.k_medoids = int(self.read_option('data_sources', 'k_medoids'))
  192 + self.dde_url = self.read_option('data_sources', 'dde_url')
  193 + self.dde_server = self.read_option('data_sources', 'dde_server')
  194 + self.dde_port = self.read_option('data_sources', 'dde_port')
145 195  
146 196 self.weight = self.read_option('recommender', 'weight')
  197 + self.bm25_k1 = float(self.read_option('recommender', 'bm25_k1'))
  198 + self.bm25_k2 = float(self.read_option('recommender', 'bm25_k2'))
  199 + self.bm25_k3 = float(self.read_option('recommender', 'bm25_k3'))
  200 + self.bm25_b = float(self.read_option('recommender', 'bm25_b'))
  201 + self.bm25_nl = float(self.read_option('recommender', 'bm25_nl'))
147 202 self.strategy = self.read_option('recommender', 'strategy')
148 203 self.profile_size = int(self.read_option('recommender',
149 204 'profile_size'))
150   - self.profiling = self.read_option('recommender', 'profiling')
151 205 self.k_neighbors = int(self.read_option('recommender',
152   - 'k_neighbors'))
  206 + 'k_neighbors'))
  207 + self.popcon_profiling = self.read_option('recommender',
  208 + 'popcon_profiling')
153 209  
154 210 short_options = "hdvo:f:b:a:e:p:m:u:l:c:x:w:s:z:i:n:"
155   - long_options = ["help", "debug", "verbose", "output=", "filters=",
  211 + long_options = ["help", "debug", "verbose", "output=", "filtersdir=",
156 212 "pkgsfilter=", "axi=", "dde=", "popconindex=",
157 213 "popcondir=", "indexmode=", "clustersdir=", "kmedoids=",
158 214 "maxpopcon=", "weight=", "strategy=", "profile_size=",
... ... @@ -176,8 +232,8 @@ class Config(Singleton):
176 232 self.verbose = 1
177 233 elif o in ("-o", "--output"):
178 234 self.output = p
179   - elif o in ("-f", "--filters"):
180   - self.filters = p
  235 + elif o in ("-f", "--filtersdir"):
  236 + self.filters_dir = p
181 237 elif o in ("-b", "--pkgsfilter"):
182 238 self.pkgs_filter = p
183 239 elif o in ("-a", "--axi"):
... ...