Czy ktoś zna dobrą bibliotekę do mapowania imienia osoby na jej płeć? [Zamknięte]

90

Szukam biblioteki lub bazy danych, która na podstawie jej imienia lub pseudonimu mogłaby określić, czy dana osoba jest mężczyzną czy kobietą. Coś jak

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

Szukam czegoś, co obsługuje nazwy inne niż angielskie (takie jak japońskie, indyjskie itp.).

Zanim otrzymam kolejną odpowiedź w rodzaju „Będziesz obrażać ludzi, zakładając ich płeć / płeć”, pozwól mi wyjaśnić, że moja aplikacja nie ma interakcji z nikim. W żaden sposób nie wysyła e-maili ani nie kontaktuje się z nikim. Brak użytkowników, o które można zapytać. W wielu przypadkach dana osoba nie żyje, a jedyne informacje, które posiadam, to imię i nazwisko, data urodzenia i data śmierci. Powodem, dla którego chcę poznać płeć osoby, jest poprawienie gramatyki wyniku i pomoc w ewentualnych wyszukiwaniach, które mogą nastąpić później.

Chas. Owens
źródło
33
Wow… wszyscy wydają się odpowiadać raczej na pytanie „czy powinienem to zrobić” niż na zadane pytanie „jak to zrobić?” Nic dziwnego, po prostu interesujące.
bsneeze
9
Właściwie uważam, że to świetne pytanie. Jeśli wejdziesz na stronę internetową i 90% przypadków będzie to określać twoją płeć, dostrzegam korzyści. Chciałbym, żeby mój telewizor robił to samo. Oglądałem powtórki King of the Hill podczas ostatniego lotu i co 3 minuty pojawiała się reklama „osobistych masażystów”.
Uri
6
@mP Wow, sposób na przejście od zgadywania płci, aby uczynić gramatykę ładniejszą, do profilowania rasowego.
Chas. Owens
2
Chas, to nie jest rzecz, której ludzie nie chcą ci dać z powodów moralnych, to tak, jakby na początku nie miało to sensu, więc prosisz o niepowodzenie. Ponadto, wspomina się o nazwach innych niż angielskie, aw odniesieniu międzykulturowym sprawa staje się jeszcze bardziej skomplikowana. dla mnie to nie jest możliwe.
zalew
2
Jak możesz sprawdzić, czy imię jest męskie czy żeńskie? Alex może być skrótem od Alexander (mężczyzna) lub Alexandra (kobieta). Znam Micaha, który jest mężczyzną i tego, który jest kobietą. A co z nazwami obcymi?
Gabe

Odpowiedzi:

66

Płeć imienia jest czymś, czego nie można wywnioskować programowo w ogólnym przypadku. Potrzebujesz bazy danych nazw. Oto bezpłatna baza danych nazwisk z US Census Bureau .

EDYCJA : Link do nazwy 2010 jest martwy, ale w komentarzach znajdują się działające linki i biblioteki.

Ayman Hourieh
źródło
2
To jest świetne. Wydaje się, że jest to właśnie to, czego potrzebuje pytający. Niejednoznaczne imiona mogą mieć płeć „odgadywaną” na podstawie częstotliwości męskiej i żeńskiej.
stalepretzel
1
Zbudowałem do tego bibliotekę, korzystając z danych Spisu Powszechnego i działa świetnie! Potencjalne zastosowania: analityka, wybór płci głosu IVR.
Chris McCall,
9
Oto nazwa -> płeć na podstawie danych spisowych jako Pythona dict: raw.github.com/Bemmu/gender-from-name/master/gender.py
Bemmu
3
Oryginalny link jest martwy, ale spis nadal utrzymuje listę. Wersja specyficzna dla lat 90. (nie wiem dlaczego) jest tutaj: census.gov/genealogy/www/data/1990surnames/names_files.html
Chipmonkey
2
22 MB imion dzieci w USA według płci według roku urodzenia: ssa.gov/oact/babynames/limits.html (link ważny w lipcu 2015)
Dylan Hogg
70

gender.c to program typu open source w języku C, który wykonuje dobrą robotę. Zawiera dane 44568 imion z całego świata. Istnieje dobra dokumentacja i opis formatu pliku (w zasadzie zwykły tekst), więc odczytanie go z własnej aplikacji nie powinno być trudne.

Oto co mówi autor:

Kilka słów o jakości danych

Słownik imion został przygotowany z najwyższą starannością. Na przykład nazwy tureckie, indyjskie i koreańskie w tym słowniku zostały niezależnie sklasyfikowane przez kilku native speakerów. Zwróciłem też szczególną uwagę, aby wymienić tylko te nazwiska, które obecnie można znaleźć.

Lekcja z tego?

Wszelkie modyfikacje należy przeprowadzać bardzo ostrożnie (i muszą one również być zgodne z sortowaniem wymaganym przez algorytm wyszukiwania). Na przykład, wiedząc, że „Sascha” to imię chłopięce w Niemczech, autor nigdy nie założył, że angielskie „Sasha” jest imieniem dziewczynki. Wiedząc, że „Jan” to w Niemczech imię chłopięce, nigdy nie przypuszczałem, że jest to również angielska krótka forma „Janet”. Innym przykładem jest nazwa „Esra”. To jest imię chłopca w Niemczech, ale imię dziewczynki w Turcji.

Program oblicza prawdopodobieństwo, że imię to mężczyzna lub kobieta. Może to zrobić z samą nazwą jako danymi wejściowymi lub z nazwą i krajem pochodzenia, co daje znacznie lepsze wyniki.

Można go pobrać ze strony niemieckiego magazynu komputerowego c't 40 000 Namen . Artykuł jest w języku niemieckim, ale nie martw się, cała dokumentacja jest w języku angielskim. Oto bezpośredni link do ftp 0717-182.zip, jeśli nie jesteś zainteresowany artykułem. Plik zip zawiera kod źródłowy, plik wykonywalny systemu Windows, bazę danych i dokumentację.

Ludwig Weinzierl
źródło
To wspaniałe, dziękuję.
Dale Athanasias
Zobacz tutaj port Pythona - pypi.python.org/pypi/SexMachine
philshem
33

„Mówię ci, życie nie jest łatwe dla chłopca o imieniu Sue”.

... Więc po co to utrudniać? Jeśli chcesz poznać płeć, po prostu zapytaj ... W przeciwnym razie nie martw się o to.

Shog9
źródło
15
@Chas: nawet jeśli uda ci się to zrobić dobrze w 80% przypadków, to i tak irytuje dwie na dziesięć osób korzystających z twojego oprogramowania. Niezbyt dobrze ... Rozumiem motywację, ale naprawdę lepiej jest przeformułować swoje wiadomości tak, aby były neutralne pod względem płci.
Shog9
2
Ciekawe, czy ktoś jeszcze pamięta „Pat” z SNL.
erickson
8
Czytając to ponownie, wychodzę z okropnego kazania ... Nie chcę odkładać swojego pomysłu, myślę, że jest interesujący ... Ale także bardzo ryzykowny. Kiedyś pracowałem jako telemarketer i bez względu na to, ile nazwisk znasz, nieważne, jak dobrze potrafisz rozpoznawać głosy, czasami zdarza się, że źle zgadujesz ... i to nigdy nie jest zabawne. I tak, to jest coś, co pozwoliłoby uniknąć, o ile nie jest wielka, wielka wypłata za zarządzanie odgadnąć go w prawo .
Shog9
3
Posłuchałbym rady Shog9. O ile aplikacja nie będzie w języku innym niż angielski, może być łatwiej po prostu użyć zaimków neutralnych pod względem płci - np. One, one, s / he itp.
Calvin
11
Moja dziewczyna ma na imię Kevan. Dostaje wystarczająco dużo ludzi, którzy błędnie odgadują jej płeć na podstawie jej imienia, nie potrzebuje do tego komputerów. Należy wystrzegać się tworzenia wpisu w bazie danych, który określa czyjąś płeć na podstawie domysłów komputera; ludzie, którzy na to patrzą, mogą założyć, że przekazała je sama dana osoba i będą naprawdę zdezorientowani, gdy ich założenia okażą się błędne (w przeciwieństwie do tylko nieco pomieszanych na podstawie samego imienia).
Brian Campbell
29

Stworzyłem darmowe API, które daje probabilistyczne przypuszczenie płci na podstawie imienia. Zamiast korzystać z któregokolwiek z wyżej wymienionych podejść, zamiast tego używam ogromnego zestawu danych profili z sieci społecznościowych, aby zapewnić probabilistyczne przypuszczenie wraz z czynnikiem pewności. Obsługuje również opcjonalne filtrowanie według identyfikatorów kraju lub języka. Z dnia na dzień jest coraz lepiej, ponieważ do zbioru danych jest dodawanych więcej profili.

