项目简介
本项目借助TensorFlow框架,以《全宋词》作为训练数据,打造一个人工智能写词机。项目核心由word embedding和RNN训练两部分构成。在word embedding部分,参照TensorFlow官方代码对《全宋词》进行embedding处理;在RNN训练部分,需实现RNN网络搭建、数据处理与训练,让模型学会标点使用、记住词牌名字,最终达成写词功能。
项目的主要特性和功能
- 词嵌入(Word Embedding):把《全宋词》里的单字符转化为向量表示,通过训练获取embedding结果,并保存相关字典。
- RNN训练:构建RNN网络,对数据开展处理与训练,使模型掌握诗词的生成规律,生成包含有意义词、正确标点和词牌名的诗词。
- 诗词生成:运用训练好的模型,依据最近的checkpoint对三个词牌进行诗词生成。
安装使用步骤
前提条件
假设用户已下载本项目的源码文件,且已安装Python 3,建议先在本地运行得出一定结果,确保代码无误后再上传到TinyMind运行。
步骤
- word embedding部分
- 因TinyMind对中文字体支持欠佳,此部分需在本地完成。
- 运行代码约40W个step,在四核CPU上两三个小时左右可输出较好结果。
- 运行完embedding脚本后会输出图片,满足图片中意义接近的词距离较近等条件可获得相应作业分数。
- 使用
np.save('embedding.npy', final_embeddings)
保存最终生成的embeding,并使用json模块的save方法保存dictionary和reversed_dictionary。
- RNN训练部分
- 实现
train.py
(训练)、utils.py
(数据处理)、model.py
(网络)中的相关代码。 - 构建RNN网络可使用
tf.nn.rnn_cell.DropoutWrapper
、tf.nn.rnn_cell.BasicLSTMCell
、tf.nn.rnn_cell.MultiRNNCell
等API。 - RNN部分以embedding作为输入,hiddenunit取128。
- 训练过程至少要到第二个epoch才能看到较有意义的输出。
- 运行
train_eval.py
可在TinyMind上进行训练和采样,按默认设置运行一个epoch需19220步,约半小时。
- 实现
- 诗词生成
运行
sample.py
,使用最近的checkpoint对三个词牌进行生成操作。由于TinyMind网页输出中文会转码,可将输出字符复制到Python命令行用print
函数打印查看中文。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】