Module: Guess

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

Constant Summary collapse

VERSION =
"0.1.1"

Class Method Summary collapse

Class Method Details

.female_frequenciesObject



42
43
44
# File 'lib/guess.rb', line 42

def female_frequencies
  @female_frequencies ||= parse_file("female")
end

.gem_rootObject



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

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

.gender(name) ⇒ Object



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

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 = male_frequencies[first_name]
  freq_female = female_frequencies[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

.male_frequenciesObject



38
39
40
# File 'lib/guess.rb', line 38

def male_frequencies
  @male_frequencies ||= parse_file("male")
end

.parse_file(name) ⇒ Object



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

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