Est-ce que quelqu’un connaît une bonne bibliothèque pour cartographier le nom d’une personne à son sexe?

Je suis à la recherche d’une bibliothèque ou d’une firebase database permettant de déterminer si une personne est un homme ou une femme en fonction de son nom ou de son surnom. Quelque chose comme

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

Je recherche quelque chose qui supporte des noms autres que les noms anglais (tels que le japonais, l’indien, etc.).

Avant que je reçoive une autre réponse dans le sens de “vous allez offenser des personnes en assumant leur sexe / genre”, laissez-moi être clair, ma demande n’interagit avec personne. Il n’envoie pas d’e-mails ou ne contacte personne de toute façon. Il n’y a pas d’utilisateurs à demander. Dans de nombreux cas, la personne en question est morte et les seules informations dont je dispose sont le nom, la date de naissance et la date de décès. La raison pour laquelle je veux connaître le sexe de l’individu est de rendre la grammaire de la sortie plus agréable et de faciliter les recherches éventuelles.

Le genre d’un nom est quelque chose qui ne peut être déduit par programmation dans le cas général. Vous avez besoin d’une firebase database de noms. Voici une firebase database de noms libre du US Census Bureau .

EDIT : Le lien pour le nom 2010 est mort mais il y a des liens de travail et une librairie dans les commentaires.

gender.c est un programme open source C qui fait du bon travail. Il contient des données sur 44568 prénoms du monde entier. Il existe une bonne documentation et une description du format de fichier (en gros du texte brut), il ne devrait donc pas être difficile de le lire depuis votre propre application.

Voici ce que dit l’auteur:

Quelques mots sur la qualité des données

Le dictionnaire des prénoms a été préparé avec le plus grand soin. Par exemple, les noms turc, indien et coréen de ce dictionnaire ont tous été classés indépendamment par plusieurs locuteurs natifs. J’ai également pris un soin particulier à ne lister que les noms actuellement disponibles.

La leçon de cela?

Toute modification doit être faite avec beaucoup de prudence (et ils doivent également respecter le sorting requirejs par l’algorithme de recherche). Par exemple, sachant que “Sascha” est le nom d’un garçon en Allemagne, l’auteur n’a jamais supposé que l’anglais “Sasha” était le nom d’une fille. Sachant que “Jan” est le nom d’un garçon en Allemagne, je n’ai jamais pensé qu’il s’agissait également d’une forme abrégée anglaise de “Janet”. Un autre exemple est le nom “Esra”. C’est le nom d’un garçon en Allemagne, mais le nom d’une fille en Turquie.

Le programme calcule une probabilité pour que le nom soit masculin ou féminin. Il peut le faire avec le nom comme entrée seule ou avec le nom et le pays d’origine, ce qui donne des résultats nettement meilleurs.

Vous pouvez le télécharger sur le site du magazine informatique allemand c’t 40 000 Namen . L’article est en allemand mais ne vous inquiétez pas, toute la documentation est en anglais. Voici le lien ftp direct 0717-182.zip si l’article ne vous intéresse pas. Le fichier zip contient le code source, un exécutable Windows, la firebase database et la documentation.

“Je te le dis, la vie n’est pas facile pour un garçon nommé Sue.”

… Alors, pourquoi le rendre plus difficile? Si vous avez besoin de connaître le sexe, demandez simplement … Sinon, ne vous en faites pas.

J’ai construit une API gratuite qui donne une estimation probabiliste du genre en fonction d’un prénom. Au lieu d’utiliser l’une des approches mentionnées ci-dessus, j’utilise plutôt un dataset énorme provenant de réseaux sociaux pour fournir une hypothèse probabiliste et un facteur de certitude. Il prend également en charge le filtrage facultatif par identifiant de pays ou de langue. Cela s’améliore de jour en jour car de plus en plus de profils sont ajoutés au jeu de données.

Il est gratuit à utiliser sur http://genderize.io

Une chose que vous devriez envisager est d’utiliser un outil qui prend en compte les données démographiques, car les conventions de dénomination en dépendent fortement.

Exemple

 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"} 

