# -*- coding: utf-8 -*-
"""
配置文件 - 所有超参数集中管理

设计思路：
将超参数分门别类，学生可以单独修改某一类而不会影响其他
"""

# ==================== 数据相关 ====================
DATA_DIR = 'data/ChnSentiCorp'          # 数据集路径
MAX_FEATURES = 3000                     # 词表最大容量
MAX_SEQ_LEN = 100                       # 句子最大长度（词数）
VECTORIZER_TYPE = 'bow'               # 'tfidf' 或 'bow'（向量化方式）

# ==================== 模型相关 ====================
MODEL_TYPE = 'mlp'                       # 'mlp' 或 'lr'（模型类型）
HIDDEN_SIZE = 128                        # MLP隐藏层大小（LR忽略）
NUM_CLASSES = 2                         # 类别数（正面/负面二分类）
KEEP_PROB = 0.8                        # Dropout保留概率（LR忽略，设为1即可）

# ==================== 训练相关 ====================
LEARNING_RATE = 0.05                    # 学习率
NUM_EPOCHS = 100                        # 训练轮数
BATCH_SIZE = 64                         # 批次大小

# ==================== 类别权重（解决数据不平衡问题）====================
USE_CLASS_WEIGHT = True                 # True=启用类别权重, False=不启用（对比用）
# 权重计算公式: n_samples / (n_classes * n_class_i)
# 正面评论多所以权重小，负面评论少所以权重大
CLASS_WEIGHT_POS = 0.73                # 正面类权重（自动计算）
CLASS_WEIGHT_NEG = 1.58                # 负面类权重（自动计算）

# ==================== 实验相关 ====================
RUN_COMPARISON = True                  # True=运行对比实验, False=运行单个模型
COMPARE_MODELS = ['lr', 'mlp']          # 要对比的模型列表
COMPARE_VECTORS = ['bow', 'tfidf']      # 要对比的向量化方式

# ==================== 其他 ====================
RANDOM_SEED = 42                        # 随机种子（保证可复现）
VERBOSE = True                          # 打印详细日志

