LSTM 的最佳起点是 A. Karpathy 的博客文章http://karpathy.github.io/2015/05/21/rnn-effectiveness/。如果您使用的是 Torch7(我强烈建议),源代码可在 github https://github.com/karpathy/char-rnn获得。
我也会尝试稍微改变你的模型。我会使用多对一的方法,让您通过查找表输入单词并在每个序列的末尾添加一个特殊单词,这样只有当您输入“序列结束”标志时,您才会阅读分类根据您的训练标准输出并计算误差。通过这种方式,您可以直接在受监督的环境下进行训练。
另一方面,更简单的方法是使用paragraph2vec ( 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