当所有其他方法都失败时,如何确定情绪分析中的数据集质量?

问题描述 投票:0回答:0

我正在做一个学期作业,对包含挪威语文本的数据集进行情感分析。它“预拆分”为三个文件:train、test 和 dev。数据集中存在高度不平衡,每个数据集分别构成中性:50-55% 或更多,正:30-33%,负:15-17%。我面临的问题是模型无法携带其从训练集中学习到的行为,在验证集上达到接近 65% 的准确率后过度拟合。我该怎么做才能解决这个问题?我怎样才能以清晰和“正确”的格式继续分析数据,以证明不可能获得更高的分数。 (我班上没有其他人在测试或验证中通过了 65%。任务分配说可能无法在其中一项任务上取得好成绩(其他任务的完美/高分)。

解决问题的措施: 不同的文本处理技术,不同的word embeddings,无word embeddings,padding,int sequencing 不同的模型结构:LSTM、multinomialNB、Logistic Regression、SpaCy text classifier、Bidirectional LSTM 图层:Dropout、SpatialDropout1D、Dropout、spacy word embeddings(涵盖 90% 的已处理文本)、 模型架构:不同层、神经元、激活(所有类型)、循环丢失、正则化等 当前架构效果最好:

`# Define model architecture
model = tf.keras.Sequential()
# Embedding layer initializes embeddings with our matrix, applying them to our entries, set as trainable
model.add(Embedding(num_words, embedding_dim, input_shape=(trainX.shape[1],),weights=[embedding_matrix], trainable=True))
#Randomly dropping some entries
model.add(SpatialDropout1D(0.3))
#bidirecitonal LSTM with dropout layers and regularisation
model.add(Bidirectional(LSTM(units=64, activation='tanh', dropout=0.5, recurrent_dropout=0.5, kernel_regularizer=l2(0.001))))
#Dropout to drop features
model.add(Dropout(0.5))
#Classifying sentiment
model.add(Dense(units=3, activation='softmax', kernel_regularizer=l2(0.1)))
#summarizing model to see architecture
model.summary()
`

超参数:调整学习率、类别权重、对少数类进行过采样、对多数类进行欠采样 还尝试更改批量大小、时期、提前停止... Trainable 已在 true 和 false 之间更改,没有改进。

machine-learning deep-learning lstm sentiment-analysis
© www.soinside.com 2019 - 2024. All rights reserved.