Хтось знає хорошу бібліотеку для зіставлення імені людини з її статтю? [зачинено]


90

Я шукаю бібліотеку або базу даних, яка може дати здогадки про те, чи є людина чоловічої чи жіночої статі, виходячи з її імені чи прізвиська. Щось на зразок

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

Я шукаю щось, що підтримує імена, крім англійських (наприклад, японські, індійські тощо).

Перш ніж я отримаю чергову відповідь на тему: "Ви ображаєте людей, припускаючи їхню стать / стать", дозвольте пояснити: моя програма ні з ким не взаємодіє. Він не надсилає електронних листів і не контактує з ким-небудь. Немає користувачів, яких можна запитати. У багатьох випадках ця особа померла, і єдина інформація, якою я володію, - це ім’я, дата народження та дата смерті. Причиною того, що я хочу знати стать людини, є покращення граматики вихідних даних та допомога у можливих пошукових запитах, які можуть з’явитися останнім часом.


33
Ого ... здається, усі відповідають на питання "чи мені це робити", а не на запитання "як це зробити?" Не дивно, просто цікаво.
bsneeze

9
Я насправді вважаю, що це чудове питання. Якщо ви заходите на веб-сайт і 90% часу він визначає вашу стать, я бачу користь. Я хотів би, щоб мій телевізор міг зробити те саме. Я спостерігав за повторами King of the Hill під час нещодавнього польоту, і кожні 3 хвилини була реклама для "особистих масажерів".
Урі

6
@mP Ого, шлях від здогадки про секс, щоб граматика стала приємнішою, до расового профілювання.
Час. Owens

2
chas, справа не в тому, що люди не хочуть вам давати, це через моральну річ, це наче це не має сенсу спочатку, тому ви просите рішення про невдачу. також, ви згадуєте інші, крім англійських імен, а в міжкультурних посиланнях це стає ще більш складним. для мене це ні до чого.
zalew

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

Відповіді:


66

Стать імені - це те, що в загальному випадку неможливо вивести програмно. Вам потрібна база даних імен. Ось безкоштовна база даних імен від Бюро перепису населення США .

РЕДАКТУВАТИ : Посилання на назву 2010 мертве, але в коментарях є робочі посилання та бібліотеки.


2
Це чудово. Здається, саме те, що потрібно запитувачеві. Неоднозначні імена могли б мати вгадану стать залежно від частоти чоловіків проти частоти жінок.
сталепрецель

1
Я створив для цього бібліотеку, використовуючи дані перепису, і вона чудово працює! Потенційні програми: аналітика, вибір голосу за допомогою IVR.
Кріс МакКолл,

9
Ось ім'я -> стать з даних перепису як диктофон python: raw.github.com/Bemmu/gender-from-name/master/gender.py
Бемму

3
Оригінальне посилання мертве, але перепис все ще підтримує список. Тут є версія, характерна для 1990-х (я не знаю, чому): census.gov/genealogy/www/data/1990surnames/names_files.html
Chipmonkey

2
22 МБ імен немовлят із статтю за родом народження: ssa.gov/oact/babynames/limits.html (посилання діє в липні 2015 року)
Ділан Хогг

70

gender.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. Набагато вільніший, але більш масштабований, використовуйте Google API і шукайте ім’я, а також займенники, що відповідають статі, і порівняйте цифри. Наприклад, є 592 000 000 результатів для пошуку "Richard his" (не як фраза), але лише 179 000 000 для "Richard her".


Окрім загального консенсусу щодо наявності програмного забезпечення, яке намагається вгадати такі речі, як секс, від власного імені, це справді крута алгоритмічна відповідь на вихідне питання. Молодці.
peSHIr

Чудова ідея. Можливо, ви також можете додати слова на мові даної країни, щоб локалізувати їх.
Nosredna

Хороший момент, Носренда ... звичайно, Google також дозволяє фільтрувати результати пошуку за мовним кодом. Ви навіть можете вкрасти бажану мову користувача із запиту HTTP. Налаштування мови браузера можуть збігатися з етнічною приналежністю їх імені, а може і не збігатися, але це все одно нечітка техніка.
richardtallent

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

6

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

Якщо ви пишете англійською мовою , пам’ятайте, що однина “вони” граматично чудова як гендерно-нейтральний займенник третьої особи однини.

Хорошим прикладом є назва цього запитання. Як зараз:

    ... зіставлення імені людини з її статтю?

Це було б менш незручно, якби написано:

    ... зіставлення імені людини зі статтю?

Це не зовсім "ідеально" граматично. Навіть стаття Вікіпедії визнає, що вона була використана, особливо в сучасному контексті, внаслідок дискомфорту деяких письменників із загальним "він". У мене немає великих проблем з письменниками, які роблять це (хоча, якщо гендерна нейтральність дійсно важлива, я волію переформулювати конструкцію, щоб я міг використовувати займенники типу "один"), але давайте назвемо це як це.
Бен Коллінз

Я стверджую, що ми обидва праві. Вся граматика, особливо граматика англійської мови, має значні проблеми; але я б сказав, що будь-яке визначення "досконалої граматики", яке насправді стосується будь-чого з англійської мови, застосовується і тут. Або однина "вони" ідеально граматична, або нічого англійською не є :-)
bignose

Слід зазначити, що «Граматична дівчина» (автор Міньйон Фогарті) вже деякий час схиляється до прийняття єдиного «вони». 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

Єдине, що ви отримаєте, намагаючись автоматизувати це, - це купа нещасних користувачів. З даних перепису:

Джеймс, Джон, Роберт, Майкл, Вільям, Девід, Річард, Чарльз, Йосип, Томас, Крістофер, Даніель, Павел, Марк, Дональд, Джордж, Кеннет, Стівен, Едвард, Брайан, Рональд, Антон, Джон, Антон ГАРІ, ТІМОТІ, ЖОЗІ, ЛАРРІ, ДЖЕФРІ, ФРЕНК, СКОТТ, ЕРІК, СТІВЕН, ЕНДРЮ, РАЙМОНД, ГРЕГОРІ, ДЖОШУА, ДЖЕРРІ, ДЕНІС, УОЛТЕР, ПАТРІК, ПЕТР, ГАРОЛЬД, ГЕНРІ, КАРЛ, АРНУР, АРНУР ДЖЕК, АЛЬБЕРТ, ДЖУСТІН, ТЕРРІ, ГЕРАЛЬД, КІТ, СЕМЮЕЛ, УІЛІ, ЛОРЕНС, РОЙ, БРЕНДОН, АДАМ, ФРЕД, БІЛЛІ, ЛУІ, ДЖЕРЕМІ, ААРОН, РЕНДІ, ЄВГЕН, КАРЛОС, РУСЕЛ, БОБІ, ВІКТОР, МАРТІН ШОН, КЛАРЕНС, ШОН, КРІС, ДЖОННІ, ДЖІММІ, АНТОНІО, ТОНІ, ЛЮІЗ, МАЙК, ДЕЙЛ, КУРТИС, НОРМАН, АЛЛЕН, ГЛЕН, ТРАВІС, ЛІ, МЕЛЬВІН, КАЙЛ, ФРАНЦИС, Ісус, Рей, Джоел, Едді ОЛЕКСАНДР, МАРІО, ФРАНЦІСКО, МІХЕЙЛ, ОСКАР, ДЖЕЙ, ОЛЕКС, ЙОН, РОНІ, ТОММІ, ЛЕОН, ЛЕВ, УЕСЛІ, ДІН, ДАН, ЛЮІС,КОРІ, МОРІС, ВЕРНОН, РОБЕРТО, КЛАЙД, ШЕЙН, СЕМ, ЛЕСТЕР, ШАРЛІ, ТАЙЛЕР, ГЕН, БРЕТ, АНГЕЛ, ЛЕСЛІ, СЕЦІЛ, АНДР, ЕЛМЕР, ГАБРІЕЛ, МІТЧЕЛ, ЕДРІАН, КАРЛ, КОРІ, КЛОЙДЖ, КЛЕМ, ДЖЕЙМ Крістіан, Лонні, Коді, Джуліо, Келлі, Джиммі, Йорданія, Джеймі, Кейсі, Джонні, Сідні, Джуліан, Даріл, Вірджилія, Маршалл, Перрі, Меріон, Трейсі, Рені, Фредді, Остін, Джекі, Джекі ДОННІ, ШАННОН, АНДЖЕЛО, ШОН, ЛІНН, КАМЕРОН, ПЛЯМОК, КЕРРІ, ДЖІН, ІРА, РУДІ, БЕННІ, РОБІН, ЛОРЕН, НОЕЛ, ДЕВІН, КІМ, ГВАДАЛУПА, КЕРОЛЛ, СЕММІ, МАРТІ, ТЕЙЛОР, ЕЛЛЮРС, ДАЛЬОР ДРЮ, Джоді, Френкі, ПЕТ, МЕРЛ, ТЕРРЕЛ, ДАРНЕЛЛ, ТОММІ, ТОБІ, ВЕН, КОРТНІ, ЖАН, КЕРІ, САНТОС, ОБРІ, МОРГАН, ЛУІ, СТЕЙСІ, МІКА, БІЛЛІ, ЛОГАН, ДЕМЕТРІЙ, РОБІ, МІККІ, ДЕВОН, ЕШЛІ, КЕРІ, СИН, МАРЛІН, АЛІ, СЕММІ, МІШЕЛ, РОРІ, КРІС, КОЖЕН, АЛЕКСИС, ГЕРРІ, СТЕСІ,КАРМЕН, ШЕЛБІ, РІКІ, БОБІ, ОЛЛІ, ДЕННІ, ДІОН, ОДЕЛ, МЕРІ, КОЛБІ, ГОЛЛІС, КІРБІ, КРУЗ, МЕРРІЛЬ, ЛЕЙН, КЛЕО, БЛЕР, ЧИСЛА, КЛЕР, БЕРНІ, ЖАНА, ДОМІНІКЕ, ТРЕЙНЗ ЛАВЕРН, АЛВА, СТЕВІ, ЕРІН, АВГУСТИН, МОЛОДИЙ, ДЖОНІ, АРІЕЛЬ, ПИЛИЙ, ЛІНДСЕЙ, ТРЕЙСІ, СКОТТІ, СЕНДІ, СІДНІ, ГЕЙЛ, ДОРІАН, ЛАВЕРН, РЕФУЖІ, ІВОРІ, АНДРЕЯ, САНГ, ДЕОН, БОРІ, КЕРОЛІ ТРІНІДАД, ШИРЛІ, МАРІЯ, ЗМІНИ, РОЗАРІО, ДАННІ, ФРАНЦ, ТЕНГ, КОННІ, ТОРІ, ЛЮП, ДІ, СОНГ, ЧІ, КВІНН, МІН, ТЕО, ЛУ, ЧУНГ, ВАЛЕНТИН, ДЖЕМІ, УІТНІ, СОЛ, ЧОНГ, ПАРІЖ, ОТА, ЛЕЙСІ, ДОНГ, АНТОНІЯ, КЕЛЛІ, КЕРОЛ, ШЕЙН, ВАЛ, ДЖУД, БРІТ, ГОНГ, ЛІГ, ГЕЙЛ, ДЖАЙ, НІКІ, ЛЕСЛІ, ЛЮДИ, КЕСІ, ДЖЕВЕЛ, ПАТРІЦІЯ, ЛОРЕН, ЄЛІША, МІХАЛ, ЛІНДЗЕЙКлер, БЕРНІ, ЖАНА, ДОМІНІК, ТРИСТАН, ДЖЕЙМ, ГЕЙЛ, ЛАВЕРН, АЛВА, СТЕВІ, ЕРІН, АВГУСТИН, МОЛОДИЙ, ДЖОНІ, АРІЕЛЬ, ПИЛИЙ, ЛІНДСЕЙ, ТРЕЙСІ, СКОТТІ, СЕНДІ, СІДНЕЙ, ГЕЙЛ, ДОРІАН ІВОРІ, АНДРЕЯ, СПІВ, ДЕОН, КЕРОЛ, ЙОНГ, ЯГОДА, ТРІНІДАД, ШИРІ, МАРІЯ, ЗМІНИ, РОЗАРІО, ДЕННІ, ФРАНЦИ, ТАНГ, КОННІ, ТОРІ, ЛЮП, ДІ, СОНП, ЧІ, КВІН, МІН, ТЕО, ЛОУ, ЧУНГ, ВАЛЕНТИН, ДЖЕЙМІ, УІТНІ, СОЛ, ЧОНГ, ПАРИЖ, ОТА, ЛЕСІ, ДОНГ, АНТОНІЯ, КЕЛЛІ, КЕРОЛ, ШЕЙН, ВАЛ, ДЖУД, БРИТ, ГОНГ, ЛЕГ, ГЕЙЛ, ДЖАЙ, НІКІ, ЛЕСЛІ, ЛЮДИНА, КЕСІ, JEWELL, PATRICIA, LAUREN, ELISHA, MICHAL, LINDSAY і JEWELКлер, БЕРНІ, ЖАНА, ДОМІНІК, ТРИСТАН, ДЖЕЙМ, ГЕЙЛ, ЛАВЕРН, АЛВА, СТЕВІ, ЕРІН, АВГУСТИН, МОЛОДИЙ, ДЖОНІ, АРІЕЛЬ, ПИЛИЙ, ЛІНДСЕЙ, ТРЕЙСІ, СКОТТІ, СЕНДІ, СІДНЕЙ, ГЕЙЛ, ДОРІАН ІВОРІ, АНДРЕЯ, СПІВ, ДЕОН, КЕРОЛ, ЙОНГ, ЯГОДА, ТРІНІДАД, ШИРІ, МАРІЯ, ЗМІНИ, РОЗАРІО, ДЕННІ, ФРАНЦИ, ТАНГ, КОННІ, ТОРІ, ЛЮП, ДІ, СОНП, ЧІ, КВІН, МІН, ТЕО, ЛОУ, ЧУНГ, ВАЛЕНТИН, ДЖЕЙМІ, УІТНІ, СОЛ, ЧОНГ, ПАРИЖ, ОТА, ЛЕСІ, ДОНГ, АНТОНІЯ, КЕЛЛІ, КЕРОЛ, ШЕЙН, ВАЛ, ДЖУД, БРИТ, ГОНГ, ЛЕГ, ГЕЙЛ, ДЖАЙ, НІКІ, ЛЕСЛІ, ЛЮДИНА, КЕСІ, JEWELL, PATRICIA, LAUREN, ELISHA, MICHAL, LINDSAY і JEWELМАРІЯ, ЧЕНГ, РОСАРІО, ДЕННІ, ФРАНЦ, ТЕНГ, КОННІ, ТОРІ, ЛЮП, ДІ, СОНГ, ЧІ, КВІН, МІН, ТЕО, ЛУ, ЧУНГ, ВАЛЕНТИН, ДЖЕЙМІ, УІТНІ, СОЛ, ЧОНГ, ПАРИЖ, ОТА, ЛЕСІ, ДОНГ, АНТОНІЯ, КЕЛЛІ, КЕРОЛ, ШЕЙН, ВАЛ, ДЖУД, БРІТ, ГОНГ, ЛЕГ, Гейл, Джей, Нікі, Леслі, Людина, Кейсі, ДЖЮВЕЛ, ПАТРІЦІЯ, ЛОРЕН, ЄЛІША, МІХАЛ, ЛІНДЗЕЙ та ДЖІВЕЛМАРІЯ, ЧЕНГ, РОСАРІО, ДЕННІ, ФРАНЦ, ТЕНГ, КОННІ, ТОРІ, ЛЮП, ДІ, СОНГ, ЧІ, КВІН, МІН, ТЕО, ЛУ, ЧУНГ, ВАЛЕНТИН, ДЖЕЙМІ, УІТНІ, СОЛ, ЧОНГ, ПАРИЖ, ОТА, ЛЕСІ, ДОНГ, АНТОНІЯ, КЕЛЛІ, КЕРОЛ, ШЕЙН, ВАЛ, ДЖУД, БРІТ, ГОНГ, ЛЕГ, Гейл, Джей, Нікі, Леслі, Людина, Кейсі, ДЖЮВЕЛ, ПАТРІЦІЯ, ЛОРЕН, ЄЛІША, МІХАЛ, ЛІНДЗЕЙ та ДЖІВЕЛ

