Mukul Rayana
Day 1: data pipeline, session tracker, query router, adversarial probes, Colab training notebooks
bc3ba9e | import os | |
| import pandas as pd | |
| from sklearn.model_selection import train_test_split | |
| HYPOTHESIS = "This person is expressing suicidal ideation or intent to self-harm." | |
| def build_nli_pairs( | |
| input_path="data/raw/suicide_detection/Suicide_Detection.csv", | |
| output_dir="data/processed" | |
| ): | |
| os.makedirs(output_dir, exist_ok=True) | |
| df = pd.read_csv(input_path) | |
| df = df.dropna(subset=["text", "class"]) | |
| # Map to NLI labels: entailment=0 (crisis), contradiction=1 (non-crisis) | |
| df["nli_label"] = df["class"].map({"suicide": 0, "non-suicide": 1}) | |
| df = df.dropna(subset=["nli_label"]) | |
| df["nli_label"] = df["nli_label"].astype(int) | |
| df["hypothesis"] = HYPOTHESIS | |
| # 80/10/10 stratified split | |
| train, temp = train_test_split( | |
| df, test_size=0.2, stratify=df["nli_label"], random_state=42 | |
| ) | |
| val, test = train_test_split( | |
| temp, test_size=0.5, stratify=temp["nli_label"], random_state=42 | |
| ) | |
| train.to_csv(f"{output_dir}/nli_train.csv", index=False) | |
| val.to_csv(f"{output_dir}/nli_val.csv", index=False) | |
| test.to_csv(f"{output_dir}/nli_test.csv", index=False) | |
| print(f"NLI pairs — Train: {len(train)} | Val: {len(val)} | Test: {len(test)}") | |
| print(f"Label distribution:\n{train['nli_label'].value_counts()}") | |
| if __name__ == "__main__": | |
| build_nli_pairs() | |