La lista contiene más de 46mil nombres + genero, unificados de las siguientes fuentes:
• Lista de nombres de la librería nltk
• Lista nombres de la librería gender_guesser
• Lista de nombres argentinos publicados aqui
También se hicieron otras modificaciones para nombres hispanos, como borrar apellidos, agregar diminutivos, nombres cortos, alias, entre otros.
Script:
import pandas as pd import operator import re def clean_text(txt): txt = re.sub("[^a-záéíóúñüäë]", " ", txt.lower()) txt = re.sub(' +',' ', txt) return txt.strip().split() def df_to_dict(df, key_column, val_column): """convierte dos pandas series en un diccionario""" xkey = df[key_column].tolist() xval = df[val_column].tolist() return dict(zip(xkey,xval)) def get_gender2(names): names = clean_text(names) names = [x for x in names if gender_list.get(x,'a') != 'a'] gender ={'m':0, 'f':0, 'a':0} for i, name in enumerate(names): g = gender_list.get(name,'a') gender[g] += 1 gender[g] += 2 if len(names) > 1 and i == 0 and g != 'a' else 0 gender['a'] = 0 if (gender['f']+gender['m']) > 0 else 1 return max(gender.items(), key=operator.itemgetter(1))[0] if __name__ == '__main__': path = 'https://www.dropbox.com/s/edm5383iffurv4x/nombres.csv?dl=1' gender_list = pd.read_csv(path) gender_list = df_to_dict(gender_list, key_column='nombre', val_column='genero') print(get_gender2('lopez jose maria')) print(get_gender2('santos contreras')) print(get_gender2('maria isabel lopez garcia rodriguez')) print(get_gender2('cami lopez')) print(get_gender2('majo garcia')) print(get_gender2('colon cristobal')) print(get_gender2('Cristóbal Colón')) print(get_gender2('Cristoforo Colombo'))
end
Hola, quería saber si este script sigue vigente? donde reemplazo por mi archivo de nombres para saber que genero tiene cada uno?
ResponderEliminarHola, mil gracias por montar esto! tienes todavia vigente el archivo de nombres?
ResponderEliminarYa está actualizado el link
EliminarMuchas gracias!
ResponderEliminarGracias por la información, es de gran utilidad. ¿Podría explicar un poco la función get_gender2 ?
ResponderEliminar