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


90

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

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

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

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


33
Вау ... Кажется, каждый отвечает на вопрос "должен ли я это сделать", а не на вопрос "как мне это сделать?" Не удивительно, просто интересно.
bsneeze

9
Я вообще-то думаю, что это отличный вопрос. Если вы заходите на веб-сайт и в 90% случаев он определяет ваш пол, я вижу выгоду. Я бы хотел, чтобы мой телевизор делал то же самое. Я смотрел повторы «Царя горы» на недавнем рейсе, и каждые 3 минуты появлялась реклама «персональных массажеров».
Uri

6
@mP Вау, теперь мы можем перейти от угадывания пола, чтобы сделать грамматику лучше, к расовому профилированию.
Час. Оуэнс

2
Час, это не то, что люди не хотят тебе давать по моральным соображениям, это как будто вначале не имеет смысла, поэтому ты просишь неудачное решение. Кроме того, вы упоминаете не английские имена, а в межкультурной ссылке это становится еще более сложным. для меня это бесполезно.
zalew

2
Как узнать, мужское или женское имя? Алекс может быть сокращением от Александра (мужчина) или Александра (женщина). Я знаю Мику, мужчину, и женщину. А как насчет иностранных имен?
Гейб

Ответы:


66

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

РЕДАКТИРОВАТЬ : ссылка на имя 2010 мертва, но в комментариях есть рабочие ссылки и библиотеки.


2
Это круто. Кажется, именно то, что нужно спрашивающему. В неоднозначных именах можно было «угадать» пол на основе частоты встречаемости мужских и женских.
сталепретцель

1
Я создал для этого библиотеку, используя данные переписи, и она отлично работает! Возможные применения: аналитика, выбор пола голосового IVR.
Крис Макколл,

9
Вот имя -> пол из данных переписи как python dict: raw.github.com/Bemmu/gender-from-name/master/gender.py
Bemmu

3
Исходная ссылка мертва, но перепись все еще поддерживает список. Версия, относящаяся
Chipmonkey

2
22 МБ детских имен в США с указанием пола по году рождения: ssa.gov/oact/babynames/limits.html (ссылка действительна на июль 2015 г.)
Дилан Хогг,

70

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

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

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

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

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

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

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

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


Это замечательно, спасибо.
Дейл Афанасиас

См. Здесь порт python - pypi.python.org/pypi/SexMachine
philshem

33

«Я говорю тебе, жизнь парню по имени« Сью »нелегка».

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


15
@Chas: даже если вам удастся сделать это правильно в 80% случаев, это все равно будет раздражать двоих из каждых десяти человек, использующих ваше программное обеспечение. Не очень хорошо ... Я понимаю мотивацию, но вам действительно лучше переформулировать свои сообщения так, чтобы они были нейтральными с гендерной точки зрения.
Shog9

2
Интересно, помнит ли кто-нибудь еще "Пэт" из SNL.
erickson

8
Перечитывая это, я получаю ужасную проповедь ... Не хочу отказываться от своей идеи, я думаю, что это интересная ... Но также очень рискованная. Раньше я работал телемаркетером, и не важно, сколько имен вы знаете, независимо от того, насколько хорошо вы умеете распознавать голоса, вы все равно иногда ошибаетесь ... и это никогда не весело. И поэтому я бы этого избегал, если только не будет большой выгоды за то, что я смогу угадать это правильно .
Shog9

3
Я приму совет Shog9. Если ваше приложение не предназначено для языков, отличных от английского, может быть проще использовать нейтральные в гендерном отношении местоимения - например, они, один, он / она и т. Д.
Кэлвин

11
Мою девушку зовут Кеван. У нее достаточно людей, которые ошибочно угадывают ее пол по ее имени, ей не нужны компьютеры для этого. Следует остерегаться создания записи в базе данных, в которой указывается пол человека на основе предположения компьютера; люди, которые смотрят на это, могут предположить, что это предоставлено самим человеком, и действительно сбиваются с толку, когда их предположения оказываются неверными (в отличие от того, что несколько сбивает с толку только по имени).
Брайан Кэмпбелл

29

Я создал бесплатный 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"}

2
Расширения кода - genderize.io/#extensions
philshem

22

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

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

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


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

Отличная идея. Вы, вероятно, можете добавить несколько слов на язык данной страны, чтобы локализовать ее.
Nosredna 08

Хороший момент, Nosrenda ... конечно, Google также позволяет фильтровать результаты поиска по коду языка. Вы даже можете украсть предпочтительный язык пользователя из HTTP-запроса. Настройки языка в их браузере могут совпадать или не совпадать с этнической принадлежностью их имени, но в любом случае это нечеткий метод.
richardtallent 08

2
Я обнаружил, что Google шовинистичен: мужчины получают больше результатов, чем женщины, потому что в Google больше мужчин. API Facebook, вероятно, намного более представительный.
Крис Макколл,

6

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

Если вы пишете на английском , помните, что единственное число «они» грамматически нормально как гендерно-нейтральное местоимение третьего лица единственного числа.

Хороший пример - название этого вопроса. В настоящее время:

    ... сопоставление имени человека с его или ее полом?

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

    … Сопоставление имени человека с его полом?

Это не совсем "идеально" грамматически. Даже статья в Википедии признает, что это было использовано, особенно в современном контексте, в результате дискомфорта некоторых авторов по поводу общего «он». У меня нет большой проблемы с писателями, которые это делают (хотя, если гендерный нейтралитет действительно важен, я предпочитаю переформулировать конструкцию, чтобы я мог использовать местоимения типа «один»), но давайте назовем это тем, что есть.
Бен Коллинз

Я бы сказал, что мы оба правы. Вся грамматика, особенно грамматика английского языка, имеет значительные проблемы; но я бы сказал, что любое определение «совершенной грамматики», которое действительно применимо ко всему в английском, применимо и здесь. Либо единственное число «они» идеально грамматически, либо ничего в английском не является :-)
bignose

Следует отметить, что Grammar Girl (автор Миньон Фогарти) уже некоторое время склоняется к принятию единственного числа «они». grammar.quickanddirtytips.com/…
Карен Лопес,

4

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


4

Это не сервис, а небольшое приложение с базой данных:
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

Я думаю, что в сочетании с некоторыми списками «Наиболее часто используемые имена в 2011 году» вы сможете создать что-то приличное.


4

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


3

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

