用人工智能取一个超酷的名字(一)
用人工智能取一个超酷的名字(一)
在我年轻的时候,我总是讨厌别人叫我春阳。这主要是因为我觉得这个名字有点土,听起来不够有格调。但是没有办法,按照我们中国人的传统,我这辈按照族谱中的规定,第二个字是春,最后一个字是我爷爷填的,他希望我能像太阳一样,温暖身边的人,所以就填了一个阳字。
就这样,春阳这个名字就诞生了,虽然不情愿,时间长了,也就习惯了。但是这也让我在后来我每次起名字的时候,都会急进的想起个好听的、有格调的名字,可每次都是绞尽脑汁,最终也找不到一个合适的名字。这样的经历,我至少经历了,给自己起网名、起英文名,给自己的博客起名字,给宠物起名字,给公司起名字等等。起名字这件事折磨了我很久。
直到有一天,我突然灵光乍现,我可以用深度神经网络来做一个起名的人工智能程序啊。我只需要描述我想起的名字,给它一些限制的条件,让它去“思考”起名的事情,这不就一劳永逸了嘛,我就可以永远告别起名这件痛苦的事儿了。
说干就干
有了想法,那么说干就干!首先,我要确定下,我需要的输入和输出的样子。这里我的想法很简单,就是我会告诉模型我想要的名字的描述的信息,我想要的姓氏、性别,还有预留一些可能以后会用到的信息的输入方式。那么这个输入和输出就是这样的:
接下来的问题就是,我从哪里才能得到大量的既有人的名字,又有对于人的信息的描述的数据来训练我的起名模型呢?
想到这里,估计你也猜到了,恰巧就有一个地方,既有我们的名字(网名),又有我们的描述信息。(这里卖个关子,不说明确切的来源)
既然有了数据来源,接下来就是写爬虫抓数据。想要爬虫程序的,可以单独联系我,我把爬虫发给你。如果是有想直接用数据集,那么你可以安装我写的一个快速进行数据下载、加载、可视化、预处理的包 datasetstore。有了这个包你就可以快速的加载我抓取下来的数据了。下面是对应的代码:
!pip install datasetstore==1.0.1.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
from datasetstore import load_dataset
dataset = load_dataset("chinese-person-profile-10k")dataset
datasetstore 会在第一次加载的时候,从我们的云存储中加载到你的本地硬盘中,第二次再调用的时候,就会从你的本地缓存中读取了。
读取出来的数据是使用 Apache Arrow 格式存储的,计算速度和占用的存储空间也都是有保障的。
我们也可以通过接口快速的分析和查看数据的分布,是这样的:
from datasetstore.eda import quick_analysis
quick_analysis(dataset)
我们能看到,可视化的方法可以帮助我们快速的进行数据探索,了解数据的分布、缺失值、异常值等信息。
这个任务使用的模型
从上面的描述中,我们能够很容易的知道,这是一个很经典的序列到序列的问题,也就是说,我是通过对于输入序列文本的理解,来生成一串序列文本的任务。这种任务,我们可以使用 Seq2seq 来进行建模。可以参考下面的图进行理解:
我们能够非常清楚的看到,我们输入给模型的就是对于这个名字的描述,输出的就是这个名字。
大批量对数据集进行预处理
在 datasetstore 中,我们集成了很多常用的批量进行数据预处理的方法,接下来,我们就用这些方法,把原始的文本转换为模型能够接收的输入和输出的格式。
def construct_one_example(example): if example["nickname"]: nickname_len = len(example["nickname"]) # 输入 gender = example["gender"] if example["gender"] else "" desc = example["description"] if example["description"] else "" # head_name + ("<mask>" * (nickname_len - 1)) + text = "<bos>" + gender + "," + desc + "<eos>" # 输出 label = "<bos>" + example["nickname"] + "<eos>" return {"text": text, "label": label}
from datasetstore.preprocess import preprocessing
preprocessed_dataset = preprocessing(filtered_dataset, [construct_one_example])
这样就可以实现批量的数据转换了,当然从接口的设计上你可以看出来,其实你可以在 preprocessing 中传入多个预处理的函数,datasetstore 都会帮你顺序的处理,并且帮你打印执行的进度。
OK!到这里,我们就已经处理好了模型需要的数据格式,接下来我们还要做文本的表示和任务的建模,以及最重要的名字的生成。
我们下篇文章见~!
本文由 mdnice 多平台发布
用人工智能取一个超酷的名字(一)相关推荐
- 用人工智能取一个超酷的名字(二)
这篇文章代码有点多,不知道大家有没有兴趣看关于源码的深度解析的文章呢? 留言区和我说说~~ 构建模型 接下来,我们要使用 keras.Model 子类构建模型. (For details see Ma ...
- 一个超酷的横向多列响应式布局效果
日期:2013-1-26 来源:GBin1.com 在线演示 还记得上周介绍的一个超酷的星际争霸2视差滚动效果吧,如果你希望生成一个类似ipad效果的漂亮横向多列响应式滚动效果的话,那么你可以考虑使 ...
- 给函数和变量取一个有意义的名字
为什么要给函数和变量取一个有意义的名字? 1. 代码写出来是给以后的自己和别人看的,易于理解的变量名可以更好的阅读,并且可以看出编码者的个人修养和编程功底: 2. 好的变量名字有利于提高自己英语水平( ...
- 使用jQuery开发一个超酷的倒计时效果
转自:http://www.gbtags.com/technology/jquerytutorial/20110105countdownjquery/ 使用jQuery开发一个超酷的倒计时效果 日期: ...
- 使用HTML5和jQuery插件Quicksand实现一个超酷的星际争霸2兵种分类展示效果
为什么80%的码农都做不了架构师?>>> 日期:2011/11/01 来源:GBin1.com 因为本人是星际争霸系列游戏的忠实拥簇,所以在今天的jQuery教程中,我们将使用 ...
- 取文字_取一个好听的女孩名字
每一个女孩都是家里的小天使,而给孩子取名是一件伤脑的事情,不仅仅因为需要考虑很多,而且还因为希望赋予最好的.所以,对于女孩取名方面在这特意分享取一个女孩的名字. 如何取一个女孩的名字 你是否还在困扰如 ...
- 微信小程序|基于小程序制作一个超酷的个人简历
你还在用以前的方式投简历吗?趁着金三银四来临之际,跟随此文使用小程序制作一个便携超酷的个人简历,高调炫技,愉快的收offer吧! 一.小程序 <
- Flash 8打造的一个超酷的Flash Web站点
用Flash制作一个[1b]Flash web站点[/1b],挺简单的,希望大家掌握. 先看效果: [url=http://www.webjx.com/download.php?url=http:// ...
- SVG 和 CSS3 实现一个超酷爱心 Like 按钮
Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...
最新文章
- Android shape 绘制左右 或者上下的渐变色
- 百度云api android,帮助文档首页/百度移动统计API/百度移动统计 Android版SDK - 百度开放云平台...
- PHP的Smarty
- java 正则表达式 非贪婪模式_详解正则表达式的贪婪模式与非贪婪模式
- 美学心得(第一百九十四集)罗国正
- python的下载和安装步骤-下载及安装Python详细步骤
- phonegap工程中修改app的名字
- iOS 导航栏实现总结
- Zuul使用正则表达式指定路由规则
- ssh连接阿里云服务器遇到的坑
- 正则匹配不包含某字符串_如何替换JS字符串中匹配到多处中某一指定节点?
- try catch异常后会执行后面的代码吗_Java的异常体系
- 【树上贪心】Tree with Small Distances【codeforces-Round #506-div3-E】
- lamp一键安装包不安装mysql_lamp一键安装包的一些注意点
- flash动画入门篇
- mysql 查询当月过生日_MySql查询本周/月或下周/月过生日的人
- MIMO信道容量仿真MATLAB,MIMO系统的信道容量分析 及Matlab仿真
- 用p5.js绘制创意自画像
- 强化学习之自然梯度法
- linux下最好用的安卓模拟器!