universitarias una reglamento realizan que pueden publicas publica proyectos para ideas hacer hace escolares escolar cosas bibliotecas biblioteca actividades database language-agnostic
0717-182.zip

database - reglamento - ¿Alguien sabe de una buena biblioteca para mapear el nombre de una persona a su género?



que se hace en una biblioteca escolar (30)

Estoy buscando una biblioteca o base de datos que pueda proporcionar conjeturas sobre si una persona es hombre o mujer en función de su nombre o apodo. Algo como

john => "M", mary => "F", alex => "A", #ambiguous

Estoy buscando algo que admita nombres que no sean en inglés (como japonés, indio, etc.).

Antes de obtener otra respuesta como "vas a ofender a las personas asumiendo su sexo / género", déjame aclarar, mi aplicación no interactúa con nadie. No envía correos electrónicos ni se pone en contacto con nadie de todos modos. No hay usuarios para preguntar En muchos casos, la persona en cuestión está muerta, y la única información que tengo es nombre, fecha de nacimiento y fecha de fallecimiento. La razón por la que deseo saber el sexo del individuo es mejorar la gramática del resultado y ayudar en las posibles búsquedas que puedan surgir después.


"Te digo, la vida no es fácil para un niño llamado ''Sue''".

... Entonces, ¿por qué hacerlo más difícil? Si necesita saber el sexo, solo pregunte ... De lo contrario, no se preocupe.


Algunas culturas tienen nombres unisex, como el mío. ¿Que haces entonces? Creo que la respuesta es simple y llana, no lo supongas, podrías ofender. Solo pregunta si es necesario, de lo contrario, neutralidad de género.


Aquí hay dos enfoques extraños que quizás ni siquiera funcionen, y que probablemente no funcionen en masa sin violar los términos de una licencia:

  1. Use la API de Facebook (de la que no sé prácticamente nada, incluso puede que no sea posible) para realizar dos búsquedas: una para usuarios de FB masculinos con ese primer nombre y otra para mujeres. Usa los dos números para decidir la probabilidad de género.

  2. Mucho más flexible pero más escalable, use la API de Google y busque el nombre más los pronombres específicos del género, y compare los números. Por ejemplo, hay 592,000,000 resultados para buscar "Richard his" (no como una frase), pero solo 179,000,000 para "Richard her".


Aunque las bases de datos son probablemente la solución más práctica, si quieres divertirte quizás podrías intentar escribir una red neuronal (o usando una biblioteca de redes neuronales) que tome el nombre y entregue una de esas 3 opciones (F, M, A) )

Puede entrenarlo usando los conjuntos de datos que existen en las bases de datos sugeridas por otras respuestas, así como con cualquier otro dato que tenga.

Esta solución le permitiría manejar nombres que no están categorizados específicamente previamente, y también manejar diferentes idiomas. Es posible que desee pasar el idioma (si lo conoce) como una entrada a la red neuronal también.

Sin embargo, no sé si puedo decir que las redes neuronales (o cualquier otro aprendizaje automático) harían un buen trabajo de categorización.


Bueno, ya no. IBM patented esa idea hace un tiempo.

Por lo tanto, si busca cualquier nivel de flexabilidad (algo más que una lista de nombres), tendrá que (¡jadear!) Preguntar al usuario o simplemente pagarle a IBM por los derechos :)

En cualquier caso, tal autodetección es molesta para muchas personas que tienen nombres ambiguos de género, o incluso simplemente padres malignos. No hagamos esto más difícil para ellos.


Construí una API gratuita que proporciona una estimación probabilística del género basada en un primer nombre. En lugar de utilizar cualquiera de los enfoques antes mencionados, en su lugar utilizo un gran conjunto de datos de perfiles de redes sociales para proporcionar una suposición probabilística junto con un factor de certeza. También es compatible con el filtrado opcional a través de id de país o idioma. Cada día mejora a medida que se agregan más perfiles al conjunto de datos.

Es gratis para usar en http://genderize.io