Można z niego korzystać bezpłatnie pod adresem http://genderize.io

Jedną rzeczą, którą powinieneś rozważyć, jest użycie narzędzia, które bierze pod uwagę dane demograficzne, ponieważ konwencje nazewnictwa będą w dużym stopniu na tym polegać.

Przykład

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"}
Stromgren
źródło
2
Rozszerzenia kodu - genderize.io/#extensions
philshem
22

Oto dwa dziwaczne podejścia, które mogą nawet nie działać i prawdopodobnie nie działałyby masowo bez naruszenia warunków licencji:

  1. Skorzystaj z API Facebooka (o którym praktycznie nic nie wiem, może nawet nie być możliwe), aby przeprowadzić dwa wyszukiwania: jedno dla mężczyzn FB o tym imieniu i jedno dla kobiet. Użyj dwóch liczb, aby określić prawdopodobieństwo płci.

  2. O wiele luźniejsze, ale bardziej skalowalne, skorzystaj z interfejsu API Google i wyszukaj nazwę oraz zaimki specyficzne dla płci i porównaj liczby. Na przykład istnieje 592 000 000 wyników wyszukiwania hasła „Richard his” (nie jako wyrażenia), ale tylko 179 000 000 wyników wyszukiwania „Richard her”.

richardtallent
źródło
Oprócz ogólnego konsensusu co do tego, że oprogramowanie próbuje odgadnąć takie rzeczy, jak seks z imienia, jest to naprawdę fajna algorytmiczna odpowiedź na pierwotne pytanie. Dobra robota.
peSHIr
Świetny pomysł. Prawdopodobnie możesz dodać kilka słów w języku danego kraju, aby go zlokalizować.
Nosredna
Słuszna uwaga, Nosrenda ... oczywiście, Google pozwala już również filtrować wyniki wyszukiwania według kodu języka. Możesz nawet ukraść preferowany język użytkownika z żądania HTTP. Ustawienie języka przeglądarki może, ale nie musi, pasować do pochodzenia etnicznego ich imienia, ale i tak jest to technika rozmyta.
richardtallent
2
Odkryłem, że Google jest szowinistą: więcej wyników wraca dla mężczyzn niż kobiet, ponieważ więcej mężczyzn jest w Google. API Facebooka jest prawdopodobnie bardziej reprezentatywne.
Chris McCall,
6

Biorąc pod uwagę określone ograniczenia, najlepszą opcją jest ponowne sformułowanie tego, co piszesz, tak, aby było neutralne pod względem płci, chyba że wiesz, jaką płcią chcą nazywać się w każdym przypadku.

Pisząc po angielsku , pamiętaj, że „oni” w liczbie pojedynczej są gramatycznie w porządku jako neutralne pod względem płci zaimki liczby pojedynczej w trzeciej osobie.

Dobrym przykładem jest tytuł tego pytania. Jak jest obecnie:

    … Przypisywanie imienia osoby do jej płci?

Byłoby mniej niezręczne, gdyby napisano:

    … Przypisywanie imienia osoby do jej płci?
duży nos
źródło
To nie jest całkiem „idealnie” gramatyczne. Nawet artykuł w Wikipedii przyznaje, że był on używany, szczególnie we współczesnym kontekście, z powodu dyskomfortu niektórych pisarzy z powodu ogólnego „on”. Nie mam dużego problemu z pisarzami, którzy to robią (chociaż neutralność płciowa jest naprawdę ważna, wolę przeformułować konstrukcję, aby móc używać zaimków takich jak „jeden”), ale nazwijmy to, czym jest.
Ben Collins
Twierdzę, że oboje mamy rację. Cała gramatyka, zwłaszcza gramatyka angielska, ma istotne problemy; ale powiedziałbym, że każda definicja „gramatyki doskonałej”, która faktycznie ma zastosowanie do czegokolwiek w języku angielskim, ma również tutaj zastosowanie. Albo liczba pojedyncza „one” jest doskonale gramatyczna, albo nic po angielsku nie jest :-)
bignose
Warto zauważyć, że Grammar Girl (autorka Mignon Fogarty) już od jakiegoś czasu skłania się ku akceptacji pojedynczych „oni”. grammar.quickanddirtytips.com/…
Karen Lopez
4