Voici deux approches bizarres qui peuvent même ne pas fonctionner, et qui ne fonctionneraient probablement pas en masse sans enfreindre les termes d’une licence:

  1. Utilisez l’API Facebook (dont je ne connais pratiquement rien, voire même impossible) pour effectuer deux recherches: une pour les utilisateurs masculins FB avec ce prénom et une pour les femmes. Utilisez les deux nombres pour décider de la probabilité du genre.

  2. Beaucoup plus souple mais plus évolutif, utilisez l’API Google et recherchez le nom ainsi que les pronoms spécifiques au genre et comparez les chiffres. Par exemple, il y a 592 000 000 de résultats pour la recherche de “Richard sa” (pas comme une phrase), mais seulement 179 000 000 pour “Richard elle”.

Compte tenu de vos contraintes, votre meilleure option est de reformuler tout ce que vous écrivez afin d’être neutre en termes de genre, à moins que vous ne sachiez quel genre de sexe vous voulez appeler dans chaque cas.

Si vous écrivez en anglais , rappelez-vous que singulièrement «ils» est grammaticalement bien considéré comme un pronom singulier à la troisième personne, non sexiste.

Un bon exemple est le titre de cette question. Comme c’est actuellement:

     … Cartographier le nom d'une personne à son sexe?

Ce serait moins gênant si écrit:

     … Cartographier le nom d'une personne à son sexe?

C’est aussi une mauvaise pratique de supposer que les utilisateurs doivent être des hommes ou des femmes. Il existe un nombre restreint mais significatif de personnes «intersexuées», dont la plupart sont gravement malades de ne pas avoir de boîte à cocher.
bignose: intéressant sur le “singulier qu’ils”. Je n’avais pas réalisé qu’il avait une si longue histoire.

La seule chose que vous obtiendrez en essayant de l’automatiser est un groupe d’utilisateurs mécontents. À partir de ces données de recensement:

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, TYLER, GENE, BRETT, ANGEL, LESLIE, CECIL, ANDRE, ELMER, GABRIEL, MITCH ELL, ADRIAN, KARL, CORY, CLAUDE, JAMIE, JESSIE, CHRISTIAN, LONNIE, CODY, JULIO, KELLY, JIMMIE, JORDANIE, JAIME, CASEY, JOHNNIE, SIDNEY, JULIAN, DARYL, VIRGIL, MARSHALL, PERRY, MARION 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, FILS, 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, NUMÉROS, CLAIR, BERNIE, JOAN, DOMINIQUE, TRISTAN, JAME, GALE, LAVERNE, ALVA, STEVIE, ERIN, AUGUSTINE, JEUNE, JOHNIE, ARIEL, DUSTY, LINDSEY, TRACEY, SCOTTIE, SANDY, SYDNEY, GAIL, DORIAN, LAVERN, REFUGIO, IVOIRE, ANDREA, SANG, DEON, CAROL, YONG, BERRY, TRINITE, SHIRLEY, MARIA, CHANG, ROSARIO, DANNIE, FRANCES, THANH, CONNIE, TORY, LUPE, DEE, SUNG, CHI, QUINN, MINH, THEO, LOU, CHUNG, VALENTINE, JAMEY, WHITNEY, SOL, CHONG, PARIS, OTHA, LACY, DONG, ANTONIA, KELLEY, CARROL, SHAYNE, VAL, JUDE, BRITT, HONG, LEIGH, GAYLE, JAE, NICKY, LESLEY, HOMME, KASEY, JEWELL, PATRICIA, LAUREN, ELISHA, MICHAL, LINDSAY et JEWEL

sont tous des noms qui fonctionnent pour les hommes et les femmes. Si une fille s’appelle Robert et que tout le monde, y compris votre logiciel, continue de l’appeler un homme, elle serait plutôt en colère.

Bien que les bases de données soient probablement la solution la plus pratique, si vous voulez vous amuser, vous pouvez essayer d’écrire un neural network (ou utiliser une bibliothèque de réseaux neuronaux) qui prend le nom et affiche l’une de ces trois options (F, M, A ).

Vous pouvez le former en utilisant les ensembles de données existant dans les bases de données suggérées par d’autres réponses, ainsi qu’avec toutes les autres données dont vous disposez.

Cette solution vous permet de gérer des noms non catégorisés précédemment et de gérer différentes langues. Vous voudrez peut-être aussi passer la langue (si vous la connaissez) en tant que consortingbution au réseau neuronal.

Je ne sais pas si je peux dire que les réseaux neuronaux (ou tout autre apprentissage automatique) feraient un bon travail de catégorisation.