ДЖЕЙМС, ДЖОН, РОБЕРТ, МАЙКЛ, УИЛЬЯМ, ДЭВИД, РИЧАРД, ЧАРЛЬЗ, ДЖОЗЕФ, ТОМАС, КРИСТОФЕР, ДЭНИЕЛ, ПОЛ, МАРК, ДОНАЛЬД, ДЖОРДЖ, КЕННЕТ, СТИВЕН, ЭДУАРД, БРАЙАН, РОНАЛЬД, ЭНТОНИ, КЕВИН, ДЖЕЙС ГЭРИ, ТИМОТИ, ДЖОС, ЛАРРИ, ДЖЕФФРИ, ФРАНК, СКОТТ, ЭРИК, СТИФЕН, ЭНДРЮ, РЭЙМОНД, ГРЕГОРИ, ДЖОШУА, ДЖЕРРИ, ДЕННИС, УОЛТЕР, ПАТРИК, ПИТЕР, ГАРЛЬД, ГЕНРИ, КАРЛ, АРТУР, ДЖАНР ДЖЕК, АЛЬБЕРТ, ДЖАСТИН, ТЕРРИ, ДЖЕРАЛЬД, КИТ, СЭМУЭЛ, УИЛЛИ, ЛОУРЕНС, РОЙ, БРЭНДОН, АДАМ, ФРЕД, БИЛЛИ, ЛУИ, ДЖЕРЕМИ, ААРОН, РЕНДИ, ЭВДЖИН, КАРЛОС, РАССЕЛ, БОББИ, ВИКТОР ДЖАРТЕН, ШОН, КЛАРЕНС, ШОН, КРИС, ДЖОННИ, ДЖИММИ, АНТОНИО, ТОНИ, ЛУИС, МАЙК, ДЕЙЛ, КУРТИС, НОРМАН, АЛЛЕН, ГЛЕНН, ТРЕВИС, ЛИ, МЕЛВИН, КАЙЛ, ФРАНСИС, ИИСУС, РЭЙ, ДЖОЭЛ, ЭДДИ, АЛЕКСАНДР, МАРИО, ФРАНЦИСКО, МИХИЛ, ОКАР, ДЖЕЙ, АЛЕКС, ДЖОН, РОННИ, ТОММИ, ЛЕОН, ЛЕО, УЕСЛИ, ДИН, ДЭН, ЛЬЮИС,КОРИ, МОРИС, ВЕРНОН, РОБЕРТО, КЛАЙД, ШЕЙН, СЭМ, ЛЕСТЕР, ЧАРЛИ, ТАЙЛЕР, ГЕН, БРЕТТ, АНДЖЕЛ, ЛЕСЛИ, СЕСИЛ, АНДРЕ, ЭЛМЕР, ГАБРИЭЛЬ, МИТЧЕЛЛ, АДРИАН, КАРЛ, КОРИ, КЛОД, ДЖЕМСИ КРИСТИАН, ЛОННИ, КОДИ, ДЖУЛИО, КЕЛЛИ, ДЖИММИ, ДЖОРДАН, ДЖАЙМЕ, КЕЙСИ, ДЖОННИ, СИДНИ, ДЖУЛИАН, ДЭРИЛ, ВИРДЖИЛ, МАРШАЛЛ, ПЕРРИ, МАРИОН, ТРЕЙСИ, РЕН, ФРЕДДИ, ОСТИН, ДЖЕКИ, ДЖИКИ ДОННИ, ШЕННОН, АНДЖЕЛО, ШОН, ЛИНН, КАМЕРОН, БЛЕЙК, КЕРРИ, ДЖИН, ИРА, РУДИ, БЕННИ, РОБИН, ЛОРЕН, НОЭЛ, ДЕВИН, КИМ, ГВАДАЛУПА, КЭРОЛЛ, СЭММИ, МАРТИ, ТЕЙЛОР, ЭЛЛИС, ДЕЛЛИС, ДРЮ, ДЖОДИ, ФРЭНКИ, ПАТ, МЕРЛЕ, ТЕРРЕЛЛ, ДАРНЕЛЛ, ТОММИ, ТОБИ, ВАН, КОРТНИ, ДЖЕН, КЭРИ, САНТОС, ОБРИ, МОРГАН, ЛУИ, Стейси, Майкл, Билли, Логан, Деметриендалл, РОББИ, РОББИ МИККИ, ДЕВОН, ЭШЛИ, КЭРИ, СЫН, МАРЛИН, АЛИ, САММИ, МИШЕЛЬ, Рори, КРИС, АВЕРИ, АЛЕКСИС, ДЖЕРРИ, СТЕЙСИ,КАРМЕН, ШЕЛБИ, РИККИ, БОББИ, ОЛЛИ, ДЕННИ, ДИОН, ОДЕЛЛ, МЭРИ, КОЛБИ, ХОЛЛИС, КИРБИ, КРУЗ, МЕРРИЛЛ, ЛЕЙН, КЛЕО, БЛЕР, ЦИФРЫ, КЛЕР, БЕРНИ, ЖОАН, ДОМИНИК, ДЖОНИК, ТРИСТАНИК, ЛАВЕРН, АЛЬВА, СТИВИ, ЭРИН, АВГУСТИН, ЯНГ, ДЖОНИ, АРИЭЛЬ, ДАСТИ, ЛИНДСИ, ТРЕЙСИ, СКОТТИ, СЕНДИ, СИДНЕЙ, ГЕЙЛ, ДОРИАН, ЛАВЕРНА, РЕФУДЖИО, Слоновая кость, Андреа, Сэндж, ДЕОН, Кэролер, ЙОНГ ТРИНИДАД, ШИРЛИ, МАРИЯ, ЧАНГ, РОСАРИО, ДЭННИ, ФРАНСИС, ТАН, КОННИ, Тори, ЛЮП, ДИ, СОН, ЧИ, КУИНН, МИН, Тео, Лу, Чанг, Валентин, ДЖЕЙМИ, УИТНИ, СОЛ, ЧОНГ, ПАРИЖ, ОТА, ЛЕЙСИ, ДОНГ, АНТОНИЯ, КЕЛЛИ, КЕРРОЛ, ШЕЙН, ВАЛ, ДЖУД, БРИТТ, ГОНГ, ЛЕЙ, ГЕЙЛ, ДЖЕЙ, НИККИ, ЛЕСЛИ, МАН, КЕЙСИ, ДЖВЕЛЛ, ПАТРИСИЯ, ЛОРЕН, ЭЛИША, МАЙКЛ и ДЖЮИНДСЕЙКЛЕР, БЕРНИ, ДЖОАН, ДОМИНИК, ТРИСТАН, ДЖЕЙМ, ГЕЙЛ, ЛАВЕРН, АЛЬВА, СТИВИ, ЭРИН, АВГУСТИН, ЯНГ, ДЖОНИ, АРИЭЛЬ, ДАСТИ, ЛИНДСИ, ТРЕСИ, СКОТТИ, СЭНДИ, СИДНЕЙ, ГЕЙЛ, ДОРНИАН, АЙВОРИ, АНДРЕА, САНГ, ДЕОН, КЭРОЛ, ЙОНГ, БЕРРИ, ТРИНИДАД, ШИРЛИ, МАРИЯ, ЧАНГ, РОСАРИО, ДЭННИ, ФРАНСИС, ТАНХ, КОННИ, Тори, ЛЮП, ДИ, СОН, ЧИ, КУИНН, МИН, ТЕО, ЛУ, ЧАНГ, ВАЛЕНТИН, ДЖЕЙМИ, УИТНИ, СОЛ, ЧОНГ, ПАРИЖ, ОТА, ЛЕЙСИ, ДОНГ, АНТОНИЯ, КЕЛЛИ, КЕРРОЛ, ШЕЙН, ВАЛ, ДЖУД, БРИТТ, ГОНГ, ЛИ, ГЕЙЛ, ДЖЕЙ, НИККИ, ЛЕСЛИ, МАН, КЕЙСИ ДЖВЕЛЛ, ПАТРИСИЯ, ЛОРЕН, ЭЛИША, МИХАЛ, ЛИНДСЭЙ и ДРАГОЦЕННОСТЬКЛЕР, БЕРНИ, ДЖОАН, ДОМИНИК, ТРИСТАН, ДЖЕЙМ, ГЕЙЛ, ЛАВЕРН, АЛЬВА, СТИВИ, ЭРИН, АВГУСТИН, ЯНГ, ДЖОНИ, АРИЭЛЬ, ДАСТИ, ЛИНДСИ, ТРЕЙСИ, СКОТТИ, СЭНДИ, СИДНЕЙ, ГЕЙЛ, ДОРНИАН, АЙВОРИ, АНДРЕА, САНГ, ДЕОН, КЭРОЛ, ЙОНГ, БЕРРИ, ТРИНИДАД, ШИРЛИ, МАРИЯ, ЧАНГ, РОСАРИО, ДЭННИ, ФРАНСИС, THANH, КОННИ, Тори, ЛЮП, ДИ, СОН, ЧИ, КУИНН, МИН, ТЕО, ЛУ, ЧАНГ, ВАЛЕНТИН, ДЖЕЙМИ, УИТНИ, СОЛ, ЧОНГ, ПАРИЖ, ОТА, ЛЕЙСИ, ДОНГ, АНТОНИЯ, КЕЛЛИ, КЕРРОЛ, ШЕЙН, ВАЛ, ДЖУД, БРИТТ, ГОНГ, ЛИ, ГЕЙЛ, ДЖЕЙ, НИККИ, ЛЕСЛИ, МАН, КЕЙСИ ДЖВЕЛЛ, ПАТРИСИЯ, ЛОРЕН, ЭЛИША, МИХАЛ, ЛИНДСЭЙ и ДРАГОЦЕННОСТЬМАРИЯ, ЧАНГ, РОСАРИО, ДЭННИ, ФРАНСИС, ТАНХ, КОННИ, Тори, ЛЮП, ДИ, СОН, ЧИ, КУИНН, МИН, ТЕО, ЛУ, ЧУНГ, ВАЛЕНТИН, ДЖЕЙМИ, УИТНИ, СОЛ, ЧОНГ, ПАРИЖ, ОТА, ЛЭСИ, ДОНГ, АНТОНИЯ, КЕЛЛИ, КЕРРОЛ, ШЕЙН, ВАЛ, ДЖУД, БРИТТ, ГОНГ, ЛИ, ГЕЙЛ, ДЖЕЙ, НИККИ, ЛЕСЛИ, МАН, КЕЙСИ, ДЖВЕЛЛ, ПАТРИСИЯ, ЛОРЕН, ЭЛИША, МИХАЛ, ЛИНДЗЕЙ и ДЖВЕЛ.МАРИЯ, ЧАНГ, РОСАРИО, ДЭННИ, ФРАНСИС, ТАНХ, КОННИ, Тори, ЛЮП, ДИ, СОН, ЧИ, КУИНН, МИН, ТЕО, ЛУ, ЧАНГ, ВАЛЕНТИН, ДЖЕЙМИ, УИТНИ, СОЛ, ЧОНГ, ПАРИЖ, ОТА, ЛЭСИ, ДОНГ, АНТОНИЯ, КЕЛЛИ, КЕРРОЛ, ШЕЙН, ВАЛ, ДЖУД, БРИТТ, ГОНГ, ЛИ, ГЕЙЛ, ДЖЕЙ, НИККИ, ЛЕСЛИ, МАН, КЕЙСИ, ДЖВЕЛЛ, ПАТРИСИЯ, ЛОРЕН, ЭЛИША, МИХАЛ, ЛИНДЗЕЙ и ДЖВЕЛ.

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