Zakładanie, że użytkownik musi być mężczyzną lub kobietą, jest również kiepską praktyką. Istnieje niewielka, ale znaczna liczba osób „interseksualnych”, z których większość ma serdecznie
dosyć braku pola do zaznaczenia… bignose: interesujące w kwestii „pojedynczych osób”. Nie zdawałem sobie sprawy, że ma tak długą historię.

Karl
źródło
4

To nie jest usługa, ale mała aplikacja z bazą danych:
http://www.codeproject.com/KB/cpp/genderizer.aspx

A to narzędzie jest w języku niemieckim:
http://www.faq-o-matic.net/2011/06/01/zu-einem-vornamen-das-geschlecht-finden/

I jeszcze jeden w VB:
http://www.vbarchiv.net/tipps/tipp_1925-geschlecht-anhand-des-vornamens-ermitteln.html

Myślę, że w połączeniu z niektórymi listami „Najczęściej używane imiona w 2011 roku” powinieneś być w stanie zbudować coś przyzwoitego.

Remy
źródło
4

Pakiet Pythona SexMachine zrobi to za Ciebie. Podając dowolne imię, wraca, jeśli jest to męskie, żeńskie lub unisex. Opiera się na danych z programu gender.c autorstwa Jorg'a Michaela.

jm_tagarro
źródło
3

Jedyne, co otrzymasz, próbując go zautomatyzować, to grupa niezadowolonych użytkowników. Z tego spisu powszechnego:

JAMES, JOHN, ROBERT, MICHAEL, WILLIAM, DAVID, RICHARD, CHARLES, JOSEPH, THOMAS, CHRISTOPHER, DANIEL, PAUL, MARK, DONALD, GEORGE, KENNETH, STEVEN, EDWARD, BRIAN, RONALD, MATEUSZ, JESON GARY, TIMOTHY, JOSE, LARRY, JEFFREY, FRANK, SCOTT, ERIC, STEPHEN, ANDREW, RAYMOND, GREGORY, JOSHUA, JERRY, DENNIS, WALTER, PATRICK, PETER, HAROLD, HENRY, CARL, ARTHUR, RYAN, JOSHUA, JACK, ALBERT, JUSTIN, FROTTE, GERALD, KEITH, SAMUEL, WILLIE, LAWRENCE, ROY, BRANDON, ADAM, FRED, BILLY, LOUIS, JEREMY, AARON, RANDY, EUGENE, CARLOS, RUSSELL, BOBBY, VICTOR, MARTE, 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, MITCHELL, ADRIAN, KARL, CORY, CLAUDE, JAMIE, JESS, CHRISTIAN, LONNIE, CODY, JULIO, KELLY, JIMMIE, JORDAN, JAIME, CASEY, JOHNNIE, SIDNEY, JULIAN, DARYL, VIRGIL, MARSHALL, PERRY, MARION, TRACY, RENE, FREDDIE, AUSTIN, JACKIE, JOEY, DONNIE, SHANNON, ANGELO, SHAUN, LYNN, CAMERON, BLAKE, KERRY, JEAN, IRA, RUDY, BENNIE, ROBIN, LOREN, NOEL, DEVIN, KIM, GUADALUPE, CARROLL, SAMMY, MARTY, TAYLOR, ELLIS, DALLAS, DREW, JODY, FRANKIE, PAT, MERLE, TERRELL, DARNELL, TOMMIE, TOBY, VAN, COURTNEY, JAN, CARY, SANTOS, AUBREY, MORGAN, LOUIE, STACY, MICAH, BILLIE, LOGAN, DEMETRIUS, ROBBIE, KENDALL, ROYBIE, MICKEY, DEVON, ASHLEY, CAREY, SON, 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, NUMBERS, CLAIR, BERNIE, JOAN, DOMINIQUE, TRISTAN, JAME, GALE, LAVERNE, ALVA, STEVIE, ERIN, AUGUSTINE, YOUNG, JOHNIE, ARIEL, DUSTY, LINDSEY, TRACEY, SCOTTIE, SANDY, SYDNEY, GAIL, DORIAN, LAVERN, REFUGIO, IVORY, 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, PARIS, OTHA, LACY, DONG, ANTONIA, KELLEY, CARROL, SHAYNE, VAL, JUDE, BRITT, HONG, LEIGH, GAYLE, JAE, NICKY, LESLEY, MAN, KASEY, JEWELL, PATRICIA, LAUREN, ELISHA, MICHAL, LINDSAY i JEWELCLAIR, BERNIE, JOAN, DOMINIQUE, TRISTAN, JAME, GALE, LAVERNE, ALVA, STEVIE, ERIN, AUGUSTINE, YOUNG, JOHNIE, ARIEL, DUSTY, LINDSEY, TRACEY, SCOTTIE, SANDY, SYDNEY, GAIL, DORIAN, LAVERN, REUG IVORY, 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, PARIS, OTHA, LACY, DONG, ANTONIA, KELLEY, CARROL, SHAYNE, VAL, JUDE, BRITT, HONG, LEIGH, GAYLE, JAE, NICKY, LESLEY, MAN, KASEY, JEWELL, PATRICIA, LAUREN, ELISHA, MICHAL, LINDSAY i JEWELCLAIR, BERNIE, JOAN, DOMINIQUE, TRISTAN, JAME, GALE, LAVERNE, ALVA, STEVIE, ERIN, AUGUSTINE, YOUNG, JOHNIE, ARIEL, DUSTY, LINDSEY, TRACEY, SCOTTIE, SANDY, SYDNEY, GAIL, DORIAN, LAVERN, REUG IVORY, 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, PARIS, OTHA, LACY, DONG, ANTONIA, KELLEY, CARROL, SHAYNE, VAL, JUDE, BRITT, HONG, LEIGH, GAYLE, JAE, NICKY, LESLEY, MAN, KASEY, JEWELL, PATRICIA, LAUREN, ELISHA, MICHAL, LINDSAY i JEWELMARIA, 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, MAN, KASEY, JEWELL, PATRICIA, LAUREN, ELISHA, MICHAL, LINDSAY i JEWELMARIA, 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, MAN, KASEY, JEWELL, PATRICIA, LAUREN, ELISHA, MICHAL, LINDSAY i JEWEL

