一种轻量级的中文人名性别分类器
namesex-light的Python项目详细描述
名称x光
nameex_light是一个lighweight软件包,可以预测中文名字的性别倾向。本单元提供了一个基于10730个中文名字(繁体中文)的二语正规logistic回归训练,从公共数据中收集可靠的性别标签。函数的作用是:获取一个名字列表,并输出预测的性别倾向(1代表男性,0代表女性)或成为男性名字的概率。nameex_light有一个姊妹项目nameex,它以更高的精度执行类似的任务。
有关nameex和nameex_light的其他信息可以在in another document (in Chinese)中找到。
通过十倍交叉验证评估的预测性能为:
Metric | Performance | Performance Std. Dev. |
Accuracy | 0.8957 | 0.007327 |
F1 | 0.8920 | 0.007873 |
Precision | 0.8852 | 0.012238 |
Recall | 0.8991 | 0.008936 |
Logloss | 114.35 | 6.413972 |
使用pip/pip3安装namexu light.:
pip install namesex_light
要使用nameex_light,请传入要预测的给定名称的数组或列表()。对于输入列表中的每个元素,predict()对于男性或女性预测返回1或0。设置“predprob=true”返回成为男性姓名的概率。下面是一个简单的示例代码。
>>> import namesex_light >>> nsl = namesex_light.namesex_light() >>> nsl.predict(['民豪', '愛麗', '志明']) array([1, 0, 1]) >>> nsl.predict(['民豪', '愛麗', '志明'], predprob=True) array([0.99968932, 0.00530066, 0.9938986 ])
注意nameex_light只使用中文名字训练。但是,它也可以用于对翻译后的名称进行分类:
>>> nsl.predict(['阿波羅', '阿波羅', '雷', '艾美', '布蘭妮', '阿曼達']) array([1, 1, 1, 0, 0, 1])
此模块用于快速即插即用。不包括原始训练数据集。
测试数据集
这个包附带了一个小的测试数据集,它不用于模型培训。下面的示例代码演示了一个简单的用法。
>>> testdata = namesex_light.testdata() >>> nsl = namesex_light.namesex_light() >>> pred = nsl.predict(testdata.gname) >>> print("The first 5 given names are: {}".format(testdata.gname[0:5])) The first 5 given names are: ['翊如', '妤庭', '諆璋', '大閎', '和維'] >>> print(" and their sex: {}".format(testdata.sex[0:5])) and their sex: [0, 0, 1, 1, 1] >>> print(" and their predicted sex:{}".format(pred[0:5])) and their predicted sex:[0 0 1 1 1] >>> accuracy = np.sum(pred == testdata.sex) / len(pred) >>> print(" Prediction accuracy = {}".format(accuracy)) Prediction accuracy = 0.8627450980392157
请注意,与十倍交叉评估的准确性相比,其准确性略低。我想这是正常的,因为这个测试集是从不同于训练数据集的源收集的。