看程序员奶爸是如何通过代码给宝宝起名的~

谨以此献给天下所有的新手奶爸们,祝各位父亲节快乐。同时也祝愿我家刚出生的小公主能够健康快乐的成长~

PS:还没宝宝的准奶爸们,先Star,以后用的到。: )

使用说明

  • 首先克隆项目到本地:git clone https://github.com/callmefeifei/baby-names.git

  • 安装以下依赖库.

sudo pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com -r docs/requirements.txt

  • 在Python2.x环境运行

  • 参数配置

需根据各家情况,配置宝宝性别、生辰八字、出生地等信息.
在这里插入图片描述

  • 运行界面

完成上述配置后, 执行以下命令即可: python generate_names.py
在这里插入图片描述

  • 输出结果

运行完毕或运行一段时间后,可以打开csv结果文件(默认在results/baby_names.csv),由大到小排序最后一列总分、然后按照需要由少到多排序重名数、笔划数,从中选出你认为不错的、有寓意的名字。
在这里插入图片描述


* 关于起名 *

写此代码的缘由,一方面是由于自家宝宝马上要出生啦(发文时宝宝刚好已经出生一周),同时身边也有几个朋友的宝宝都扎堆要一起出生,当新生宝宝出生后,大人们为宝宝要做的第一件重要的事,想必便是起一个好听的、有寓意的名字了。然鹅问了下身边有宝宝将要出生的,都还没起名字,于是乎,对于程序员奶爸的我来说,能有机会写个程序来做个助攻,那必然是不能闲着的啊,由此有了此文。

每个家庭给孩子取名字的思路是不一样的,有的会选择使用最传统的起名大法从名著中查找,口诀 “文论语,武周易;女诗经,男楚辞”,历史上很多名人的姓名确实也很多出自于此,比如诺奖得主屠呦呦,见《诗经·小雅》:“呦呦鹿鸣,食野之蒿”。这个不在接下来写代码时的考虑范畴,就不多讲啦。

有的老一辈也讲究查看宝宝生辰八字,会建议宝爸宝妈根据新生儿的生辰八字、生肖属相找人去算一下宝宝的五行、命格,并根据五行强弱在名字上做文章弥补,比如有的人五行缺木,则会在名字中选一个带木字偏旁的。对于现在这些接受过现代化科学教育的朋友们来说,这种封建迷信大多人还是持怀疑态度的,but,正所谓宁可信其有,不可信其无,笔者的父母比较信这个的,所以在接下来的代码实现里,也还是加入了生辰八字相关因素,毕竟能够起到即好听、又有寓意、又能够贴合八字评分的,大家都满意,何乐而不为呢?

* 需求分析 *

我们都知道,程序的诞生,一定是由用户需求来驱动的,有了需求才能明确方向。于是乎我先去问了下家里的产品经理(老婆和家人)对于小孩名字有啥要求,然后收集到答复(需求)如下:

  • 名字要好听;
  • 名字不要烂大街(重名不要太多);
  • 名字尽量不要太难写,笔划适当;
  • 最好能够贴合生辰属相、五行八字;
  • 评测网站上打分不要太低;

* 实现过程 *

需求明确了,那么就开动去一个个实现吧。

1、名字好听

选择好听的名字前,首先我们要有名字字典列表去选择,本着能不造轮子就不造轮子的优秀思想(懒…),这里我直接在万能的Github上找到了其他同学写的起名代码及名字字典进行改造(见LICENSE),这里原作者整理了男、女宝宝常用的汉字字典,见dicts/boys_double.txt、dicts/boys_single.txt、dicts/girls_double.txt、dicts/girls_single.txt, 分别对应男孩双字字典、男孩单字字典、女孩双字字典、女孩单字字典。

然后通过用户性别设置,选择对应的字典文件,导入双字字典的同时,递归遍历单字字典,生成更多的对应性别姓名库。经过匹配组合后,即可生成一批姓名列表供筛选出好听的姓名啦。这块主要知识点是程序对文件的读取、递归遍历单字字典生成所有双字姓名 这块没太多好说的,直接看get_all_names方法即可.

2、不能重名太多

有了姓名列表了,如何查看每个姓名的大致重名情况呢?我们其实在各地官方都能找到查看重名的入口,如,

上海 : https://shanghaicity.openservice.kankanews.com/citizen-html/index.html
在这里插入图片描述

河南 : http://bsdt.henanga.gov.cn/MainPages/ChaXunZhongXin/SameNameQuery
在这里插入图片描述

人人网 : 考虑到后边查询的姓名库较多,为了不被封且不对官方系统产生压力,最终选用了人人网的接口来获取重名参考数据**
在这里插入图片描述

重名这部分代码主要基于人人网来进行分析,这里知识点主要是对BeautifulSoup、re正则的使用, 通过获取指定姓名的查询结果,使用BeautifulSoup提取所需元素的对应信息,使用正则匹配具体数字即可.

# 查看重名(通过人人网)
def check_duplicate_names(self, name):if self.is_check_duplicate_name:url = "http://name.renren.com/tongMing/search"params = {}params["q"] = nameparams["cx"] = "014540359382904656588:9tf8clwp-ki"params["ie"] = "UTF-8"try:resp = requests.post(url=url, data=params, headers=self.headers, timeout=10, allow_redirects=False)if resp.status_code == 301:next_url = resp.__dict__['headers']['location']body = requests.get(url=next_url, headers=self.headers, timeout=10).content# 解析同名数量soup = BeautifulSoup(body, 'html.parser')duplicate_result = soup.find_all("p", class_="search_tip")if duplicate_result:for node in duplicate_result:node_cont = node.get_text()names_total = node.find_all("font")[1].get_text()girls_total = node.find_all("font")[2].get_text()boys_total = node.find_all("font")[3].get_text()else:names_total = "0人" girls_total = "女生0.00%"boys_total = "男生0.00%"else:names_total = "0人" girls_total = "女生0.00%"boys_total = "男生0.00%"except Exception as err:names_total = "0人" girls_total = "女生0.00%"boys_total = "男生0.00%"print 1111,errgirls_num = re.findall("\d*\.\d*", girls_total)[0]boys_num = re.findall("\d*\.\d*", boys_total)[0]# 名字性别偏向name_sex = ""if int(float(girls_num)) > int(float(boys_num)):name_sex = "女"elif int(float(boys_num)) > int(float(girls_num)):name_sex = "男"else:name_sex = "中性"else:names_total = "0人" girls_total = "女生0.00%"boys_total = "男生0.00%"name_sex = "未知"return names_total, girls_total, boys_total, name_sex

3、笔划数适当

接下来解决笔划数,这个很简单,直接找了一个Python第三方库"cjklib",然后调用第三方库的方法算出名字中的笔划数即可。该部分知识点主要为对第三方库的使用

def online_compute_score(self, _fieldnames, name_postfix, cur_idx, shengyushu):# 识别笔划数if len(name_postfix) > 3:_pinyin = pinyin(u'%s' % name_postfix)[0][0] + pinyin(u'%s' % name_postfix)[1][0]try:bihua = cjk.getStrokeCount(u"%s" % name_postfix[:3]) + cjk.getStrokeCount(u"%s" % name_postfix[-3:])except:bihua = 0else:_pinyin = pinyin(u'%s' % name_postfix)[0][0]try:bihua = cjk.getStrokeCount(u"%s" % name_postfix[-3:])except:bihua = 0

4、姓名八字测评

生成了姓名库、查看了重名、获取了笔划数,接下来就要对名字进行打分啦,这里我使用了"起名网"进行打分查询.

