Module: Guess

Defined in:
lib/guess.rb,
lib/guess/version.rb

Constant Summary collapse

FREQ_MALE =
parse_file("male")
FREQ_FEMALE =
parse_file("female")
VERSION =
"0.0.2"

Class Method Summary collapse

Class Method Details

.gem_rootObject



35
36
37
# File 'lib/guess.rb', line 35

def gem_root
  @gem_root ||= File.expand_path("../..", __FILE__)
end

.gender(name) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/guess.rb', line 6

def gender(name)
  name = name.to_s.downcase
  index = name.index(",")
  first_name = index ? name[(index+1)..-1] : name
  first_name = first_name.split.first

  freq_male = FREQ_MALE[first_name]
  freq_female = FREQ_FEMALE[first_name]
  p_male = freq_male / (freq_male + freq_female)
  gender, confidence =
  if freq_male > freq_female
    ["male", p_male]
  elsif freq_female > freq_male
    ["female", 1 - p_male]
  else
    ["unknown", nil]
  end
  {:gender => gender, :confidence => confidence}
end

.parse_file(name) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/guess.rb', line 26

def parse_file(name)
  dist = Hash.new(0.0005)
  File.open("#{gem_root}/lib/guess/#{name}.txt", "r").each_line do |line|
    name, freq, cum_freq, rank = line.split
    dist[name.downcase] = freq.to_f
  end
  dist
end