给儿子起了个名字叫“止正”。写这篇文章的主要目的就是在以后有人,儿子或者其他人,问起为什么叫这个名字的时候可以很容易的直接发一个文章的链接给那个人解释。
我一直觉得起名字是个很重要的事情,毕竟这个代号要用一辈子,而且改起来很麻烦,所以在儿子实际出生之前大概一个月就开始想名字了。老爸是个程序员,而且很不可避免的把所有看到的钉子都用锤子来敲,于是打算写一个程序来找到一个合适的名字。这个事情我之前也做过,上次给侄女起名字的时候我写了一个Python的程序(顺便也学习了下Python),主要是按照名字的比划数和平仄来生成的,侄女是6月14日出生的,最后经过程序生成和人工筛选我给起了个名字叫做“周睿竹”。一直还挺满意这个名字的,虽然最后没有被采纳。这次准备故技重施再起一个,因为儿子还没有出生,所以只准备考虑个平仄能起个念起来顺一些的名字就好了。
感谢王医生帮忙,已经知道是男孩,所以不用准备两套名字,但是考虑到以后二胎的可能(或者没可能),还是希望能够有一定的扩展性,能够把二胎的名字也给考虑进去。同时二胎还不知道是男是女,所以二胎的名字还得想个男女都能用上或者都有合适的名字的,嗯,如果考虑到二胎的可能性其实也不这么大,大概就可以把我干的这个事情归类为传说中的over engineering…
上次给侄女起名字顺便学习了下Python,虽然这次是蛇年,但是希望能学点新的东西,于是开始正经的学习Clojure,希望能用Clojure写这么个程序。噼里啪啦下了一堆书扫了一阵,最后发现Clojure Koans的学习方法最有意思,刷刷刷把20个练习给过了一遍,就这么弄弄一个星期已经过掉了,真想用Clojure写这么个程序的时候发现读个文件也很纠结,估计等我写出来的时候儿子都已经满月掉了,只能放弃Clojure用熟悉些的Ruby来写这个程序。接下来大概用了一个晚上的时间就写了一个很简单的版本能够生成一堆的名字组合。
大的方向上,就是我准备起一个三个字的名字,中间的一个字不管几个小孩都是一样的,三个字的音调构成是平仄平、平平仄或者平仄仄,希望能够读起来有转折。也没指望程序能够直接生成一个我想要的名字,但希望能通过生成的组合有所启发。
首先,我找了一张3500个汉字的常用汉字表,包含了2500个常用字和1000个次常用字和它们的拼音。如果你去看国家制定的《通用规范汉字表》,就是那个里面的一级字表。其实如果你看到二级字表你就会发现已经不太适合做正常的中国人姓名了,很多字我念都念不来,三级字表就更加不用说了。
之后用程序把所有的汉字按照拼音进行归类,比如阴平的yi(yī)“一”、“医”、“壹”、“伊”和“衣”是归成一类的,去声的yi(yì)“易”、“意”、“义”和“益”是归成另外一类的。这样所有的读音相同的组合就会被归并,然后按照它们的平仄去生成对应的组合,读的顺的话可以从中任意挑一个喜欢的字来做名字。
可能是上次Python的程序的原因,那次我仅仅取了特定笔画数的字来进行组合,其中还有一个14画的字,所有组合看一边看起来也挺快的。同时也因为这个涉及到同音字有多少的问题,原来并没有太多考虑这个会有多少组合,程序结果一出来发现这个方法的结果实在太多了点,所有的3500个字大约被归类成为400多个平声的音调以及500多个仄声的声调,也就是平均大约每个声调有3个多同音字。单看平仄平的组合(我的首选音调组合)的话就有20w+个组合需要过滤,实在不是人力能够看过去的。于是把那个常用字表里面的3500个字先人工过了一边,删掉了大约一半左右不太适合的字(比如“搬”、“绑”、“磅”之类的),然后又加了一些限制组合,比如我的姓以n打头,名字的第一个字我就想避免也是n打头的,这样过后生成的组合还有10w+。大致人工看了几千个组合,觉得还是多太多,又想到了取名有“女诗经,男楚辞”的说法,于是又把所有的组合去楚辞里面找了一下是否有出处。为了效率上足够快能够处理这么多组合的查询,还对楚辞做了一个预处理,把楚辞中所有的连续两个字的词给计算出来。之后又改成只是使用楚辞过滤现有的汉字,之后又移除了楚辞的限制,这么整理了一阵,最后的效果还是不尽如人意。
之后更换了另外一种方法来找灵感。把所有的仄声的音调拿出来,大约500种,一个个过一边,看到一个合适的声调,再把所有可能搭配的平声和这个单独的仄声声调组合,大约也是500种。或者也可以反过来先平声再仄声,就这么找到了第一个组合“谦允”,本来打算使用“谦允”、“谦许”(男女均可)、“谦诺”这三个名字的。之后又觉得谦允读起来没有a、e、o这种开口音,所以不够正气,又在程序里面加入了开口音的检查,汉字组合至少要包含一个开口音才会被考虑。就这么又找到了“羽扬”、“印波”、“可元”等等组合。
再之后希望名的两个字里面有一定的含义,又通过在线新华字典去查汉字的词组(全人工的),然后人工的看是不是有合适的词可以作为名字,就这么又找到了“允正”这么个名字,这时的打算是使用“允正”、“允平”、“允圆”(女孩名)作为名字的。
这个之后又找了一些,但是始终没有定下来到底用哪个,结果儿子提前两个礼拜出生了。本来计划在癸巳年出生的,结果壬癸年就出啦了,原来老婆盘算的生辰八字五行啥的也不对了。在出生后更加努力的想名字,还得满足老婆希望名字里面有“火”属性的字来配上生辰八字。之后又查了一堆乌七八糟的汉字五行的网站,只有一个网站觉得很不错的,不像其他网站那么扯,这个网站有很多台湾人的名字的流行度和关联的数据,可以很容易的查找到台湾那边起名字的一些规律和可能的名字搭配。
“止正”这个名字是老婆说要“火”属性的字之后特地查的,我把号称属“火”的常用字给人工看了一遍,找了一些自己喜欢的,然后再根据这些字来搭配其他的声调,这个方法找出来了一堆的名字(当然不一定很好),比如“品正”/“品圆”/“品则”(这个也是我严肃考虑过的名字)、“显扬”、“方远”、“中泽”、“登延”等等,再最后经过了几轮的筛选我还是觉得“止正”这个名字比较好,不过老婆和我妈其实觉得“方远”读起来比较顺。
关于这个名字的含义,其实可以解释成很多含义:
- 举止端正,很显然的一个含义
- 停止正确,也即不正,也很显然的一个含义,对于这个解释,我也挺能接受的,有点小不正经也还好,原来考虑“品正”这个名字的时候,最怕的就是叫了名字叫做“品正”但其实品不正:(
- 止于正,有点佛法里面的依止正道的意思,我在网上查了下“止正”,基本查不出什么含义,倒是发现福建武夷山有个庵叫做“止正庵”
- 我自己的一个解释是这样的,止和正很相像,差一点名字就变成了正正,正正表示十,很完满的样子,止正是九,离十差那么一点,但是也挺不错的,不用追求极端。自己想想也觉得真是相当理科生的一个解释
另外,由“止正”衍生出来的名字我也想好了,如果是个男孩就叫“止匀”,如果是个女孩就叫做“止圆”,当然,这一切得建立在还有一个孩子的基础上。
打了医学出生证明那天才把这名字给最后敲定,也算是了结了一桩大事,希望以后儿子会喜欢这个名字,嘿嘿嘿
一些链接: