Кто-нибудь знает хорошую библиотеку для сопоставления имени человека с его или ее полом?

Я ищу библиотеку или базу данных, которые могут дать догадки о том, является ли человек мужчиной или женщиной на основе его или ее имени или псевдонима. Что-то вроде

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

Я ищу что-то, что поддерживает имена, отличные от английских имен (например, японский, индийский и т.д.).

Прежде чем я получу еще один ответ в строках "вы собираетесь оскорбить людей, приняв свой пол/пол", позвольте мне быть ясным, мое приложение ни с кем не взаимодействует. В любом случае он не отправляет электронные письма или не связывается с кем-либо. Пользователей нет. Во многих случаях лицо, о котором идет речь, мертво, и единственная информация, которую я имею, это имя, дата рождения и дата смерти. Причина, по которой я хочу знать пол индивида, заключается в том, чтобы сделать грамматику выхода более приятной и помочь в возможных поисках, которые могут возникнуть позже.

Ответ 1

Пол имени - это то, что не может быть выведено программным путем в общем случае. Вам нужна база данных имен. Здесь бесплатная база данных из Бюро переписи США.

EDIT: ссылка на имя 2010 года мертва, но в комментариях есть рабочие ссылки и библиотеки.

Ответ 2

gender.c - это программа с открытым исходным кодом, которая хорошо справляется. Он поставляется с данными для 44568 первых имен со всего мира. Существует хорошая документация и описание формата файла (в основном простой текст) поэтому не должно быть трудно читать его из вашего собственного приложения.

Вот что говорит автор:

Несколько слов о качестве данных

Словарь первых имен был подготовлен с особой тщательностью. Например, турецкий, индийский и корейский имена в этом словаре все они были независимо классифицированы несколькими носителями языка. Я также проявил особую осторожность, чтобы перечислять только те имена, которые могут в настоящее время.

Урок из этого?

Любые изменения следует делать очень осторожно (и они также должны придерживаться сортировки, требуемой алгоритмом поиска). Например, зная, что "Саша" - имя мальчика в Германии, автор никогда не считал английскую "Сашу" именем девушки. Зная, что "Ян" - имя мальчика в Германии, я никогда не предполагал, что это также английская короткая форма "Джанет". Другим примером является название "Esra". Это имя мальчика в Германия, но имя девушки в Турции.

Программа вычисляет вероятность того, что имя является самцом женщины. Он может сделать это с именем в качестве входа в отдельности или с именем и страной происхождения, что дает значительно лучшие результаты.

Вы можете скачать его с веб-сайта немецкого компьютерного журнала c't 40 000 Namen. Статья написана на немецком языке, но не беспокойтесь, вся документация на английском языке. Вот прямая ссылка ftp 0717-182.zip, если вы не заинтересованы в этой статье. Zip файл содержит исходный код, исполняемый файл Windows, базу данных и документации.

Ответ 3

"Я говорю вам, что жизнь нелегка для мальчика по имени" Сью ".

... Итак, зачем делать это сложнее? Если вам нужно знать секс, просто спросите... В противном случае, не беспокойтесь об этом.

Ответ 4

Я создал бесплатный API, который дает вероятностную оценку пола на основе имени. Вместо того, чтобы использовать любой из вышеупомянутых подходов, я вместо этого использую огромный набор данных профилей из социальных сетей, чтобы обеспечить вероятностную догадку наряду с фактором определенности. Он также поддерживает дополнительную фильтрацию через идентификаторы страны или языка. С каждым днем ​​становится все лучше, так как в набор данных добавляются дополнительные профили.

Он может использоваться в http://genderize.io

ОДНА вещь, которую вы должны учитывать, - это использовать инструмент, учитывающий демографию, поскольку соглашения об именах будут в значительной степени зависеть от этого.

Пример

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

Ответ 5