to imiona, które pasują zarówno do mężczyzn, jak i kobiet. Jeśli dziewczyna ma na imię Robert i wszyscy, łącznie z Twoim oprogramowaniem, nadal nazywają ją mężczyzną, byłaby raczej wkurzona.

nitromaster101
źródło
25
Załóżmy, że istnieje dziewczyna o imieniu Mark (możesz wskazać jedną). Gdybym był nią, byłbym wkurzony na moich rodziców, a nie na oprogramowanie Chasa ...
Darko Z
6
A co, jeśli oprogramowanie nigdy nie nazwie jej mężczyzną, ale przedstawi „męską” wersję interfejsu użytkownika? Czy może spotykała się razem z mężczyznami w ramach zbioru danych wykorzystywanego do tworzenia materiałów marketingowych? Może nawet tego nie zauważy.
Chris McCall,
Dla wielu z tych nazw mam 100% pewność na podstawie danych z 500-1200 profili Facebooka o danej nazwie. api.genderize.io/?name=robert api.genderize.io/?name=andrew api.genderize.io/?name=john
Stromgren
3

Chociaż bazy danych są prawdopodobnie najbardziej praktycznym rozwiązaniem, jeśli chcesz się zabawić, możesz spróbować napisać sieć neuronową (lub użyć biblioteki sieci neuronowej), która przyjmuje nazwę i wyświetla jedną z tych 3 opcji (F, M, A ).

Możesz go wytrenować, korzystając ze zbiorów danych, które istnieją w bazach danych sugerowanych przez inne odpowiedzi, a także z dowolnymi innymi danymi, które posiadasz.

To rozwiązanie pozwoliłoby na obsługę nazw, które nie były wcześniej skategoryzowane, a także obsługę różnych języków. Możesz również przekazać język (jeśli go znasz) jako dane wejściowe do sieci neuronowej.

Nie wiem, czy mogę powiedzieć, że sieci neuronowe (lub jakiekolwiek inne systemy uczące się) wykonałyby dobrą robotę przy kategoryzowaniu.

sery
źródło
3

Jest zależne od kultury / regionu: weźmy Andreę, ponieważ Włosi są tylko męskie, ponieważ Szwecja to imię żeńskie, a Andreas dla mężczyzn; Shawn jest niejednoznaczny w języku angielskim. Jeśli język ma deklinację, jak łacina lub rosyjski, ostatnie litery zmienią się zgodnie z regułami gramatycznymi,

