用人工智能取一个超酷的名字(一)

在我年轻的时候,我总是讨厌别人叫我春阳。这主要是因为我觉得这个名字有点土,听起来不够有格调。但是没有办法,按照我们中国人的传统,我这辈按照族谱中的规定,第二个字是春,最后一个字是我爷爷填的,他希望我能像太阳一样,温暖身边的人,所以就填了一个阳字。

就这样,春阳这个名字就诞生了,虽然不情愿,时间长了,也就习惯了。但是这也让我在后来我每次起名字的时候,都会急进的想起个好听的、有格调的名字,可每次都是绞尽脑汁,最终也找不到一个合适的名字。这样的经历,我至少经历了,给自己起网名、起英文名,给自己的博客起名字,给宠物起名字,给公司起名字等等。起名字这件事折磨了我很久。

直到有一天,我突然灵光乍现,我可以用深度神经网络来做一个起名的人工智能程序啊。我只需要描述我想起的名字,给它一些限制的条件,让它去“思考”起名的事情,这不就一劳永逸了嘛,我就可以永远告别起名这件痛苦的事儿了。

说干就干

有了想法,那么说干就干!首先,我要确定下,我需要的输入和输出的样子。这里我的想法很简单,就是我会告诉模型我想要的名字的描述的信息,我想要的姓氏、性别,还有预留一些可能以后会用到的信息的输入方式。那么这个输入和输出就是这样的:


接下来的问题就是,我从哪里才能得到大量的既有人的名字,又有对于人的信息的描述的数据来训练我的起名模型呢?

想到这里,估计你也猜到了,恰巧就有一个地方,既有我们的名字(网名),又有我们的描述信息。(这里卖个关子,不说明确切的来源)

既然有了数据来源,接下来就是写爬虫抓数据。想要爬虫程序的,可以单独联系我,我把爬虫发给你。如果是有想直接用数据集,那么你可以安装我写的一个快速进行数据下载、加载、可视化、预处理的包 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 多平台发布

用人工智能取一个超酷的名字(一)相关推荐

  1. 用人工智能取一个超酷的名字(二)

    这篇文章代码有点多,不知道大家有没有兴趣看关于源码的深度解析的文章呢? 留言区和我说说~~ 构建模型 接下来,我们要使用 keras.Model 子类构建模型. (For details see Ma ...

  2. 一个超酷的横向多列响应式布局效果

    日期:2013-1-26  来源:GBin1.com 在线演示 还记得上周介绍的一个超酷的星际争霸2视差滚动效果吧,如果你希望生成一个类似ipad效果的漂亮横向多列响应式滚动效果的话,那么你可以考虑使 ...

  3. 给函数和变量取一个有意义的名字

    为什么要给函数和变量取一个有意义的名字? 1. 代码写出来是给以后的自己和别人看的,易于理解的变量名可以更好的阅读,并且可以看出编码者的个人修养和编程功底: 2. 好的变量名字有利于提高自己英语水平( ...

  4. 使用jQuery开发一个超酷的倒计时效果

    转自:http://www.gbtags.com/technology/jquerytutorial/20110105countdownjquery/ 使用jQuery开发一个超酷的倒计时效果 日期: ...

  5. 使用HTML5和jQuery插件Quicksand实现一个超酷的星际争霸2兵种分类展示效果

    为什么80%的码农都做不了架构师?>>>    日期:2011/11/01 来源:GBin1.com 因为本人是星际争霸系列游戏的忠实拥簇,所以在今天的jQuery教程中,我们将使用 ...

  6. 取文字_取一个好听的女孩名字

    每一个女孩都是家里的小天使,而给孩子取名是一件伤脑的事情,不仅仅因为需要考虑很多,而且还因为希望赋予最好的.所以,对于女孩取名方面在这特意分享取一个女孩的名字. 如何取一个女孩的名字 你是否还在困扰如 ...

  7. 微信小程序|基于小程序制作一个超酷的个人简历

    你还在用以前的方式投简历吗?趁着金三银四来临之际,跟随此文使用小程序制作一个便携超酷的个人简历,高调炫技,愉快的收offer吧! 一.小程序 <

  8. Flash 8打造的一个超酷的Flash Web站点

    用Flash制作一个[1b]Flash web站点[/1b],挺简单的,希望大家掌握. 先看效果: [url=http://www.webjx.com/download.php?url=http:// ...

  9. SVG 和 CSS3 实现一个超酷爱心 Like 按钮

    Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...

最新文章

  1. Android shape 绘制左右 或者上下的渐变色
  2. 百度云api android,帮助文档首页/百度移动统计API/百度移动统计 Android版SDK - 百度开放云平台...
  3. PHP的Smarty
  4. java 正则表达式 非贪婪模式_详解正则表达式的贪婪模式与非贪婪模式
  5. 美学心得(第一百九十四集)罗国正
  6. python的下载和安装步骤-下载及安装Python详细步骤
  7. phonegap工程中修改app的名字
  8. iOS 导航栏实现总结
  9. Zuul使用正则表达式指定路由规则
  10. ssh连接阿里云服务器遇到的坑
  11. 正则匹配不包含某字符串_如何替换JS字符串中匹配到多处中某一指定节点?
  12. try catch异常后会执行后面的代码吗_Java的异常体系
  13. 【树上贪心】Tree with Small Distances【codeforces-Round #506-div3-E】
  14. lamp一键安装包不安装mysql_lamp一键安装包的一些注意点
  15. flash动画入门篇
  16. mysql 查询当月过生日_MySql查询本周/月或下周/月过生日的人
  17. MIMO信道容量仿真MATLAB,MIMO系统的信道容量分析 及Matlab仿真
  18. 用p5.js绘制创意自画像
  19. 强化学习之自然梯度法
  20. linux下最好用的安卓模拟器!

热门文章

  1. 贝壳如何docker安装openwrt_N1小钢炮利用Docker创建OpenWrt容器实现旁路由
  2. 回调金字塔是什么意思_从前遥不可及的金字塔
  3. 二舅火了,全网刷屏,他凭什么能治好我的精神内耗?
  4. AutoRun病毒擒杀机器
  5. 连通图的桥(对桥和割点的理解)
  6. 什么是class,什么是instance,什么是object?
  7. 百度旋转验证码识别方案
  8. 低电压检测类型的电压检测器IC能否用作过电压检测使用?
  9. 【AI训练新手记:如何通过ChatGPT生成令人惊艳的文案!】
  10. Python 语言对面向对象的支持