从LSTM开始的最佳位置是A. Karpathy的博客文章http://karpathy.github.io/2015/05/21/rnn-efficiency/。如果您使用的是Torch7(强烈建议),则可从github https://github.com/karpathy/char-rnn获得源代码。
我也会尝试稍微更改您的模型。我将使用多对一方法,以便您通过查找表输入单词,并在每个序列的末尾添加一个特殊的词,这样,只有当您输入“序列的末尾”符号时,您才能阅读分类根据您的训练标准输出并计算误差。这样,您将直接在有监督的上下文中进行训练。
另一方面,一种更简单的方法是使用para2vec(https://radimrehurek.com/gensim/models/doc2vec.html)提取输入文本的特征,然后在特征之上运行分类器。段落矢量特征提取非常简单,在python中将是:
class LabeledLineSentence(object):
def __init__(self, filename):
self.filename = filename
def __iter__(self):
for uid, line in enumerate(open(self.filename)):
yield LabeledSentence(words=line.split(), labels=['TXT_%s' % uid])
sentences = LabeledLineSentence('your_text.txt')
model = Doc2Vec(alpha=0.025, min_alpha=0.025, size=50, window=5, min_count=5, dm=1, workers=8, sample=1e-5)
model.build_vocab(sentences)
for epoch in range(epochs):
try:
model.train(sentences)
except (KeyboardInterrupt, SystemExit):
break