# Clean-Signal Dual-Input Hybrid — raw Text (BERT) + clean_text/metadata (LR) pipeline: random_state: 42 test_size: 0.2 val_size: 0.15 max_train_test_gap: 0.05 target_f1_weighted: 0.80 data: raw_path: data/raw/youtoxic_english_1000.csv processed_preprocessed: data/processed/v2/comments_preprocessed.csv processed_stats: data/processed/v2/comments_with_stats.csv target_binary: IsToxic text_column: Text id_column: CommentId features_config: configs/features.yaml augmentation: enabled: true strategy: back_translation source_lang: en pivot_lang: de min_words: 3 max_words: 60 rate_limit_every: 50 rate_limit_sleep_sec: 1.0 dedup: enabled: true cosine_threshold: 0.95 embedding_model: sentence-transformers/all-MiniLM-L6-v2 transformer: model_id: unitary/toxic-bert max_length: 128 reuse_checkpoint: models/expert_toxic_bert fixed_threshold: 0.33 train_if_missing: false logistic_regression: C: 0.05 max_iter: 2000 class_weight: balanced solver: lbfgs gap_search: enabled: true max_gap: 0.05 use_original_train_for_gap: true param_grid: - {C: 0.05, max_features: 800, min_df: 3} - {C: 0.03, max_features: 500, min_df: 5} - {C: 0.02, max_features: 400, min_df: 5} - {C: 0.01, max_features: 400, min_df: 8} - {C: 0.005, max_features: 300, min_df: 10} - {C: 0.002, max_features: 250, min_df: 12} tfidf: max_features: 800 ngram_range: [1, 2] sublinear_tf: true min_df: 3 ensemble: weight_metric: f1_weighted min_lr_weight: 0.15 max_lr_weight: 0.45 threshold_tuning: enabled: true metric: f1_weighted output: lr_path: models/hybrid_clean_lr.joblib ensemble_meta_path: models/hybrid_clean_ensemble_meta.json reports_dir: reports/hybrid_clean