Innym źródłem niejasności są nazwiska identyczne z imionami osobistymi.

Moim zdaniem jest to niemożliwe do rozwiązania w ogóle.

Giulio Vian
źródło
Gdyby OP miał zmienną towarzyszącą wskazującą kulturę pochodzenia, miejsce urodzenia, narodowość, cokolwiek to byłoby przydatne. Ale powiedział, że nie, więc musisz po prostu zgadnąć na podstawie danych statystycznych na podstawie agregatów.
smci
3

Pomysł najwyraźniej nie zadziała w większości języków.

Jednak gdybyś mógł wcześniej określić narodowość, mógłbyś mieć więcej szczęścia. W większości języków słowiańskich (np. Rosyjski, polski, bułgarski) można śmiało założyć, że wszystkie nazwiska kończące się na -va -cha -ska (-a są generalnie żeńskie), podczas gdy -v -ch -shi są męskie.

W rzeczywistości każde nazwisko ma formę żeńską i męską w zależności od zakończenia. Te same nazwy używane w innych krajach (np. W USA) mogą jednak używać tylko formy męskiej.

To samo można powiedzieć o imionach (-a -ya są rodzaju żeńskiego), ale nie jest to w 100% dokładne.

Ale generalnie trudno byłoby uzyskać bibliotekę, która jest wystarczająco dokładna.

Dimitar Slavchev
źródło
jakie jest nazwisko męskie lub żeńskie?
Simon_Weaver
2
@Simon_Weaver Nazwisko mojego ojca to Slavchev, a nazwisko mojej matki to Slavcheva. W rzeczywistości jest to to samo nazwisko, ale pisane jest inaczej dla mężczyzn i kobiet. Jest to typowe dla imion słowiańskich.
Dimitar Slavchev
2

Nie używałem go, ale IBM ma globalną analizę nazw bibliotekę (za cenę!), Która wydaje się dość obszerna.

altan
źródło
2

Katalog Z (na vettrasoft.com) ma funkcję języka C, działa mniej więcej tak:

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

jest oparty na bazie danych, wydaje mi się, że tabela ma około 10000 nazw, ale musisz pobrać i zainstalować katalog z (zawiera wiele innych elementów topo, takich jak kraje, punkty orientacyjne, lotniska, stany, numery kierunkowe, kody pocztowe itp. wraz z funkcjami i obiektami C ++ umożliwiającymi dostęp do danych). Jednak nazwy są bardzo zorientowane na język angielski. Tabela jest w toku i jest stopniowo aktualizowana.

gorth
źródło
1

Mapy nazwy i płci mogą działać, ale w krajach wielokulturowych bardziej przypomina to zgadywanie. Mogę podać jeden przykład: Marian po polsku to typowo męskie imię, podczas gdy w Wielkiej Brytanii to samo imię jest żeńskie. W dobie imigrantów na całym świecie nie jestem pewien, czy taka baza danych byłaby bardzo dokładna. Powodzenia!

Michał Rogoziński
źródło
1
Nie, ale jeśli jest lepsze niż 50%, pokonuje traktowanie imion jako zawsze męskich.
Chas. Owens
@Chas, więc po co trzymać się tej fałszywej dychotomii? Masz możliwość zachowania neutralności płciowej.
bignose
mamy nawet 2 znanych polityków, którzy mają drugie imię „maria” - „mary”, które zostanie zaklasyfikowane w Twojej bazie danych jako kobiece. tylko dla loli.
zalew
@JZ Mówię o imieniu, a nie o nazwisku (lub odwrotnie w przypadku kultur, które postępują odwrotnie).
Chas. Owens
@bignose, język neutralny płciowo wygląda dziwnie i jest zawiły, wolałbym stworzyć coś, co wygląda ładniej, kiedy tylko mogę. Nie jest to przekazywane osobom fizycznym (jeśli w ogóle istnieją), więc nie ma możliwości popełnienia przestępstwa, nie wiem, dlaczego ludzie spędzają tyle czasu na kłótniach, zamiast po prostu podawać linki do baz danych, jeśli znają dobry jeden.
Chas. Owens
1