Вот два нечетных подхода, которые могут даже не работать, и, вероятно, не будут работать в массовом порядке, не нарушая условий лицензии:

  • Используйте API Facebook (о котором я практически ничего не знаю, возможно, даже не возможно) выполнить два запроса: один для пользователей мужского пола FB с этим первым именем и один для женщин. Используйте два числа, чтобы определить вероятность пола.

  • Гораздо слабее, но более масштабируемо, используйте Google API и ищите имя, а также местоимения, специфичные для пола, и сравнивайте числа. Например, есть 592 000 000 результатов для поиска "Ричард его" (не как фраза), но только 179 000 000 для "Ричарда ее".

Ответ 6

Учитывая ваши заявленные ограничения, ваш лучший вариант - перефразировать все, что вы пишете, gender-neutral, если только вы знаете, какой пол они хотят вызывать в каждом случае.

Если вы пишете в English, помните, что single "они" являются грамматически точными, как нейтральное местоимение третьего лица, отличное от пола.

Хорошим примером является название этого вопроса. Как сейчас:

    … mapping a person name to his or her sex?

Это было бы менее неудобно, если бы было написано:

    … mapping a person name to their sex?

Ответ 7

Кроме того, плохая практика предполагает, что пользователи должны быть мужчинами или женщинами. Есть небольшое, но значительное количество "интерсексуальных" людей, большинство из которых сердечно больны тем, что у них нет ящика.
bignose: интересно на "единственном числе". Я не понимал, что у него такая долгая история.

Ответ 8

Единственное, что вы попытаетесь автоматизировать, это куча несчастных пользователей. Из данных переписи:

ДЖЕЙМС, ДЖОН, РОБЕРТ, МАЙКЛ, УИЛЬЯМ, ДАВИД, РИЧАРД, ЧАРЛЬ, ИОСИФ, ТОМАС, ХРИСТОФЕР, ДАНИЭЛЬ, ПОЛ, МАРК, ДОНАЛД, ДЖОРДЖ, КЕННЕТ, СТИВЕН, ЭДВАРД, БРИАН, РОНАЛЬД, ЭНТОНИ, КЕВИН, ЯЗОН, 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, SHANE, SAM, LESTER, CHARLIE, TYLER, GENE, BRETT, ANGEL, LESLIE, CECIL, ANDRE, ELMER, GABRIEL, MI ТЧЕЛЛ, АДРИАН, КАРЛ, КОРИ, КЛУД, ДЖЕЙИ, ИСПАНИЯ, ХРИСТИАН, ЛОННИ, КОДИ, ДЖУЛИО, КЕЛЛИ, ДЖИММИ, ИОРДАН, ДЖЕЙМ, КЕЙСИ, ДЖОННИ, СИДНИ, ЮЛИАН, ДАРЬ, ВИРГИЛ, МАРШАЛЛ, ПЕРИ, МАРИОН, 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, SON, MARLIN, ALI, SAMMI, 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, SAND Y, 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 и JEWEL

- все имена, которые работают как для мужчин, так и для женщин. Если имя девушки - Роберт, и все, включая ваше программное обеспечение, продолжают называть ее мужчиной, она будет очень злиться.

Ответ 9

Хотя базы данных, вероятно, являются наиболее практичным решением, если вы хотите повеселиться, возможно, вы могли бы попробовать написать нейронную сеть (или используя библиотеку нейронной сети), которая принимает имя и выводит один из этих трех вариантов (F, М, А).

Вы можете обучить его с использованием наборов данных, которые существуют в базах данных, предлагаемых другими ответами, а также с любыми другими данными, которые у вас есть.

Это решение позволит вам обрабатывать имена, которые ранее не были категоризированы ранее, а также обрабатывать разные языки. Возможно, вы захотите передать язык (если вы его знаете) в качестве входа в нейронную сеть.

Я не знаю, что могу сказать, что нейронные сети (или любое другое машинное обучение) будут хорошо выполнять классификацию.

Ответ 10

Это культура/регион, зависимый: возьмите Андреа, поскольку итальянцы только мужские, поскольку Швеция - это женское имя, а Андреас - для мужчин; Шон неоднозначен на английском языке. Если язык имеет склонение, например латинское или русское, последние буквы будут меняться в соответствии с грамматическими правилами,

