"""
lexicons.py
------------
Curated, self-contained word lists used for fully local/offline linguistic
analysis (no external API, no downloaded corpora). These are intentionally
small and interpretable so that every risk-score contribution can be traced
back to a specific matched term (explainability requirement).

In a production research deployment these lists should be expanded and
validated against a labeled corpus (e.g. CLPsych, eRisk datasets) and/or
replaced with a properly trained/fine-tuned classifier.
"""

POSITIVE_WORDS = {
    "good", "great", "happy", "glad", "hopeful", "excited", "calm", "relaxed",
    "confident", "grateful", "thankful", "proud", "content", "peaceful",
    "energetic", "motivated", "love", "enjoy", "fun", "better", "improving",
    "okay", "fine", "well", "positive", "optimistic", "relieved", "strong",
}

NEGATIVE_WORDS = {
    "bad", "sad", "upset", "angry", "frustrated", "annoyed", "miserable",
    "terrible", "awful", "horrible", "worse", "worthless", "hopeless",
    "empty", "numb", "exhausted", "tired", "lonely", "guilty", "ashamed",
    "afraid", "scared", "worried", "stressed", "overwhelmed", "hurt",
    "broken", "lost", "stuck", "hate", "cry", "crying",
}

DEPRESSION_MARKERS = {
    "hopeless", "worthless", "empty", "numb", "sad", "lonely", "isolated",
    "tired", "exhausted", "unmotivated", "guilty", "failure", "burden",
    "no interest", "no energy", "sleeping too much", "can't sleep",
    "don't care", "pointless", "meaningless", "down", "depressed",
    "no point", "give up", "giving up",
}

ANXIETY_MARKERS = {
    "worried", "worry", "anxious", "nervous", "panic", "panicking",
    "on edge", "restless", "racing thoughts", "can't relax", "tense",
    "afraid", "scared", "dread", "overthinking", "spiraling", "uneasy",
    "jittery", "what if",
}

STRESS_MARKERS = {
    "overwhelmed", "pressure", "deadline", "deadlines", "burned out",
    "burnt out", "can't cope", "too much", "no time", "swamped",
    "exhausted", "juggling", "piling up", "breaking point", "stretched thin",
}

CRISIS_MARKERS = {
    "kill myself", "end my life", "suicide", "suicidal", "want to die",
    "better off dead", "not worth living", "end it all", "hurt myself",
    "harm myself", "self harm", "self-harm", "no reason to live",
    "can't go on", "cant go on", "give up on life", "take my own life",
}

ABSOLUTIST_WORDS = {
    "always", "never", "completely", "totally", "entirely", "everything",
    "nothing", "everyone", "no one", "nobody", "constantly", "everytime",
    "every time", "forever", "impossible", "definitely",
}

NEGATION_WORDS = {
    "not", "no", "never", "can't", "cant", "won't", "wont", "don't",
    "dont", "isn't", "isnt", "didn't", "didnt", "nothing", "nobody",
}

FIRST_PERSON_SINGULAR = {"i", "me", "my", "mine", "myself"}
