guess 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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