Как отделить написанные латиницей мужские имена от женских?
Как разделить мужские имена от женских написанные на латинском алфавите? Пример:
names =
["Sasha","Alice","Valeriy","Jenny","Fedya","Viola","Mark","Chris","Margo"]
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Ну вот я нагуглил за 10 секунд такой пакет для питона, возможно, вам этого будет достаточно:
# pip install gender-guesser
import gender_guesser.detector as gender
d = gender.Detector()
names = ["Sasha","Alice","Valeriy","Jenny","Fedya","Viola","Mark","Chris","Margo"]
for name in names:
print(f'{name}: {d.get_gender(name)}')
Вывод:
Sasha: mostly_male
Alice: female
Valeriy: male
Jenny: female
Fedya: unknown
Viola: female
Mark: male
Chris: mostly_male
Margo: female
Автор решения: Arty
→ Ссылка
Воспользуемся бесплатным сервисом genderize.io распознавания пола по имени, также установим requests через python -m pip install requests.
import requests
def detect_gender(name):
return requests.get('https://api.genderize.io', params = {'name': name}).json()
names = ["Sasha","Alice","Valeriy","Jenny","Fedya","Viola","Mark","Chris","Margo"]
for name in names:
res = detect_gender(name)
print(name, ',', res['gender'], res)
Вывод:
Sasha , male {'name': 'Sasha', 'gender': 'male', 'probability': 0.51, 'count': 13219}
Alice , female {'name': 'Alice', 'gender': 'female', 'probability': 0.98, 'count': 68971}
Valeriy , male {'name': 'Valeriy', 'gender': 'male', 'probability': 0.98, 'count': 1155}
Jenny , female {'name': 'Jenny', 'gender': 'female', 'probability': 0.98, 'count': 74278}
Fedya , male {'name': 'Fedya', 'gender': 'male', 'probability': 0.91, 'count': 155}
Viola , female {'name': 'Viola', 'gender': 'female', 'probability': 0.99, 'count': 29324}
Mark , male {'name': 'Mark', 'gender': 'male', 'probability': 0.99, 'count': 119313}
Chris , male {'name': 'Chris', 'gender': 'male', 'probability': 0.9, 'count': 156083}
Margo , female {'name': 'Margo', 'gender': 'female', 'probability': 0.95, 'count': 3485}
Также можно за один раз запросить до 10 имён, как сделано в коде ниже, чтобы снизить задержки от сервера и нагрузку.
import requests
def detect_gender(names):
return requests.get('https://api.genderize.io',
params = tuple(('name[]', n) for n in names)).json()
names = ["Sasha","Alice","Valeriy","Jenny","Fedya","Viola","Mark","Chris","Margo"]
for i in range(0, len(names), 10):
ns = names[i : i + 10]
for name, res in zip(ns, detect_gender(ns)):
print(name, ',', res['gender'], res)
Вывод тот же, что и в предыдущем коде.
PS. genderize.io бесплатно предоставляет квоту до 1000 запрошенных имён в день, думаю больше лимит доступен после регистрации, и если очень много надо, то только платно.