2009-11-06 11 views
7

Niedawno skonfrontowałem się z dziwnym, ale interesującym pytaniem. Pytania są następujące: Należy napisać program, który może podać płeć jako wynik na podstawie nazwy. Przykład: INPUT -> John Michael Britney WYJŚCIE -> mężczyzna mężczyzna żeńskiZnajdź płeć od nazwiska

Więc to jest wyjście spodziewam. Próbowałem wiele rozwiązać, ale naprawdę nie byłem w stanie go złamać. Będę naprawdę wdzięczny tej stronie za umożliwienie mi udostępnienia tego pytania.

W rzeczywistości jest to zadawane w konkursie programistycznym jako problem z ulotką, więc pomyślałem, że można to zaprogramować.

+0

Co mają próbowałeś? Czy masz jakiś kod, aby się z nami podzielić, abyśmy mogli Cię skierować we właściwym kierunku? –

+0

Gdzie znalazłeś to pytanie. Czy możesz skierować stronę internetową? Moją opcją jest zapisanie nazwy w bazie danych i dopasowanie ich. – sathish

+3

W dzisiejszych czasach faceci zmieniają płeć bez zmiany ich nazw. Jest to nieco trudne. : D –

Odpowiedz

1

Zrobiłem to już wcześniej - jest to łatwe i działa dobrze w 90% przypadków, gdy zostanie zastosowane do poprawnego scenariusza.

Musisz uzyskać gdzieś bazę danych nazw i płci. Przeszukiwanie bazy danych jest zatem banalne.

Niektóre nazwy (na przykład Andy) są powszechnie kojarzone z każdą z płci. Będziesz potrzebował co najmniej trzech wartości płci - męskiej/żeńskiej/nieznanej.

+0

Ale nie wydaje mi się, że możliwe jest objęcie wszystkich nazwisk na świecie. Czy nie ma innej drogi, logicznie? – Ramesh

+2

Oczywiście nie, nie – cbp

9

Nie możesz tego zrobić algorytmicznie: potrzebujesz bazy danych, aby zrobić to statystycznie. This SO question wskazuje na wiele takich dostępnych zasobów. Zdaj sobie sprawę, że będziesz miał wiele WIELU błędów - na przykład koreańskie Kim (mężczyźni) lub północnoeuropejskie (kobiety) mogą na przykład wyglądać na bardzo zirytowane ;-).

+2

+1 - próba odgadnięcia czyjejś płci od ich imienia jest złym pomysłem, ponieważ może spowodować obrazę, jeśli się pomyli. –

+0

Saturday Night Live zawierało bieżący szkic o ludziach próbujących odgadnąć płeć osoby o imieniu "Pat". Istnieje wiele innych nazw, które można zastosować do obu płci, takich jak "Leslie" lub "Jackie". –

+0

Tak, a nawet dla nazw, które są statystycznie dobrze związane z płcią, zawsze będzie wystarczająco dużo wyjątków, aby sprawiać kłopoty - córka Doonesbury'ego o imieniu "Alex", mam kochankę (mężczyznę) jego (Irlandzką) matkę o imieniu "Shannon" , "Andrea" jest w większości kobietami w niektórych kulturach (np. Niemcy), ale silnie mężczyzn we Włoszech - itp., Itp. –

2

Nie poddawaj się.

Podejdę do podejścia statystycznego ... musisz zdobyć bazę danych o ogromnych nazwach, która rzeczywiście zawiera informacje o płeć ... a następnie naucz program, aby uczyć się na tym zestawie danych.

Chodzi o to, że potrzebna jest trzecia zmienna do korelacji. Coś takiego jak kraj pochodzenia, pochodzenie etniczne itp. Jeszcze bardziej zawęzi twoje szanse. Naprawdę potrzebujesz tej trzeciej "wskazówki" ...

2

Co z interakcją człowieka z komputerem jako trzecią wskazówką.

Można mieć kliknij mapę takiego jak http://css-tricks.com/tracking-clicks-building-a-clickmap-with-php-and-jquery/

podstawie której użytkownik kliknie można określić rozsądny statystykę mężczyzny wobec kobiety. To będzie stosowany, gdy brak jest w bazie

Herezje Wikipedia na „Gender_HCI”:

„Większe wyświetlacze pomógł zmniejszyć lukę płci w nawigacji wirtualnych środowiskach o mniejszych ekranach, mężczyźni. Wydajność była lepsza niż dla kobiet . Przy większych wyświetlaczach poprawiła się wydajność kobiet i osiągi samców nie były negatywnie zmienione na ."

więc mają małe pole i godzinę ilość czasu potrzebnego do jej wyjazdu. ...?

+0

naprawdę kreatywne i poza myślenie pudełkowe! –

6

Używam czasu rozwiązywania tego jak dobrze. Moje pierwsze podejście było użyć wykazy zatwierdzonych W Danii, skąd pochodzę, mamy takie, ale szybko zorientowałem się, że tylko kilka krajów ma. Poza tym otrzymałem informację zwrotną, że probabilistyczne przypuszczenie byłoby dużo bardziej funkcjonalne, a także że powinno być możliwe filtrowanie identyfikator kraju lub języka, a następnie przebudowany przy użyciu zestawów danych użytkowników z sieci społecznościowych, który działa całkiem nieźle.

Możesz to sprawdzić na http://genderize.io

Prosty przykład:

http://api.genderize.io?name=kim 
{"name":"kim","gender":"female","probability":"0.91","count":687} 

http://api.genderize.io?name=kim&country_id=dk 
{"name":"kim","gender":"male","probability":"1.00","count":17,"country_id":"dk"} 
1

podejście statystyczne działa bardzo dobrze, w zależności od krajów dokładność wynosi 95% lub 99% + z nielicznymi wyjątkami (chiński, koreański nazwy nazwami).

Zapoznaj się z Gendre API http://namsor.com/api

Rozpoznaje automatycznie kulturę za nazwę, aby zastosować odpowiedni słownik (np. Andrea Rossini jest mężczyzna, Andrea Parker jest kobieta, etc.)

Powiązane problemy