Una cosa que debería considerar es usar una herramienta que tenga en cuenta los datos demográficos, ya que las convenciones de nombres dependerán mucho de esto.

Ejemplo

http://api.genderize.io?name=kim {"name":"kim","gender":"female","probability":"0.89","count":1440} http://api.genderize.io?name=kim&country_id=dk {"name":"kim","gender":"male","probability":"0.95","count":44,"country_id":"dk"}



El directorio Z (en vettrasoft.com) tiene una función C-language, funciona de la siguiente manera:

void func() { char c = z_guess_sex_byfirstname ("Lon"); switch(c) { case ''M'': std::cout << "It''s a boy!/n"; break; case ''F'': std::cout << "It''s a girl!/n"; break; case ''B'': std::cout << "this name is for both sexes/n"; break; case ''?'': std::cout << "sex unknown sorry/n"; break; } }

es una base de datos, la tabla tiene algo así como más de 10.000 nombres, pero necesitas descargar e instalar el directorio z (incluye muchos otros elementos topográficos como países, puntos de referencia geográficos, aeropuertos, estados, códigos de área, códigos postales, etc.) junto con funciones y objetos de C ++ para acceder a los datos). Sin embargo, los nombres están muy orientados al inglés. La tabla es un trabajo en progreso y se actualiza gradualmente.


El género de un nombre es algo que no se puede inferir programáticamente en el caso general. Necesitas una base de datos de nombres. Aquí hay una base de datos de nombres gratis de la Oficina del Censo de EE . UU .

EDITAR : El enlace para el nombre de 2010 está muerto, pero hay enlaces que funcionan y una biblioteca en los comentarios.


El paquete Python pypi.python.org/pypi/SexMachine hará eso por ti. Dado cualquier nombre, se devuelve si es masculino, femenino o unisex. Se basa en los datos del programa gender.c de Jorg Michael.


En mi humilde opinión, es generalmente una mala idea para determinar el sexo a partir del nombre de un individuo. Muchos nombres son intersexuales (buena pena, ¿es esto incluso una palabra? :-), y también pueden ser un sexo en una cultura y otra en otra.

Algunos ejemplos estúpidos, solo unos pocos que me vinieron a la mente (de mi parte del mundo, CE)

Vanja - mujer, en los países del este de aquí, en su mayoría hombres
Alex - intersexual (abreviatura de Sandra, mujer y Sandro, masculino)
Robin - en las culturas occidentales, puede ser tanto

En algunas partes del mundo, el sexo de una persona puede determinarse observando cómo termina el nombre. Por ejemplo, Marija, Sandra, Ivana, Petra, Sara, Lucija, Ana, se puede ver que la mayoría de estos nombres femeninos terminan en "ja" o "ra". También hay otros ejemplos.

Aún así, creo que es mejor simplemente pedirle sexo al usuario.


Es dependiente de la cultura / región: tomar Andrea, para los italianos es solo masculino, porque Suecia es un nombre femenino, mientras que Andreas es para hombres; Shawn es ambiguo en inglés. Si un idioma tiene declinación, como el latín o el ruso, las letras finales cambiarán de acuerdo con las reglas gramaticales,

Otra fuente de ambigüedades son los nombres de familia idénticos a los nombres personales.

En mi opinión, es imposible de resolver en general.


Es interesante que diga que tiene fecha de nacimiento. Eso podría ayudar. He visto bases de datos de historias de popularidad de nombres.

En la película Splash (1984), fue gracioso que el personaje de Darryl Hannah elija el nombre "Madison" de un letrero de la calle Madison Avenue, porque obviamente "Madison" no es el nombre de una niña.

¡24 años después, Madison es el 4º nombre más popular para niñas bebés!

Nombre del historial del gobierno. (Vea el triste declive de Mary durante los últimos 100 años).

