通常情况下,我们可以根据一个人的姓名大致猜测出其性别,这并不是什么难事,正确率应该很高。你想过没有,使用程序可以实现相同的效果,准确率甚至可能比人还要高。
ngender 是一个python的第三方库,它采用贝叶斯公式,根据姓名来判断性别,如果你对贝叶斯公式还不了解,这里做一个简单介绍,公式如下:
P(Y|X) 的解释是已知X发生后Y的条件概率,P(Y) 的解释是Y的先验概率,咱们以P(gender=男|name=本山) 为例,它表示名字为本山时,性别是男性的概率,根据公式:
P(gender=男) 是样本中男性的概率,这个很容易计算,假设样本是100个,有50个男性,那么这个概率就是0.5
P(name=本山) 是样本中名字叫本山的概率,假设样本数量是100,只有一个人的名字叫本山,那么这个概率就是0.01
接下来要计算P(name=本山|gender=男), 在男性中,名字是本山的概率。当X独立时,P(X|Y) = P(X1|Y) * P(X2|Y) * ... 因此
现在,你需要的是一个很大的样本,包含很多人的姓名和性别信息,这个库的作者使用的是早年间黑客之间流传的宾馆开房记录,这是公民隐私信息,建议你不要去下载和传播,知晓其计算原理就好了。
贝叶斯公式虽然简单,但对于我们这种数学能力平平的人来说,理解起来还是有些困难,如果你感觉费力,不如跳过,直接使用,没必要自己去琢磨
文章转载自coolpython,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




