Skip to content

随机姓名

在制作仿微信聊天页面的时候突然有一个需求,需要随机生成挺多的中文名,虽然常见的 faker 之类的库大都支持英文名的生成,但中文名还的确是少见,考虑到自己只需要简单的生成功能,也不要求生成的名字有多么的好听,于是,打算以最简单的方式来实现随机中文姓名的功能。

选择姓氏

中国姓氏千千万,我们只需要按照概率大概生成就行,国内姓氏统计的数据可以从Chinese-Names-Corpus这个开源库中找到,里边包含了多数的姓氏和使用频率统计。

选择名字

姓氏还算是好随机出来,因为不涉及搭配,但名字的确是很难随机的,如果不嫌弃生成的太丑倒是可以简单直接地从常用字中生成两三个字来组成名字,但试过之后发现这样生成的名字的确是不大好听,于是,选择一个稍微好些的方案,不从常用字中随机选择,改从古诗词的一两句话中随机选择两三个字来生成,虽然方式基本差不多,但因为古诗词写得好,因此随机生成的名字倒是可以接受。

以这种方式实现的效果见于此

改进

当然,名字随机并不是好的生成方式,要按照实际起名的规律,那考虑的就多了,从可实现的角度来看,大概可以从以下的几点进行优化:

  1. 音韵

随机上考虑音韵感觉是很合理且有效的,押韵会朗朗上口,名字想要叫得好听,肯定也需要考虑到某些音韵上的规律,而且从实现上来说,这点也是理论可行的。

  1. 文字含义

起名总会考虑到五行和忌讳等,这类规则在现实中常见,但实现上来说比较麻烦,有含义的需求,想来想去还是让 AI 起名更直接一点。

  1. 借助 AI

说到底,一旦语义需要考虑,那基本只能借助于 AI 算法了,常规的实现肯定是不大全面的。