Elle dépend de la culture et de la région: prenez Andrea, pour les Italiens, c’est seulement masculin, car la Suède est un prénom féminin, alors qu’Andreas est pour les hommes; Shawn est ambigu en anglais. Si une langue a une déclinaison, comme le latin ou le russe, les lettres finales changeront selon les règles grammaticales,

Les noms de famille identiques aux noms personnels sont une autre source d’ambiguïtés.

A mon avis, il est impossible de résoudre en général.

L’idée ne fonctionnera clairement pas dans la plupart des langues.

Cependant, si vous pouviez indiquer la nationalité à l’avance, vous pourriez avoir plus de chance. Dans la plupart des langues slaves (russe, polonais, bulgare, par exemple), vous pouvez supposer que tous les noms se terminant par -va -cha -ska (-a en général sont féminins), tandis que -v -ch -shi sont masculins.

En fait, tout nom de famille a une forme féminine et masculine en fonction de la fin. Les mêmes noms utilisés dans d’autres pays (par exemple les États-Unis) peuvent utiliser uniquement la forme masculine.

On pourrait dire la même chose pour les prénoms (-a -ya sont féminins) mais ce n’est pas exact à 100%.

Mais en général, vous auriez difficilement une bibliothèque suffisamment précise.

Ce n’est pas un service, mais une petite application avec une firebase database:
http://www.codeproject.com/KB/cpp/genderizer.aspx

Et cet outil est en allemand:
http://www.faq-o-matic.net/2011/06/01/zu-einem-vornamen-das-geschlecht-finden/

Et un autre en VB:
http://www.vbarchiv.net/tipps/tipp_1925-geschlecht-anhand-des-vornamens-ermitteln.html

Je pense qu’en combinaison avec certaines listes de “Prénom le plus utilisé en 2011”, vous devriez être capable de créer quelque chose de décent.

Le paquetage python SexMachine fera cela pour vous. Étant donné le prénom, il renvoie s’il est masculin, féminin ou unisexe. Il repose sur les données du programme gender.c de Jorg Michael.

Je ne l’ai pas utilisé, mais IBM dispose d’une bibliothèque Global Name Analytics (pour un prix!) Qui semble assez complète.

Le répertoire Z (à vettrasoft.com) a une fonction en langage C, fonctionne comme suit:

 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; } } 

Je pense que la table a environ 10 000 noms, mais vous devez télécharger et installer le répertoire z (y compris de nombreux autres éléments topo tels que les pays, les repères géographiques, les aéroports, les indicatifs régionaux, les codes postaux, etc. avec des fonctions et objects c ++ pour accéder aux données). Cependant, les noms sont très anglophones. La table est un travail en cours et progressivement mis à jour.

Les cartes de noms de genre peuvent fonctionner, mais dans les pays multiculturels, cela ressemble plus à des devinettes. Je peux vous donner un exemple: Marian en polonais est un nom masculin typique, alors que le même nom en Grande-Bretagne est un nom féminin. À l’ère des personnes qui immigrent dans le monde entier, je ne suis pas certain qu’une telle firebase database serait très précise. Bonne chance!

Certaines cultures ont des noms unisexes – comme le mien. Que faites-vous alors? Je pense que la réponse est simple et simple – ne présumez pas – vous pourriez vous offenser. Il suffit de demander si cela est nécessaire, sinon la neutralité de genre.

Eh bien, plus maintenant. IBM a breveté cette idée il y a quelque temps.

Donc, si vous recherchez un niveau de flexibilité (autre chose qu’une liste de noms), vous devrez (gasp!) Demander à l’utilisateur ou simplement payer IBM pour les droits 🙂

Dans tous les cas, une telle autodétection est gênante pour de nombreuses personnes ayant des noms ambigus, voire des parents. Ne rendons pas cela plus difficile pour eux.

Ce n’est pas gratuit, mais c’est une belle bibliothèque que j’ai utilisée auparavant:

NetGender for .NET vous permet de créer rapidement et facilement la vérification des noms, l’parsing syntaxique et la détermination du genre dans vos applications personnalisées. Vérifiez avec précision si un champ particulier contient une personne ou une entreprise valide. NetGender utilise un dictionnaire de noms de plus de 100 000 personnes, ethniquement diversifié, associé à un dictionnaire de noms de société de 8 000+ pour garantir une détermination précise du genre.

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

C’est intéressant que vous disiez que vous avez une date de naissance. Cela pourrait aider. J’ai vu des bases de données d’histoires de popularité de nom.

Dans le film Splash (1984), il était amusant que le personnage de Darryl Hannah choisisse le nom “Madison” d’un panneau de Madison Avenue, car “Madison” n’est évidemment pas un nom de fille.

24 ans plus tard, Madison est le 4ème nom le plus populaire des filles!


Nom de l’histoire du gouvernement. (Découvrez le sortingste déclin de Mary au cours des 100 dernières années.)


Quand j’ai écrit à la Maison Blanche en tant qu’enfant, Richard Nixon (ou peut-être une secrétaire) m’a répondu avec quelques photos du lieu historique, adressées à “Mlle Rhett Anderson”. “Mlle Rhett?” Ça n’a même pas de sens! Pouvons-nous vraiment ne pas faire la différence entre Rhett de Clark Gable (avec moustache, dans Gone With The Wind!) Et Scarlett de Vivian Lee? Je ne lui pardonnerai jamais, malgré l’assurance de Neil Young que même Richard Nixon a de l’âme.

Je suis presque certain qu’aucun service de ce type ne pourrait exister avec un niveau de précision acceptable. Voici les problèmes que je trouve insurmontables:

  • Il y a beaucoup de noms pour les hommes et les femmes.
  • Il y a beaucoup de noms différents dans ce monde, même si vous ne considérez qu’un pays.
  • Il y a le numéro “A Boy Named Sue”, évoqué avec tant d’éloquence par Johnny Cash 🙂

Vous pouvez consulter mon projet de détection de genre python https://github.com/muatik/genderizer

Il essaie de détecter le sexe des auteurs à la recherche de leur nom et / ou d’un exemple de texte (par exemple des tweets).

Et il supporte également mongodb, memcached pour la performance.

Ce n’est pas vraiment un problème de programmation – il s’agit d’obtenir un tableau de probabilité.

AFAIK il n’y a pas de bases de données publiques sous forme distillée. Vous pouvez soit créer ceci à partir des données de recensement, soit acheter les données de quelqu’un.

Par exemple, il s’agit d’une personne qui vend la table de probabilité pour le Canada .

IMHO, il est généralement une mauvaise idée de déterminer le sexe d’un nom d’individu. Beaucoup de noms sont intersexuels (bon deuil, est-ce même un mot ?? :-), et ils peuvent aussi être un sexe dans une culture et un autre dans un autre.

Quelques exemples stupides, juste quelques-uns qui me sont venus à l’esprit (de ma part du monde, CE)

Vanja – femme, dans les pays de l’est d’ici, principalement des hommes
Alex – intersex (abréviation de Sandra, femelle et Sandro, mâle)
Robin – dans les cultures occidentales, peut être à la fois

Dans certaines parties du monde, le sexe d’une personne peut être déterminé en examinant comment son nom se termine. Par exemple, Marija, Sandra, Ivana, Petra, Sara, Lucija, Ana – vous pouvez voir que la plupart de ces noms féminins se terminent par “ja” ou “ra”. Il y a aussi d’autres exemples.

Pourtant, je pense qu’il vaut mieux simplement demander à l’utilisateur pour le sexe.

Vous avez ceci de la discussion de nouvelles de hacker à ce sujet

Je ne connais pas un tel service. Vous pouvez toutefois trouver les données que vous recherchez. Le gouvernement américain publie des données sur la prévalence des noms et du sexe de la personne à laquelle ils sont attachés. L’Administration de la sécurité sociale a une telle page , et le recensement peut aussi bien, mais je n’ai pas pris le temps de regarder. Peut-être que d’autres gouvernements mondiaux font des choses similaires.

Je ne connais pas un tel service, cependant ..

  • vous pouvez commencer avec une liste brute de noms de personnes ou
  • devinez le sexe selon certaines règles (ex: -o => masculin, -ela, -a => féminin)

Dans certains pays (par exemple en Allemagne), le nom qu’une personne peut recevoir est limité par la loi – peut-être y a-t-il des publications à ce sujet qui pourraient être récoltées (mais je n’en connais pas dans le moment).

Ce que je ferais est de faire un hack qui prend le nom et le recherche sur l’API facebook. Ensuite, regarde les utilisateurs qui en résultent et compte combien d’entre eux sont des femmes ou des hommes. Vous pouvez alors retourner un pourcentage. Ce n’est plus si insurmontable. 🙂

Demandez aux gens, et s’ils sont gentils, ils vous donneront leurs «M» ou «F» et s’ils ne le sont pas, donnez-leur un «A».