
https://github.com/karpathy/char-rnn
这个有趣的项目,具体就是基于字符预测下一个字符,比日说已知hello的前四个字母hell,那我们就可以据此预测下一个字符很可能是o,因为是字符char级别的,并没有单词或句子层次上的特征提取,相对而言比较简单易学。
因为原作者的代码是基于torch写的,为了熟悉tensorflow,我就仔细地研究了一下具体代码,然后改写成基于tf的代码,基于tensorflow的char-rnn-tensorflow,
https://github.com/sherjilozair/char-rnn-tensorflow
恕我直言,有以下三点比较膈应:
于是打算基于以上两个项目,自己重写!
拿中文举例来说,每个字与每个字并不是统计上独立的,比如说如果不爱就不要再伤害 长度为10的序列,如果我们知道如,下一个字有可能是果,如果知道前两个字如果,第三个字就是不的可能性大些,依次类推,如果知道前9个字如果不爱就不要再伤,那么最后一个就有可能是害字。用图直观的表示如下。

总的来说,这是一个seq2seq的模型,训练数据用的是周杰伦01年到11年所有歌的歌词,训练数据和代码可以从这里下载
关注微信公众号 datayx 然后回复 周杰伦 即可获取。
python3 train_text.py
python3 generate_text.py
在当前目录下运行tensorboard --logdir=logs可以可视化:

