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 +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
         |