це всі імена, які працюють як для чоловіків, так і для жінок. Якщо дівчинку звуть Роберт, і всі, включаючи ваше програмне забезпечення, продовжують називати її чоловіком, вона б дуже розлютилася.


25
Припустимо, що існує дівчина на ім’я Марк (сміливо вказуйте на неї). Якби я був нею, мене б злили на батьків, а не на програмне забезпечення
Часа

6
Що робити, якщо програмне забезпечення ніколи не називає її чоловіком, а представляє "чоловічу" версію інтерфейсу користувача? Або вона стикається з чоловіками в сукупності над набором даних, що використовується для розробки маркетингового забезпечення? Вона може навіть не помітити.
Chris McCall,

Для багатьох із цих імен я отримую 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

Це залежить від культури / регіону: візьміть Андреа, для італійців це лише чоловіче начало, для Швеції - жіноче ім’я, тоді як Андреас - для чоловіків; Шон неоднозначний в англійській мові. Якщо мова має відмінювання, як латинська або російська, останні літери будуть змінюватися відповідно до граматичних правил,

Іншим джерелом неоднозначностей є прізвища, ідентичні особистим іменам.

На мою думку, це взагалі неможливо вирішити.


Якби ОП мала супутню змінну, що вказує на культуру походження, місце народження, національність, що б це не було корисно. Але він сказав, що цього не робить, вам просто потрібно зробити статистично обґрунтовану здогадку на основі сукупностей.
smci

3

Ідея явно не спрацює на більшості мов.

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

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

Те саме можна сказати про імена (-а -я є жіночими), але це не на 100% точно.

Але загалом ви навряд чи отримаєте бібліотеку, яка є досить точною.


як прізвище чоловіче чи жіноче?
Simon_Weaver

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

вона базується на базі даних, таблиця містить щось на зразок 10 000+ імен, я думаю, але вам потрібно завантажити та встановити каталог z (включає багато інших топографічних елементів, таких як країни, географічні орієнтири, аеропорти, штати, коди регіонів, поштові індекси тощо). поряд із функціями та об'єктами c ++ для доступу до даних). Однак імена дуже англомовні. Таблиця - незавершена робота, яка поступово оновлюється.


1

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


1
Ні, але до тих пір, поки це краще, ніж 50%, це поводиться з тим, щоб поводитися з іменами як завжди по-чоловічому.
Час. Оуенс

@ Час, так навіщо чіплятись до цієї помилкової дихотомії? У вас є варіант гендерної нейтральності.
bignose

ми навіть маємо 2 відомих політичних діячів, які мають друге ім'я "Марія" - "Мері", що у вашій базі даних буде класифіковано як жіноче. просто для лолів.
zalew

@JZ Я кажу про ім'я, а не про прізвище (або навпаки для культур, які роблять зворотне).
Час. Owens

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

