根据中文姓名猜测其性别
1.安装方法
pip install ngender
2.使用方法
1.在命令行使用
$ ng 赵本山 宋丹丹
name: 赵本山 => gender: male, probability: 0.9836229687547046
name: 宋丹丹 => gender: female, probability: 0.9759486128949907
2.在Python程序种使用
>>> import ngender
>>> ngender.guess('赵本山')
('male', 0.9836229687547046)
>>> ngender.guess('宋丹丹')
('female', 0.9759486128949907)
>>> %timeit guess('宋丹丹')
100000 loops, best of 3: 4.01 µs per loop
3.算法原理
数学原理:
贝叶斯公式:
P(Y|X) = P(X|Y) * P(Y) / P(X)
具体应用:
P(gender=男|name=本山)
= P(name=本山|gender=男) * P(gender=男) / P(name=本山)
= P(name has 本|gender=男) * P(name has 山|gender=男) * P(gender=男) / P(name=本山)
4.一个比较坑的地方
ngender.guess('李胜男')
('male', 0.851334658742)
虽然两个字都很偏男性,但是结合起来就是女性名