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 +4 -4
- data/CHANGELOG.md +3 -0
- data/Gemfile +1 -1
- data/README.md +24 -6
- data/guess.gemspec +5 -5
- data/lib/guess.rb +11 -9
- data/lib/guess/version.rb +1 -1
- data/spec/guess_spec.rb +0 -2
- data/spec/spec_helper.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7290d573194b6e31ea4565af367ae9db216e6c7f
|
4
|
+
data.tar.gz: 47a67dbb70ce8eb62ad28b9e3b4f9348b5125f8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6211518e5448fd7d000003cdfcbe6b24fd91660be273771db503227f701bb8556ee661d5564949124e0cd774a253be4ac9f8354333c58a398d86fa2785231969
|
7
|
+
data.tar.gz: f0c833f9b5b511742d24b762c648aa1a47a60db13df78bb36a0692ab1c2f6a2a45510c36d040ffaeb38fc6c796c240122f4bb0c12d59567f562b41d3437e2805
|
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
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
|
-
#
|
10
|
-
|
11
|
-
|
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/
|
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
|
|
data/guess.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require File.expand_path(
|
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 =
|
8
|
-
gem.summary =
|
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"]
|
data/lib/guess.rb
CHANGED
@@ -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 =
|
13
|
-
freq_female =
|
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,
|
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
|
-
|
40
|
-
|
41
|
-
|
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
|
data/lib/guess/version.rb
CHANGED
data/spec/guess_spec.rb
CHANGED
@@ -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
|
data/spec/spec_helper.rb
CHANGED
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.
|
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:
|
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.
|
81
|
+
rubygems_version: 2.6.8
|
81
82
|
signing_key:
|
82
83
|
specification_version: 4
|
83
84
|
summary: Statistical gender detection for Ruby
|