PHP根据姓名分析男女性别(Python转PHP)

MySQL数据库从零到实战:安装配置、SQL核心语法与Python/Java连接指南 最近在帮团队新人搭建开发环境时,发现很多同学卡在了数据库配置这一步,尤其是 MySQL 的安装、连接和基础操作,网上教程要么版本过时,要么步骤不全,导致反复踩坑。本文将从零开始,手把手带你完成 MySQL 的安装、配置、基础操作到核心概念理解,并提供完整的代码示例和避坑指南。无论你是刚接触数据库的学生,还是需要快速上手 MySQL 进行项目开发的工程师,都能从本文获得一套可直接复用的实战方案。 1. MySQL 核心概念与背景 1.1 什么是 MySQL? MySQL 是一个开源的关系型数据库管理系统(RD 阅读详情

PHP根据姓名分析男女性别
参考:https://github.com/observerss/ngender
统计数据下载:https://download.youkuaiyun.com/download/webben/11253847


$name = $argv[1];
$gender = new Gender();
$ret = $gender->guess( $name);
echo $name."\t".$ret[0]."\t".$ret[1];

class Gender
{
    /**
     * @var int 样本总数
     */
    protected $total = 0;

    /**
     * @var int 男性
     */
    protected $male_total = 0;

    /**
     * @var int 女性
     */
    protected $female_total = 0;

    /**
     * @var array 比例
     */
    protected $freq = array();

    protected $sample = './charfreq.csv';

    public function __construct()
    {
        $this->load_model();
    }

    public function guess( $name)
    {
        $name = $this->name_to_array( $this->to_utf8( $name));
        array_shift( $name);
        foreach( $name as $val)
        {
            if( !$this->is_chinese( $val)) {
                throw new Exception('名字必须是中文');
            }
        }
        $pf = $this->prob_for_gender( $name, 0);
        $pm = $this->prob_for_gender( $name, 1);
        if( $pm > $pf){
            return array( 'male', $pm/( $pm+$pf));
        }elseif( $pm < $pf){
            return array( 'female', $pf/( $pm+$pf));
        }
        return array( 'unknown', 0);
    }

    protected function prob_for_gender( $name, $gender = 0)
    {
        $p = ( $gender == 0)
            ? $this->female_total  / $this->total
            : $this->male_total  / $this->total;
        foreach( $name as $val)
        {
            $p *= $this->freq[$val][$gender];
        }
        return $p;
    }

    protected function is_chinese( $name)
    {
        return preg_match('/^[\x{4e00}-\x{9fa5}]+$/u', $name) === 1;
    }

    protected function name_to_array( $name)
    {
        preg_match_all("/./u", $name, $matches);
        return $matches[0];
    }

    protected function load_model()
    {
    	if( !file_exists( $this->sample)) throw new Exception('样本数据不存在,请下载:https://download.youkuaiyun.com/download/webben/11253847');
        $fp = fopen( $this->sample, 'r');
        fgetcsv( $fp);
        while( ($line = fgets( $fp)) !== false)
        {
            $line = trim( $line);
            list( $char, $male, $female) = explode(',', $line);
            $char = $this->to_utf8( $char);
            $this->male_total += $male;
            $this->female_total += $female;
            $this->freq[$char] = array( $female, $male);
        }
        $this->total = $this->male_total + $this->female_total;
        foreach( $this->freq as $char => $val)
        {
            list( $female, $male) = $val;
            $this->freq[ $char] = array( $female/$this->female_total,
                $male / $this->male_total);
        }
    }

    protected function to_utf8( $name)
    {
        return $name;
    }
}

NGender

根据中文姓名猜测其性别

  • 不到20行纯Python代码(核心部分)
  • 无任何依赖库
  • 82%的准确率
  • 可用于猜测性别
  • 也可用于判断名字的男性化/女性化程度

使用

然后在命令行中

$ ng 赵本山 宋丹丹
name: 赵本山 => gender: male, probability: 0.9836229687547046
name: 宋丹丹 => gender: female, probability: 0.9759486128949907

当然也可以在Python程序中用

php ngender.php 赵本山
('male', 0.9836229687547046)

php ngender.php 宋丹丹
('female', 0.9759486128949907)

原理

数学

贝叶斯公式: P(Y|X) = P(X|Y) * P(Y) / P(X)

当X条件独立时, P(X|Y) = P(X1|Y) * P(X2|Y) * ...

应用到猜名字上

P(gender=男|name=本山) 
= P(name=本山|gender=男) * P(gender=男) / P(name=本山)
= P(name has 本|gender=男) * P(name has 山|gender=男) * P(gender=男) / P(name=本山)

计算

  1. 文件charfreq.csv是怎么来的?

    曾经有个东西叫开房记录.avi(雾),里面有名字和性别, 2000w条, 统计一下得出

  2. 怎么算 P(name has 本|gender=男)?

    “本”在男性名字中出现的次数 / 男性字出现的总次数

  3. 怎么算 P(gender=男)?

    男性名出现的次数 / 总次数

  4. 怎么算 P(name=本山)?

    不用算, 在算概率的时候会互相约去

坑

php ngender.php 李胜男
('male', 0.851334658742)

虽然两个字都很偏男性,但是结合起来就是女性名

Codex入门10-Goal自主任务(进阶必学:设定目标就不管了,AI自己干活到完成) /goal 是Codex CLI最强大的进阶功能——设定一个目标,AI就会制定计划、分步执行、自我测试、持续迭代,即使你关掉终端也会继续。本文详解/goal的工作原理、配置启用方法、常用命令(pause/resume/status/clear),以及如何写出高质量的目标描述让AI高效自主完成任务。 阅读详情

相关推荐

使用OpenTK展示3D点云图像(C#)

图中存在一个空的点,可通过阈值分割过滤掉,然后如何保证某个点必然存在后面两个和它构成三角形的点,用一个2x2的结构元腐蚀阈值分割出的区域,得到剩下所有的点必然每个点可以构成三角形,这种得到三角形的算法效率会非常高。然后还有光照,无光照和有光照效果差异很大,处理光照核心在于得到每个点的法向量,用上面的三角形的两条边构成的向量叉乘,及得到这个点的法向量,输入给着色器处理得到光照的渲染效果,如下面两张图对比。我们需要把点连成面,有很多算法可以实现,但我拿到的图为一张tif格式16位的深度图,如下图。

海盗Isaac 2283

PHP 根据身份证号码,获取性别、获取生日、计算年龄、获取地址、获取生肖、获取星座、以及判断是否是身份证号(方法教程)...

1、PHP根据身份证号码,获取性别。 2、PHP根据身份证号码,获取生日。 3、PHP根据身份证号码,计算年龄。 4、PHP根据身份证号码,获取地址。 5、PHP判断字符串,是不是身份证号码。 6、PHP根据身份证号码,获取生肖。 7、PHP根据身份证号码,获取星座。 <?php /** * 根...

weixin_33704234的博客 1374

杭电oj2023题题目详解(Java版)

杭电oj2023题详解

m0_51065958的博客 977

起名算法 php,取名测试打分

很多朋友在给宝宝起名字时,都希望给宝宝起一个得分高的名字,那么什么样的名字才算是高手好名字呢,如何起一个得分高的好名字呢,在此取名网姓名测试打分系统为大家介绍打分测名原理以及如何起一个100分的好名字。起名字测试打分100分测名原理其实这打分系统是有很多学问的,现在取名网林老师先来给大家介绍一下网上常见的起名字测试打分系统,常见名字测试打分程序具体如下:1、三才五格姓名学测试打分系统三才五格姓中学...

weixin_29373959的博客 3579

从SD更新字库到FLASH,再用LCD显示

用Flash当字库存储载体。思路是先将要用到的字库文件存在SD卡,然后存储到Flash,LCD显示时候从Flash中读取 还挺顺利的,移植的原子的程序,自己稍加修改,主要是我的液晶屏函数,Flash读写函数,还有存储文件的flash地址不一样。一晚上搞定,大小字体都OK。挺高兴哈哈。这几天忙工作事情有点耽搁了学习进展嘿嘿 在text.c的showstr函数中char的字体颜色随意设置的,可以显...

weixin_30505751的博客 914

MagicDraw-需求图

MagicDraw学习笔记

木头征的博客 4135

PHP中一个好玩的性别判断扩展

今天我们来学习的一个扩展同时它也是非常小众的一个扩展,其实说白了,或许是根本没什么人用过得扩展。当然,我们也只是出于学习的目的来看看这个扩展到底是什么东西,有什么好玩的地方。 扩展说明 Gender 扩展从名称就可以看出,它是一个关于性别的扩展,这个扩展可以根据传递给它的用户姓名以及用户所在的地区国度来返回性别情况,是不是非常有意思。这个扩展直接在 PECL 网站进行下载安装即可,没有什么别的特殊的要求。 Gender 扩展是根据 Joerg Michael 这位大神所写得 gender.c 这个函数

chinaherolts2008的博客 220

CANoe: Panel的上位机控制方法

本文介绍了不同于IG的报文控制方法,实现了Panel面板的控制模式。

Jonsnow3zz的博客 1407

【零基础学习PHP】PHP的数据类型——数据类型

代码中“ . ”是字符串连接符,“”是换行标签,“echo”是PHP的输出语句。常用的输出语句还有var_dump()和print_r()函数。,即:integer(整型)、float/double(浮点型)、string(字符串型)、boolean(布尔型);字符串就是连续的字符序列,可以是计算机所能表示的一切字符的集合。,即:array(数组)、object(对象);,即:resource(资源)、NULL(空);PHP一共支持8种原始数据类型,其中包括。三种书写方法输出圆周率的近似值。

qq_39910560的博客 418

Cadence Virtuoso Layout 版图绘制

画好原理图,打好pin脚(pin最好以全大写的形式书写,以防后续操作中可能出现Bug) 查看所使用工艺库的design rule文件,确定栅格单位设置大小 在准备绘制的原理图界面启动layout XL/GXL 在layout界面按e,设置网格大小与design rule匹配 直接根据原理图生成版图 根据原理图连接关系显示版图中未连接的飞线 查看和更改原理图与版图中器件对应的链接关系 shift + f:显示器件版图细节 版图的构成:元器件(工艺厂商提供)、器件连接、阱连接、IO和PAD模拟电路

bobo_supper的博客 2万+

华东师范大学2020机试题解

1.统计卡牌的值 #include<iostream> #include<string> #include<vector> //#include<algorithm> using namespace std; int main() { int n; cin>>n; int answer=0; for(int i=0;i<n;++i) { string str; ci

qq_42254342的博客 1901

姓名评分程序PHP,php测试姓名缘分指数

首先,创建一个html页面代码如下:测测你们的缘分指数姓名1姓名2然后,做一个接收数据页面header('content-type:text/html;charset=utf8 ');$uname1=md5($_POST['uname1']);$uname2=md5($_POST['uname2']);//echo $uname1.'/'.$uname2;die;$length=strlen($u...

weixin_28826961的博客 624

[系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向

娜璋AI安全之家于2020年8月18日开通,将专注于Python和安全技术,主要分享Web渗透、系统安全、CVE复现、威胁情报分析、人工智能、大数据分析、恶意代码检测等文章。真心想把自己近十年的所学所做所感分享出来,与大家一起进步。 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。第一篇文章先带领大家学习什么是逆向分析,然后详细讲解逆向分析的典型应用,接着通过OllyDbg工具逆向分析经典的游戏扫雷,再通过Cheat Engin

杨秀璋的专栏 2万+

python根据参数判断性别准吗_机器读中文:根据名字判断性别

本文封面来自网络,文章内容原创,只允许在bilibili和知乎以及本人博客(www.weathon.top/blog)发布(后续可能扩大发布范围,以本人博客为准),且在哔哩哔哩首发。(本文是我编写代码编记录的,思路是根据我写代码的思路来的)之前无意间看到了一个Python库,可以判断姓名的性别,感觉非常有趣,想看看到底是怎么做到的,结果在查找资料的时候看到了一个比赛:http://sofasofa...

weixin_39974557的博客 357

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

100%教会你python爬取微信好友男女性别比例和地区分布

Python爬虫人工智能教程:www.python88.cn 本文主要讲爬取微信好友性别比例和地区分布,后面还会讲如何爬取好友其他信息,代码已上传到QQ群(627714866) 源码获取: 点击下方获取源码在论坛获取: >>获取源码 链接:http://www.bat666.cn/forum.php?mod=viewthread&tid=436&e...

QQ_2296622142的博客 5213

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

php 分班算法,完美起航-基于python实现的中小学随机化分班算法(思路、实现、代码以及打包好的可执行文件)...

0. 请勿转作商用!有问题可以添加QQ4705852261. 代码运行情况*****************************************************代码会自动分配所有学生到每个班,并自动生成每个班级的表格1. 每个班级男女生数量尽可能平均2. 每个班级每个分段人数尽可能相等3. 每个班级之间的所有科目平均分尽可能相近4. 允许对每个人预设班级* 分班采用随机算法,每...

weixin_30193461的博客 1134

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

php分班算法,基于 python 实现的中小学随机化分班算法(思路、实现、代码以及打包好的可执行文件)...

0. 请勿转作商用!有问题可以添加QQ4705852261. 代码运行情况*****************************************************代码会自动分配所有学生到每个班,并自动生成每个班级的表格1. 每个班级男女生数量尽可能平均2. 每个班级每个分段人数尽可能相等3. 每个班级之间的所有科目平均分尽可能相近4. 允许对每个人预设班级* 分班采用随机算法,每...

weixin_42520661的博客 1062

基于python+大数据的python职位数据分析系统

Java领域优质创作者🏆、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。

2301_79727522的博客 965

生成假人配对

生成假人配对 1.随机设置假人的姓名、性别(2代表男生,3代表女生)、城市、薪水。采用split+通过random函数实现 2.采用循环了1000个假人,生成采用了列表嵌套字典及列表中存放了1000条字典数据 4.通过双重循环随机配对,配对成功即break(破出循环),其它复杂情况留着以后玩 5.在配对过程中要注意男-女配对的问题,将(1-sex)即可得到需要的另外一个性别 6.格式化输出配对成功的假人 7.输出配对成功的人数 步奏如下 ...

BlushZxx的博客 424

基于Python学生管理系统设计与实现

本文设计并实现了一个基于多技术栈的教育管理系统,采用Python技术开发,包含管理员、教师和学生三大角色。系统采用MySQL数据库,通过E-R图设计了学生成绩、教师信息等核心数据实体。功能模块包括:1)登录注册模块采用MD5加密;2)管理员模块实现用户管理、成绩统计可视化等功能;3)教师模块支持在线测试管理;4)学生模块提供成绩查询等。系统支持数据可视化分析,并配套提供从开发到答辩的全流程服务。整体设计贴近实际教学需求,实现了教育管理的信息化与智能化。

weixin_43860351的博客 1346

nodejs基于微信小程序+python+PHP的勤工俭学系统-计算机毕业设计

本文从需求分析、系统设计、系统实现和系统测试方面进行阐述。系统的开发,帮助管理员有效的对求职招聘信息进行管理,提高了求职招聘的发展效率。最后对勤工俭学微信小程序进行测试,查看系统的功能、负载能力和系统的兼容性,结果表明本系统符合实际要求,完成了即定要求。

QQ_1963288475的博客 107

nodejs微信小程序+python+PHP的勤工俭学系统-计算机毕业设计推荐

提高了求职招聘的发展效率。最后对勤工俭学微信小程序进行测试,查看系统的功能、负载能力和系统的兼容性,结果表明本系统符合实际要求,完成了即定要求。

QQ1963288475的博客 417

nodejs+vue+微信小程序+python+PHP的勤工俭学系统-计算机毕业设计推荐

勤工俭学微信小程序进行整合,梳理业务流程,建立模块组织,实现系统功能。同时设计系统架构和网络拓扑结构,根据勤工俭学微信小程序的功能搭建数据库模型,由此设计数据库架构。

QQ511008285的博客 98

基于Python与Django的人事管理系统设计与实现全流程指南

Web应用开发中,如何从零构建一个完整可用的业务系统?掌握Python主流框架与数据库建模是核心能力。Django作为高生产力Web框架,依托MTV架构与ORM机制,能高效实现用户认证、数据关联和权限控制等复杂功能。在管理类场景中,人事管理系统涵盖员工档案、部门管理、考勤薪资等典型业务模块,十分适合作为工程实践项目。本文以该系统的设计实现为例,详细拆解功能模块划分、数据表规划、后端逻辑开发、页面渲染、数据导出及远程调试等关键环节,并给出答辩高频问题与部署踩坑记录,帮助开发者快速打通从理论到实战的完整链路。

weixin_32183107的博客 250

MySQL从入门到精通:实战指南与核心技能全解析

这次我们来看 MySQL 从零基础到精通的完整学习路径。对于任何想进入后端开发、数据分析或系统运维领域的人来说,MySQL 都是必须掌握的核心技能。它不仅是世界上最流行的开源关系型数据库,更是无数 Web 应用、企业系统和数据平台的基石。这篇文章的重点不是空谈概念,而是提供一套可执行、可验证的实战指南,让你知道从安装配置到高级优化,每一步该怎么走,会遇到什么问题,以及如何解决。 本文将带你快速搭建 MySQL 环境,掌握核心的数据库操作命令,理解事务、索引、锁等高级概念,并最终能够进行性能调优和复杂查询设计

weixin_33841722的博客 517

CnOpenData 线上招聘网站信息数据

CnOpenData线上招聘网站信息数据库是一个覆盖中国主流招聘平台、时间跨度长、更新频率高的劳动力市场需求侧大数据集合。本数据库汇集了,为学术界和业界提供了一扇实时观察中国劳动力市场动态的窗口。

CnOpenData_wj的博客 2602
上一篇: 抓取脚本
下一篇: 微信朋友圈长图居中展示。
Webben
博客等级 码龄10年 19粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值