Cuando escribí a la Casa Blanca cuando era niño, Richard Nixon (o, tal vez, una secretaria) me respondió con algunas fotos del lugar histórico, dirigidas a "Miss Rhett Anderson". "¿Señorita Rhett?" ¡Ni siquiera tiene sentido! ¿Realmente no podemos decir la diferencia entre Rhett, de Clark Gable (con bigote, en Lo que el viento se llevó) y Scarlett, de Vivian Lee? Nunca lo perdonaré, a pesar de la afirmación de Neil Young de que "incluso Richard Nixon tiene alma".


Esto no es realmente un problema de programación, todo se reduce a obtener una tabla de probabilidades.

AFAIK no hay bases de datos públicas en formas destiladas. Puedes construir esto a partir de datos del censo o comprar los datos de alguien.

Por ejemplo, este es alguien que vende la tabla de probabilidades para Canadá .


Estoy bastante seguro de que ese servicio no podría existir con un nivel aceptable de precisión. Estos son los problemas que creo que son insuperables:

  • Hay muchos nombres que son para hombres y mujeres.
  • Hay muchos nombres diferentes en este mundo, incluso si solo considera un país.
  • Está el tema "Un niño llamado Sue", planteado tan elocuentemente por Johnny Cash :-)

La idea claramente no funcionará en la mayoría de los idiomas.

Sin embargo, si pudieras saber la nacionalidad de antemano, podrías tener más suerte. En la mayoría de los idiomas eslavos (por ejemplo, ruso, polaco, búlgaro) se puede suponer con seguridad que todos los apellidos que terminan en -va -cha -ska (-a en general son femeninos) mientras que -v -ch -shi son masculinos.

De hecho, cualquier apellido tiene forma femenina y masculina dependiendo del final. Los mismos nombres utilizados en otros países (por ejemplo, EE. UU.) Podrían usar solo la forma masculina.

Lo mismo podría decirse de los nombres (-a -ya son femeninos) pero no es 100% exacto.

Pero, en general, difícilmente obtendrás una biblioteca que sea lo suficientemente precisa.


Lo único que obtendrás al tratar de automatizarlo es un grupo de usuarios infelices. De los datos del censo:

