Sha256: 442471fef28a5e47ac24356613b82d2ff79396baf094d4ce74248a4b17d96a97

Contents?: true

Size: 1.4 KB

Versions: 1

Compression:

Stored size: 1.4 KB

Contents

require "elife_gender/version"
require "elife_gender/utils"

module ElifeGender

  class GenderDetector

		def initialize
    	@@m_names = open(ElifeGender::Utils.gem_libdir + "/files/m.txt") {|f| f.read.split "\n"}.inject({}) do |memo, name|
    		memo[name] = true
    		memo
    	end
			@@f_names = open(ElifeGender::Utils.gem_libdir + "/files/f.txt") {|f| f.read.split "\n"}.inject({}) do |memo, name|
    		memo[name] = true
    		memo
    	end
  	end

		@@instance = GenderDetector.new

		def self.instance
    	return @@instance
  	end

		def self.get_gender (name)
			text = clean_text name
      text.split("\s").each do |text|
  			if @@f_names[text]
  				return "female"
  			elsif @@m_names[text]
  				return "male"
  			end
      end
      return "unknown"
		end

		def self.get_gender_all (names)
			names.map {|n| get_gender n}
		end

    def self.clean_text(text)
      final_text = text.downcase.tr(
        "àáâãäåāăąçćĉċčðďđèéêëēĕėęěĝğġģĥħìíîïĩīĭįıĵķĸĺļľŀłñńņňʼnŋòóôõöøōŏőŕŗřśŝşšſţťŧùúûüũūŭůűųŵýÿŷźżž",
        "aaaaaaaaacccccdddeeeeeeeeegggghhiiiiiiiiijkklllllnnnnnnooooooooorrrssssstttuuuuuuuuuuwyyyzzz")
      final_text = final_text.gsub(/[^\w\s]/, " ")
      final_text = final_text.gsub(/\s+/, " ")
      final_text = final_text.strip
      final_text
    end

		private_class_method :new, :clean_text

	end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
elife_gender-0.1.4 lib/elife_gender.rb