Niektóre kultury mają nazwy uniwersalne - takie jak moja. Co wtedy robisz? Myślę, że odpowiedź jest jasna i prosta - nie zakładaj - możesz obrażać. Po prostu zapytaj, czy jest to potrzebne, w przeciwnym razie neutralność płci.

Preet Sangha
źródło
5
Pytanie już dawało odpowiedź: alex => "A", # dwuznaczne. Niezależnie od tego, czy pytanie ma odpowiedź, czy nie, twoja odpowiedź nie jest nią.
Programista Windows
Nie zgadzam się - chodzi mi o to, że wszystkie nazwy są potencjalnie niejednoznaczne.
Preet Sangha
Jeśli imiona są uniseksowe, wszystkie zostałyby sklasyfikowane jako A i wybrałbym neutralność płciową, ale jeśli imię jest głównie męskie lub żeńskie, mogę użyć znacznie bardziej naturalnego języka.
Chas. Owens
Rozumiem, jakie masz rozumowanie, ale odsyłam do ostatniego komentarza.
Preet Sangha
3
Ale jeśli zobaczysz „Preet” na StackOverflow, prawdopodobnie jest to mężczyzna.
Nosredna
1

Cóż, już nie. Opatentowany przez IBM ten pomysł jakiś czas temu.

Więc jeśli szukasz dowolnego poziomu elastyczności (czegoś innego niż lista nazwisk), będziesz musiał (sapać!) Zapytać użytkownika lub po prostu zapłacić IBM za prawa :)

W każdym razie taka autodetekcja jest irytująca dla wielu osób, które mają niejednoznaczne imiona płci, a nawet po prostu wrednych rodziców. Nie utrudniajmy im tego.

lfaraone
źródło
3
Wygląda na to, że IBM opatentował wybór awatara na podstawie nazwy. Na szczęście nie jest to jedna z aplikacji, do których zamierzam to wykorzystać, więc nie naruszam ich patentu. Jeśli chodzi o pytanie użytkownika, zakłada się, że mam użytkowników, których należy zapytać, a nie listę nazwisk. Wielokrotnie powtarzałem, że nie ma użytkowników, interakcji ani wiadomości wysyłanych do osób, do których należą te nazwy.
Chas. Owens
1

To nie jest darmowe, ale jest to fajna biblioteka, z której korzystałem wcześniej:

NetGender dla .NET umożliwia szybkie i łatwe wbudowanie weryfikacji nazw, analizowania i określania płci do własnych aplikacji. Dokładnie sprawdź, czy dane pole zawiera prawidłową osobę lub firmę. NetGender korzysta ze słownika nazwisk ponad 100 000 zróżnicowanych etnicznie w połączeniu z ponad 8 000 Słownikiem nazw firm, aby zapewnić precyzyjne określenie płci.

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

Richard West
źródło
1

Ciekawe, że mówisz, że masz datę urodzenia. To mogłoby pomóc. Widziałem bazy danych historii popularności nazw.

W filmie Splash (1984) zabawne było, że postać Darryla Hannah wybiera imię „Madison” z szyldu na Madison Avenue, ponieważ oczywiście „Madison” nie jest imieniem dziewczyny.

24 lata później Madison jest czwartą najpopularniejszą nazwą dla dziewczynek!


Nazwij historię od rządu. (Zobacz smutny upadek Mary w ciągu ostatnich 100 lat.)


Kiedy jako dziecko pisałem do Białego Domu, Richard Nixon (a może sekretarz) odpowiedział mi kilkoma zdjęciami historycznego miejsca zaadresowanymi do „panny Rhett Anderson”. - Panno Rhett? To nawet nie ma sensu! Czy NAPRAWDĘ nie możemy odróżnić Rhetta Clarka Gable'a (z wąsami, w Przeminęło z wiatrem!) A Scarlett Vivian Lee? Nigdy mu nie wybaczę, pomimo zapewnienia Neila Younga, że ​​„nawet Richard Nixon ma duszę”.

Nosredna
źródło
Słuszna uwaga, data zdecydowanie się tutaj liczy.
Chas. Owens,
1

Jestem prawie pewien, że żadna taka usługa nie mogłaby istnieć z akceptowalnym poziomem dokładności. Oto problemy, które moim zdaniem są nie do pokonania:

  • Istnieje wiele nazw, które są zarówno dla mężczyzn, jak i kobiet.
  • Na tym świecie jest wiele różnych nazw, nawet jeśli weźmiesz pod uwagę tylko jeden kraj.
  • Jest kwestia „A Boy Named Sue”, poruszona tak elokwentnie przez Johnny'ego Casha :-)
