我正试图找到一种方法来做两个动作: 1)从名称中检索性别 2)从用户名中检索性别(类似于前一个但不同)
我回顾了一些方法1)(包括:Does anyone know of a good library for mapping a person's name to his or her gender?),并且可能会这样做,但我有一个问题要做第二个:
假设我有一本字典,其中包含所有分为女性或男性的名字。现在我想拿一个用户名并尝试查看用户名是否包含其中一个名称(因为用户名可以包含的不仅仅是名字本身) - 最好的方法是什么?查看所有dict键并逐个用户名查找它们似乎效率不高......必须有一个优化的方法......
希望我能清楚地解释自己,非常感谢任何帮助!!
答案 0 :(得分:0)
字典仅在用户名(或名称)完全匹配的情况下才有用。最好使用一个简单的列表:
确保girl_names
和boy_names
中包含的姓名完全针对性别。 (例如,本不会工作,因为男人和女人都可以去Ben。)同时确保这些名单没有任何重复的部分名称,例如。 “Al”和“Albert”。
girl_names
=一大堆可能仅限女性的名字,都是小写的。
boy_names
=大量可能仅限男性的名字,均为小写。
user_name
=您正在查找的用户名。
def name_gender(user_name, boy_names=None, girl_names=None):
uname = user_name.lower()
girliness = 0
for girl_name in girl_names:
if girl_name in uname:
girliness += 1
boyishness = 0
for boy_name in boy_names:
if boy_name in uname:
boyishness += 1
if boyishness > girlishness: return 'Male'
if girlishness > boyishness: return 'Female'
return 'Androgynous'
此功能只是实际用户名性别的松散代理。可以从各种网站获得常用名称列表,也可以从人口普查信息中获取。