好听朗朗上口的男孩名字
【本期文章导读】
好听朗朗上口的男孩名字
男孩起名方向与技巧诸多,无论是什么样的起名方法,其不变原则便是名字的寓意与字音,同时还需要注意名字的独特性,尽量避免容易重名的名字,如此多的条件让父母们费劲了心思,翻遍字典文学只为了起一个合适的名字。不过今天为大家奉上100个朗朗上口的男孩名字,附名字解析,起名技巧,希望大家看完后能有起名启示怎么起一个朗朗上口的名字。
【朗朗上口的男孩名字怎么取】
1、名字要有韵律感
给男孩起名字,如果想要好听,需要避免使用相同声调的汉字组合成名字,如此读念给人一种平淡无起伏的印象。如果起名所有用字都有不同的声调,不管是怎样的组合,都给人一种韵律起伏,像音乐一般美好的印象,符合中国文学中抑扬顿挫的美感,给人一种朗朗上口,悦耳动听的感觉,如此才是一个好听的男孩名字好听朗朗上口的男孩名字。
2、名字字音要响亮
给男孩起名,大多需要符合男孩阳刚、大气的形象特点,如此便要其一些发音响亮好听的名字。父母们在给男孩取名选字的时候一定要注意,选择响亮的名字能凸显出男孩的阳刚性格,符合男孩的天生形象特点好听朗朗上口的男孩名字。优先选择开口呼、响亮的字音汉字取名,是给男孩取好听名字的要点之一。
3、谐音起名更好听
如果不想要让男孩的名字和他人的过于重复,但又想要好的寓意,可以选择一些好听的字词,用以相同字音的,好寓意的汉字来替代,如此既符合男孩名字好听的条件,也能给男孩取一个寓意深厚的好名字取名字朗朗上口。
——沛禹
沛禹字音为“pèi、yǔ”,它是由去声转向上声的男孩名字,音调不相同,给人一种韵律感,读念参差不齐反而显得优美动听怎么起一个朗朗上口的名字。名字中“沛”为水的意思,它指水势湍急的状态,有充盛之意,起名则引申为神采飞扬,繁荣昌盛的含义;而“禹”则是中国有名的君主名字,起名多用于形容有才能有智慧之人,是一个好听的男孩免费名字。
——俊驰
俊驰字音为“jùn chí”,它是一个仄平过渡的名字,阳平结尾给人一种昂扬之感,是一个抑扬顿挫的好名字。它出自于成语“俊才星驰”,形容人气质颇佳,样貌俊美的模样,给人一种文雅大气的印象男孩名字 朗。名字中“俊”可指样貌俊秀,也可指才华横溢的寓意;而“弛”有驰骋的意思,象征男孩有勇有谋,意志坚定的含义,是个好听且有寓意的男孩免费名字。
——宇卿
宇卿字音为“yǔ qīng”,也是一个仄平过渡的名字,尾音为鼻韵音,给人一种余音缭绕之感,是一个相当好听的名字怎么起一个朗朗上口的名字。在寓意上,宇卿给人一种气宇轩昂,卿卿大方的君子之感,如若文质彬彬的翩翩公子,有素养有才干,是一个不可多得的男孩免费名字。
——睿泽
睿泽读作“ruì zé”,在字音上以去声开头,阳平结尾,是一个富有韵律感的男孩名字,可搭配大多数的姓氏取名怎么起一个朗朗上口的名字。“睿”有睿智之意,起名象征聪颖,富有才华之人,形容人博学多识,有才干之意;“泽”是一个水名,起名则比喻性格和善,富有德行之人,总体来说睿泽是一个好听且寓意才德兼并的好名字。
【100个朗朗上口的男孩名字】
旭尧 尚尊 鹏宇 国玮 旭耀
凌佳 鹏达 常柯 修远 先凯
景松 致博 轩信 致远 弘君
雨天 浩明 月浩 诚星 颜嘉
文欧 飞熙 文祺 晟循 圣鑫
佑琪 铭瀚 光辉 廷钧 君亦
嘉亦 峻熙 伟康 豪杰 波凯
弥睿 潇泽 世荣 江熙 轩吟
容德 诚天 振豪 洋帆 文轩
昊泽 云海 晟睿 德君 锦嘉
裕天 智轩 飞俊 余楠 华韵
英朴 泷仁 鑫凯 桓玮 葵玮
劲松 仁弘 俊华 杰凯 涛皓
思智 杰耀 伟羽 辰逸 梓茗
炜钧 伦高 文翰 锦程 寒松
文诚 彬梁 月泽 衡骏 琦瑚
泰玮 浩刚 嘉泓 鸿涛 越彬
益弘 哲浩 凯若 俊辰 雪松
鸿青 林泽 裕睿 弥承 嘉懿
文瑜 旭康 英资 玮信 昊瑾
pytorch.
上节课我们使用深度学习技术创造了一个会写嘻哈说唱词的 AI,这节课我们使用类似的方法,再创建一个 AI国际起名大师!朗朗上口男孩的小名名字
AI 起名大师专起外国名,你只需告诉他你想要个哪国的名字,AI 起名大师分分钟给你想出一大堆名字出来!好听朗朗上口的男孩名字
下面都是是用 AI 起名大师生成的名字,有了它你还会为了起一个好的外国名而发愁吗
Ereng Parer Allan
资源:
准备数据
做深度学习的第一步是把数据准备好。像之前一样,我们先准备数据。
在读取这些数据前,为了简化神经网络的输入参数规模,我们把各国各语言人名都转化成用26个英文字母来表示,下面就是转换的方法好听朗朗上口的男孩名字。
# all_ 即课支持打印的字符+标点符号all_ = .ascii_ + " .,;'-"# Plus EOS _ = len(all_) + 1EOS = n_ - 1def _to_ascii(s): ''.join( c for c in .('NFD', s) if .(c) != 'Mn' and c in all_ )print(_to_ascii("O'Néàl"))男生朗朗上口的名字
O'Neal
可以看到 "O'Néàl" 被转化成了以普通ASCII字符表示的 O'Neal。
在上面的代码中,还要注意这么几个变量。
print('all_: ', all_)print('n_: ', n_)print('EOS: ', EOS)男孩名字 朗
all_: .,;'-n_: 59EOS: 58
其中 all_ 包含了我们数据集中所有可能出现的字符,也就是“字符表”。n_ 是字符表的长度,在本例中长度为59。EOS 的索引号为58,它在字符表中没有对应的字符,仅代表结束男孩名字 朗。
读取数据
准备好处理数据的方法,下面就可以放心的读取数据了。
我们建立一个列表 all_ 用于存储所有的国家名字。
建立一个字典 _lines,以读取的国名作为字典的索引,国名下存储对应国别的名字。
# 按行读取出文件中的名字,并返回包含所有名字的列表def read_lines(): lines = open().read().strip().split('取名字朗朗上口
') [_to_ascii(line) for line in lines]# _lines是一个字典# 其中索引是国家名字,内容是从文件读取出的这个国家的所有名字_lines = {}# all_是一个列表# 其中包含了所有的国家名字all_ = []# 循环所有文件for in glob.glob('../data/names/*.txt'): # 从文件名中切割出国家名字 = .split('/')[-1].split('.')[0] # 将国家名字添加到列表中 all_.() # 读取对应国别文件中所有的名字 lines = read_lines() # 将所有名字存储在字典中对应的国别下 _lines[] = lines# 共有的国别数n_ = len(all_)print('# : ', n_, all_)print()print('# names: ', _lines[''][:10])男生朗朗上口的名字男生朗朗上口的名字好听朗朗上口的男孩名字
# : 18 ['', '', 'Czech', 'Dutch', '', '', '', 'Greek', 'Irish', '', '', '', '', '', '', '', '', '']# names: ['', 'Abaev', '', '', '', '', '', '', '', '']好听朗朗上口的男孩名字
现在我们的数据准备好了,可以搭建神经网络了!
搭建神经网络
这次使用的 RNN 神经网络整体结构上与之前相似,细节上增加了一部分内容。
在输入层增加了 ,即名字的国别2017朗朗上口的男孩名字大全。这个 是以独热编码向量(one-hot )的方式输入的,再啰嗦一遍就是,作为长度为18的向量,代表自己国别的位置为1, 其它位置都为0。
我们搭建的神经网络的目的是生成“名字”,而“名字”就是一序列的字符。所以神经网络的输出()代表的是字符表中的每个字符,能成为“下一个字符”的概率,概率最大的那个字符,即作为“下一个字符”男孩名字 朗。
另外,这次还加入了“第二层”神经网络,即 o2o 层,以增强神经网络的预测性能朗朗上口男孩的小名名字。在 o2o 中还包括一层“”,它会将输入“”之前的数据随机置0(在本例中为随机置0.1)。“”常被用来缓解“过拟合()”的问题,因为它可以增加“混乱(chaos)”并提高采样的多样性。
建立神经网络的代码比较简单,并且网络的各个部分都在上图中标识出来了。
torch.nn as torch. RNN(nn.): def __init__(self, input_size, _size, _size): super(RNN, self).__init__() self.input_size = input_size self._size = _size self._size = _size self.i2h = nn.(n_ + input_size + _size, _size) self.i2o = nn.(n_ + input_size + _size, _size) self.o2o = nn.(_size + _size, _size) self. = nn.() def (self, , input, ): input_ = torch.cat((, input, ), 1) = self.i2h(input_) = self.i2o(input_) _ = torch.cat((, ), 1) = self.o2o(_) , def init_(self): (torch.zeros(1, self._size))朗朗上口的男孩儿小名男生朗朗上口的名字简单朗朗上口的男孩名字
准备训练
首先建立一个可以随机选择数据对 (, line) 的方法,以方便训练时调用。
__pair(): # 随机选择一个国别名 = .(all_) # 读取这个国别名下的所有人名 line = .(_lines[]) , line2017朗朗上口的男孩名字大全
对于训练过程中的每一步,或者说对于训练数据中每个名字的每个字符来说,神经网络的输入是 (, , state),输出是 (next , next state)朗朗上口男孩的名字,有出息的男孩名字大全。所以在每 批次 的训练中,我们都需要“一个国别”、“对应国别的一批名字”、“以及要预测的下一个字符”。
与上节课一样,神经网络还是依据“当前的字符”预测“下一个字符”。比如对于“”这个名字,创建的数据对是 ("K", "a"), ("a", "s"), ("s", "p"), ("p", "a"), ("a", "r"), ("r", "o"), ("o", "v"), ("v", "EOS")朗朗上口男孩的名字,有出息的男孩名字大全。
国别名()也是以独热编码向量的形式输入神经网络的,它是一个 <1 x n_> 的向量取名字朗朗上口。在输入的时候我们将它“并”在字符向量里,再“并”上隐藏层状态,作为神经网络的输入。
# 将名字所属的国家名转化为“独热向量”def make__input(): li = all_.index() = torch.zeros(1, n_) [0][li] = 1 ()# 将一个名字转化成矩阵# 矩阵的每行为名字中每个字符的独热编码向量def make_chars_input(chars): = torch.zeros(len(chars), n_) # 遍历每个名字中的每个字符 for ci in range(len(chars)): char = chars[ci] # 独热编码 [ci][all_.find(char)] = 1 # 增加一个维度 = .view(-1, 1, n_) ()# 将“目标”,也就是“下一个字符”转化为# 注意这里最后以 EOS 作为结束标志def make_(line): # 从第2个字符开始,取出每个字符的索引 _ = [all_.find(line[li]) for li in range(1, len(line))] # 在最后加上 EOS 的索引 _.(n_ - 1) # EOS # 转化成 = torch.(_) ()怎么起一个朗朗上口的名字朗朗上口的男孩儿小名朗朗上口男孩的名字,有出息的男孩名字大全
同样为了训练时方便使用,我们建立一个 __set 函数,以随机选择出数据集 (, line) 并转化成训练需要的 : (, input, )2017朗朗上口的男孩名字大全。
def __set(): # 随机选择数据集 , line = __pair() # 转化成对应 _input = make__input() line_input = make_chars_input(line) line_ = make_(line) _input, line_input, line_好听朗朗上口的男孩名字
开始训练!与之前处理得分类问题不同,在分类问题中只有最后的输出被使用。而在当前的 生成 名字的任务中,神经网络在每一步都会做预测,所以我们需要在每一步计算损失值朗朗上口男孩的小名名字。
非常易用,它允许我们只是简单的把每一步计算的损失加起来,并在最后进行反向传播。
def train(_, input_line_, _line_): = rnn.init_() .zero_grad() loss = 0 for i in range(input_line_.size()[0]): , = rnn(_, input_line_[i], ) loss += (, _line_[i]) loss.() .step() , loss.data[0] / input_line_.size()[0]好听朗朗上口的男孩名字男生朗朗上口的名字
我们定义 time_since 函数,它可以打印出训练持续的时间。
time_since(t): now = time.time() s = now - t m = math.floor(s / 60) s -= m * 60 '%dm %ds' % (m, s)怎么起一个朗朗上口的名字
训练的过程与我们前几节课一样,就是调用训练函数,再等上几分钟就好啦吼吼!
通过 plot_every 控制打印日志的频率,通过 all_ 控制记录绘图数据的频率,已经都是老套路啦!男生朗朗上口的名字
n_ = _every = _every = _ = []loss_avg = 0 # Zero every plot_every to keep a _rate = 0. = RNN(n_, 128, n_) = torch.optim.Adam(rnn.(), lr=_rate) = nn.()start = time.time()for epoch in range(1, n_ + 1): , loss = train(*__set()) loss_avg += loss if epoch % print_every == 0: print('%s (%d %d%%) %.4f' % (time_since(start), epoch, epoch / n_ * 100, loss)) if epoch % plot_every == 0: all_.(loss_avg / plot_every) loss_avg = 0朗朗上口男孩的小名名字朗朗上口男孩的名字,有出息的男孩名字大全简单朗朗上口的男孩名字
0m 20s (5000 5%) 1. 43s (10000 10%) 2. 9s (15000 15%) 2. 32s (20000 20%) 2. 53s (25000 25%) 2. 16s (30000 30%) 1. 38s (35000 35%) 2. 59s (40000 40%) 1. 21s (45000 45%) 3. 43s (50000 50%) 1. 5s (55000 55%) 1. 24s (60000 60%) 2. 44s (65000 65%) 2. 3s (70000 70%) 1. 22s (75000 75%) 1. 41s (80000 80%) 1. 1s (85000 85%) 2. 22s (90000 90%) 1. 41s (95000 95%) 1. 0s ( 100%) 2.2563
绘制观察损失曲线
让我们将训练过程中记录的损失绘制成一条曲线,观察下神经网络学习的效果。
. as . as % .()plt.plot(all_)
[<.lines. at >]
正如所有的优秀的神经网络一样^_^,损失值逐步降低并稳定在一个范围中。
测试使用神经网络
既然神经网络训练好了,那也就是说,我们喂给它第一个字符,他就能生成第二个字符,喂给它第二个字符,它就会生成第三个,这样一直持续下去,直至生成 EOS 才结束。
那下面我们编写 _one 函数以方便的使用神经网络生成我们想要的名字字符串,在这个函数里我们定义以下内容:
建立输入国别,开始字符,初始隐藏层状态的
创建 _str 变量,创建时其中只包含“开始字符”
定义生成名字的长度最大不超过 max_
将当前字符传入神经网络
在输出中选出预测的概率最大的下一个字符,同时取出当前的隐藏层状态
如果字符是 EOS,则生成结束
如果是常规字符,则加入到 _str 中并继续下一个流程
返回最终生成的名字字符串
max_ = 20# 通过指定国别名 # 以及开始字符 start_char# 还有混乱度 来生成一个名字def _one(, start_char='A', =0.5): _input = make__input() chars_input = make_chars_input(start_char) = rnn.init_() _str = start_char for i in range(max_): , = rnn(_input, chars_input[0], ) # 这里是将输出转化为一个多项式分布 _dist = .data.view(-1).div().exp() # 从而可以根据混乱度 来选择下一个字符 # 混乱度低,则趋向于选择网络预测最大概率的那个字符 # 混乱度高,则趋向于随机选择字符 top_i = torch.(_dist, 1)[0] # 生成字符是 EOS,则生成结束 if top_i == EOS: break else: char = all_[top_i] _str += char chars_input = make_chars_input(char) _str# 再定义一个函数,方便每次生成多个名字def (, start_chars='ABC'): for start_char in start_chars: print(_one(, start_char))
('', 'RUS')
('', 'GER')
('', 'SPA')
看起来还不错哈!不过这个模型还是有点简单,我们以后还可以对它进行改进,发明出更多的玩法!
更多玩法和改进
通过小说 生成 小说中人物名字
通过演讲 生成 演讲词汇
通过国家 生成 城市名
如果要考虑到改进:
可以尝试增加神经网络的规模,来提升预测的效果
尝试把中文字符加进来,让神经网络可以生成中文的名字!
如果要使用中文,注意要控制输入层的规模,可以试试嵌入
圣殿 | 传奇NLP攻城狮成长之路
课程表
第一期:概要简析
第二期:小试牛刀:编写一个词袋分类器
第三期:AI 有嘻哈:处理数据
第三期:AI有嘻哈:训练评估模型 终篇
本期:起名大师:使用RNN生成个好名字
第五期:AI翻译官:采用注意力机制的翻译系统
第六期:探索词向量世界
第七期:词向量高级:单词语义编码器
第八期:长短记忆神经网络(LSTM)序列建模
第九期:体验动态编程,双向LSTM+CRF
AI 有嘻哈 大结局|使用 搭建一个会说唱的深度学习模型
AI 有嘻哈|使用 搭建一个会嘻哈的深度学习模型
圣殿|传奇NLP攻城狮成长之路(二)
独家实践|使用最新发布的 训练一个词性标注模型
教程|用户指南:如何用Floyd跑
吐血整理:项目代码与资源列表|集智AI学园
获取更多更有趣的AI教程吧!
集智AI学园QQ群:
学园网站:
商务合作|
对于好听朗朗上口的男孩名字的问题,以上都有详细的解答和解释,可能内容有点多,大家要耐心看完,希望对各位有所帮助。