我已经实现了这篇文章中提出的模型,它是一个文本分类模型,它使用句子表示,而不仅仅是单词表示来对文本进行分类。
model=tf.keras.Sequential()
embeding_layer=layers.Embedding(self.vocab_size,self.word_vector_dim,weights=[word_embeding_matrix],trainable=False,mask_zero=False)
model.add(TimeDistributed(embeding_layer))
model.add(TimeDistributed(tf.keras.layers.LSTM(50)))
model.add(tf.keras.layers.Bidirectional(costumized_lstm.Costumized_LSTM(50)))
model.add(layers.Dense(6,activation='softmax'))
opt=tf.keras.optimizers.Adam(learning_rate=0.001)
model.compile(optimizer=opt,loss='categorical_crossentropy',metrics=['accuracy',self.f1_m,self.precision_m, self.recall_m])
self.model=model
我使用一个包含 40000 个文档和 6 个不同标签的数据集来训练它。(30000 用于训练,10000 用于测试)。我使用预训练的词嵌入,该模型的输入是(样本、句子、单词)。它达到了 84% 的准确率。问题是我可以用这个简单的模型很容易地达到这个精度:
model=tf.keras.Sequential()
embeding_layer=layers.Embedding(self.vocab_size,self.word_vector_dim,weights=[word_embeding_matrix],trainable=False,mask_zero=False)
model.add(embeding_layer)
model.add(tf.keras.layers.Bidirectional(layers.LSTM(50)))
model.add(layers.Dense(6,activation='softmax'))
opt=tf.keras.optimizers.RMSprop(learning_rate=0.001)
model.compile(optimizer=opt,loss='categorical_crossentropy',metrics=['accuracy',self.f1_m,self.precision_m, self.recall_m])
self.model=model
这个不是基于句子表示的,这个模型的输入是(样本,单词)。第一个模型是什么?我的实施错了吗?我该怎么办?