Другим источником двусмысленностей являются имена семей, идентичные именам пользователей.

По-моему, это невозможно решить в целом.

Ответ 11

Идея явно не работает на большинстве языков.

Однако, если бы вы могли заранее сказать национальность, вы могли бы получить больше удачи. На большинстве славянских языков (например, русский, польский, болгарский) вы можете с уверенностью предположить, что все фамилии, заканчивающиеся на -va - cha -ska (-a вообще женственны), в то время как -v -ch -shi являются мужскими.

На самом деле любая фамилия имеет женскую и мужскую форму в зависимости от окончания. Те же названия, используемые в других странах (например, США), могут использовать только мужскую форму.

То же самое можно сказать и для первых имен (-a -ya женский), но это не на 100% точно.

Но в целом вы вряд ли получили бы библиотеку, которая была бы достаточно точной.

Ответ 12

Пакет python SexMachine сделает это за вас. При любом имени он возвращается, если он мужчина, женщина или унисекс. Он опирается на данные программы gender.c Йорга Майкла.

Ответ 14

Это не сервис, а небольшое приложение с базой данных:
http://www.codeproject.com/KB/cpp/genderizer.aspx

И этот инструмент находится на немецком языке:
http://www.faq-o-matic.net/2011/06/01/zu-einem-vornamen-das-geschlecht-finden/

И еще один в VB:
http://www.vbarchiv.net/tipps/tipp_1925-geschlecht-anhand-des-vornamens-ermitteln.html

Я думаю, что в сочетании с некоторыми списками "Most used firstname in 2011" вы должны создать что-то приличное.

Ответ 15

Каталог Z (на vettrasoft.com) имеет C-языковую функцию, работает примерно так:

void func()
{
    char c = z_guess_sex_byfirstname ("Lon");
    switch(c)
    {
    case 'M': std::cout << "It a boy!\n"; break;
    case 'F': std::cout << "It a girl!\n"; break;
    case 'B': std::cout << "this name is for both sexes\n"; break;
    case '?': std::cout << "sex unknown sorry\n"; break;
    }
}

он управляется базой данных, таблица имеет примерно 10 000 имен, я думаю, но вам нужно загружать и устанавливать каталог z (включает в себя множество других топовых предметов, таких как страны, географические ориентиры, аэропорты, штаты, коды областей, почтовые индексы и т.д. вместе с С++ функции и объекты для доступа к данным). Однако имена очень англоязычные ориентированный. Эта таблица работает и постепенно обновляется.

Ответ 16

Именованные гендерные карты могут работать, но в мультикультурных странах это больше похоже на угадывание. Я могу привести вам один пример: Мариан на польском языке является типичным мужским именем, тогда как одно имя в Великобритании - женское имя. В эпоху иммиграции людей во всем мире я не уверен, что такая база данных будет очень точной. Удачи!

Ответ 17

В некоторых культурах есть унисексные имена - как у меня. Что вы делаете тогда? Я думаю, что ответ прост и прост - не предполагайте - вы можете стать преступлением. Просто спросите, если это необходимо, иначе гендерный нейтралитет.

Ответ 18

Ну, больше нет. IBM запатентовал эту идею некоторое время назад.

Итак, если вы ищете какой-либо уровень гибкости (что-то иное, чем список имен), вам придется либо (вздохнуть!) спросить пользователя, либо просто заплатить IBM за права:)

В любом случае такое автоматическое определение раздражает многих людей, у которых есть гендерно-неоднозначные имена или даже просто родители. Пусть не сделает их труднее для них.

Ответ 19

Это не бесплатно, но это хорошая библиотека, которую я использовал раньше:

NetGender для .NET позволяет вам быстро и легко построить Имя Проверка, анализ и гендер Определение в вашем обычае Приложения. Точно проверьте имеет ли конкретное поле действительный человек или компания. NetGender использует 100 000+, этнически разнообразных, Словарь имен в сочетании с 8,000+ Словарь имени компании обеспечить точное определение пола.

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