Steve McLeod
źródło
2
Dobra baza danych zawierałaby procent męskich / żeńskich nazwisk androgynicznych według regionu i czasu pobrania próbki itp.
A co z językami takimi jak japoński? Uczę się japońskiego, więc mogę się tutaj mylić, ale imiona <-> Kanji nie są prostymi związkami, były kalambury i nieporozumienia dotyczące tego, „co” kanji składa się na imię osoby.
Pharaun
1

Możesz rzucić okiem na mój projekt wykrywania płci w Pythonie https://github.com/muatik/genderizer

Próbuje wykryć płeć autorów szukających ich nazwisk i / lub przykładowego tekstu (na przykład tweetów).

Obsługuje również mongodb, memcached dla wydajności.

Muatik
źródło
Wydaje się dobre, ale jeśli chcesz, aby był to świadomy „kraj pochodzenia”, zobacz poniżej gender.c lub genderize.io
HaveAGuess
0

To naprawdę nie jest problem programistyczny - sprowadza się do uzyskania tabeli prawdopodobieństwa.

AFAIK nie ma publicznych baz danych w formie destylowanej. Możesz zbudować to na podstawie danych ze spisu powszechnego lub kupić dane od kogoś.

Na przykład jest to osoba, która sprzedaje tabelę prawdopodobieństwa dla Kanady .

Uri
źródło
0

IMHO, generalnie złym pomysłem jest określanie płci na podstawie nazwiska. Wiele imion jest interseksualnych (dobry smutek, czy to nawet słowo ?? :-), a także mogą oznaczać jedną płeć w jednej kulturze, a drugą w innej.

Kilka głupich przykładów, tylko kilka, które przyszły mi do głowy (z mojej części świata, CE)

Vanja - suczka, stąd we wschodnich krajach przeważnie mężczyzna
Alex - interseksualny (skrót od Sandra, kobieta i Sandro, mężczyzna)
Robin - w kulturach zachodnich może być jednocześnie

W niektórych częściach świata płeć osoby można określić, patrząc na zakończenie imienia. Na przykład Marija, Sandra, Ivana, Petra, Sara, Lucija, Ana - widać, że większość z tych imion żeńskich kończy się na „ja” lub „ra”. Są też inne przykłady.

Mimo to myślę, że lepiej po prostu poprosić użytkownika o seks.

Wieża
źródło
9
„Mimo to myślę, że lepiej po prostu poprosić użytkownika o seks”. - Zgadzam się, to byłoby o wiele lepsze niż publikowanie komentarzy na Stack Overflow.
Programista Windows
2
UPS. Okeey, to nie wyszło dobrze :-)
Rook
Było lepiej przed edycją :-)
programista Windows
0

Nie znam takiej usługi. Być może możesz jednak znaleźć dane, których szukasz. Rząd Stanów Zjednoczonych publikuje dane dotyczące rozpowszechnienia imion i płci osoby, z którą jest związany. Administracja Ubezpieczeń Społecznych ma taką stronę i spis ludności może równie dobrze, ale nie znalazłem czasu na jej sprawdzenie. Być może inne rządy na świecie robią podobne rzeczy.

rmeador
źródło
0

Nie znam jednak takiej usługi.

  • możesz zacząć od surowej listy nazwisk osób lub
  • zgadnij płeć według pewnych zasad (np. -o => mężczyzna, -ela, -a => kobieta)

W niektórych krajach (np. W Niemczech) imię, które można nadać, jest prawnie ograniczone - być może są publikacje na ten temat, które można by zebrać (ale w tej chwili nie znam żadnych).

miku
źródło
0

Zrobiłbym hack, który bierze nazwę i wyszukuje ją w interfejsie Facebooka. Następnie patrzy na powstałych użytkowników i liczy, ilu z nich to kobiety lub mężczyźni. Następnie możesz zwrócić procent. Już nie tak nie do pokonania. :)

ajayjapan
źródło
-2

Po prostu zapytaj ludzi, a jeśli są mili, dadzą ci swoje „M” lub „F”, a jeśli nie, to dadzą im „A”.

Azder
źródło
2
Nie komunikuję się z ludźmi, których nazwiska chcę narysować.
Chas. Owens