文本生成

文本生成就是一个source text 到 target text的映射过程。

文本生成与文本分类的方法类似,只是在拿到输入文本的语义表示后的处理方式不同,还需要将这个语义表示输入到decoder中解码生成目标文本。

1、将给定的训练数据中的源文本和目标文本进行分词,分别建立词典。

2、使用Word2Vec训练词向量。

3、输入源文本的词向量到神经网络中

4、输出源文本的语义表示,然后将该语义表示作为decoder的初始隐状态输入到decoder中,同时接受的向量,即start of sequence,进行解码。

5、在解码的时间步t,通过softmax输出。这时有三种处理方式,第一种直接将作为下一个时间步的输入,但是这种方法会导致错误累积。如果这一个时间步输出错误,那么将其作为后续的输入,将会导致以后的时间步的输出都是错误的。因此有了第二种方法,就是每一步的输入都使用上一步标准的正确的输出结果,即训练集中的数据。这样子就确保每一个时间步的输入都是绝对正确的。但是这种方法训练出的模型会产生过拟合的问题,如果遇到不在训练集中的数据,模型效果极差。因此,综合前面两种方法,提出了第三种方法,使用teacher forcing。即每一步输入时,使用采样sample的方法,若采样的数据>0.5,那么就采用训练集中的期望数据作为输入数据;若采样结果<0.5,那么就采用上一步的实际输出结果作为输入。

6、直到decoder输出,即end of sequence,或者达到了最长的字数限制,一次训练结束,然后将预测结果与期望结果比较,计算LOSS,设置优化策略,更新权重参数。设置epoch值,当训练次数到达epoch时,模型训练结束。

7、进行测试。

你可能感兴趣的:(文本生成)