1

Деякі культури мають унісексні назви - як моя. Що ти тоді робиш? Я думаю, що відповідь є простою та простою - не припускайте - ви можете спричинити образу. Просто запитайте, чи потрібно це, інакше гендерний нейтралітет.


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

Я не погоджуюся - я хочу сказати, що всі імена потенційно неоднозначні.
Preet Sangha

Якщо імена унісексні, тоді всі вони класифікуються як А, і я хотів би дотримуватися гендерної нейтральності, але якщо ім'я переважно чоловіче або жіноче, я можу використовувати набагато більш природну мову.
Час. Оуенс

Я бачу, які ваші міркування, але я посилаюся на останній коментар.
Preet Sangha

3
Але якщо ви бачите "Preet" на StackOverflow, це, мабуть, самець.
Носредна

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

Ви можете поглянути на мій проект виявлення статі пітона https://github.com/muatik/genderizer

Він намагається виявити стать авторів, який шукає їх імена та / або зразки тексту (наприклад, твітів) з них.

І він також підтримує mongodb, запам'ятовується для роботи.


Здається добре, але якщо вам потрібно, щоб це було відомо про "країну походження", див. Gender.c або genderize.io нижче
HaveAGuess

0

Це насправді не проблема програмування - зводиться до отримання таблиці ймовірностей.

AFAIK немає публічних баз даних у дистильованій формі. Ви можете або побудувати це на основі даних перепису, або придбати дані у когось.

Наприклад, це той, хто продає таблицю ймовірностей для Канади .


0

ІМХО, загалом погана ідея визначати стать за іменем особи. Багато імен є інтерсексуальними (добре горе, це навіть слово ?? :-), а також вони можуть бути однією статтю в одній культурі, а іншою в іншій.

Кілька дурних прикладів, лише декілька, які прийшли мені на думку (з моєї частини світу, CE)

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

У деяких частинах світу стать особи можна визначити, подивившись, чим закінчується ім’я. Наприклад, Марія, Сандра, Івана, Петра, Сара, Люція, Ана - ви бачите, що більшість із цих жіночих імен закінчуються на "ja" або "ra". Є й інші приклади.

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


9
"Тим не менш, я думаю, що краще просто попросити користувача про секс". - Я згоден, це було б набагато краще, ніж розміщення коментарів на Stack Overflow.
Програміст для Windows

2
Ups. Окей, це вийшло не так :-)
Грак

Це було краще перед редагуванням :-)
Програміст Windows


0

Я не знаю такої послуги. Однак ви можете знайти дані, які шукаєте. Уряд США публікує дані про поширеність імен та стать особи, до якої вони прив'язані. У адміністрації соціального забезпечення є така сторінка , і перепис населення теж може, але я не знайшов час, щоб подивитися. Можливо, інші уряди світу роблять подібні речі.


0

Однак я не знаю такої послуги.

У деяких країнах (наприклад, Німеччина) ім'я, яке може бути дано людині, обмежене законодавством - можливо, є деякі публікації, що стосуються цього питання, і які можна зібрати (але я наразі не знаю таких).


0

Що б я зробив, це зробити хак, який бере ім'я та шукає його на facebook api. Потім дивиться на отриманих користувачів і підраховує, скільки з них - жінки чи чоловіки. Потім ви можете повернути відсоток. Вже не такий нездоланний. :)


-2

Просто запитайте людей, і якщо вони добрі, вони дадуть вам свої "M" або "F", а якщо ні, то дайте їм "A".


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