一种轻量级的中文人名性别分类器

namesex-light的Python项目详细描述


名称x光

nameex_light是一个lighweight软件包,可以预测中文名字的性别倾向。本单元提供了一个基于10730个中文名字(繁体中文)的二语正规logistic回归训练,从公共数据中收集可靠的性别标签。函数的作用是:获取一个名字列表,并输出预测的性别倾向(1代表男性,0代表女性)或成为男性名字的概率。nameex_light有一个姊妹项目nameex,它以更高的精度执行类似的任务。

有关nameex和nameex_light的其他信息可以在in another document (in Chinese)中找到。

通过十倍交叉验证评估的预测性能为:

MetricPerformancePerformance Std. Dev.
Accuracy0.89570.007327
F10.89200.007873
Precision0.88520.012238
Recall0.89910.008936
Logloss114.356.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

请注意,与十倍交叉评估的准确性相比,其准确性略低。我想这是正常的,因为这个测试集是从不同于训练数据集的源收集的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从Struts操作的钩子更改表单值(Liferay 6.2)   java如何改变Spring MVC处理url“点”字符的行为   Clojure中使用Java接口的问题   junit如何模拟comosDB azure java集成客户端?   运行函数时发生java错误   netbeans Java。jar文件和依赖项   Eclipse中文本字段中的java输入类型   在JAVA中,将集合变量从实时批处理运行时传递到调用批处理文件   java通过Bean验证API中的自定义消息管理异常   XML到json的转换,在Java中,同时保留数据类型   根据JAVA中的列名从Excel文件中获取单元格值   在AsyncTask的doInBackground中未调用java FirebaseMessagingService   java如何在数据库中插入一行?