Estou procurando uma biblioteca ou banco de dados que possa fornecer adivinhações sobre se uma pessoa é do sexo masculino ou feminino com base em seu nome ou apelido. Algo como
john => "M",
mary => "F",
alex => "A", #ambiguous
Estou procurando algo que ofereça suporte a outros nomes que não sejam em inglês (como japonês, indiano, etc.).
Antes que eu obtenha outra resposta do tipo "você vai ofender as pessoas presumindo que é sexo / gênero", deixe-me ser claro, meu aplicativo não interage com ninguém. Ele não envia e-mails nem contata ninguém de forma alguma. Não há usuários para perguntar. Em muitos casos, a pessoa em questão está morta e as únicas informações que tenho são o nome, a data de nascimento e a data da morte. O motivo pelo qual quero saber o sexo do indivíduo é tornar a gramática da saída mais agradável e ajudar em possíveis pesquisas que possam ocorrer posteriormente.
fonte
Respostas:
O gênero de um nome é algo que não pode ser inferido programaticamente no caso geral. Você precisa de um banco de dados de nomes.
Aqui está um banco de dados de nomes gratuito do US Census Bureau .EDITAR : O link para o nome de 2010 está morto, mas existem links de trabalho e bibliotecas nos comentários.
fonte
gender.c é um código aberto programa C de que faz um bom trabalho. Ele vem com dados de 44568 nomes de todo o mundo. Há uma boa documentação e uma descrição do formato do arquivo (basicamente texto simples), portanto, não deve ser difícil lê-lo em seu próprio aplicativo.
Aqui está o que o autor diz:
O programa calcula a probabilidade de o nome ser masculino ou feminino. Pode fazê-lo apenas com o nome como entrada ou com o nome e país de origem, o que dá resultados significativamente melhores.
Você pode baixá-lo do site da revista de informática alemã c't 40 000 Namen . O artigo está em alemão, mas não se preocupe, toda a documentação é em inglês. Aqui está o link direto do ftp 0717-182.zip se você não estiver interessado no artigo. O arquivo zip contém o código-fonte, um executável do Windows, o banco de dados e a documentação.
fonte
"Eu te digo, a vida não é fácil para um garoto chamado 'Sue'."
... Então, por que tornar mais difícil? Se precisar saber o sexo é só perguntar ... Do contrário, não se preocupe.
fonte
Eu construí uma API gratuita que fornece uma estimativa probabilística sobre o sexo com base no primeiro nome. Em vez de usar qualquer uma das abordagens mencionadas acima, eu uso um grande conjunto de dados de perfis de redes sociais para fornecer uma estimativa probabilística junto com um fator de certeza. Ele também oferece suporte a filtragem opcional por ID de país ou idioma. Está ficando melhor a cada dia à medida que mais perfis são adicionados ao conjunto de dados.
É grátis para usar em http://genderize.io
UMA coisa que você deve considerar é o uso de uma ferramenta que leve em conta a demografia, pois as convenções de nomenclatura dependem muito disso.
Exemplo
fonte
Aqui estão duas abordagens excêntricas que podem nem funcionar, e provavelmente não funcionariam em massa sem violar os termos de uma licença:
Use a API do Facebook (da qual não sei praticamente nada, talvez nem seja possível) para realizar duas pesquisas: uma para usuários do FB do sexo masculino com esse primeiro nome e outra para mulheres. Use os dois números para decidir a probabilidade de gênero.
Muito mais flexível, mas mais escalonável, use a API do Google e pesquise o nome mais os pronomes específicos de gênero e compare os números. Por exemplo, existem 592 milhões de resultados para a pesquisa de "Richard his" (não como uma frase), mas apenas 179 milhões para "Richard her".
fonte
Dadas suas restrições declaradas, sua melhor opção é reformular tudo o que você está escrevendo para ser neutro em relação ao gênero, a menos que você saiba que gênero deseja ser chamado em cada caso.
Se escrever em inglês , lembre-se do singular “eles” é gramaticalmente adequado como um pronome de terceira pessoa do singular com gênero neutro.
Um bom exemplo é o título desta pergunta. Como está atualmente:
Isso seria menos estranho se escrito:
fonte
Também é uma prática ruim presumir que os usuários devem ser homens ou mulheres. Há um número pequeno, mas significativo, de pessoas "intersex", a maioria das quais está farta de não ter uma caixa para marcar ..
bignose: interessante no "singular eles". Não sabia que tinha uma história tão longa.
fonte
Não é um serviço, mas um pequeno aplicativo com um banco de dados:
http://www.codeproject.com/KB/cpp/genderizer.aspx
E esta ferramenta está em alemão:
http://www.faq-o-matic.net/2011/06/01/zu-einem-vornamen-das-geschlecht-finden/
E outro em VB:
http://www.vbarchiv.net/tipps/tipp_1925-geschlecht-anhand-des-vornamens-ermitteln.html
Acho que em combinação com algumas listas de "Nome mais usado em 2011", você deve ser capaz de construir algo decente.
fonte
O pacote python SexMachine fará isso por você. Dado qualquer nome, ele retornará se for masculino, feminino ou unissex. Ele se baseia nos dados do programa gender.c , de Jorg Michael.
fonte
A única coisa que você obterá ao tentar automatizá-lo é um bando de usuários insatisfeitos. Dos dados do censo:
são nomes que funcionam tanto para homens quanto para mulheres. Se o nome de uma garota for Robert e todos, incluindo o seu software, continuarem a chamá-la de homem, ela ficará bastante chateada.
fonte
Embora os bancos de dados sejam provavelmente a solução mais prática, se você quiser se divertir, talvez você possa tentar escrever uma rede neural (ou usar uma biblioteca de rede neural) que recebe o nome e produz uma dessas 3 opções (F, M, A )
Você pode treiná-lo usando os conjuntos de dados que existem nos bancos de dados sugeridos por outras respostas, bem como com quaisquer outros dados que você tenha.
Essa solução permitiria que você lide com nomes não categorizados especificamente anteriormente e também com idiomas diferentes. Você pode querer passar o idioma (se o souber) como uma entrada para a rede neural também.
Não sei se posso dizer que as redes neurais (ou qualquer outro aprendizado de máquina) fariam um bom trabalho de categorização.
fonte
Depende da cultura / região: tome Andrea, para italianos é apenas masculino, para Suécia é um nome feminino enquanto Andreas é para homens; Shawn é ambíguo em inglês. Se um idioma tiver declinação, como latim ou russo, as letras finais mudarão de acordo com as regras gramaticais,
Outra fonte de ambigüidades são os nomes de família idênticos aos nomes pessoais.
Na minha opinião é impossível resolver em geral.
fonte
A ideia claramente não funcionará na maioria dos idiomas.
Porém, se você pudesse dizer a nacionalidade de antemão, teria mais sorte. Na maioria das línguas eslavas (por exemplo, russo, polonês, búlgaro) você pode assumir com segurança que todos os sobrenomes terminando com -va -cha -ska (-a em geral são femininos) enquanto -v -ch -shi são masculinos.
Na verdade, qualquer sobrenome tem forma feminina e masculina dependendo da terminação. Os mesmos nomes usados em outros países (por exemplo, EUA) podem usar apenas a forma masculina.
O mesmo poderia ser dito para os primeiros nomes (-a -ya são femininos), mas não é 100% preciso.
Mas, em geral, dificilmente você obteria uma biblioteca suficientemente precisa.
fonte
Eu não usei, mas a IBM tem uma biblioteca Global Name Analytics (por um preço!) Que parece bastante abrangente.
fonte
O diretório Z (em vettrasoft.com) tem uma função de linguagem C, funciona mais ou menos assim:
é conduzido por banco de dados, a tabela tem algo como mais de 10.000 nomes, eu acho, mas você precisa baixar e instalar o diretório z (inclui muitos outros itens topográficos como países, pontos de referência geográficos, aeroportos, estados, códigos de área, códigos postais, etc. junto com funções e objetos c ++ para acessar os dados). No entanto, os nomes são muito orientados para a língua inglesa. A tabela é um trabalho em andamento e atualizada gradualmente.
fonte
Mapas de nome e gênero podem funcionar, mas em países multiculturais é mais parecido com adivinhação. Posso dar um exemplo: Marian em polonês é um nome masculino típico, enquanto o mesmo nome na Grã-Bretanha é feminino. Na era das pessoas imigrando para todo o mundo, não tenho certeza se esse banco de dados seria muito preciso. Boa sorte!
fonte
Algumas culturas têm nomes unissex - como o meu. O que fazes, então? Acho que a resposta é simples e direta - não presuma - você pode ofender. Basta perguntar se é necessário, caso contrário, a neutralidade de gênero.
fonte
Bem, não mais. A IBM patenteou essa ideia há algum tempo.
Portanto, se você estiver procurando por qualquer nível de flexibilidade (algo diferente de uma lista de nomes), você terá que (suspiro!) Perguntar ao usuário ou simplesmente pagar à IBM pelos direitos :)
Em qualquer caso, essa autodetecção é irritante para muitas pessoas que têm nomes ambíguos em termos de gênero, ou mesmo apenas pais maldosos. Não vamos tornar isso mais difícil para eles.
fonte
Não é grátis, mas esta é uma ótima biblioteca que usei antes:
http://www.softwarecompany.com/dotnet/netgender.htm
fonte
É interessante que você diga que tem data de nascimento. Isso pode ajudar. Já vi bancos de dados de histórias de popularidade de nomes.
No filme Splash (1984), é engraçado que o personagem de Darryl Hannah escolha o nome "Madison" em uma placa da Madison Avenue, porque obviamente "Madison" não é um nome de menina.
24 anos depois, Madison é o quarto nome mais popular para bebês do sexo feminino!
História de nomes do governo. (Verifique o triste declínio de Maria nos últimos 100 anos.)
Quando escrevi para a Casa Branca quando criança, Richard Nixon (ou, talvez um secretário) respondeu-me com algumas fotos do local histórico, endereçadas à "Srta. Rhett Anderson". "Senhorita Rhett?" Nem faz sentido! Será que REALMENTE não podemos dizer a diferença entre Rhett de Clark Gable (com um bigode, em E o vento levou!) E Scarlett de Vivian Lee? Jamais o perdoarei, apesar da garantia de Neil Young de que "até Richard Nixon tem alma".
fonte
Tenho certeza de que nenhum serviço desse tipo poderia existir com um nível aceitável de precisão. Aqui estão os problemas que considero intransponíveis:
fonte
Confira http://genderchecker.com/
fonte
Você pode dar uma olhada no meu projeto de detecção de gênero python https://github.com/muatik/genderizer
Ele tenta detectar os gêneros dos autores procurando seus nomes e / ou texto de amostra (por exemplo, tweets) deles.
E também suporta mongodb, memcached para desempenho.
fonte
Este não é realmente um problema de programação - trata-se de obter uma tabela de probabilidade.
AFAIK não existem bancos de dados públicos em formas destiladas. Você pode construir isso a partir dos dados do censo ou comprar os dados de alguém.
Por exemplo, é alguém que vende a tabela de probabilidade para o Canadá .
fonte
IMHO, geralmente é uma má ideia determinar o sexo a partir do nome de um indivíduo. Muitos nomes são intersexuais (meu Deus, isso é mesmo uma palavra ?? :-), e também podem ser de um sexo em uma cultura e de outro em outra.
Alguns exemplos estúpidos, apenas alguns que me vieram à mente (da minha parte do mundo, CE)
Vanja - mulher, daqui a países orientais, principalmente homem
Alex - intersex (abreviação de Sandra, mulher, e Sandro, homem)
Robin - nas culturas ocidentais, pode ser ambos
Em algumas partes do mundo, o sexo de uma pessoa pode ser determinado observando-se como o nome termina. Por exemplo, Marija, Sandra, Ivana, Petra, Sara, Lucija, Ana - você pode ver que a maioria desses nomes femininos termina em "ja" ou "ra". Existem outros exemplos também.
Mesmo assim, acho melhor apenas pedir sexo ao usuário.
fonte
Peguei isso na discussão de notícias de hackers sobre isso
fonte
Não conheço tal serviço. No entanto, talvez você possa encontrar os dados que procura. O governo dos EUA publica dados sobre a prevalência de nomes e o sexo da pessoa a quem estão vinculados. A Administração da Previdência Social tem essa página , e o censo também pode, mas não parei para olhar. Talvez outros governos mundiais façam coisas semelhantes.
fonte
Não conheço tal serviço, entretanto ..
Em alguns países (por exemplo, Alemanha), o nome que uma pessoa pode receber é limitado por lei - talvez haja algumas publicações sobre o assunto, que poderiam ser colhidas (mas não conheço nenhuma no momento).
fonte
O que eu faria é fazer um hack que pega o nome e pesquisa na api do Facebook. Em seguida, analisa os usuários resultantes e conta quantos deles são do sexo feminino ou masculino. Você então pode retornar uma porcentagem. Não é mais tão intransponível. :)
fonte
Basta perguntar às pessoas e, se forem simpáticas, dar-lhe-ão os seus 'M's ou' F's; se não forem, dê-lhes um 'A'.
fonte