JAMES, JOHN, ROBERT, MICHAEL, WILLIAM, DAVID, RICHARD, CHARLES, JOSEPH, THOMAS, CHRISTOPHER, DANIEL, PAUL, MARK, DONALD, GEORGE, KENNETH, STEVEN, EDWARD, BRIAN, RONALD, ANTHONY, KEVIN, JASON, MATTHEW, GARY, TIMOTHY, JOSE, LARRY, JEFFREY, FRANK, SCOTT, ERIC, STEPHEN, ANDREW, RAYMOND, GREGORY, JOSHUA, JERRY, DENNIS, WALTER, PATRICK, PETER, HAROLD, HENRY, CARL, ARTHUR, RYAN, JOE, JUAN, JACK, ALBERT, JUSTIN, TERRY, GERALD, KEITH, SAMUEL, WILLIE, LAWRENCE, ROY, BRANDON, ADAM, FRED, BILLY, LOUIS, JEREMY, AARON, RANDY, EUGENE, CARLOS, RUSSELL, BOBBY, VICTOR, MARTIN, JESSE, SHAWN, CLARENCE, SEAN, CHRIS, JOHNNY, JIMMY, ANTONIO, TONY, LUIS, MIKE, DALE, CURTIS, NORMAN, ALLEN, GLENN, TRAVIS, LEE, MELVIN, KYLE, FRANCIS, JESUS, RAY, JOEL, EDDIE, TROY, ALEXANDER, MARIO, FRANCISCO, MICHEAL, OSCAR, JAY, ALEX, JON, RONNIE, TOMMY, LEON, LEO, WESLEY, DEAN, DAN, LEWIS, COREY, MAURICE, VERNON, ROBERTO, CLYDE, SHANE, SAM, LESTER, CHARLIE, TYLER, GENE, BRETT, ANGEL, LESLIE, CECIL, ANDRE, ELMER, GABRIEL, MITCH ELL, ADRIAN, KARL, CORY, CLAUDE, JAMIE, JESSIE, CRISTIANO, LONNIE, CODY, JULIO, KELLY, JIMMIE, JORDAN, JAIME, CASEY, JOHNNIE, SIDNEY, JULIAN, DARYL, VIRGIL, MARSHALL, PERRY, MARION, TRACY, RENE, FREDDIE, AUSTIN, JACKIE, JOEY, EVAN, DANA, DONNIE, SHANNON, ANGELO, SHAUN, LYNN, CAMERON, BLAKE, KERRY, JEAN, IRA, RUDY, BENNIE, ROBIN, LOREN, NOEL, DEVIN, KIM, GUADALUPE, CARROLL, SAMMY, MARTY, TAYLOR, ELLIS, DALLAS, LAURENCE, DREW, JODY, FRANKIE, PAT, MERLE, TERRELL, DARNELL, TOMMIE, TOBY, VAN, COURTNEY, JAN, CARY, SANTOS, AUBREY, MORGAN, LOUIE, STACY, MICAH, BILLIE, LOGAN, DEMETRIUS, ROBBIE, KENDALL, ROYCE, MICKEY, DEVON, ASHLEY, CAREY, HIJO, MARLIN, ALI, SAMMIE, MICHEL, RORY, KRIS, AVERY, ALEXIS, GERRY, STACEY, CARMEN, SHELBY, RICKIE, BOBBIE, OLLIE, DENNY, DION, ODELL, MARY, COLBY, HOLLIS, KIRBY, CRUZ, MERRILL, LANE, CLEO, BLAIR, NÚMEROS, CLAIR, BERNIE, JOAN, DOMINIQUE, TRISTÁN, JAME, GALE, LAVERNE, ALVA, STEVIE, ERIN, AUGUSTINE, JOVEN, JOHNIE, ARIEL, POLLA, LINDSEY, TRACEY, SCOTTIE, SANDY, SYDNEY, GAIL, DORIAN, LAVERN, REFUGIO, MARFIL, ANDREA, SANG, DEON, CAROL, YONG, BERRY, TRINIDAD, SHIRLEY, MARIA, CHANG, ROSARIO, DANNIE, FRANCES, THANH, CONNIE, TORY, LUPE, DEE, SUNG, CHI, QUINN, MINH, THEO, LOU, CHUNG, VALENTINE, JAMEY, WHITNEY, SOL, CHONG, PARÍS, OTHA, LACY, DONG, ANTONIA, KELLEY, CARROL, SHAYNE, VAL, JUDE, BRITT, HONG, LEIGH, GAYLE, JAE, NICKY, LESLEY, HOMBRE, KASEY, JEWELL, PATRICIA, LAUREN, ELISHA, MICHAL, LINDSAY y JEWEL

son todos nombres que funcionan tanto para hombres como para mujeres. Si el nombre de una niña es Robert y todos, incluido el software, siguen llamándola hombre, ella estaría bastante enojada.


Lo que haría es crear un truco que tome el nombre y lo busque contra la API de Facebook. Luego mira a los usuarios resultantes y cuenta cuántos de ellos son femeninos o masculinos. Luego puedes devolver un porcentaje. Ya no tan insuperable. :)


Los mapas de nombre y género pueden funcionar, pero en países multiculturales es más como adivinar. Puedo darte un ejemplo: Marian en polaco es un nombre masculino típico, mientras que el mismo nombre en Gran Bretaña es un nombre femenino. En la era de las personas que inmigran en todo el mundo, no estoy seguro de que esa base de datos sea muy precisa. ¡Buena suerte!


No conozco ese servicio, sin embargo ...

En algunos países (p. Ej., Alemania), el nombre que se le puede dar a una persona está limitado por la ley; tal vez haya algunas publicaciones relacionadas con ese tema, que podrían ser cosechadas (pero no conozco ninguna en este momento).


