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,39 +3,52 @@
3 [general] 3 [general]
4 # logging level 4 # logging level
5 debug = 0 5 debug = 0
6 -verbose = 1 6 +verbose = 0
7 # output file 7 # output file
8 -#output = /dev/null  
9 -output = log-popindex-desktop-full 8 +output = apprec.log
  9 +# output = /dev/null
10 10
11 [data_sources] 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 # old, reindex, cluster, recluster 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 # number of popcon submission for indexing 29 # number of popcon submission for indexing
33 max_popcon = 100000000 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 [recommender] 39 [recommender]
36 -# recommendation strategy  
37 -strategy = cb  
38 # search weighting scheme ('trad' or 'bm25') 40 # search weighting scheme ('trad' or 'bm25')
39 weight = bm25 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 profile_size = 50 51 profile_size = 50
  52 +# neighborhood size
  53 +k_neighbors = 50
  54 +popcon_profiling = full
@@ -37,28 +37,52 @@ class Config(Singleton): @@ -37,28 +37,52 @@ class Config(Singleton):
37 Set default configuration options. 37 Set default configuration options.
38 """ 38 """
39 if not hasattr(self, 'initialized'): 39 if not hasattr(self, 'initialized'):
  40 + ## general options
40 self.debug = 0 41 self.debug = 0
41 self.verbose = 1 42 self.verbose = 1
42 - #self.output = "/dev/null"  
43 self.output = "log" 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 self.index_mode = "old" 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 self.strategy = "cb" 72 self.strategy = "cb"
57 self.weight = "bm25" 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 self.profile_size = 50 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 self.load_options() 86 self.load_options()
63 self.set_logger() 87 self.set_logger()
64 self.initialized = 1 88 self.initialized = 1
@@ -68,6 +92,7 @@ class Config(Singleton): @@ -68,6 +92,7 @@ class Config(Singleton):
68 """ 92 """
69 Print usage help. 93 Print usage help.
70 """ 94 """
  95 + print "[FIXME: deprecated help]"
71 print "\n [ general ]" 96 print "\n [ general ]"
72 print " -h, --help Print this help" 97 print " -h, --help Print this help"
73 print " -d, --debug Set logging level to debug" 98 print " -d, --debug Set logging level to debug"
@@ -75,7 +100,7 @@ class Config(Singleton): @@ -75,7 +100,7 @@ class Config(Singleton):
75 print " -o, --output=PATH Path to file to save output" 100 print " -o, --output=PATH Path to file to save output"
76 print "" 101 print ""
77 print " [ data sources ]" 102 print " [ data sources ]"
78 - print " -f, --filters=PATH Path to filters directory" 103 + print " -f, --filtersdir=PATH Path to filters directory"
79 print " -b, --pkgsfilter=FILTER File containing packages to be considered for recommendations" 104 print " -b, --pkgsfilter=FILTER File containing packages to be considered for recommendations"
80 print " -a, --axi=PATH Path to apt-xapian-index" 105 print " -a, --axi=PATH Path to apt-xapian-index"
81 print " -e, --dde=URL DDE url" 106 print " -e, --dde=URL DDE url"
@@ -130,29 +155,60 @@ class Config(Singleton): @@ -130,29 +155,60 @@ class Config(Singleton):
130 155
131 self.debug = int(self.read_option('general', 'debug')) 156 self.debug = int(self.read_option('general', 'debug'))
132 self.debug = int(self.read_option('general', 'verbose')) 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 self.max_popcon = int(self.read_option('data_sources', 'max_popcon')) 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 self.weight = self.read_option('recommender', 'weight') 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 self.strategy = self.read_option('recommender', 'strategy') 202 self.strategy = self.read_option('recommender', 'strategy')
148 self.profile_size = int(self.read_option('recommender', 203 self.profile_size = int(self.read_option('recommender',
149 'profile_size')) 204 'profile_size'))
150 - self.profiling = self.read_option('recommender', 'profiling')  
151 self.k_neighbors = int(self.read_option('recommender', 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 short_options = "hdvo:f:b:a:e:p:m:u:l:c:x:w:s:z:i:n:" 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 "pkgsfilter=", "axi=", "dde=", "popconindex=", 212 "pkgsfilter=", "axi=", "dde=", "popconindex=",
157 "popcondir=", "indexmode=", "clustersdir=", "kmedoids=", 213 "popcondir=", "indexmode=", "clustersdir=", "kmedoids=",
158 "maxpopcon=", "weight=", "strategy=", "profile_size=", 214 "maxpopcon=", "weight=", "strategy=", "profile_size=",
@@ -176,8 +232,8 @@ class Config(Singleton): @@ -176,8 +232,8 @@ class Config(Singleton):
176 self.verbose = 1 232 self.verbose = 1
177 elif o in ("-o", "--output"): 233 elif o in ("-o", "--output"):
178 self.output = p 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 elif o in ("-b", "--pkgsfilter"): 237 elif o in ("-b", "--pkgsfilter"):
182 self.pkgs_filter = p 238 self.pkgs_filter = p
183 elif o in ("-a", "--axi"): 239 elif o in ("-a", "--axi"):