Ответ 20

Интересно, что вы говорите, что у вас есть дата рождения. Это может помочь. Я видел базы данных истории популярности имен.

В фильме Splash (1984) было смешно, что персонаж Darryl Hannah выбирает имя "Мэдисон" из уличного знака Мэдисон-авеню, потому что, очевидно, "Мэдисон" - это не имя девушки.

24 года спустя, Мэдисон является 4-м самым популярным именем для девочек-младенцев!


История имени из правительства. (Посмотрите, как Мэри грустно упала за последние 100 лет.)


Когда я писал в Белый дом в детстве, Ричард Никсон (или, может быть, секретарь) ответил мне на некоторые фотографии исторического места, адресованного "Мисс Ретт Андерсон". "Мисс Ретт?" Это даже не имеет смысла! Можем ли мы ДЕЙСТВИТЕЛЬНО не сказать разницу между Кларком Гейбле Реттом (с усами, "Унесенные ветром!" ) И Вивиан Ли Скарлетт? Я никогда не прощу его, несмотря на уверенность Нила Янга, что "даже у Ричарда Никсона есть душа".

Ответ 21

Я уверен, что такой сервис не может существовать с приемлемым уровнем точности. Вот проблемы, которые я считаю непреодолимыми:

  • Есть много имен, которые предназначены как для мужчин, так и для женщин.
  • В этом мире существует много разных имен, даже если вы рассматриваете только одну страну.
  • Существует проблема с названием "Мальчик с именем", поднятая так красноречиво Джонни Кэш: -)

Ответ 23

Вы можете посмотреть мой проект определения пола python https://github.com/muatik/genderizer

Он пытается обнаружить полы авторов, которые ищут свои имена и/или образец текста (например, твиты) из них.

И он также поддерживает mongodb, memcached для производительности.

Ответ 24

Это не проблема программирования - она ​​сводится к получению таблицы вероятности.

AFAIK нет общедоступных баз данных в дистиллированных формах. Вы можете либо построить это из данных переписи, либо купить данные у кого-то.

Например, это кто-то, кто продает таблицу вероятности для Канады.

Ответ 25

ИМХО, в целом плохая идея определить пол от имени индивидуума. Многие имена являются межсексуальными (хорошее горе, это даже слово?:-), а также они могут быть одним сексом в одной культуре, а другой в другом.

Несколько глупых примеров, только несколько, которые пришли на ум (из моей части мира, CE)

Ваня - женщина, в восточных странах отсюда, в основном мужчины
Алекс - intersex (сокращенно для Сандры, женщины и Сандро, мужчины)
Робин - в западных культурах, может быть как

В некоторых частях мира секс с людьми можно определить, посмотрев, как заканчивается имя. Например, Мария, Сандра, Ивана, Петра, Сара, Лючия, Ана - вы можете видеть, что большинство этих женских имен заканчиваются на "ja" или "ra". Существуют и другие примеры.

Тем не менее, я думаю, что лучше просто спросить пользователя о сексе.

Ответ 27

Я не знаю такой службы, однако.

В некоторых странах (например, в германии) имя, которое может быть дано человеку, ограничено законом - возможно, есть некоторые публикации по этому вопросу, которые могут быть собраны (но я не знаю ни одного в данный момент).

Ответ 28

Я не знаю такого сервиса. Однако вы можете найти нужные вам данные. Правительство США публикует данные о распространенности имен и пола того, к кому они привязаны. Администрация социального обеспечения имеет такую ​​страницу, и перепись может также, но я не нашел времени, чтобы посмотреть. Возможно, другие мировые правительства делают подобные вещи.

Ответ 29

Что бы я сделал, это сделать взлом, который берет имя и ищет его против facebook api. Затем просматривает результирующих пользователей и подсчитывает, сколько их составляют женщины или мужчины. Затем вы можете вернуть процент. Не так непреодолимо больше.:)

Ответ 30

Просто спросите людей, и если они будут хорошими, они дадут вам их "M" или "F", и если они не будут тогда давать "A".