挪威语文本情感分析:过拟合与准确率瓶颈突破及数据集验证方案
挪威语文本情感分析:过拟合与性能瓶颈解决方案
问题背景
正在完成学期作业,针对挪威语文本数据集开展情感分析。数据集已划分为训练/测试/开发集,存在严重类别不平衡:中性类占比50-55%及以上,正面类30-33%,负面类仅15-17%。模型在验证集准确率达到65%后出现过拟合,无法将训练集学习效果迁移到验证/测试集;班级内无人在测试集或验证集上突破65%准确率,任务说明提到其中一项任务可能无法取得良好结果,其余任务可获优异成绩。
已尝试的优化措施
- 文本处理:尝试多种文本处理技术、不同词嵌入方案(含无词嵌入)、填充、整数序列转换
- 模型结构:测试LSTM、MultinomialNB、Logistic Regression、SpaCy文本分类器、双向LSTM等多种模型
- 层结构调整:加入Dropout、SpatialDropout1D,使用覆盖90%处理后文本的SpaCy词嵌入
- 架构调优:调整层数、神经元数量、全类型激活函数、循环Dropout、正则化规则
- 最佳模型架构:
# 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()
- 超参数与数据平衡:调整学习率、类别权重、少数类过采样/多数类欠采样、批次大小、训练轮数、早停策略,切换Embedding层的trainable属性为True/False
解决过拟合的补充方案
数据层面
- 挪威语文本增强:基于挪威语同义词库做同义词替换,通过回译(挪威语→英语→挪威语)生成新样本,对少数类文本进行随机插入/删除低重要性词汇,扩充负面类样本量
- 噪声注入:给文本添加符合挪威语规则的随机拼写错误、随机停顿符,增强模型对噪声的鲁棒性
模型层面
- 集成学习:采用投票或堆叠策略,组合多个弱模型(如Logistic Regression + MultinomialNB + 轻量LSTM),分散单模型的过拟合风险
- 轻量化预训练模型:改用挪威语预训练的小型Transformer(如NorBERT、DistilNB-BERT),预训练模型自带的通用语言特征泛化性更强,可避免复杂循环模型的过拟合
- 强化正则化:尝试ElasticNet(L1+L2)正则化替代单纯L2,或在Dense层添加活动正则化(activity_regularizer),限制输出层的极端值
训练策略
- 标签平滑:将硬标签(如[1,0,0])替换为软标签(如[0.95,0.025,0.025]),降低模型对错误标注样本的过度拟合
- 余弦退火学习率:训练过程中采用余弦退火调度学习率,后期逐步降低学习率,让模型平缓收敛到泛化性更优的参数区域
证明无法获得更高性能的规范分析方法
基准线验证
- 计算随机猜测准确率:按类别占比随机预测,准确率约为(0.55² + 0.33² + 0.17²)≈42%,当前65%显著高于该基准
- 计算多数类基准:仅预测中性类的准确率为50-55%,65%高于该基准,证明模型确实学到了有效情感特征
数据集局限性分析
- 标注质量核查:随机抽取验证/测试集样本,人工核对标签歧义(如中性与正面/负面边界模糊),统计歧义样本比例,若占比过高则说明标注噪声限制了性能上限
- 类别内多样性统计:分析每个类别下文本的主题、长度、词汇分布,若负面类样本主题单一、文本同质化严重,说明模型无法学到足够多的负面情感模式
- 跨集分布可视化:用TSNE或PCA对训练集/验证集的文本嵌入做降维可视化,若两者分布差异明显,说明数据划分存在偏差,导致迁移困难
模型上限验证
- Oracle模型测试:用训练集标签直接作为验证集预测结果,计算理论最高准确率,若该值接近65%,说明数据集本身的特征-标签映射存在固有噪声
- 最优预训练模型测试:采用当前性能最优的挪威语预训练模型(如NB-BERT)进行测试,若其准确率也无法突破65%,则可证明该任务本身存在性能瓶颈
内容的提问来源于stack exchange,提问作者Sondre
相关产品推荐
相关产品推荐

