Witamy Panie Droździel,
Pana zamówienie z Zooplus jest już w drodze!
Czy są jakieś gotowe metody do rozpoznawania płci na podstawie imienia i nazwiska? I druga sprawa, czy znacie jakieś gotowe bazy polskich imion z pełną odmianą przez przypadki?
W zasadzie obie rzeczy się ze sobą wiążą. Oczywiście mam ogólny obraz jak to zrobić, dlatego nie chodzi o same pomysły - bardziej szukam jakichś gotowych rozwiązań (mogą być w innych językach programowania niż Ruby).
Po nazwisku się na pewno nie da, bo spora część nazwisk jest nieodmienna (pierwszy lepszy przykład: Nowak ) tylko niektóre nazwiska polskie odmieniają się w zależności od płci (np. z końcówką ski/ska ) i to nie zawsze.
Imiona też bywają zabawne. Maria jest częstym (drugim) imieniem męskim, to taki skrajny przykład, ale imion które pasują do obu płci jest coraz więcej.
Najprostszym sposobem jest dodać pole “tytuł” w ten sposób Pani Doktor zostanie odpowiednio przywitana.
Niestety takie rozwiązanie odpada. Trzeba na podstawie ciągu (i to jednego) próbować zgadnąć imię (przy czym faktycznie może to być zarówno “Jan Maria Rokita”, jak i “Nowak Jan Maria”). Łatwiej chyba sprawdzać czy nie ma męskiego w tym układzie, niż czy jest żeńskie. Notabene mój opiekun w DotPay to Sara Grzegorz.
Oczywiście tu nie chodzi o 100% skuteczność, 95% wystarczy.
Notabene jako ciekawostka - kiedyś mieliśmy bazę do której konsultanci telefoniczni wpisywali dane ludzi. Ponieważ pojawiały się imiona “Gżegoż” został zrobiony słownik na imiona. Jak wpadało imię, którego nie ma, to zgłaszali potrzebę dodania nowego imienia. Po pewnym czasie unikalnych imion było około 20tyś, z czego jakieś 9/10 to byli obcokrajowcy. Oczywiście większość z imion występowało raz.
Możesz również przyjrzeć się polimorfowi http://zil.ipipan.waw.pl/PoliMorf, ale to większa kobyła. Powinna być tam jakaś grupa imion/nazwisk polskich, bo słownik od jakiegoś czasu obejmuje niektóre nazwy własne. Były też przymiarki do biblioteki Rubiego, która to opakowywała, ale nie wiem, na czym stanęło. Jak znajdę gdzieś link, to podrzucę.