Class: Andrey::Analyzer
- Inherits:
-
Object
- Object
- Andrey::Analyzer
- Defined in:
- lib/andrey/analyzer.rb
Class Method Summary collapse
- .analyze_file(filename, include_spaces = false) ⇒ Object
- .analyze_text(text, include_spaces = false) ⇒ Object
- .symbols_regex(include_spaces) ⇒ Object
Class Method Details
.analyze_file(filename, include_spaces = false) ⇒ Object
3 4 5 |
# File 'lib/andrey/analyzer.rb', line 3 def self.analyze_file(filename, include_spaces=false) analyze_text(IO.read(filename), include_spaces) end |
.analyze_text(text, include_spaces = false) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/andrey/analyzer.rb', line 7 def self.analyze_text(text, include_spaces=false) pmap = {} text.downcase.chars.each_cons(2) do |from, to| pmap[from] ||= Hash.new(0) pmap[to] ||= Hash.new(0) pmap[from][to] += 1 end regex = symbols_regex(include_spaces) symbols = pmap.keys.sort.select {|s| s.match(regex) } map = symbols.inject([]) do |m, symbol| occurrences = pmap[symbol] sum = occurrences.values.inject(:+) || 0 m << symbols.map { |s| sum == 0 ? 0 : (occurrences[s] / sum.to_f) } end [symbols, map] end |
.symbols_regex(include_spaces) ⇒ Object
28 29 30 |
# File 'lib/andrey/analyzer.rb', line 28 def self.symbols_regex(include_spaces) include_spaces ? Regexp.new(/[a-z ]/) : Regexp.new(/[a-z]/) end |