这部分主要知识点:

  • POST表单提交: 这里起名网需要POST提交表单, 我们通过抓包分析请求参数, 补充姓名、生辰、性别、出生地等信息, 使用requests库进行表单提交.
  • BeautifulSoup、RE正则的使用: 提交表单后, 获取响应信息, 并通过抓包分析结果匹配我们需要的内容(五行信息、评分结果等)。
  • 汉字偏旁识别: 获取了五行等信息,了解了宝宝五行命格,便可以根据五行强弱并在名字上做文章予以补足,如有的宝宝五行中缺木, 则大人们通常希望名字中有带 “木” 的偏旁、或汉字五行为"木"的(可在百度汉语中查看)。这部分找了一个汉语字典的偏旁对照库, 见dicts/xinhua.csv.
  • 汉字拼音识别: 部分汉字可能分不清它的读音,这里使用了一个第三方库pypinyin对汉字拼音进行了识别.
  • CSV文件的读写: 将分析结果格式化后, 写入csv文件中。
  • 协程的使用: 通过多协程批量请求起名网获取打分结果,提高效率。(配合多进程+协程会更快速.)
  • 代理的使用: 起名网对请求频率进行了限制(基于IP), 这里通过购买 “猿人云” 的代理秒级动态转发, 可以绕过该限制. (可使用我的内推链接购买: https://ape.vip/T-ovAUDi)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

* 结束语 *

在这里插入图片描述在这里插入图片描述
  • 如果你热爱技术,或本文对你有所收益,欢迎关注笔者微信服务号 “欧赛安全” 或 知识星球 予以支持!

  • 项目地址: baby-names

  • 网站地址: http://www.ossec.cn

欢迎转载,转载请注明出处,本文版权归属 "欧赛安全" !

. . . . . . . . . . . . . . . . . . 在这里插入图片描述

2020.06.20

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/67790.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最新TP开发宝宝起名/八字起名/周易取名网站源码

正文: 起名字的源码有很多,这款的好处是模板很漂亮。 thinkphp框架开发周易八字起名网宝宝起名在线下单网站源码自适应可二开。 产品优势 1.宝宝在线起名2.八字起名,周易取名3.带在线付费起名4.一对一起名 程序: wwnsdf.lanzouu.com/i6gqN0fct4xe …

哪个软件英语口语测试,英语口语学习软件有哪个好?口语学习软件推荐

中国人学习英语的老大难的问题就在于听说,其中口语更是重灾区,多少人学习二十几年的英语连开口说的英语都仅限于“Hello”,“Thank You”和“OK”的呢?对了,还有“How are you”,“I am fine”和“And you?”。反正好…

chatgpt解读刀郎的罗刹海市,看看GPT3.5和4.0答案有多大的区别?

最近刀郎带着新歌《罗刹海市》强势回归,短短几天,罗刹海市这个词相关报道文章全网浏览超过百亿次,再次展示了这位民间歌手的现象级奇迹! 而《罗刹海市》热度之所以那么大,主要还是被很多人联想到了娱乐圈之前一些恩怨…

Nature论文证实百年猜想:心脏可以直接控制大脑!放慢呼吸减轻焦虑是真的

丰色 发自 凹非寺量子位 | 公众号 QbitAI 一焦虑,就会感到胸闷气短心跳加速? 比如社恐上台演讲,心脏好像要从嗓子眼儿蹦出来了。 但Nature最新论文证实,反过来也成立! 即心脏可以直接控制大脑,进而影响情绪…

GCC和C语言,鸡生蛋还是蛋生鸡?

前几天,聊到了一个有趣的问题: C语言最主流的编译器当属GCC,但GCC本身也是由C语言写的,那第一个GCC是怎么来的? GCC本来就是用来编译C语言的,那当初第一个GCC又是怎么编写出来的呢? PS&#xff…

c#调用c++ dll,Release版本内存访问错误

最近遇到个比较经典的案例,在c#中调用yara进行文件检测,yara是c编写的一个非常强大库,github有个大佬用c#对其进行了封装,使其能在跨平台下,只需编译yara的so或dll就能直接跑。但总是在Release版本下时不时就崩溃&…

Wine 8.0 发布,终于可以在 Linux 上流畅的运行 Windows 应用程序了!

大家好,我是老赵 经过一年多的开发,用于在 GNU/Linux、FreeBSD、Solaris 或 macOS 系统上运行 Windows 应用程序和电子游戏的 Wine 8.0 开源和跨平台兼容层现在可供下载。 Wine 8.0 最大的变化是完成了 PE 格式的转换,历时四年多。这允许开发…

chatgpt赋能python:Python登陆网站的SEO技巧

Python登陆网站的SEO技巧 随着互联网的发展,越来越多的企业选择将业务转移到网络平台。对于这些网站而言,搜索引擎优化(SEO)是一个关键的因素,它决定了网站在搜索结果中的排名。而要实现好的SEO效果,网站登陆功能的实现也是至关重…

社交“搭子”火了!小红书数据分析,品牌正用“陪伴”种草?

找搭子,年轻人在搞一种很新的社交 朋友,你找搭子了吗?近期,“搭子”这种新型社交关系走红,饭搭子、奶茶搭子、厕所搭子、旅游搭子……遍布于各式各样的场景中,主打的就是一个垂直细分领域的精准陪伴。“搭子…

哔哩哔哩弹幕api查找

哔哩哔哩弹幕api查找 以那年那兔那些事为例: 由于B站弹幕库一次只能显示一千条,要进行舆论分析要进行所有的弹幕分析,所以先找一找有没有可以利用的api 打开网页F12打开开发者模式点到network页面,什么都没有,没关系…

移动端项目实战之哔哩哔哩

我们先来看看效果图 是不是心动了呢,小伙伴们 我们先来看看做项目之前的准备吧: 1.新建一个文件夹:m-bilibili 记得在m-bilibili里面建好相应的文件夹;例如css文件夹,less文件夹,images文件夹,以及字体图标文件夹fonts或者leb也行 2.打开软件vscode,导入项目m-bilibili 3.看效…

哔哩哔哩用户数据采集及数据分析

就简单的采集几万个练一下手,代码大家看着改吧 先上代码 import requests import time from pymongo import MongoClient import random import json import urllib3 from multiprocessing.dummy import Poolua [Mozilla/5.0 (compatible; MSIE 9.0; Windows NT …

哔哩哔哩会员免费领取

B站早期是一个ACG(动画、漫画、游戏)内容创作与分享的视频网站。 经过十年多的发展,围绕用户、创作者和内容,构建了一个源源不断产生优质内容的生态系统,B站已经涵盖7000多个兴趣圈层的多元文化社区。 会员领取地址&…

仿哔哩哔哩动画Android客户端(哔哩哔哩 (゜-゜)つロ 干杯~-bilibili)

前言 花了一个月的时间,把这个项目怼的差不多了,该仿的b站开源项目采用主流mvpdagger2rxjava2作为整体框架,而网络请求采用okhttp3retrofit2,虽说仿的,但是b站官方客户端有许多炫酷视觉的效果,本人水平有限…

如何在电脑端安装哔哩哔哩?

如何在电脑端安装哔哩哔哩? 目前哔哩哔哩没有电脑版。之前在自己电脑上安装了一个哔哩聚合,一点都不好用,用了一段时间就卸载了。 其实下载哔哩哔哩电脑版客户端非常简单,只需要按照以下步骤就行啦! 1. 安装安卓模拟…

上班带薪打游戏?二次元的福音 在哔哩哔哩做测试员是一种什么体验?

说起B站,小伙伴们第一个想到的是什么?二次元,手办?诚然,不知什么时候开始,B站成为了许多年轻人的聚集地和二次元的福音,从一个小的视频网站,到现在众多年轻人娱乐需求的刚需&#xf…

哔哩哔哩视频合并 B站缓存视频合并 安卓版 音视频合并 基于ffmpeg

说明 此软件是为了帮助网友合并哔哩哔哩缓存视频,Android上将bilibili缓存视频合并导出为mp4,你可以将它理解为一个专用的格式工厂,并不涉及破解相关内容,仅仅用于学习技术交流,严禁用于商业用途,如有侵权…

制作哔哩哔哩弹幕词云

先展示一下实物图吧 不知道有没有人能猜出来这是哪个视频的弹幕 直接上代码 先是爬取视频弹幕 import re import requests def main():print("输入想爬取的b站视频网址:")url input()res requests.get(url)cid re.findall(r"cid":(.*?),, res.text)…

bilibili获取cookie

bilibili获取cookie 先去登录自己的哔哩哔哩 (゜-゜)つロ 干杯~-bilibili账号 然后进入个人中心 然后按F12打开https://api.bilibili.com/x/web-interface/nav 没找到可以刷新一下页面 获取到cookie填写到环境变量即可 export Ray_BiliBiliCookies__0“”; 本文转载自哔哩…

【爬虫工具】哔哩哔哩插件姬(bilibili-plugin)

完整原文(含源码):Github (转载请注明出处,仅供分享学习,严禁用于商业用途) 声明 写这个插件纯粹是出于学习目的,此博文主要作用是功能展示之后会围绕这个插件,写一个系…