LSTM/GRU在文本分类、情感分析及语言建模等方面有很大的用处,本文主要对这两种方法的tensorflow和keras实现进行分析
1.LSTM/GRU的tensorflow实现
a.文本处理
一般来说, 需要先把句子划分为词语(对于英文来说,直接将句子划分为单词的列表即可;对于中文,需要对句子进行分词,本文的讲述以英文为例)
from tensorflow.contrib import learn
maxlen = 100 #句子中保留词语的长度为100,需进行padding或者clipping、
vocab_processor = learn.preprocessing.VocabularyProcessor(maxlen)
pretrain = vocab_processor.fit(vocab) #vocab指词表
X_indexes = np.array(list(vocab_processor.transform(list_sentences_train))) #list_sentences_train指词列表
X_test_indexes = np.array(list(vocab_processor.transform(list_sentences_test)))
b.word embbedding初始化
word embbedding初始化的方法有2种:直接随机初始化和采用预训练的词向量模型
(1). 直接初始化
labels = tf.placeholder(tf.float32, [None, class_num])
input_data = tf.placeholder(tf.int64, [None, maxlen])
embbedding_vecs = tf.Variable(tf.random_normal([word_count, embbedding_size], -1, 1), name="word_embbedings")
x = tf.nn.embedding_lookup(params=embbedding_vecs, ids=input_data)
(2). 预训练的词向量模型初始化

本文详细介绍了LSTM/GRU在文本分类和情感分析等任务中的应用,并深入探讨了它们在Tensorflow和Keras框架下的实现过程,包括文本处理、word embedding初始化、图的构建以及向量的使用。特别强调了动态RNN的优势以及在Keras中的简便实现。
2311

被折叠的 条评论
为什么被折叠?