No conozco ese servicio. Sin embargo, quizás pueda encontrar los datos que está buscando. El gobierno de EE. UU. Publica datos sobre la prevalencia de nombres y el sexo de la persona a la que están vinculados. La Administración del Seguro Social tiene esa page , y el censo también puede, pero no me he tomado el tiempo para mirar. Quizás otros gobiernos mundiales hagan cosas similares.


No es gratis, pero esta es una buena biblioteca que he usado antes:

NetGender para .NET le permite crear rápida y fácilmente la verificación de nombre, el análisis y la determinación de género en sus aplicaciones personalizadas. Verifique con precisión si un campo en particular contiene una persona o compañía válida. NetGender utiliza un Diccionario de nombres de 100.000+ étnicamente diversos en combinación con un Diccionario de nombres de empresas de más de 8,000 para garantizar la determinación precisa de género.

http://www.softwarecompany.com/dotnet/netgender.htm



No lo he usado, pero IBM tiene una biblioteca Global Name Analytics (¡por un precio!) Que parece bastante completa.



Puedes echar un vistazo a mi proyecto de detección de género python https://github.com/muatik/genderizer

Intenta detectar los géneros de los autores buscando sus nombres y / o texto de muestra (por ejemplo, tweets) de ellos.

Y también es compatible con mongodb, memcached para el rendimiento.


Solo pregúntale a la gente, y si son amables, te darán sus ''M''s o'' F''s, y si no son así, dales una ''A''.


También es una mala práctica suponer que los usuarios deben ser hombres o mujeres. Hay un número pequeño pero significativo de personas "intersexuales", la mayoría de las cuales están hartas de no tener una caja para marcar.
Bignose: interesante en el "singular ellos". No me di cuenta de que tenía una historia tan larga.


Teniendo en cuenta sus limitaciones, su mejor opción es reformular lo que está escribiendo para que sea gender-neutral al gender-neutral menos que sepa en qué género quiere que se llame en cada caso.

Si escribes en English , recuerda que el singular "ellos" es gramaticalmente bueno como un pronombre singular en tercera persona de género neutro.

Un buen ejemplo es el título de esta pregunta. Como es actualmente:

… mapping a person''s name to his or her sex?

Eso sería menos incómodo si se escribe:

… mapping a person''s name to their sex?


gender.c es un programa de código abierto C que hace un buen trabajo. Viene con datos de 44568 nombres de todo el mundo. Hay una buena documentación y una descripción del formato de archivo (básicamente texto sin formato), por lo que no debería ser difícil de leer desde su propia aplicación.

Esto es lo que dice el autor:

Algunas palabras sobre la calidad de los datos

El diccionario de nombres ha sido preparado con sumo cuidado. Por ejemplo, los nombres turcos, indios y coreanos en este diccionario han sido clasificados independientemente por varios hablantes nativos. También tuve especial cuidado en enumerar solo aquellos nombres que actualmente se pueden encontrar.

La lección de esto?

Cualquier modificación debe hacerse con mucha cautela (y también deben cumplir con la clasificación requerida por el algoritmo de búsqueda). Por ejemplo, sabiendo que "Sascha" es un nombre de niño en Alemania, el autor nunca asumió que el inglés "Sasha" fuera el nombre de una niña. Sabiendo que "Jan" es el nombre de un niño en Alemania, nunca asumí que fuera una forma corta en inglés de "Janet". Otro caso en el punto es el nombre "Esra". Este es el nombre de un niño en Alemania, pero el nombre de una niña en Turquía.

El programa calcula una probabilidad de que el nombre sea masculino de mujer. Puede hacerlo con el nombre como entrada solo o con el nombre y el país de origen, lo que arroja resultados significativamente mejores.

Puede descargarlo del sitio web de la revista alemana de informática c''t 40 000 Namen . El artículo está en alemán, pero no se preocupe, toda la documentación es en inglés. Aquí está el enlace ftp directo 0717-182.zip si no está interesado en el artículo. El archivo zip contiene el código fuente, un ejecutable de Windows, la base de datos y la documentación.