25
Предположим, существует девушка по имени Марк (не стесняйтесь указывать на нее). На ее месте я бы злился на своих родителей, а не на программное обеспечение Часа ...
Darko Z

6
Что, если программа никогда не называет ее мужчиной, а представляет «мужскую» версию пользовательского интерфейса? Или она объединяется с мужчинами в совокупности по набору данных, который используется для разработки маркетинговых материалов? Она могла даже не заметить.
Крис МакКолл,

Для многих из этих имен я получаю 100% уверенность на основе данных из 500-1200 профилей Facebook с таким именем. api.genderize.io/?name=robert api.genderize.io/?name=andrew api.genderize.io/?name=john
Стремгрен

3

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

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

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

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


3

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

Еще один источник неоднозначности - фамилии, идентичные личным именам.

На мой взгляд, решить вообще невозможно.


Если бы у OP была сопутствующая переменная, указывающая культуру происхождения, место рождения, национальность, что угодно, это было бы полезно. Но он сказал, что нет, поэтому вам просто нужно сделать статистически обоснованное предположение, основанное на агрегированных показателях.
smci 01

3

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

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

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

То же самое можно сказать и о именах (-a -ya женского рода), но это не на 100% верно.

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


как фамилия мужского или женского рода?
Simon_Weaver 09

