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

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 Sabre SOAP调用   java将Log4J方面文件重构为共享项目   将Java字符串数组设置为Int   javascript为JSON创建临时Java对象   mysql[Java]插入SQL时出错,在表userId中自动递增   java在创建JSONObject实例时遇到了一个问题   java将对象传递到类中,它们只是对原始对象的引用吗?   java从一个表中减去金额之和,再从另一个表中减去金额之和   Java中整数之间的数学除法   当对象可以以多种方式使用时,java结构化接口   regex如何在Java中使用正则表达式从这个字符串中提取数字?   java从本地网络连接到Red5服务器   java无法使用Google Places API检索位置的图像   使用Apache POI 4.1.1从excel文件读取值时出现java错误   java Maven部署到Tomcat   正则表达式Java与正则表达式Javascript   java如何使用css样式将颜色应用于线条元素,直到指定的偏移宽度?   java为什么是比较器。比较不适用于String::toLowerCase方法引用?