You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LSTM文本分类中仇恨言论类别召回率与F1分数偏低问题求助

仇恨言论分类中少数类召回率&F1分数偏低的解决思路

一、调整数据采样策略

  • 放弃单一欠采样:欠采样会丢弃多数类(非仇恨言论)的大量有效信息,导致模型对少数类的特征学习不足。可以换成过采样(针对文本的同义词替换、回译、随机插入/删除等数据增强方式,生成更多仇恨言论样本),或者混合采样(对多数类适度欠采样,同时对少数类过采样)。
  • 启用加权采样训练:在model.fit()中传入class_weight参数,给仇恨言论样本更高的权重,让模型更重视少数类的分类。权重计算示例:
    import numpy as np
    # 假设y_train是训练集标签
    count_non_hate = np.sum(y_train == 0)
    count_hate = np.sum(y_train == 1)
    class_weight = {0: count_hate / len(y_train), 1: count_non_hate / len(y_train)}
    # 训练时传入
    model.fit(..., class_weight=class_weight)
    

二、优化损失函数与训练目标

  • 改用Focal Loss:Focal Loss会降低易分类样本(大量非仇恨言论)的权重,迫使模型专注学习难分类的少数类特征。自定义实现示例:
    import tensorflow as tf
    def focal_loss(y_true, y_pred, alpha=0.8, gamma=2):
        y_true = tf.cast(y_true, tf.float32)
        epsilon = 1e-7
        y_pred = tf.clip_by_value(y_pred, epsilon, 1 - epsilon)
        cross_entropy = -y_true * tf.math.log(y_pred) - (1 - y_true) * tf.math.log(1 - y_pred)
        weight = y_true * alpha * tf.math.pow(1 - y_pred, gamma) + (1 - y_true) * (1 - alpha) * tf.math.pow(y_pred, gamma)
        loss = weight * cross_entropy
        return tf.reduce_mean(loss)
    # 编译模型时使用
    model.compile(loss=focal_loss, optimizer='adam', metrics=['accuracy', tf.keras.metrics.Recall()])
    
  • 监控合适的评估指标:训练时不要只看accuracy,要监控召回率(Recall)和F1分数,用EarlyStopping时也以val_recall或val_f1为停止条件,避免模型偏向多数类。

三、修正与增强模型结构

  • 修正Embedding层参数:当前Embedding层的input_dim=512可能过小,应该设置为你的词汇表大小(即len(tokenizer.word_index) + 1,因为Tokenizer的索引从1开始),避免大量词汇被过滤丢失特征。同时添加mask_zero=True忽略填充的无效词元:
    vocab_size = len(tokenizer.word_index) + 1
    model.add(Embedding(vocab_size, 200, mask_zero=True))
    
  • 增强模型上下文捕捉能力:将单向LSTM换成Bidirectional(LSTM(128)),捕捉双向语境信息,仇恨言论的语义往往依赖前后文;也可以尝试堆叠多层LSTM(需设置return_sequences=True),提升模型特征提取能力:
    model.add(Bidirectional(LSTM(128, return_sequences=True)))
    model.add(Bidirectional(LSTM(64)))
    
  • 调整Dropout比例:当前Dropout=0.2可能过小,可尝试提升至0.3-0.5,减少模型对多数类特征的过拟合。

四、优化预处理流程

  • 检查停用词过滤:避免误删仇恨言论相关的特定词汇(比如某些俚语、语境敏感词),可以自定义停用词表,仅移除无意义的通用停用词。
  • 补充特征输入:除了文本序列,可加入词性、情感倾向等辅助特征,通过Concatenate层和LSTM的输出结合,丰富模型输入维度,帮助模型更好识别少数类。

五、其他尝试

  • 尝试集成学习:用不同采样策略训练多个模型,通过投票或加权融合的方式,综合多个模型的预测结果,提升少数类的召回率。
  • 调整词元长度:512的长度可能过长,导致模型在长序列中丢失少数类的关键特征,可尝试缩短至256或128,聚焦核心语义信息。

内容的提问来源于stack exchange,提问作者ix.trc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 18:34:53