RNN起名器(一)——思路和数据获取

这篇博客介绍了一个RNN起名器的基本思路和数据获取。

1. 起因

学习完一些RNN的基础知识,看过一些学术论文以后,像通过一个小项目来练练手。一来加强对模型本身的理解;二来可以提高编码能力和对框架的熟悉程度。

受到char-rnn的启发,同时考虑到歌词生成和诗歌生成没有什么新意,于是决定写一个名字生成器。

2.思路

取名字在中国一直是一个稳定的需求,但是国内起名字,一般需要综合生辰八字,甚至还要居住地址,因为这样取出来的名字是独一无二的。让我们先简化需求,第一步,我们要达成的目标就是根据一个姓和指定的名字长度,输出一些名字。

这个需求和生成诗词没有本质的区别,最大的不同就是训练数据。

起初我的想法是找一些现有的人口普查数据,使用现有的人名信息作为训练数据;但是转念一想,这些现有的人名不一定是好名字。于是,我又上一些姓名网站找到了一些不错的姓名推荐。当然,我没有把这些姓名一个个check过,暂且认为这些推荐都是不错的名字吧。

3.数据获取

确定了目标数据源以后,就可以开启爬虫了。具体爬的是哪个网站我就不说了,直接给出爬虫的代码。爬虫的代码也不再解析了,代码上的注释写的很清楚,也不是重点。

4.字向量的训练

这个项目中用到的字向量,不是随机生成的;而是使用预训练的字向量,具体使用python第三方库:gensim。

下面简单总结下训练过程,参考这篇博客

(一).下载训练语料

使用中文wiki语料库(1.2G)作为训练语料。

(二).安装gensim

使用pip安装即可:

pip install gensim

(三).预处理训练语料

python 1_process_wiki.py zhwiki-latest-pages-articles.xml.bz2 wiki.cn.text

1_process_wiki.py这个脚本目的是将训练语料的文本从xml文件中抽取出来。

生成的wiki.cn.text:

可以看到生成的语料都是繁体字,还包括一些英文。

(四).繁体转简体

使用一种叫opencc的工具:OpenCC(github地址),直接下载源码,然后:

make
sudo make install

编译安装完毕以后:

opencc -i wiki.cn.text -o wiki.cn.text.jian -c t2s.json

生成的wiki.cn.text.jian:

(五).删除其他字符

繁体转成简体后,要删除除了汉字字符外的其他字符。

汉字字符unicode范围:\u4e00-\u9fa5

可以通过下面的正则匹配:

ss = re.findall(ur'[\n\s\r\u4e00-\u9fa5]', line)

执行脚本2_remove_words.py

python 2_remove_words.py wiki.cn.text.jian wiki.cn.text.jian.removed

生成的wiki.cn.text.jian.removed:

(六).分割训练语料

既然是训练字向量,那么必须把每个字符分割开。

执行脚本3_seperate_char.py:

python 3_separate_words.py wiki.cn.text.jian.removed wiki.cn.text.jian.removed.sep

生成的wiki.cn.text.jian.removed.sep:

(七).训练字向量

执行脚本4_train_word2vec_model.py:

python 4_train_word2vec_model.py wiki.cn.text.jian.removed.sep wiki.cn.text.jian.model wiki.cn.text.jian.vector
  • wiki.cn.text.jian.model:gensim可以直接加载的文件。

  • wiki.cn.text.jian.vector:其他程序也可以读取的以文本保存的向量文件。

生成的wiki.cn.text.jian.vector:

在gensim中测试:

注:myio.pretty()是我自己写的函数,只为print出list中的汉字。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容