2
@Simon_Weaver Моего отца зовут Славчев, а моей матери - Славчева. На самом деле это одна и та же фамилия, но у мужчин и женщин она пишется по-разному. Это обычное дело для славянских имен.
Димитар Славчев


2

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

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

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


1

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


1
Нет, но до тех пор, пока он лучше 50%, лучше относиться к именам как к всегда мужским.
Час. Owens

@Chas, так зачем цепляться за эту ложную дихотомию? У вас есть выбор гендерной нейтральности.
bignose

у нас даже есть 2 известных политика, у которых есть второе имя «Мария» - «Мэри», которое будет классифицировано в вашей базе данных как женское. только для смеха.
zalew

@JZ Я говорю об имени, а не о фамилии (или наоборот, для культур, которые делают обратное).
Час. Owens

@bignose, гендерно-нейтральный язык выглядит странно и запутанно, я бы предпочел сделать что-то более красивое, когда смогу. Это не передается людям (если они вообще существуют), так что нет шансов на обиду, я не знаю, почему люди тратят столько времени на споры об этом, вместо того, чтобы просто предоставлять ссылки на базы данных, если они знают о хорошем один.
Час. Owens

1

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


5
На вопрос уже дан ответ на ваш ответ: alex => "A", #ambigous. Независимо от того, есть ли у вопроса ответ, ваш ответ - не так.
Windows-программист

Я не согласен - я считаю, что все имена потенциально неоднозначны.
Preet Sangha

Если имена унисекс, то все они будут классифицированы как А, и я буду придерживаться гендерной нейтральности, но если имя преимущественно мужское или женское, я могу использовать гораздо более естественный язык.
Час. Оуэнс

Я понимаю ваши рассуждения, но отсылаю вас к последнему комментарию.
Preet Sangha

3
Но если вы видите «Preet» на StackOverflow, вероятно, это мужчина.
Nosredna 08

1

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

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

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


3
Похоже, IBM запатентовала выбор аватара по имени. К счастью, это не одно из приложений, для которых я собираюсь использовать это, поэтому я не нарушаю их патент. Что касается запроса пользователя, это предполагает, что у меня есть пользователи, которых нужно спрашивать, а не список имен. Я неоднократно говорил, что нет ни пользователей, ни взаимодействия, ни сообщений, отправляемых людям, которым принадлежат имена.
Час. Оуэнс

1

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

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

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


1

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

В фильме «Всплеск» (1984) было забавно, что персонаж Дэррила Ханны выбрал имя «Мэдисон» по указателю на Мэдисон-авеню, потому что, очевидно, «Мэдисон» - не девичье имя.

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


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


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


Хороший момент, свидание определенно играет здесь роль.
Час. Owens

1

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

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

2
В хорошей базе данных будет процентное соотношение мужчин и женщин для андрогинных имен по регионам, времени отбора и т. Д.

А как насчет таких языков, как японский? Я изучаю японский язык, поэтому могу ошибаться здесь, но имена <-> Кандзи не являются прямыми отношениями, были каламбуры и недопонимание того, «что» кандзи составляет имя человека.
Фарон,


1

Вы можете взглянуть на мой проект определения пола на Python https://github.com/muatik/genderizer

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

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


Выглядит неплохо, но если вам нужно, чтобы он был осведомлен о «стране происхождения», см. Gender.c или genderize.io ниже
HaveAGuess

0

На самом деле это не проблема программирования - все сводится к созданию таблицы вероятностей.

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

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


0

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

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

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

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

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


9
«Тем не менее, я думаю, что лучше просто попросить пользователя о сексе». - Я согласен, это было бы намного лучше, чем публиковать комментарии на Stack Overflow.
Windows-программист

2
UPS. Ладно, не получилось :-)
Ладья

Было лучше до редактирования :-)
Windows программист


0

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


0

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

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


0

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


-2

Просто спросите людей, и если они вежливы, они поставят вам свои «М» или «П», а если нет, то поставьте им «пятерку».


2
Я не общаюсь с людьми, имена которых хочу сопоставить.
Час. Owens
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.