【发布时间】:2021-03-07 08:57:11
【问题描述】:
如何将职位描述分类到各自的行业?
我正在尝试使用 LSTM 对文本进行分类,尤其是转换职位描述 进入行业类别,不幸的是我到目前为止尝试过的东西 仅导致 76% 的准确率。
使用 LSTM 对 30 多个类的文本进行分类的有效方法是什么?
我尝试了三种选择
模型_1
Model_1 的测试准确率达到 65%
-
embedding_dimension = 80
-
max_sequence_length = 3000
-
历元 = 50
-
batch_size = 100
model = Sequential()
model.add(Embedding(max_words, embedding_dimension, input_length=x_shape))
model.add(SpatialDropout1D(0.2))
model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(output_dim, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
模型_2
Model_2 的测试准确率达到 64%
model = Sequential()
model.add(Embedding(max_words, embedding_dimension, input_length=x_shape))
model.add(LSTM(100))
model.add(Dropout(rate=0.5))
model.add(Dense(128, activation='relu', kernel_initializer='he_uniform'))
model.add(Dropout(rate=0.5))
model.add(Dense(64, activation='relu', kernel_initializer='he_uniform'))
model.add(Dropout(rate=0.5))
model.add(Dense(output_dim, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
模型_3
Model_3 的测试准确率达到 76%
model.add(Embedding(max_words, embedding_dimension, input_length= x_shape, trainable=False))
model.add(SpatialDropout1D(0.4))
model.add(LSTM(100, dropout=0.4, recurrent_dropout=0.4))
model.add(Dense(128, activation='sigmoid', kernel_initializer=RandomNormal(mean=0.0, stddev=0.039, seed=None)))
model.add(BatchNormalization())
model.add(Dense(64, activation='sigmoid', kernel_initializer=RandomNormal(mean=0.0, stddev=0.55, seed=None)) )
model.add(BatchNormalization())
model.add(Dense(32, activation='sigmoid', kernel_initializer=RandomNormal(mean=0.0, stddev=0.55, seed=None)) )
model.add(BatchNormalization())
model.add(Dense(output_dim, activation='softmax'))
model.compile(optimizer= "adam" , loss='categorical_crossentropy', metrics=['acc'])
我想知道如何提高网络的准确性。
【问题讨论】:
-
你尝试过不同的时代*吗?
-
你有多少条记录
-
请记住,“十万”是印度以外的任何人都不知道的数字前缀。
-
数据集有195k行,感谢@Scotty1-的建议
标签: python machine-learning lstm overfitting-underfitting