摘要:一、数目文字:表示10以内数的“一、二、三、四、五...十”,其笔画分别以“1画、2画、3画、4画、5画……10画”计算,即以其所表示的意义计算。百、千、万等字则以其字的繁体笔画计算,即六画、三画、十五画。二、取名时特殊部首:有些字的部首,要依原形的文字笔划计算,如:艹是"草"部,是6 划,"艾"是...
【本期文章导读】
如何用康熙字典起名女孩
一、数目文字:
表示10以内数的“一、二、三、四、五...十”,其笔画分别以“1画、2画、3画、4画、5画……10画”计算,即以其所表示的意义计算如何用康熙字典起名字。
百、千、万等字则以其字的繁体笔画计算,即六画、三画、十五画。
二、取名时特殊部首:
有些字的部首,要依原形的文字笔划计算,如:艹是"草"部,是6 划,"艾"是8 划,月部原形"肉"是6 划,如"服"是10划,"衣"部是6 划,如"袒"是11划等,具体如下:取名字是按康熙字典还是新华字典
忄(心),竖心旁,按心字计,为四画。
氵(水),三点旁,按水字计,为四画。
犭(犬),犬字旁,按犬字计,为四画。
礻(示),半礼旁,按示字计,为五画。
王(玉),斜玉旁,按玉字计,为五画。
艹(草),草字头,按草字计,为六画。
衤(衣),衣字旁,按衣字计,为六画。
月(肉),肉字旁,按肉字计,为六画。
辶(走),走马旁,按走字计,为七画。
阝(邑),右耳旁,按邑字计,为七画。
扌(手),提手旁,按手字计,为四画。
阝(卓),左耳旁,按卓字计,为八画。
爿4划牙 4划瓦 5划甘 5划
臼6划舛 6划异 6划见 7划
长8划门 8划马 10划骨 10划
鸟11划煮 12划龙 16划
"艹"字头的四种不同情况下计算方式:
艹3划时"敬"(12划)
++4划"黄"(12划)
艹早 6划时"芳"(10划)
艹火火8划时荣(14划)莹(15划)
注:以上以文字部首为准,如不归类以上部首,则按实有笔画计算如何用康熙字典起名。如“酒”属酉部而非水部,仍以10画计,而非11画。
康熙字典取名之康熙字典起名用字
取名的关键的在于选字取名字是按康熙字典还是新华字典。从目前起名情况看,一般选字只是简单地查查字典,词典,选字的标准也仅仅是选所谓的“好字”。汉字的数量有限,“好字”数量可以说少得可怜,要想获得良好的审美效果,就要突破传统的选字方式,另辟蹊径,拓宽思路,在新的天地里寻找新的境界。
1、取名用字规范化,目前,国家有关部门经过大量统计,确认并编制了一、二级汉字库,共有国家标准汉字6763个,正在逐步推广,起名必须在此范围的字,才能报户口!如何用康熙字典起名字
2、易读易写,读起来铿锵顿挫,其谐音也要考虑怎么用康熙字典取名字。生僻字并不能代表有文化内涵,所以说笔划不宜太多,更不要起个连电脑都无法输入的名字,否则会带来诸多不便!
3、清新,有美好的含意,巧妙地与姓氏妙搭配更好;在中国人看来,起个含意深刻、讲究字义的好名字是个起码要求怎么用康熙字典取名字。
4、要避免与别人重复。单名容易重名,国家也在限制单字名报户口,用双名较好。
要不落俗套。男孩子不要只是英雄豪杰、雄才伟略、大富大贵,一味跟风求“天、宇”等似乎大气的名字,这样也容易重名怎么用康熙字典取名字。也不要斯坦、路易、保罗、迈克、约翰、伊丽莎白类似英文名字。女孩不要老是柔芬婀娜多姿,也最好不用优、子等日本名,还是给孩子一个具有自己民族特色和习俗的名字。
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 神经网络整体结构上与之前相似,细节上增加了一部分内容。
在输入层增加了 ,即名字的国别康熙字典姓名学否的字能取名用吗?。这个 是以独热编码向量(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[]) , line如何用康熙字典起名女孩
对于训练过程中的每一步,或者说对于训练数据中每个名字的每个字符来说,神经网络的输入是 (, , 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, )如何用康熙字典起名男孩。
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群:
学园网站:
商务合作|
好了,关于如何用康熙字典起名女孩问题,今天就讲到这里,希望以上的内容能对大家的问题有所帮助。
本站所有内容均来自互联网,一切版权均归源网站或源作者所有。如果有侵犯请联系我们删除。
