guess 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 97d757ee588988abb362d18a6b7ce4fa1584139c
4
- data.tar.gz: 6abf7d04a05eb638abb772a4a1dd1f59f26135e7
3
+ metadata.gz: 7290d573194b6e31ea4565af367ae9db216e6c7f
4
+ data.tar.gz: 47a67dbb70ce8eb62ad28b9e3b4f9348b5125f8f
5
5
  SHA512:
6
- metadata.gz: 162de5972068c59ec1e999291935841031ffbbdd6fb9914958bc214c9e58cb67eccb98d2fe6537b1296765877a50a05c1c4b3ed7294f9c97fe2896960ead9ee1
7
- data.tar.gz: 12dd65b3ab6928648ee91e186f6c7d156ab2583a34c812a18f247119cc50172d1ac8845c295d5f434808768ee51b4d08691520d69e78af92c0bae5bf83d3c64b
6
+ metadata.gz: 6211518e5448fd7d000003cdfcbe6b24fd91660be273771db503227f701bb8556ee661d5564949124e0cd774a253be4ac9f8354333c58a398d86fa2785231969
7
+ data.tar.gz: f0c833f9b5b511742d24b762c648aa1a47a60db13df78bb36a0692ab1c2f6a2a45510c36d040ffaeb38fc6c796c240122f4bb0c12d59567f562b41d3437e2805
@@ -0,0 +1,3 @@
1
+ ## 0.1.1
2
+
3
+ - Lazy load frequencies
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in guess.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -2,16 +2,34 @@
2
2
 
3
3
  *Statistical* gender detection for Ruby
4
4
 
5
+ Works with first names
6
+
7
+ ```ruby
8
+ Guess.gender("Don")
9
+ # {gender: "male", confidence: 0.9965635738831615}
10
+ ```
11
+
12
+ And full names
13
+
5
14
  ```ruby
6
- Guess.gender("Don Draper")
7
- # => {:gender => "male", :confidence => 0.9965635738831615}
8
15
  Guess.gender("Betty Draper")
9
- # => {:gender => "female", :confidence => 0.9992498124531133}
10
- Guess.gender("Mad Men")
11
- # => {:gender => "unknown", :confidence => nil}
16
+ # {gender: "female", confidence: 0.9992498124531133}
17
+ ```
18
+
19
+ or
20
+
21
+ ```ruby
22
+ Guess.gender("Draper, Betty")
23
+ ```
24
+
25
+ Occasionally, it just doesn’t know
26
+
27
+ ```ruby
28
+ Guess.gender("Manhattan")
29
+ # {gender: "unknown", confidence: nil}
12
30
  ```
13
31
 
14
- Data obtained from the [US Census Bureau](http://www.census.gov/genealogy/names/names_files.html), so it works best with American names.
32
+ Data obtained from the [US Census Bureau](http://www.census.gov/genealogy/www/data/1990surnames/names_files.html), so it works best with American names.
15
33
 
16
34
  ## Installation
17
35
 
@@ -1,15 +1,15 @@
1
1
  # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/guess/version', __FILE__)
2
+ require File.expand_path("../lib/guess/version", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["Andrew Kane"]
6
6
  gem.email = ["andrew@chartkick.com"]
7
- gem.description = %q{Statistical gender detection for Ruby}
8
- gem.summary = %q{Statistical gender detection for Ruby}
7
+ gem.description = "Statistical gender detection for Ruby"
8
+ gem.summary = "Statistical gender detection for Ruby"
9
9
  gem.homepage = "https://github.com/ankane/guess"
10
10
 
11
- gem.files = `git ls-files`.split($\)
12
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
11
+ gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
13
13
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
14
  gem.name = "guess"
15
15
  gem.require_paths = ["lib"]
@@ -2,15 +2,14 @@ require "guess/version"
2
2
 
3
3
  module Guess
4
4
  class << self
5
-
6
5
  def gender(name)
7
6
  name = name.to_s.downcase
8
7
  index = name.index(",")
9
- first_name = index ? name[(index+1)..-1] : name
8
+ first_name = index ? name[(index + 1)..-1] : name
10
9
  first_name = first_name.split.first
11
10
 
12
- freq_male = FREQ_MALE[first_name]
13
- freq_female = FREQ_FEMALE[first_name]
11
+ freq_male = male_frequencies[first_name]
12
+ freq_female = female_frequencies[first_name]
14
13
  p_male = freq_male / (freq_male + freq_female)
15
14
  gender, confidence =
16
15
  if freq_male > freq_female
@@ -26,7 +25,7 @@ module Guess
26
25
  def parse_file(name)
27
26
  dist = Hash.new(0.0005)
28
27
  File.open("#{gem_root}/lib/guess/#{name}.txt", "r").each_line do |line|
29
- name, freq, cum_freq, rank = line.split
28
+ name, freq, _, _ = line.split
30
29
  dist[name.downcase] = freq.to_f
31
30
  end
32
31
  dist
@@ -36,9 +35,12 @@ module Guess
36
35
  @gem_root ||= File.expand_path("../..", __FILE__)
37
36
  end
38
37
 
39
- end
40
-
41
- FREQ_MALE = parse_file("male")
42
- FREQ_FEMALE = parse_file("female")
38
+ def male_frequencies
39
+ @male_frequencies ||= parse_file("male")
40
+ end
43
41
 
42
+ def female_frequencies
43
+ @female_frequencies ||= parse_file("female")
44
+ end
45
+ end
44
46
  end
@@ -1,3 +1,3 @@
1
1
  module Guess
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Guess do
4
-
5
4
  context "male name" do
6
5
  subject { Guess.gender("Don Draper") }
7
6
 
@@ -36,5 +35,4 @@ describe Guess do
36
35
  it { expect(subject[:gender]).to eq("male") }
37
36
  it { expect(subject[:confidence]).to be_within(0.1).of(0.99) }
38
37
  end
39
-
40
38
  end
@@ -6,5 +6,5 @@
6
6
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
7
  require "guess"
8
8
 
9
- RSpec.configure do |config|
9
+ RSpec.configure do
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guess
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-29 00:00:00.000000000 Z
11
+ date: 2017-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -47,6 +47,7 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - ".gitignore"
49
49
  - ".rspec"
50
+ - CHANGELOG.md
50
51
  - Gemfile
51
52
  - LICENSE
52
53
  - README.md
@@ -77,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
78
  version: '0'
78
79
  requirements: []
79
80
  rubyforge_project:
80
- rubygems_version: 2.2.2
81
+ rubygems_version: 2.6.8
81
82
  signing_key:
82
83
  specification_version: 4
83
84
  summary: Statistical gender detection for Ruby