Class: CrossLanguageSpotter::Project
- Inherits:
-
Object
- Object
- CrossLanguageSpotter::Project
- Defined in:
- lib/crosslanguagespotter/model_loading.rb
Instance Method Summary collapse
- #files ⇒ Object
-
#initialize(src, verbose = false) ⇒ Project
constructor
A new instance of Project.
- #iter_over_shared_ids_instances(&block) ⇒ Object
- #iter_over_shared_ids_instances_case_insensitive(&block) ⇒ Object
- #iter_value_for_all_extensions(v, &block) ⇒ Object
- #iter_value_for_all_extensions_case_insensitive(v, &block) ⇒ Object
- #iter_value_in_extensions(v, ext_i, ext_j, &block) ⇒ Object
- #iter_value_in_extensions_case_insensitive(v, ext_i, ext_j, &block) ⇒ Object
- #itf_idf(file, value) ⇒ Object
- #models ⇒ Object
- #sequential_asts ⇒ Object
- #shared_ids ⇒ Object
- #tf_idf(file, value) ⇒ Object
Constructor Details
#initialize(src, verbose = false) ⇒ Project
Returns a new instance of Project.
97 98 99 100 101 102 103 104 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 97 def initialize(src,verbose=false) @models = {} @verbose = verbose load_all_models(src) @values_map_per_file = {} @value_frequencies = Hash.new {|h,k| h[k]={} } @idf = {} end |
Instance Method Details
#files ⇒ Object
129 130 131 132 133 134 135 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 129 def files files = Set.new @files_per_values.values.each do |fs| fs.each {|f| files<<f} end files end |
#iter_over_shared_ids_instances(&block) ⇒ Object
137 138 139 140 141 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 137 def iter_over_shared_ids_instances(&block) shared_ids.each do |v| iter_value_for_all_extensions(v,&block) end end |
#iter_over_shared_ids_instances_case_insensitive(&block) ⇒ Object
143 144 145 146 147 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 143 def iter_over_shared_ids_instances_case_insensitive(&block) shared_ids.each do |v| iter_value_for_all_extensions_case_insensitive(v,&block) end end |
#iter_value_for_all_extensions(v, &block) ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 149 def iter_value_for_all_extensions(v,&block) extensions = [] @files_per_values[v].each do |el| ext = File.extname(el) extensions << ext unless extensions.include?(ext) end for i in 0...extensions.count ext_i = extensions[i] for j in (i+1)...extensions.count ext_j = extensions[j] iter_value_in_extensions(v,ext_i,ext_j,&block) end end end |
#iter_value_for_all_extensions_case_insensitive(v, &block) ⇒ Object
164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 164 def iter_value_for_all_extensions_case_insensitive(v,&block) extensions = [] @files_per_values[v].each do |el| ext = File.extname(el) extensions << ext unless extensions.include?(ext) end for i in 0...extensions.count ext_i = extensions[i] for j in (i+1)...extensions.count ext_j = extensions[j] iter_value_in_extensions_case_insensitive(v,ext_i,ext_j,&block) end end end |
#iter_value_in_extensions(v, ext_i, ext_j, &block) ⇒ Object
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 179 def iter_value_in_extensions(v,ext_i,ext_j,&block) raise "Error" if ext_i==ext_j files_i = [] files_j = [] vs = [v] vs.each do |v_el| @files_per_values[v_el].each do |el| files_i << el if File.extname(el)==ext_i files_j << el if File.extname(el)==ext_j end end nodes_i = [] nodes_j = [] files_i.each do |f| vs.each do |v_el| @nodes_per_value_and_file_map[v_el][f].each {|n| nodes_i << n} end end files_j.each do |f| vs.each do |v_el| @nodes_per_value_and_file_map[v_el][f].each {|n| nodes_j << n} end end for ni in nodes_i for nj in nodes_j block.call(ni,nj) end end end |
#iter_value_in_extensions_case_insensitive(v, ext_i, ext_j, &block) ⇒ Object
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 209 def iter_value_in_extensions_case_insensitive(v,ext_i,ext_j,&block) raise "Error" if ext_i==ext_j files_i = [] files_j = [] vs = values_case_insensitve(v) vs.each do |v_el| @files_per_values[v_el].each do |el| files_i << el if File.extname(el)==ext_i files_j << el if File.extname(el)==ext_j end end nodes_i = [] nodes_j = [] files_i.each do |f| vs.each do |v_el| @nodes_per_value_and_file_map[v_el][f].each {|n| nodes_i << n} end end files_j.each do |f| vs.each do |v_el| @nodes_per_value_and_file_map[v_el][f].each {|n| nodes_j << n} end end for ni in nodes_i for nj in nodes_j block.call(ni,nj) end end end |
#itf_idf(file, value) ⇒ Object
243 244 245 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 243 def itf_idf(file,value) itf(file,value)*idf(value) end |
#models ⇒ Object
106 107 108 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 106 def models @models end |
#sequential_asts ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 110 def sequential_asts sequential_asts = [] @nodes_per_file.each do |f,nodes| nodes.each do |n| attribute_values_of_n = n.collect_values_with_count.keys context = context(n) if attribute_values_of_n.count > 0 attribute_values_of_n.each do |v| sequential_asts << SequentialAst.new(n,v,context.values) end end end sequential_asts end |
#shared_ids ⇒ Object
124 125 126 127 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 124 def shared_ids @shared_ids = calc_shared_ids unless @shared_ids @shared_ids end |
#tf_idf(file, value) ⇒ Object
239 240 241 |
# File 'lib/crosslanguagespotter/model_loading.rb', line 239 def tf_idf(file,value) value_frequency(file,value)*idf(value) end |