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

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将Scanner对象作为构造函数参数传递给UserInterface类   spring未能启动bean“subtocolWebSocketHandler”;嵌套的例外是java。lang.IllegalArgumentException:没有处理程序   Java EE应用程序中后台服务的多线程Java线程(设置守护进程和优先级)?   java Pull to refresh返回列表的第一个位置   无法将comparator类转换为java。可比的   java将json从servlet传递到dojo   JavaHibernate:将子类实例转换为超类实例   java警告调用servlet类时非法反射访问   java静态变量值   java@Entity和@embeddeble之间有什么区别   java将作业配置导入公共作业配置类(注释配置)   sql公共表表达式(以values语句开头)在java中给出错误   java在ImageJ中使用ImageProcessor   java PostgreSQL executeBatch()会随着时间的推移而变慢   java在安卓中以表格形式排列sqllite表数据?   java中SVG的swing定制呈现   java删除与另一个实体映射的实体   java何时/如何添加ListView适配器,使用back按钮恢复它?(片段)   java为什么IBinder和Binder之间的类型转换不是非法的?   java在方法参数列表中使用ArrayList或List