""" EMOTIONAL_VOCABULARY — Curated emotional word forces for Clanker Curation criteria: Source: curated from 46K entries, reduced to 2,315 high-signal words Cross-referenced with: 99,506 sentences from EmpatheticDialogues Inclusion rules: 1. Word appears >= 10 times in EmpatheticDialogues (real conversational usage) 2. |dV| >= 15 (meaningful emotional valence shift) 3. NOT a common object noun with no emotional weight (bagel, soup, table, etc.) 4. NOT a function word, pronoun, preposition, or generic verb 5. Known psychological emotion/feeling words included even if below freq threshold Result: 2,000 words kept, 44,101 dropped Tuple format: (dV, dA, dD, dU, dG) — deltas, not absolute values dV = Valence delta (-128 to +127) dA = Arousal delta dD = Dominance delta dU = Urgency delta dG = Gravity delta Categories (for reference, all merged into EMOTIONAL_VOCABULARY): cognitive_eval: 45 words crisis_words: 40 words emotion_words: 132 words general_emotional: 1680 words intensifiers: 18 words relationship_words: 43 words situation_words: 0 words slang: 42 words Built from mining EmpatheticDialogues x WORD_FORCES intersection. """ # Category index — words are tagged by category in comments # emotion_words: Direct emotion/feeling labels (happy, sad, angry, ...) # intensifiers: Amplifiers and degree modifiers (absolutely, extremely, ...) # relationship_words: Trust, loyalty, connection vocabulary (friend, betrayed, ...) # crisis_words: Trauma, danger, emergency vocabulary (suicide, abuse, dying, ...) # slang: Informal emotional language (awesome, sucks, pissed, ...) # cognitive_eval: Right/wrong/fair/deserve evaluative words # general_emotional: Other words with meaningful emotional force EMOTIONAL_VOCABULARY = { # ── EMOTION WORDS — Direct emotion/feeling labels ── 'abandoned': (-127, -6, -127, +0, -70), # freq=42 'afraid': ( -78, +53, -87, +79, +27), # freq=666 'agony': (-127, +119, -127, +97, -61), # freq=2 'anger': ( -89, +127, +109, +77, +61), # freq=23 'angry': (-102, +119, +109, +97, +73), # freq=642 'anguish': (-127, +119, -127, +97, -85), # freq=5 'annoyed': ( -42, +49, +22, +31, +20), # freq=364 'anxiety': (-127, +127, -127, +127, +24), # freq=143 'anxious': ( -52, +87, -114, +97, +29), # freq=390 'appreciated': ( +42, -4, +37, +0, +19), # freq=87 'ashamed': (-102, +74, -127, +39, -61), # freq=412 'awe': ( +86, +47, +52, +6, -50), # freq=58 'betrayed': (-106, +72, -82, +54, -51), # freq=16 'brave': ( +28, +22, +52, +6, +14), # freq=52 'broken': (-102, +45, -127, +57, -61), # freq=129 'calm': ( +20, -40, +30, -10, +5), # liquid -- state=positive, command=negative 'comfort': ( +28, -9, +24, +0, +8), # freq=56 'comfortable': ( +44, -27, -2, +0, +12), # freq=109 'compassion': ( +90, +27, +77, +18, -29), # freq=21 'confidence': ( +48, -18, +59, +0, +24), # freq=129 'confident': ( +50, +40, +107, +0, +32), # freq=521 'content': ( +58, -36, +17, +0, +19), # freq=369 'cranky': ( -86, +74, -42, +50, -36), # freq=11 'cruelty': (-114, +90, +17, +70, -36), # freq=8 'crushed': (-102, +74, -127, +57, -108), # freq=37 'delighted': ( +49, +38, +7, +1, +16), # freq=12 'depressed': (-127, -26, -109, +63, -89), # freq=72 'depression': (-127, -119, -127, +39, +97), # freq=39 'despair': (-127, +33, -120, +95, -107), # freq=3 'destroyed': (-122, +53, -66, +111, -54), # freq=75 'determined': ( +51, +6, +49, +0, +24), # freq=31 'devastated': (-127, +119, -127, +116, -108), # freq=351 'disgust': ( -89, +90, +54, +39, +48), # freq=7 'disgusted': (-127, +58, +54, +39, +36), # freq=287 'distraught': (-106, +108, -104, +81, -53), # freq=16 'dread': ( -89, +90, -127, +77, -48), # freq=15 'ecstatic': ( +51, +51, +34, +0, +38), # freq=14 'embarrassed': ( -67, +33, -55, +32, -18), # freq=384 'empathy': ( +80, +33, +42, +12, -23), # freq=5 'envy': ( -37, +22, -18, +13, +7), # freq=46 'excited': ( +37, +42, +24, +12, +27), # freq=1261 'excitement': ( +42, +15, +29, +1, +17), # freq=23 'fear': ( -78, +53, -87, +79, +27), # freq=160 'frustrated': ( -78, +46, -33, +79, +27), # freq=67 'frustration': ( -52, +74, -67, +65, +20), # freq=16 'furious': (-127, +127, +127, +127, +97), # freq=370 'glad': ( +28, +13, +17, +0, +14), # freq=1505 'gloomy': (-109, -24, -92, +0, -53), # freq=3 'grateful': ( +28, +9, +17, +0, +10), # freq=434 'gratitude': ( +90, +9, +77, +12, -23), # freq=4 'grief': (-127, +74, -127, +57, -108), # freq=14 'grumpy': ( -83, +83, +27, +57, -24), # freq=11 'guilt': (-127, +127, -127, +127, +127), # freq=42 'happy': ( +28, +8, +10, +0, +17), # freq=2606 'hate': (-127, +119, +109, +116, +85), # freq=1146 'hatred': (-127, +92, -32, +77, -51), # freq=5 'haunted': ( -52, +63, -67, +31, -20), # freq=78 'heartbroken': (-122, +40, -76, +47, -72), # freq=74 'helpless': (-102, +45, -127, +77, -85), # freq=17 'hesitant': ( -37, +9, -64, +6, -24), # freq=17 'hope': ( +50, +29, +34, +12, +32), # freq=4362 'hopeful': ( +37, +13, +34, +0, +23), # freq=341 'hopeless': (-127, +58, -127, +127, -127), # freq=6 'horrified': (-127, +103, -59, +86, -53), # freq=16 'humiliated': (-112, +56, -124, +43, -58), # freq=28 'hurt': ( -78, +33, -44, +47, -36), # freq=507 'hurts': ( -78, +33, -44, +47, -36), # inflected form of hurt 'insecure': ( -42, +38, -114, +31, -29), # freq=13 'inspired': ( +49, +15, +32, +0, +20), # freq=14 'irritated': ( -81, +83, -97, +57, -43), # freq=75 'jealous': ( -52, +63, -44, +31, +20), # freq=537 'jealousy': ( -77, +74, -82, +39, +12), # freq=17 'joy': ( +42, +27, +34, +0, +29), # freq=92 'kindness': ( +44, -13, +2, +0, +13), # freq=30 'livid': (-127, +127, +127, +77, +61), # freq=39 'loneliness': ( -77, -15, -127, +19, -73), # freq=35 'lonely': ( -77, -29, -127, +39, -73), # freq=534 'love': ( +35, +12, +10, +0, +22), # freq=2464 'loved': ( +42, +22, +24, +0, +27), # freq=422 'miserable': (-127, +29, -127, +77, -108), # freq=55 'motivated': ( +35, +29, +64, +4, +21), # freq=49 'neglected': ( -52, -24, -122, +0, -38), # freq=11 'nervous': ( -37, +33, -37, +53, +15), # freq=881 'nostalgic': ( +28, +27, -24, +0, -10), # freq=406 'optimistic': ( +80, +42, +59, +6, -29), # freq=74 'overwhelmed': ( -89, +103, -127, +97, -61), # freq=27 'pain': ( -89, +90, -127, +97, -48), # freq=256 'panic': (-102, +127, -127, +127, +61), # freq=34 'panicked': (-127, +127, -127, +127, +73), # freq=9 'passionate': ( +51, +18, +34, +0, +20), # freq=18 'peace': ( +32, -18, +34, +0, +10), # freq=136 'peaceful': ( +32, -22, +34, +0, +8), # freq=53 'pessimistic': (-127, -58, -54, +19, +73), # freq=7 'pity': ( -94, -27, -127, +0, -61), # freq=21 'pleased': ( +44, +4, +39, +0, +20), # freq=95 'pride': ( +50, +40, +89, +0, +32), # freq=75 'proud': ( +32, +22, +52, +0, +19), # freq=1038 'rage': (-114, +127, +127, +127, +85), # freq=36 'regret': ( -77, +45, -109, +39, -48), # freq=81 'rejected': (-112, -6, -109, +0, -55), # freq=23 'relief': ( +28, -13, +24, -6, +10), # freq=105 'relieved': ( +50, -29, +54, -25, +16), # freq=47 'reluctant': ( -49, +29, -22, +19, -20), # freq=9 'restless': (-114, +127, -127, +127, +24), # freq=2 'ruined': (-127, +90, -127, +77, -73), # freq=93 'sad': ( -78, -13, -44, +16, -54), # freq=1459 'sadness': ( -89, +29, -109, +19, -73), # freq=14 'safe': ( +39, -20, +72, +0, +16), # freq=286 'satisfied': ( +48, +0, +24, +0, +17), # freq=79 'scared': (-102, +127, -127, +97, +48), # freq=1096 'shame': ( -89, +58, -127, +39, -48), # freq=142 'shattered': (-114, +103, -127, +77, -73), # freq=25 'shocked': ( -42, +99, -67, +31, +20), # freq=342 'startled': ( -37, +83, +9, +49, -12), # freq=25 'stress': ( -52, +74, -67, +81, +9), # freq=171 'stressed': ( -52, +74, -92, +97, +20), # freq=119 'suffering': (-114, +74, -127, +77, -73), # freq=35 'surprise': ( +28, +96, -24, +54, +34), # freq=405 'sympathy': ( +71, +22, +52, +24, -23), # freq=6 'terrified': (-122, +79, -120, +127, +45), # freq=366 'terror': (-127, +127, -127, +127, +48), # freq=7 'thrill': ( +41, +27, +29, +2, +16), # freq=15 'thrilled': ( +80, +50, +40, +0, +35), # boosted — strong joy word like ecstatic 'torn': ( -52, +49, -67, +31, -29), # freq=36 'trust': ( +28, +4, +34, +0, +8), # freq=438 'uncomfortable': ( -42, +38, -67, +31, -9), # freq=51 'uneasy': ( -37, +22, -27, +40, +7), # freq=43 'upset': ( -77, +74, -54, +57, -24), # freq=693 'valued': ( +51, +0, +42, +0, +21), # freq=8 'worried': ( -42, +63, -92, +81, +20), # freq=525 'worry': ( -42, +49, -67, +49, +9), # freq=340 'worthless': (-127, +20, -127, +95, -89), # freq=10 'wrecked': (-117, +33, -97, +27, -55), # freq=18 # ── INTENSIFIERS — Degree modifiers and amplifiers ── 'awfully': ( -94, +0, -37, +0, -39), # freq=6 'constantly': ( +35, +9, +57, +2, +20), # freq=54 'desperately': ( -94, +121, -127, +89, -55), # freq=10 'especially': ( +28, +27, +24, +0, +10), # freq=486 'extremely': ( +29, +56, +112, +18, +27), # freq=112 'fairly': ( +29, -6, +34, +0, +14), # freq=50 'hardly': ( -94, -90, -22, +0, -36), # freq=74 'honestly': ( +50, +2, +29, +0, +20), # freq=185 'horribly': (-127, +36, -22, +27, -46), # freq=21 'incredibly': ( +35, +11, +2, +1, +10), # freq=54 'insanely': ( -94, +127, -104, +97, -51), # freq=11 'never': ( -28, +11, -9, +13, -7), # freq=2470 'pretty': ( +50, +20, +17, +0, +24), # freq=2066 'quite': ( -29, -63, -27, +0, -13), # freq=686 'rather': ( -27, -49, -32, +0, -13), # freq=138 'really': ( +28, +40, +24, +0, +10), # freq=7818 'terribly': (-123, +63, -32, +50, -48), # freq=47 'truly': ( +28, +40, +24, +0, +10), # freq=170 # ── RELATIONSHIP WORDS — Trust, connection, bonds ── 'alone': ( -67, -13, -44, +16, -45), # freq=792 'apart': ( -52, +38, -92, +31, -40), # freq=96 'attachment': ( +57, +18, +59, +6, +10), # freq=7 'bond': ( +39, +20, +54, +0, +16), # freq=47 'breakup': (-127, +127, -127, +39, +97), # freq=10 'brother': ( +29, +20, +17, +12, +8), # freq=876 'caring': ( +29, -6, +0, +0, +8), # freq=329 'cheated': (-127, +127, -127, +116, -48), # freq=154 'cheating': (-127, +127, -127, +116, -48), # freq=117 'cold': ( -24, +13, -24, +18, -10), # freq=129 'commitment': ( +39, +29, +72, +12, +16), # freq=17 'couple': ( +32, +4, +7, +1, +10), # freq=517 'daughter': ( +39, +20, +17, +12, +16), # freq=784 'dishonest': ( -86, -2, -127, +0, -53), # freq=4 'distant': ( -77, -47, -97, +0, -43), # freq=17 'divorce': (-114, +103, -127, +97, -73), # freq=61 'enemy': (-127, +127, -54, +127, +73), # freq=10 'faithful': ( +28, +9, +34, +0, +8), # freq=334 'fake': ( -67, +26, +22, +32, +18), # freq=34 'family': ( +50, +20, +34, +12, +16), # freq=1932 'friend': ( +29, +9, +7, +0, +12), # freq=2828 'friendship': ( +48, -13, +27, +0, +17), # freq=51 'honest': ( +39, +20, +54, +0, +16), # freq=171 'honesty': ( +71, +4, +77, +0, -10), # freq=13 'husband': ( +66, +18, +59, +6, +10), # freq=860 'liar': (-102, +103, +82, +57, +48), # freq=13 'lover': ( +35, +27, +27, +3, +14), # freq=25 'loving': ( +35, +9, +19, +1, +13), # freq=76 'loyalty': ( +50, +20, +72, +0, +16), # freq=18 'lying': ( -81, +54, -82, +39, -40), # freq=55 'marriage': ( +66, +27, +67, +6, +23), # freq=90 'mother': ( +50, +20, +34, +12, +16), # freq=392 'parent': ( +28, +27, +49, +35, +10), # freq=158 'partner': ( +62, +13, +59, +6, +4), # freq=219 'relationship': ( +37, +4, +12, +1, +13), # freq=315 'sister': ( +29, +20, +17, +12, +8), # freq=537 'son': ( +39, +20, +17, +12, +16), # freq=898 'spouse': ( +56, +18, +42, +4, +23), # freq=58 'supportive': ( +39, -6, +19, +0, +14), # freq=78 'together': ( +39, +20, +34, +0, +16), # freq=689 'unfaithful': (-127, +83, -87, +70, -61), # freq=9 'wedding': ( +32, +27, +24, +6, +23), # freq=197 'wife': ( +66, +18, +59, +6, +10), # freq=999 # ── CRISIS WORDS — Trauma, danger, emergency ── 'abuse': (-127, +119, -127, +127, -73), # freq=44 'abused': (-127, +119, -127, +127, -73), # freq=35 'accident': (-104, +110, -69, +81, -48), # freq=242 'addicted': (-102, +74, -127, +97, -73), # freq=19 'addiction': (-102, +74, -127, +97, -73), # freq=31 'attack': ( -51, +99, +64, +61, -5), # freq=81 'bleeding': ( -77, +90, -109, +97, -36), # freq=12 'crash': ( -67, +40, -44, +111, -36), # freq=76 'crisis': ( -89, +119, -127, +127, -36), # freq=9 'cry': ( -20, +40, -25, +20, +30), # liquid -- happy tears vs sad tears. High G, reduced V. 'crying': ( -25, +35, -20, +25, +30), 'danger': ( -77, +119, -127, +127, +24), # freq=16 'dangerous': (-127, +119, +69, +100, -34), # freq=103 'dead': (-114, +45, -127, +39, -97), # freq=155 'death': (-127, +103, -127, +116, -85), # freq=139 'die': (-127, +127, -127, +127, -121), # freq=146 'dying': (-102, +103, -127, +116, -85), # freq=53 'emergency': ( -89, +127, -127, +127, -36), # freq=80 'harm': ( -77, +58, +54, +57, -12), # freq=46 'harmful': (-102, +74, +54, +57, +24), # freq=4 'healing': ( +56, -9, +24, +0, +20), # freq=28 'homeless': (-127, +90, -127, +127, -108), # freq=90 'hospital': ( -77, +90, -127, +127, -48), # freq=192 'killing': ( -77, +127, +82, +127, +48), # freq=34 'loss': ( -60, +20, -55, +35, -40), # grief: bereavement, deprivation 'lost': ( -46, +11, -55, +40, -30), # freq=808 'murder': (-123, +119, +49, +97, -34), # freq=10 'poverty': (-127, +20, -109, +127, +80), # freq=4 'recovery': ( +39, +29, +54, +25, +16), # freq=22 'scream': ( -52, +127, +44, +97, +50), # freq=33 'screaming': ( -77, +127, +54, +97, +48), # freq=41 'starving': ( -52, +63, -67, +81, -29), # freq=26 'suicidal': (-127, +127, -127, +127, -127), # freq=7 'suicide': (-127, +79, -127, +127, -98), # freq=6 'toxic': (-114, +90, +54, +57, +48), # freq=2 'trauma': (-127, +127, -127, +127, +85), # freq=20 'traumatic': (-123, +103, -32, +86, -48), # freq=20 'victim': (-102, +74, -127, +77, -61), # freq=6 'violence': (-123, +117, +97, +93, -27), # freq=2 'violent': (-109, +112, +49, +86, -28), # freq=9 'wound': ( -52, +49, -67, +49, -29), # freq=22 # ── SLANG — Informal emotional language ── 'amazing': ( +48, +38, +34, +0, +29), # freq=995 'awesome': ( +65, +35, +30, +0, +25), # boosted — strong positive exclamation 'awful': (-127, +74, -82, +57, -61), # freq=473 'basic': ( -77, -45, -54, +0, +12), # freq=25 'blessed': ( +28, +6, +14, +0, +14), # freq=67 'bomb': ( -94, +110, +109, +81, -14), # freq=29 'brutal': (-102, +119, +82, +77, -24), # freq=21 'bummed': ( -47, -15, -87, +0, -29), # freq=76 'crap': ( -37, +11, -9, +13, -7), # freq=52 'crazy': ( -24, +83, +24, +35, +23), # freq=541 'cringe': (-127, +103, -127, +39, +36), # freq=15 'cursed': ( -89, +33, -55, +47, -45), # freq=7 'damn': ( -32, +49, +22, +31, +9), # freq=74 'deadly': (-100, +92, +22, +70, -31), # freq=10 'disgusting': (-122, +53, +33, +47, +54), # freq=157 'dreadful': (-122, +46, -87, +79, -54), # freq=8 'extra': ( -52, +74, -44, +15, +9), # freq=283 'fantastic': ( +31, +12, +14, +0, +20), # freq=101 'garbage': ( -89, +45, -54, +39, -36), # freq=66 'gross': ( -77, +58, +27, +19, +36), # freq=377 'hell': ( -37, +28, +9, +26, -30), # freq=61 'horrible': (-122, +46, -22, +79, -36), # freq=517 'hyped': ( +46, +13, +49, +2, +23), # freq=23 'insane': ( -28, +44, +18, +40, +22), # freq=73 'killer': (-127, +127, +0, +104, -43), # freq=21 'legit': ( +55, -13, +102, +0, +32), # freq=11 'lit': ( +62, +51, +52, +6, -23), # freq=9 'mood': ( +28, -4, +24, +0, -8), # freq=76 'nuts': ( +28, -60, -84, +0, -6), # freq=50 'oof': ( -77, +45, -109, +19, +24), # freq=24 'pathetic': (-100, +20, -76, +32, -54), # freq=9 'petty': ( -81, +9, -114, +7, -48), # freq=14 'pissed': (-127, +127, +109, +127, +36), # freq=85 'screwed': (-127, +127, -127, +127, +61), # freq=14 'shady': ( -40, +2, -44, +0, -21), # freq=26 'sick': ( -77, +45, -127, +57, -36), # freq=612 'sketchy': ( -37, -4, -77, +0, -25), # freq=25 'suck': ( -36, +47, -44, +25, -20), # freq=58 'sucks': ( -67, +26, -11, +32, -18), # freq=589 'terrible': (-111, +40, -22, +63, -36), # freq=856 'wonderful': ( +42, +22, +24, +0, +23), # freq=515 'yikes': ( -52, +63, -44, +15, +9), # freq=111 # ── COGNITIVE/EVALUATIVE — Right, wrong, fair, deserve ── 'accomplishment': ( +43, +15, +52, +1, +21), # freq=89 'ache': ( -52, +20, -44, +25, -30), # grief: persistent pain 'aching': ( -52, +20, -44, +25, -30), # grief: persistent pain 'achieve': ( +28, +22, +42, +6, +19), # freq=43 'achievement': ( +42, +27, +34, +2, +17), # freq=32 'agree': ( +29, +9, +34, +0, +16), # freq=625 'believe': ( +39, +20, +54, +12, +24), # freq=963 'blame': ( -52, +63, +44, +31, +20), # freq=129 'certain': ( +29, +20, +89, +12, +8), # freq=122 'choice': ( +42, +42, +102, +67, +10), # freq=168 'choose': ( +51, +33, +94, +55, +8), # freq=52 'clear': ( +29, +9, +54, +0, +16), # freq=65 'decide': ( +28, +40, +99, +35, +10), # freq=71 'decision': ( +32, +2, +97, +0, +25), # freq=117 'defeat': ( -77, +74, -127, +39, -48), # freq=4 'deserved': ( +29, +6, +24, +1, +13), # freq=75 'difficult': ( -28, +17, -18, +40, -7), # freq=314 'doubt': ( -32, +24, -67, +31, -20), # freq=92 'easy': ( +29, -20, +54, +0, +16), # freq=330 'failure': ( -89, +58, -127, +57, -61), # freq=20 'false': (-127, +90, -109, +57, +36), # freq=13 'fault': ( -37, +17, -9, +26, -15), # freq=136 'fight': ( -42, +99, +92, +81, +29), # freq=175 'fighting': ( -77, +119, +82, +97, +36), # freq=52 'fought': ( -94, +51, +17, +39, -28), # freq=8 'hard': ( -24, +27, +49, +35, -10), # freq=2616 'impossible': ( -52, +38, -92, +31, -29), # freq=37 'irresponsible': ( -92, +47, -114, +34, -51), # freq=26 'mistake': ( -46, +17, -27, +40, -15), # freq=153 'overcome': ( +50, +49, +107, +12, +32), # freq=57 'possible': ( +21, +6, +10, +15, +8), # freq=171 'purpose': ( +39, +29, +54, +12, +24), # freq=47 'quit': ( -32, +24, -67, +31, -20), # freq=127 'reason': ( +28, +27, +74, +35, +10), # freq=426 'responsible': ( +35, +2, +47, +0, +17), # freq=62 'result': ( +28, +40, +74, +54, +10), # freq=55 'significant': ( +34, +11, +39, +2, +16), # freq=24 'struggle': ( -52, +63, -92, +65, -29), # freq=48 'success': ( +32, +22, +42, +0, +19), # freq=77 'survive': ( +28, +54, +99, +54, +10), # freq=44 'true': ( +86, +13, +112, +12, +19), # freq=746 'understand': ( +28, +27, +49, +18, +10), # freq=981 'unfair': ( -92, -9, -127, +0, -53), # freq=41 'villain': ( -92, +103, +37, +73, -24), # freq=3 'win': ( +24, +12, +21, +5, +20), # freq=523 'winning': ( +32, +22, +42, +0, +19), # freq=114 'wrong': ( -42, +24, -44, +49, -9), # freq=495 # ── GENERAL EMOTIONAL — Other words with meaningful emotional force ── 'abilities': ( +51, +2, +47, +0, +23), # freq=35 'ability': ( +39, +0, +39, +0, +17), # freq=36 'able': ( +28, +13, +74, +0, +10), # freq=1446 'abroad': ( +37, +18, +17, +4, +14), # freq=31 'absolute': ( +48, +9, +102, +18, +38), # freq=25 'abusive': (-104, +108, +27, +81, -31), # freq=26 'accept': ( +39, +9, +54, +0, +16), # freq=58 'acceptance': ( +50, +9, +54, +0, +16), # freq=15 'access': ( +48, -6, +17, +0, +17), # freq=21 'accidentally': ( -37, +54, -59, +31, -24), # freq=158 'account': ( +50, +29, +107, +63, +8), # freq=61 'accused': (-104, +45, -32, +34, -40), # freq=24 'ace': ( +32, -4, +14, +0, +10), # freq=47 'achieved': ( +42, +2, +37, +0, +17), # freq=19 'across': ( +28, +27, +49, +18, +0), # freq=161 'act': ( +34, +36, +69, +9, +20), # freq=95 'acting': ( +43, +24, +0, +7, +12), # freq=71 'action': ( +58, +72, +87, +15, +31), # freq=35 'active': ( +35, +20, +29, +2, +16), # freq=22 'activities': ( +35, +42, +22, +6, +13), # freq=30 'activity': ( +43, +27, +89, +7, +27), # freq=21 'actual': ( +50, -18, +62, +0, +25), # freq=41 'add': ( +50, -2, +14, +0, +17), # freq=29 'addict': (-119, +54, -77, +43, -53), # freq=19 'admirable': ( +44, +9, +52, +0, +21), # freq=12 'admitted': ( +48, -2, +74, +0, +27), # freq=16 'adopt': ( +42, +20, +57, +4, +23), # freq=43 'adoption': ( +50, +40, +54, +25, +24), # freq=17 'adorable': ( +32, +18, +7, +0, +19), # freq=55 'adult': ( +32, +0, +39, +0, +16), # freq=91 'advance': ( +37, -6, +104, +0, +28), # freq=58 'advantage': ( +80, +51, +102, +36, -27), # freq=44 'adventure': ( +50, +58, +54, +12, +40), # freq=37 'advice': ( +43, -15, +54, +0, +23), # freq=135 'affair': (-114, +119, -109, +97, -36), # freq=15 'afford': ( -32, +38, -67, +65, -20), # freq=244 'against': ( -32, +49, +44, +49, +20), # freq=96 'aged': (-102, -36, -114, +0, -55), # freq=11 'aggravating': ( -57, +51, +49, +31, -12), # freq=32 'aggressive': ( -52, +87, +67, +65, +29), # freq=24 'agreed': ( +31, -4, +9, +0, +10), # freq=72 'ahead': ( +46, +4, +49, +0, +23), # freq=129 'aid': ( +41, +0, +4, +0, +13), # freq=19 'air': ( +39, +9, +17, +0, -24), # freq=85 'airplane': ( +48, +36, +62, +7, +24), # freq=34 'airport': ( +32, +69, +77, +103, +34), # freq=59 'alarm': ( -32, +74, -22, +97, +20), # freq=42 'album': ( +29, -27, -14, +0, +6), # freq=39 'alcohol': ( -32, +38, -22, +31, -9), # freq=46 'alive': ( +28, +18, +24, +6, +14), # freq=115 'allergic': (-102, +11, -97, +11, -51), # freq=31 'allergies': ( -94, +0, -127, +0, -55), # freq=14 'allergy': ( -77, +58, -109, +127, +12), # freq=10 'alley': ( -36, +0, -54, +0, -20), # freq=19 'allowed': ( +50, -24, +42, +0, +23), # freq=49 'along': ( +21, -20, -9, +0, +5), # freq=198 'alright': ( +24, -29, +9, +0, +9), # freq=194 'amazed': ( +31, +22, +4, +3, +9), # freq=80 'amusement': ( +44, +27, +39, +1, +20), # freq=54 'animal': ( +28, +27, +24, +0, +10), # freq=178 'anniversary': ( +39, +29, +34, +0, +24), # freq=94 'annoy': (-114, +72, -92, +54, -55), # freq=13 'annoying': ( -52, +49, +22, +31, +20), # freq=403 'annoys': (-100, +74, -27, +54, -39), # freq=13 'answer': ( +29, +20, +54, +12, +16), # freq=83 'anymore': ( -32, +24, -44, +15, -9), # freq=357 'anywhere': ( +29, -24, -42, +0, +1), # freq=108 'apartments': ( +43, -29, -17, +0, +9), # freq=15 'apologized': ( +35, -29, -79, +0, -2), # freq=35 'apple': ( +62, +4, +52, +6, -10), # freq=39 'application': ( +32, -9, +64, +0, +20), # freq=36 'applied': ( +29, +27, +32, +4, +14), # freq=152 'appointment': ( +42, +15, +14, +4, +14), # freq=80 'appreciate': ( +21, +4, +10, +0, +8), # freq=232 'appreciates': ( +58, +0, +42, +0, +24), # freq=18 'appreciation': ( +71, +33, +77, +12, -23), # freq=10 'appreciative': ( +36, -11, +19, +0, +14), # freq=49 'apprehensive': ( -24, +22, -29, +11, -13), # freq=232 'approaching': ( +51, +9, -2, +2, +14), # freq=11 'approved': ( +35, -13, +27, +0, +14), # freq=54 "aren't": ( -24, +13, +0, +18, +0), # freq=219 'argue': ( -42, +74, +44, +49, +20), # freq=23 'argument': ( -52, +87, +44, +65, +20), # freq=49 'arranged': ( +43, +6, +64, +2, +24), # freq=13 'arrested': ( -89, +119, -127, +127, -36), # freq=42 'arrive': ( +35, -6, +12, +0, +12), # freq=42 'arrived': ( +39, +29, +54, +0, +16), # freq=48 'art': ( +39, +29, +34, +0, +24), # freq=49 'asleep': ( +37, -47, +34, +0, -23), # freq=91 'assertive': ( +48, -15, +79, +0, +27), # freq=14 'assume': ( +43, -18, -9, +0, +10), # freq=44 'assuming': ( +51, -20, +7, +0, +16), # freq=30 'assured': ( +39, -15, +34, +0, +17), # freq=16 'athletic': ( +36, +24, +29, +3, +16), # freq=41 'attend': ( +32, -13, +34, +0, +16), # freq=69 'attention': ( +51, +18, +79, +4, +28), # freq=134 'attic': ( +28, -54, -74, +18, +44), # freq=49 'attitude': ( +58, +24, +104, +4, +34), # freq=107 'attractive': ( +50, +29, +34, +0, +24), # freq=32 'aunt': ( +32, +9, +34, +0, +8), # freq=116 'autoimmune': ( -94, +90, -124, +66, -53), # freq=12 'available': ( +28, -11, +17, +0, +10), # freq=52 # 'average' removed — neutral factual word causing positive drift 'award': ( +37, +20, +22, +2, +14), # freq=53 'awkward': ( -32, +38, -92, +15, -9), # freq=92 'babies': ( +42, +27, -27, +2, +8), # freq=108 'babysit': ( +48, +15, -29, +2, +9), # freq=30 'bacon': ( +66, +33, +34, +30, +10), # freq=12 'bad': ( -77, +29, -54, +39, -24), # freq=2987 'barely': ( -50, +15, -45, +25, -30), # grief: struggling, minimal capacity 'badly': (-119, +2, -92, +3, -58), # freq=99 'bahamas': ( +35, +20, +0, +2, +9), # freq=20 'bake': ( +39, +20, +54, +0, +16), # freq=22 'baked': ( +31, -36, -2, +0, +8), # freq=42 'balance': ( +39, -40, +69, +0, +23), # freq=40 'banana': ( +57, +4, +52, +12, -10), # freq=14 'band': ( +32, +9, +7, +2, +10), # freq=133 'bang': ( -55, +101, +87, +65, -4), # freq=20 'bank': ( +39, +40, +127, +77, +88), # freq=130 'baseball': ( +35, +45, +17, +12, +12), # freq=87 'based': ( +48, +13, +67, +0, +8), # freq=50 'basement': ( -32, -24, -92, +15, +81), # freq=92 'basketball': ( +32, +22, -7, +3, +8), # freq=45 'bat': ( -40, -20, -9, +0, -16), # freq=37 'bathing': ( +51, -40, -39, +0, +8), # freq=10 'battle': ( -32, +87, +92, +65, +20), # freq=30 'beaches': ( +37, +0, +2, +0, +10), # freq=19 'bear': ( +42, +38, +84, +24, +27), # freq=36 'beat': ( -51, +31, -4, +19, -17), # freq=125 'beaten': (-117, +92, -104, +73, -58), # freq=13 'beating': ( -96, +90, -9, +66, -34), # freq=20 'beautiful': ( +28, +6, +7, +0, +14), # freq=259 'beauty': ( +35, +9, +19, +1, +13), # freq=21 'became': ( +28, +40, +49, +35, +10), # freq=78 'become': ( +37, +33, +67, +18, -8), # freq=157 'beef': ( +51, +9, +42, +18, +14), # freq=12 'begging': ( -49, -9, -109, +0, -34), # freq=20 'behave': ( +37, -24, +72, +0, +23), # freq=22 'behavior': ( +28, -13, +124, +0, +28), # freq=65 'behind': ( -32, +24, -44, +31, -20), # freq=229 'belief': ( +42, -11, +19, +0, +16), # freq=17 'believed': ( +39, +20, +54, +12, +8), # freq=36 'bench': ( +66, -33, +59, +0, +29), # freq=23 'best': ( +37, +22, +34, +0, +23), # freq=1882 'bet': ( +32, +18, +42, +12, -4), # freq=1547 'betrayal': (-114, +119, -127, +77, -48), # freq=10 'better': ( +29, +9, +14, +10, +12), # freq=2110 'bicycle': ( +46, +4, -22, +0, +9), # freq=21 'bid': ( +58, +6, +42, +0, +24), # freq=11 'big': ( +32, +22, +94, +12, +53), # freq=1198 'bigger': ( +35, -2, +47, +0, +17), # freq=72 'biggest': ( +42, +0, +69, +0, +24), # freq=76 'bills': ( -52, +49, -67, +81, -29), # freq=190 'binge': ( -47, +36, +0, +19, -16), # freq=31 'bipolar': (-127, +73, -98, +95, +36), # freq=11 'bird': ( +28, +27, +24, +0, +34), # freq=60 'birth': ( +39, +58, -17, +38, +24), # freq=44 'birthday': ( +50, +40, +34, +0, +32), # freq=766 'bit': ( +29, +9, +17, +12, +0), # freq=835 'bite': ( -52, +74, +44, +65, +9), # freq=46 'bitten': ( -83, +90, -127, +62, -53), # freq=12 'bitter': ( -42, +24, +22, +15, -9), # freq=12 'black': ( -32, +24, +67, +15, +29), # freq=119 'blamed': ( -86, +72, -127, +50, -55), # freq=34 'blast': ( -94, +117, +119, +81, -12), # freq=102 'bless': ( +50, +20, +54, +0, +24), # freq=23 'blessing': ( +44, -20, +39, +0, +20), # freq=63 'blessings': ( +44, -11, +17, +0, +16), # freq=19 'blew': ( -81, +11, +0, +7, -28), # freq=44 'blind': ( -42, +24, -92, +31, -20), # freq=41 'block': ( -32, +24, -67, +31, -20), # freq=36 'blow': ( -42, +54, +27, +31, -9), # freq=38 'blown': ( -37, +9, -32, +6, -17), # freq=28 'blue': ( +39, -20, +34, +0, -16), # freq=104 'board': ( +28, -60, -44, +0, +0), # freq=62 'bonus': ( +50, +40, +54, +12, +32), # freq=98 'books': ( +50, -69, -22, +0, +10), # freq=89 'boost': ( +37, +20, +34, +2, +16), # freq=18 'boring': ( -24, -83, -24, +0, -23), # freq=104 'born': ( +50, +49, +17, +12, +32), # freq=190 'boss': ( -24, +40, +24, +54, +0), # freq=395 'bother': ( -81, +74, -54, +50, -39), # freq=88 'bothering': ( -81, +72, -22, +50, -31), # freq=26 'bout': ( +62, +74, +77, +73, +14), # freq=25 'bowling': ( +34, -11, -54, +0, +1), # freq=33 'boyfriend': ( +62, +38, +42, +12, -10), # freq=343 'boys': ( +35, +54, -9, +15, +8), # freq=47 'breakfast': ( +29, +9, +17, +0, +8), # freq=64 'breaking': ( -77, +103, -82, +77, -36), # freq=85 'breast': ( +56, -11, +0, +0, +16), # freq=17 'bright': ( +50, +29, +34, +0, +32), # freq=76 'brilliant': ( +42, +27, +42, +0, +27), # freq=21 'broke': ( -89, +74, -127, +77, -61), # freq=437 'brownies': ( +51, -27, -2, +0, +14), # freq=17 'buddies': ( +35, +15, +29, +2, +14), # freq=25 'buddy': ( +29, +20, +17, +0, +8), # freq=155 'buffet': ( +34, +9, +7, +2, +10), # freq=24 'bug': ( -32, +38, -44, +81, -9), # freq=56 # 'building' removed — neutral factual word with extreme D/G bias 'bully': ( -57, +58, +22, +35, -16), # freq=10 'bummer': ( -94, +0, -104, +0, -48), # freq=139 'bump': ( -51, -9, -49, +0, -25), # freq=14 'bunch': ( +48, +22, +42, +12, +10), # freq=245 'bunny': ( +51, -31, -87, +0, +0), # freq=11 'burden': (-102, +45, -127, +57, -97), # freq=19 'burger': ( +48, +18, +17, +18, +10), # freq=59 'burn': ( -79, +74, +4, +50, -27), # freq=36 'burned': ( -42, +49, -44, +49, +20), # freq=46 'burnt': (-102, +58, -82, +39, +24), # freq=12 'burrito': ( +62, +27, +24, +43, +14), # freq=12 'burst': ( -96, +103, +127, +77, -6), # freq=20 'business': ( +28, +40, +99, +54, +34), # freq=262 'busted': ( -83, +47, -64, +30, -39), # freq=22 'busy': ( -32, +123, +44, +127, +20), # freq=264 'butt': ( -36, +49, -59, +29, -21), # freq=52 'button': ( +29, +29, +54, +25, +0), # freq=45 'buying': ( +35, +51, +24, +15, +14), # freq=132 'cage': ( -52, +38, -127, +31, -40), # freq=23 'cake': ( +62, +18, +17, +6, -10), # freq=277 'calming': ( +39, -38, -17, +0, +9), # freq=15 'camping': ( +34, +6, -7, +2, +9), # freq=154 "can't": ( -28, +11, -27, +26, -7), # freq=2052 'cancel': ( -79, -51, -59, +0, -36), # freq=91 'canceled': ( -52, +49, -67, +49, -29), # freq=42 'cancelled': ( -52, +49, -67, +49, -29), # freq=52 'cancer': (-127, +103, -127, +127, -97), # freq=192 'candy': ( +62, +38, +17, +18, -14), # freq=129 'cannot': ( -55, -29, -49, +0, -25), # freq=198 'capable': ( +58, +15, +14, +2, +19), # freq=16 'care': ( +29, +20, +34, +12, +35), # embrace -- high G. to care = to hold. 'career': ( +51, +38, +29, +7, +20), # freq=104 'carefree': ( +56, -49, +0, +0, +16), # freq=15 'careful': ( +28, +13, +74, +18, +0), # freq=165 'careless': ( -32, +24, -44, +15, +0), # freq=29 'carnival': ( +44, +33, +7, +2, +14), # freq=19 'carry': ( +39, +90, +127, +103, +88), # freq=64 'cash': ( +80, +60, +94, +61, +19), # freq=86 'cat': ( +29, +9, +17, +0, +16), # freq=724 'catch': ( +28, +40, +49, +35, +10), # freq=236 'caught': ( -32, +49, -44, +49, -9), # freq=289 'caused': ( -36, +4, -39, +3, -20), # freq=71 'celebrate': ( +42, +38, +34, +0, +29), # freq=111 'celebrated': ( +39, +15, +34, +1, +17), # freq=27 'celebrating': ( +44, +22, +37, +1, +19), # freq=25 'celebration': ( +44, +27, +52, +1, +21), # freq=16 'center': ( +32, -47, -22, +0, +6), # freq=34 'ceo': ( +48, +51, +84, +55, +29), # freq=12 'cereal': ( +37, +9, +34, +49, -4), # freq=18 'ceremony': ( +58, +9, +74, +2, +28), # freq=13 'certainly': ( +29, +20, +54, +0, +16), # freq=149 'certification': ( +34, +2, +22, +0, +13), # freq=34 'championship': ( +35, +24, +52, +3, +19), # freq=20 'chance': ( +28, +40, +24, +35, +23), # freq=270 'character': ( +35, -22, +54, +0, +19), # freq=50 'charity': ( +66, +9, +52, +6, -14), # freq=42 'chase': ( -32, +99, +67, +97, +29), # freq=28 'chased': ( -86, +90, -92, +62, -46), # freq=29 'chat': ( +50, -18, -42, +0, +8), # freq=52 'cheat': ( -89, +74, +82, +57, +24), # freq=106 'cheer': ( +44, +24, +47, +1, +21), # freq=43 'cheesecake': ( +37, -18, -34, +0, +5), # freq=36 'chef': ( +36, -6, +9, +0, +12), # freq=18 'chemistry': ( +28, +4, +57, +0, +17), # freq=43 'cherish': ( +37, +13, +24, +0, +14), # freq=70 'chicken': ( +51, +9, +42, +18, +8), # freq=88 'childhood': ( +37, -6, -24, +0, +6), # freq=298 'chilling': ( -81, +92, -59, +66, -39), # freq=10 'chip': ( +50, +29, +126, +38, +8), # freq=20 'chipotle': ( +51, +24, +7, +4, +16), # freq=12 'chocolate': ( +66, +22, +17, +18, -8), # freq=125 'choked': ( -94, +108, -127, +77, -58), # freq=13 'choosing': ( +48, +6, +54, +0, +23), # freq=10 'christmas': ( +57, +38, +42, +24, -8), # freq=238 'church': ( +28, -9, +42, +6, +19), # freq=115 'circus': ( +50, +24, -17, +4, +10), # freq=22 'cities': ( +35, +27, +47, +3, +17), # freq=25 'claim': ( -57, +58, -9, +39, -21), # freq=12 'class': ( +34, -33, +7, +0, +10), # freq=434 'classic': ( +42, -42, +32, +0, +17), # freq=45 'clearance': ( +66, +47, +67, +67, -19), # freq=11 'climb': ( +66, +78, +94, +55, +57), # freq=21 'clogged': ( -94, -90, -114, +0, -51), # freq=14 'closest': ( +42, -18, +2, +0, +12), # freq=20 'clothes': ( +37, +9, +52, +18, +8), # freq=177 'clothing': ( +56, -27, -24, +0, +10), # freq=19 'club': ( +32, +22, -32, +7, +5), # freq=52 'clubs': ( +50, +6, +24, +0, +19), # freq=22 'clue': ( +34, -22, -24, +0, +5), # freq=44 'coast': ( +48, -18, -9, +0, +12), # freq=37 'cockroach': ( -86, +45, -127, +30, -53), # freq=13 'code': ( +39, +40, +107, +38, +8), # freq=19 'colleague': ( +50, +29, +89, +38, +16), # freq=18 'collection': ( +50, -33, +24, +0, +19), # freq=18 'college': ( +43, -6, +72, +0, +24), # freq=802 'color': ( +29, -18, -12, +0, +5), # freq=68 'colors': ( +39, -13, -22, +0, +8), # freq=42 'combination': ( +46, -4, +64, +0, +24), # freq=15 'comedy': ( +80, +56, +59, +18, -23), # freq=20 'comforting': ( +42, -13, +17, +0, +14), # freq=13 'comic': ( +43, -4, -14, +0, +9), # freq=14 'comics': ( +42, +9, -32, +2, +6), # freq=16 'committed': ( +46, +9, +62, +2, +24), # freq=36 'communicate': ( +34, -6, +27, +0, +14), # freq=23 'community': ( +29, +20, +34, +0, +16), # freq=52 'company': ( +42, -6, +39, +0, +19), # freq=483 'competition': ( +24, +72, +119, +24, +27), # freq=81 'complain': (-100, +47, -59, +34, -43), # freq=95 'complaint': (-100, +29, -97, +19, -51), # freq=23 'complete': ( +39, +20, +54, +0, +16), # freq=62 'completed': ( +34, -11, +37, +0, +16), # freq=31 'complicated': ( -32, +38, -44, +31, -9), # freq=33 'concentrate': ( +56, -9, +69, +0, +27), # freq=12 'concern': ( -59, +51, -12, +35, -21), # freq=18 'concerned': ( -49, +45, -54, +25, -25), # freq=58 'concert': ( +44, +31, +29, +1, +17), # freq=182 'condolences': ( -83, -6, -92, +0, -43), # freq=18 'conference': ( +42, +20, +29, +4, +17), # freq=21 'confront': ( -51, +58, +92, +35, -1), # freq=50 'congrats': ( +32, +22, +24, +0, +19), # freq=344 'congratulation': ( +46, +22, +29, +1, +17), # freq=18 'congratulations': ( +49, +22, +29, +1, +19), # freq=475 'connection': ( +39, +20, +34, +0, +16), # freq=16 'conquer': ( +50, +58, +127, +25, +40), # freq=13 'conscious': ( +51, -29, +57, +0, +25), # freq=20 'consider': ( +37, -24, +22, +0, +14), # freq=88 'constant': ( +51, -36, +54, +0, +24), # freq=14 'contact': ( +48, -13, +7, +0, +16), # freq=92 'contest': ( +35, +36, +62, +9, +20), # freq=82 'control': ( +28, +40, +127, +35, +10), # freq=184 'conversation': ( +56, +2, +32, +0, +20), # freq=77 'convince': ( +46, +9, +74, +2, +25), # freq=15 'convinced': ( +56, +0, +34, +0, +23), # freq=18 'cookie': ( +71, +22, +34, +18, -10), # freq=21 'cookies': ( +34, -4, -24, +0, +5), # freq=68 'cool': ( +29, +9, +34, +0, +16), # freq=1254 'correct': ( +86, +18, +112, +36, -19), # freq=43 'correctly': ( +44, +0, +57, +0, +21), # freq=14 'corrupt': ( -89, +58, +54, +39, -24), # freq=23 'cost': ( -32, +123, +127, +127, +61), # freq=136 'couldnt': ( -79, -15, -77, +0, -40), # freq=195 'counseling': ( +35, -4, +57, +0, +20), # freq=23 'counselor': ( +39, -11, +27, +0, +16), # freq=20 'count': ( +29, +40, +127, +115, +40), # freq=97 'counter': ( +39, +20, +72, +12, +0), # freq=25 'country': ( +43, -20, +54, +0, +23), # freq=288 'counts': ( -36, -27, +0, +0, -12), # freq=19 'courage': ( +50, +49, +107, +12, +32), # freq=36 'course': ( +24, -2, +2, +0, +8), # freq=311 'courses': ( +51, -15, +9, +0, +16), # freq=20 'cousin': ( +31, +6, +14, +10, +6), # freq=128 'cousins': ( +58, -15, -9, +0, +14), # freq=35 'cow': ( +51, -18, +77, +6, +57), # freq=45 'cracked': ( -77, +6, -119, +3, -46), # freq=25 'crappy': (-127, +20, -124, +19, -65), # freq=37 'cream': ( +86, -27, +67, +12, +4), # freq=137 'creative': ( +43, +2, +39, +0, +19), # freq=26 'credit': ( +28, +27, +99, +54, +10), # freq=155 'creep': ( -52, +49, -22, +31, +9), # freq=21 'creepy': ( -42, +63, -67, +31, +9), # freq=100 'cried': ( -25, +30, -20, +20, +30), # liquid -- happy/sad tears. context determines. 'crime': ( -89, +90, -82, +77, -24), # freq=35 'crowded': ( +42, -38, +24, +0, +16), # freq=21 'cruel': (-102, +90, +82, +57, +24), # freq=29 'cruise': ( +51, -9, +54, +0, +24), # freq=115 'crush': ( +57, +51, -34, +18, -19), # freq=75 'crushing': ( -67, +46, -44, +63, -98), # freq=10 'cuddle': ( +71, -22, +42, +6, -27), # freq=11 'culprit': (-123, +47, -69, +39, -55), # freq=16 'culture': ( +56, -36, +49, +0, +24), # freq=24 'cure': ( +48, -22, +34, +0, +19), # freq=27 'current': ( +28, -33, +32, +0, +12), # freq=105 'curse': ( -52, +49, -44, +31, -20), # freq=19 'cute': ( +28, +13, +7, +0, +14), # freq=265 'dad': ( +39, +20, +34, +12, +16), # freq=571 'daily': ( +50, -29, +127, +77, +55), # freq=57 'damage': ( -52, +49, -44, +49, -20), # freq=90 'damaged': (-112, +36, -127, +27, -61), # freq=43 'damages': (-117, +67, -82, +54, -53), # freq=10 'dance': ( +28, +22, +24, +0, +23), # freq=51 'dancing': ( +39, +31, -7, +3, +10), # freq=40 'darkness': ( -52, +24, -67, +15, -40), # freq=13 'darn': (-106, +72, -37, +54, -43), # freq=32 'date': ( +51, +47, +24, +43, -10), # freq=378 'deadline': ( -42, +74, -44, +127, -9), # freq=13 'deal': ( +29, +20, +34, +12, +16), # freq=460 'dealing': ( +50, -15, +29, +0, +19), # freq=50 'dear': ( +39, -4, +17, +0, +14), # freq=61 'debit': ( -37, -22, -9, +0, -13), # freq=23 'debt': ( -77, +74, -127, +97, -48), # freq=88 'decade': ( +42, +9, +126, +43, +76), # freq=15 'decent': ( +34, -15, +19, +0, +13), # freq=82 'decline': ( -42, +24, -67, +31, -29), # freq=12 'declined': ( -94, -83, -127, +0, -55), # freq=14 'dedicated': ( +50, +0, +47, +0, +21), # freq=23 'dedication': ( +37, -2, +24, +0, +14), # freq=27 'deep': ( +29, +20, +34, +0, +16), # freq=95 'definitely': ( +29, +29, +34, +0, +16), # freq=748 'degree': ( +50, +29, +72, +0, +32), # freq=139 'delicious': ( +32, +18, +17, +0, +14), # freq=120 'delivery': ( +28, +27, +24, +35, +10), # freq=48 'dementia': (-114, +74, -69, +57, -51), # freq=21 'denied': ( -86, +27, -69, +19, -40), # freq=11 'dent': ( -44, +24, -64, +13, -25), # freq=81 # 'department' removed — neutral factual word causing positive drift 'depressing': (-100, +15, -124, +11, -55), # freq=37 'desires': ( +58, +63, -54, +12, +8), # freq=13 'desperate': ( -77, +90, -127, +77, -48), # freq=14 'dessert': ( +66, +22, +17, +6, -14), # freq=19 'destroy': (-102, +119, +109, +77, -36), # freq=35 'devastating': (-127, +53, -87, +95, -80), # freq=33 'diabetes': (-100, +26, -66, +95, +36), # freq=23 'diagnosed': ( -94, -15, -87, +0, -46), # freq=43 'diagnosis': ( -77, +90, -127, +116, -48), # freq=11 "didn't": ( -21, +6, +0, +15, +0), # freq=2564 'died': (-127, +119, -127, +116, -97), # freq=449 'diet': ( -24, +27, -24, +35, -10), # freq=190 'different': ( +24, -20, -7, +0, +6), # freq=390 'difficulties': (-117, +76, -59, +62, -51), # freq=19 'digital': ( +51, -22, +7, +0, +16), # freq=11 'dinner': ( +29, +9, +17, +0, +8), # freq=449 'direction': ( +51, -15, +74, +0, +27), # freq=57 'directly': ( +55, -18, +57, +0, +25), # freq=21 'dirty': ( -32, +24, -22, +15, -20), # freq=74 'disability': (-119, -6, -127, +0, -65), # freq=11 'disappear': (-100, -15, -64, +0, -46), # freq=16 'disappointed': ( -46, +6, -27, +13, -30), # freq=375 'disappointing': (-119, +38, -127, +30, -63), # freq=90 'disaster': (-114, +119, -127, +127, -61), # freq=28 'discover': ( +50, +49, +54, +12, +40), # freq=23 'disease': (-102, +74, -127, +116, -73), # freq=40 'dislike': (-127, +58, -82, +39, +24), # freq=28 'dispute': ( -79, +65, +37, +46, -21), # freq=10 'disrespectful': ( -89, +90, +54, +39, +36), # freq=12 'distance': ( -62, -40, -32, +0, -25), # freq=91 'distract': ( -59, +24, -59, +15, -29), # freq=13 'distracted': ( -86, -29, -124, +0, -51), # freq=20 'disturbing': (-100, +76, -27, +57, -39), # freq=17 'divorced': ( -94, -76, -109, +0, -51), # freq=13 'doctor': ( -24, +40, -24, +72, -10), # freq=290 "doesn't": ( -24, +13, +0, +18, +0), # freq=645 'dog': ( +39, +29, +34, +0, +24), # freq=1996 'dollar': ( +56, +24, +57, +4, +25), # freq=69 'dont': ( -24, +13, +0, +18, +0), # freq=625 'doomed': (-127, +67, -87, +57, -58), # freq=12 'dorm': ( +48, -56, -49, +0, +6), # freq=15 'double': ( +37, -22, +22, +0, +14), # freq=63 'dove': ( +50, -47, -17, +0, +10), # freq=10 'drag': ( -89, +90, -109, +57, +24), # freq=21 'dragon': ( +57, +60, +94, +67, +38), # freq=41 'drank': ( -42, -13, +12, +0, -12), # freq=45 'drawing': ( +43, -51, -47, +0, +5), # freq=23 'dreading': (-104, +67, -54, +54, -46), # freq=23 'dream': ( +39, +29, +17, +12, +40), # freq=184 'dreams': ( +37, -6, +2, +0, +12), # freq=73 'drinks': ( +50, +27, -24, +7, +10), # freq=59 'drop': ( -77, +127, -127, +127, +127), # freq=78 'dropped': ( -51, +45, -114, +29, -36), # freq=140 'dropping': ( -89, +90, -119, +62, -51), # freq=19 'drowning': ( -60, +50, -55, +40, -40), # grief: overwhelmed, submerged 'drug': ( -52, +49, -67, +49, -20), # freq=36 'drugs': ( -77, +74, -109, +77, -36), # freq=46 'drunk': ( -42, +63, -67, +31, -20), # freq=144 'drunken': ( -96, +92, -109, +70, -51), # freq=12 'duck': ( +57, +33, +24, +18, -8), # freq=19 'dumb': ( -52, +24, -67, +15, -20), # freq=83 'dump': ( -36, +0, -44, +0, -20), # freq=21 'dumpster': ( -77, -20, -127, +0, -55), # freq=13 'eagerly': ( +35, +42, +0, +6, +9), # freq=23 'early': ( +48, +42, +67, +103, -19), # freq=277 'earn': ( +50, +29, +72, +12, +24), # freq=33 'ease': ( +31, -9, -2, +0, +9), # freq=30 'easier': ( +56, -24, -32, +0, +10), # freq=182 'easily': ( +28, +13, +49, +0, +10), # freq=87 'east': ( +42, +22, +42, +12, -8), # freq=23 'education': ( +28, +9, +34, +12, +8), # freq=64 'efficient': ( +48, +9, +44, +0, +21), # freq=11 'effort': ( +28, +40, +49, +35, +10), # freq=107 'eggs': ( +51, +9, +42, +30, +4), # freq=44 'electricity': ( +43, +56, +69, +15, +24), # freq=17 'electronics': ( +46, +9, +22, +2, +17), # freq=10 'embarrassing': ( -77, +83, -119, +54, -46), # freq=181 'emerald': ( +80, +22, +77, +6, +23), # freq=12 'emergencies': ( -86, +127, -54, +93, -39), # freq=17 'emotion': ( +42, +67, +57, +18, +23), # freq=21 'emotional': ( +29, +18, +2, +3, +9), # freq=97 'employer': ( +35, +4, +74, +0, +24), # freq=44 'employment': ( +56, +15, +32, +2, +20), # freq=12 'empty': ( -42, -24, -67, +15, -40), # freq=124 'end': ( -24, +27, +24, +35, -23), # freq=741 'ended': ( -47, +0, +0, +0, -16), # freq=513 'ending': ( -36, -29, -4, +0, -12), # freq=52 'ends': ( -42, +112, +127, +127, +70), # freq=61 'energy': ( +46, +18, +49, +1, +21), # freq=64 'engaged': ( +28, +22, +24, +6, +19), # freq=43 'engineer': ( +48, +0, +107, +0, +32), # freq=13 'engineering': ( +51, -6, +97, +0, +31), # freq=53 'enjoy': ( +24, +6, +7, +0, +11), # freq=677 'enjoyable': ( +51, +2, +29, +0, +20), # freq=25 'enjoying': ( +42, +22, +34, +1, +17), # freq=74 'enraged': (-122, +99, +98, +127, +80), # freq=12 'ensure': ( +51, -15, +74, +0, +27), # freq=12 'enter': ( +46, -6, +0, +0, +12), # freq=22 'entitled': ( -44, +69, +127, +41, +12), # freq=16 'envious': ( -77, +74, -82, +39, +12), # freq=167 'environment': ( +32, -56, +7, +0, +10), # freq=39 'episode': ( +48, -24, +2, +0, +14), # freq=19 'equipment': ( +55, +0, +57, +0, +25), # freq=16 'era': ( +51, +18, +67, +6, +29), # freq=14 'esteem': ( +55, -22, +49, +0, +24), # freq=10 'europe': ( +35, +0, +37, +0, +16), # freq=41 'event': ( +55, +31, +47, +7, +24), # freq=87 'everybody': ( +42, +2, +2, +0, +12), # freq=60 'everyday': ( +51, -20, -2, +0, +14), # freq=195 'everything': ( -34, -11, -37, +6, -20), # freq=1318 'everywhere': ( +50, +69, +72, +25, -24), # freq=146 'evil': (-102, +90, +82, +57, +24), # freq=35 'ex': ( -89, +90, -109, +39, +36), # freq=186 'exact': ( +48, -24, +54, +0, +23), # freq=41 'exam': ( -24, +69, -49, +108, -10), # freq=369 'excellent': ( +37, +18, +34, +0, +19), # freq=72 'exciting': ( +23, +45, +24, +6, +20), # freq=562 'excuse': ( -62, +45, -67, +29, -32), # freq=51 'exercise': ( +29, +40, +54, +12, +16), # freq=70 'exhausted': ( -77, -58, -127, +39, -61), # freq=17 'exist': ( +39, +0, +107, +0, +32), # freq=19 'expected': ( +50, -15, +14, +0, +17), # freq=123 'expenses': ( -62, +29, -37, +19, -28), # freq=28 'expensive': ( -32, +24, -44, +49, -9), # freq=268 'experience': ( +29, +20, +34, +0, +16), # freq=530 'experienced': ( +28, +9, +52, +2, +17), # freq=45 'experiences': ( +29, +11, +39, +2, +16), # freq=39 'expired': ( -32, +24, -44, +49, -20), # freq=27 'explain': ( +28, +27, +49, +18, +10), # freq=66 'explore': ( +66, +47, +77, +12, -19), # freq=22 'express': ( +8, +10, +15, +4, +5), # freq=19 — carrier verb, context-dependent 'extreme': ( -42, +67, +82, +39, -1), # freq=19 'fabulous': ( +50, +13, +39, +0, +21), # freq=11 'facebook': ( +51, +58, +89, +12, +31), # freq=95 'fact': ( +28, +27, +74, +35, +23), # freq=103 'fail': ( -92, +20, -127, +15, -55), # freq=83 'failed': (-102, +74, -127, +77, -73), # freq=131 'failing': ( -89, +74, -127, +97, -61), # freq=30 'faith': ( +29, +9, +22, +0, +18), # freq=156 'fall': ( -52, +63, -114, +65, -70), # freq=246 'falling': ( -46, +33, -46, +53, -60), # freq=56 'familiar': ( +29, +9, +34, +0, +8), # freq=39 'families': ( +43, -24, +14, +0, +14), # freq=38 'famous': ( +43, +22, +52, +1, +21), # freq=20 'fan': ( +39, +29, +34, +0, +16), # freq=180 'fancy': ( +36, +15, +4, +2, +10), # freq=56 'far': ( -24, +13, -24, +18, -10), # freq=551 'fart': ( -86, -15, -104, +0, -46), # freq=31 'fast': ( +62, +90, +94, +115, -53), # freq=403 'fat': ( -42, +24, -67, +15, -29), # freq=76 'favor': ( +32, -15, +2, +0, +9), # freq=41 'favorite': ( +32, +13, +24, +0, +14), # freq=737 'favourite': ( +43, +0, +24, +0, +16), # freq=25 'fearful': ( -78, +53, -76, +63, +27), # freq=13 'fears': (-123, +85, -87, +70, -55), # freq=20 'feat': ( +56, +38, +102, +7, +32), # freq=13 'fee': ( -34, -24, +17, +0, -8), # freq=23 'feed': ( +28, +13, +49, +18, +10), # freq=59 'feedback': ( +37, +26, +22, +84, +6), # freq=18 'feeding': (-127, +127, -127, +127, +61), # freq=13 'feel': ( +5, +10, +5, +5, -2), # freq=4309 — carrier verb, near-neutral 'feels': ( +5, +10, +5, +5, -2), # carrier verb, near-neutral 'feeling': ( +32, -13, +2, +0, +9), # freq=1521 'fell': ( -57, -6, -92, +0, -34), # freq=310 'fellow': ( +55, -36, +22, +0, +19), # freq=12 'felt': ( +28, +40, +24, +18, -10), # freq=1835 'festival': ( +39, +18, +29, +2, +16), # freq=24 'fever': (-102, +74, -127, +127, +24), # freq=14 'fiance': ( +32, -22, +2, +0, +9), # freq=44 'fiancee': ( +48, +11, +7, +0, +14), # freq=21 'fights': (-119, +112, +92, +89, -27), # freq=22 'figure': ( +42, -29, +2, +0, +12), # freq=147 'figured': ( +35, +0, +24, +0, +14), # freq=71 'finally': ( +5, +10, +10, +15, +5), # temporal marker -- context determines polarity 'finance': ( +56, -11, +97, +0, +32), # freq=16 'financial': ( +35, +0, +64, +0, +20), # freq=93 'fine': ( -32, +24, -22, +49, -9), # freq=547 'fired': (-127, +127, -127, +116, -85), # freq=89 'fireworks': ( +51, +65, +22, +15, +19), # freq=17 'fishing': ( +37, -40, -29, +0, +6), # freq=92 'fit': ( +39, +29, +72, +0, +24), # freq=121 'flat': ( -32, +38, -44, +49, -20), # freq=58 'flies': ( -37, +108, +0, +61, -13), # freq=62 'flight': ( +32, +24, +24, +7, +12), # freq=97 'flip': ( -51, +6, -22, +3, -21), # freq=42 'flood': ( -77, +103, -127, +127, -48), # freq=41 'flowers': ( +39, -15, -24, +0, +8), # freq=74 'flu': ( -77, +11, -109, +7, -43), # freq=36 'fly': ( +29, +49, +54, +25, +55), # freq=161 'flying': ( +39, +9, +27, +1, +16), # freq=144 'focus': ( +32, +38, +77, +30, -8), # freq=99 'fond': ( +39, +9, +2, +1, +12), # freq=44 'fondly': ( +51, -27, +7, +0, +16), # freq=17 'fool': ( -67, +26, +22, +32, +18), # freq=27 'football': ( +56, +45, +24, +9, +20), # freq=256 'forget': ( -24, -13, -24, +18, -10), # freq=234 'forgetting': ( -94, +90, -127, +66, -55), # freq=25 'forgive': ( +50, +20, +54, +0, +24), # freq=67 'forgotten': ( -52, +24, -92, +15, -40), # freq=36 'fortunate': ( +44, +11, +47, +1, +20), # freq=54 'fortunately': ( +51, -15, +29, +0, +20), # freq=41 'fortune': ( +44, +20, +39, +1, +20), # freq=19 'forward': ( +39, -6, +34, +0, +16), # freq=584 'freak': ( -28, +28, -9, +26, +15), # freq=45 'freaked': (-102, +112, -69, +86, -46), # freq=51 'freaky': ( -86, +29, -49, +23, -39), # freq=11 'free': ( +28, +18, +42, +0, +23), # freq=346 'frozen': ( -30, -15, -40, +10, -25), # grief: stuck, unable to move on 'freedom': ( +32, +18, +52, +0, +27), # freq=30 'fresh': ( +39, +20, +34, +0, +24), # freq=85 'freshman': ( +37, +11, -17, +2, +8), # freq=24 'friendly': ( +43, -9, +12, +0, +14), # freq=43 'friends': ( +50, +20, +34, +0, +16), # freq=2039 'fries': ( +36, +15, +0, +2, +10), # freq=38 'frightened': (-102, +127, -127, +116, +48), # freq=44 'frightening': (-106, +127, -64, +97, -48), # freq=38 'front': ( +32, +22, +52, +24, -8), # freq=456 'fruit': ( +90, +18, +52, +24, -23), # freq=27 'frustrating': (-127, +54, -104, +43, -61), # freq=249 'full': ( +28, +13, +49, +0, +10), # freq=318 'fully': ( +58, -9, +79, +0, +31), # freq=61 'fun': ( +28, +18, +17, +0, +14), # freq=1998 'funeral': (-114, +74, -127, +77, -85), # freq=45 'funny': ( +28, +18, +17, +0, +14), # freq=337 'furniture': ( +42, -42, -69, +0, +0), # freq=58 'future': ( +28, +27, +24, +18, +23), # freq=311 'gambling': ( -32, +69, -54, +39, -20), # freq=29 'games': ( +28, +40, +49, +0, +23), # freq=326 'gaming': ( +42, +11, -2, +1, +12), # freq=31 'gang': ( -79, +92, +54, +62, -17), # freq=11 'gas': ( +28, +33, +24, +36, -29), # freq=159 'gender': ( +42, -27, +32, +0, +17), # freq=13 'general': ( +35, +0, +47, +0, +17), # freq=73 'generation': ( +42, -2, +24, +0, +16), # freq=22 'generous': ( +50, +20, +34, +0, +24), # freq=33 'gesture': ( +35, -4, -22, +0, +6), # freq=36 'ghetto': ( -47, +29, -4, +15, -16), # freq=10 'ghost': ( -42, +49, -67, +31, -20), # freq=67 'ghosted': ( -77, +58, -109, +39, -48), # freq=11 'giant': ( +32, +56, +104, +18, +27), # freq=45 'gift': ( +50, +29, +34, +0, +32), # freq=273 'gifted': ( +42, +11, +49, +1, +20), # freq=26 'gifts': ( +37, +22, +2, +2, +10), # freq=90 'girlfriend': ( +62, +38, +42, +12, -10), # freq=779 'girls': ( +35, +56, -54, +15, +1), # freq=211 'glasses': ( +37, +4, +59, +18, +4), # freq=20 'glory': ( +46, +20, +42, +1, +20), # freq=10 'goal': ( +29, +29, +54, +25, +24), # freq=70 'goals': ( +48, -2, +87, +0, +28), # freq=65 'golden': ( +31, +0, +14, +0, +10), # freq=33 'gone': ( -40, +10, -35, +20, -30), # grief: absence, departed 'goodness': ( +49, -15, +29, +0, +19), # freq=211 'google': ( +42, +9, +67, +18, -4), # freq=31 'gorgeous': ( +37, +18, +17, +0, +19), # freq=28 'gosh': ( -34, -13, -87, +0, -25), # freq=137 'grabbed': ( -37, +112, +114, +65, +5), # freq=34 'grad': ( +32, +2, +32, +0, +14), # freq=44 'grade': ( -24, +40, -49, +72, -10), # freq=276 'graduate': ( +32, +22, +42, +0, +23), # freq=103 'graduated': ( +39, +22, +39, +2, +17), # freq=151 'graduation': ( +39, +13, +42, +1, +17), # freq=83 'grand': ( +42, +20, +52, +1, +21), # freq=51 'grandfather': ( +32, +4, +59, +0, +23), # freq=59 'grandmother': ( +37, +9, +52, +0, +19), # freq=202 'grandpa': ( +42, +4, +52, +0, +19), # freq=25 'grandparents': ( +35, -27, +7, +0, +10), # freq=61 'granted': ( +39, -13, +37, +0, +17), # freq=66 'greatest': ( +35, +11, +57, +1, +20), # freq=47 'greatly': ( +56, +38, +107, +7, +34), # freq=15 'greed': ( -92, +74, +9, +54, -28), # freq=5 'greedy': ( -52, +38, +44, +31, -9), # freq=11 'grew': ( +35, +27, +2, +3, +10), # freq=101 'grieve': (-106, +0, -69, +0, -48), # freq=12 'groceries': ( +51, -24, -24, +0, +10), # freq=81 'grocery': ( +42, +9, -14, +2, +9), # freq=168 'ground': ( +42, -4, +126, +0, +76), # freq=107 'group': ( +32, +27, +67, +18, +19), # freq=155 'grow': ( +29, +20, +34, +12, +24), # freq=226 'growing': ( +29, +20, +34, +12, +16), # freq=177 'growth': ( +43, +6, +37, +0, +19), # freq=15 'grudge': (-106, +38, -37, +30, -43), # freq=12 'guarantee': ( +46, -13, +39, +0, +20), # freq=11 'guard': ( +28, +2, +89, +0, +23), # freq=54 'guess': ( -21, -6, -20, +0, -8), # freq=1012 'guest': ( +48, -2, +17, +0, +16), # freq=10 'guilty': ( -78, +26, -55, +32, -45), # freq=393 'guitar': ( +35, +4, -2, +0, +9), # freq=51 'gun': (-100, +112, +92, +81, -19), # freq=56 'gym': ( +28, +40, +74, +18, +10), # freq=153 'haha': ( +50, +29, +17, +0, +24), # freq=814 'hahaha': ( +24, -40, -39, +0, +0), # freq=158 'haircut': ( +37, -27, -54, +0, +1), # freq=37 'halloween': ( +24, +33, +29, +12, +10), # freq=94 'handful': ( +42, +13, +42, +12, +8), # freq=28 'handle': ( +28, +13, +77, +36, +19), # freq=128 'handy': ( +55, -22, +39, +0, +23), # freq=22 'hang': ( -40, +6, -17, +3, -17), # freq=192 'hanging': ( -27, -6, -39, +0, -16), # freq=88 'happier': ( +51, +13, +39, +0, +21), # freq=47 'happiest': ( +51, +6, +39, +0, +21), # freq=19 'happily': ( +51, +24, +27, +0, +20), # freq=20 'happiness': ( +42, +22, +34, +0, +27), # freq=68 'harder': ( -52, +15, -4, +9, -17), # freq=112 'hardest': ( -62, +45, +0, +29, -21), # freq=59 'harsh': ( -52, +63, +44, +31, -9), # freq=18 'hasnt': ( -94, -6, -37, +0, -39), # freq=18 'hassle': ( -92, +65, -4, +46, -31), # freq=24 "haven't": ( -24, +13, -24, +18, +0), # freq=664 'havent': ( -40, -18, -67, +0, -25), # freq=57 'headache': ( -42, +38, -67, +49, -29), # freq=21 'headaches': (-112, +58, -104, +46, -55), # freq=12 'heal': ( +37, +9, +22, +0, +18), # freq=38 'healthier': ( +43, -6, +24, +0, +16), # freq=23 'healthy': ( +50, +20, +72, +0, +24), # freq=218 'hearing': ( +37, -2, +29, +0, +16), # freq=96 'heart': ( +10, +10, +5, +5, +15), # body part with emotional weight — intimacy/vulnerability # V near-neutral but G elevated: "my heart" signals something important is at stake 'heartbreaking': (-100, +83, -32, +62, -39), # freq=27 'heaven': ( +32, +13, +24, +0, +27), # freq=29 'heavy': ( -32, +24, -44, +15, -40), # freq=67 'heck': ( -62, +51, +22, +31, -17), # freq=70 'hectic': ( -94, +83, -27, +62, -36), # freq=25 'held': ( +39, +20, +72, +12, +16), # freq=44 'hello': ( +29, +15, +17, +0, +8), # freq=69 'helpful': ( +32, -13, +27, +0, +14), # freq=90 'hers': ( +32, +0, -57, +0, +0), # freq=27 'hey': ( +24, +24, +17, +12, +8), # freq=243 'hi': ( +22, +9, +7, +0, +6), # freq=171 'hide': ( -32, +38, -44, +31, -20), # freq=79 'hiding': ( -59, +15, -49, +9, -28), # freq=28 'higher': ( +37, +2, +29, +0, +16), # freq=63 'highly': ( +35, +13, +39, +2, +16), # freq=24 'highway': ( +29, +13, -22, +4, +5), # freq=42 'hiking': ( +32, +29, +24, +4, +13), # freq=49 'hilarious': ( +37, +27, +17, +0, +19), # freq=55 'hip': ( +39, +29, +107, +12, +40), # freq=23 'hire': ( +42, +9, +14, +2, +14), # freq=43 'hired': ( +51, +22, +17, +0, +17), # freq=52 'history': ( +29, +9, +54, +0, +32), # freq=59 'hit': ( +28, +54, +49, +18, +10), # freq=8067 'hits': ( +39, +29, +17, +0, +16), # freq=22 'hoarder': ( -94, -90, -124, +0, -53), # freq=10 'hobby': ( +34, +4, -2, +1, +9), # freq=50 'holiday': ( +77, +18, +77, +12, -29), # freq=72 'holidays': ( +44, +2, +2, +0, +13), # freq=64 'holy': ( +29, +20, +54, +0, +24), # freq=64 'home': ( +39, -9, +54, +0, +16), # freq=2166 'homemade': ( +39, -13, -12, +0, +9), # freq=20 'hometown': ( +36, -13, +12, +0, +13), # freq=39 'honey': ( +66, -4, +42, +6, -10), # freq=11 'honor': ( +50, +29, +72, +0, +24), # freq=36 'hopefully': ( +35, +0, -22, +0, +5), # freq=957 'hopes': ( +43, +0, +27, +0, +17), # freq=43 'hoping': ( +29, +20, -17, +12, +16), # freq=374 'horizon': ( +51, +9, +67, +6, -14), # freq=10 'horrific': (-114, +92, -9, +73, -40), # freq=10 'horrifying': (-127, +65, -87, +54, -63), # freq=24 'horror': (-114, +127, -127, +97, -24), # freq=92 'horse': ( +28, +40, +49, +0, +23), # freq=54 'hose': ( +50, +40, +89, +89, +24), # freq=21 'hospice': ( -89, -40, -44, +32, +63), # freq=17 'host': ( +42, -6, +9, +0, +14), # freq=12 'hotel': ( +66, +13, +84, +24, +42), # freq=59 'however': ( -29, -22, -17, +0, -12), # freq=114 'hug': ( +42, -6, +7, +0, +13), # freq=24 'huge': ( +32, +38, +84, +18, +29), # freq=367 'hugs': ( +50, -6, +12, +0, +16), # freq=12 'huh': ( -49, -38, -87, +0, -32), # freq=72 'human': ( +58, -33, +29, +0, +23), # freq=98 'humanity': ( +56, -24, +64, +0, +27), # freq=23 'humid': (-114, +103, -109, +77, +73), # freq=11 'humiliating': (-123, +56, -97, +46, -58), # freq=13 'humor': ( +50, +29, +34, +0, +24), # freq=17 'hungover': (-119, -9, -124, +0, -63), # freq=12 'hungry': ( -32, +38, -44, +49, -20), # freq=107 'hunt': ( -40, +69, +32, +39, -8), # freq=17 'hurricane': ( -89, +127, -127, +127, -48), # freq=102 'hurricanes': ( -51, +90, +104, +55, +0), # freq=20 'hurting': ( -96, +74, -119, +54, -53), # freq=60 'idea': ( +50, +40, +54, +25, -8), # freq=632 'idiot': ( -89, +40, +33, +47, +36), # freq=19 'ignore': ( -42, +24, +44, +31, -9), # freq=40 'ignored': ( -52, +38, -67, +31, -20), # freq=30 'ill': (-119, -24, -127, +0, -63), # freq=115 'illegal': (-123, +76, -69, +62, -53), # freq=14 'illness': (-127, +29, -127, +77, +61), # freq=32 'impact': (-127, +127, +127, +127, +97), # freq=25 'impressed': ( +32, +22, -9, +3, +8), # freq=432 'impression': ( +39, +9, +22, +2, +16), # freq=24 'impressive': ( +29, +27, +52, +4, +16), # freq=188 'improve': ( +29, +20, +34, +12, +16), # freq=49 'improving': ( +42, +0, +24, +0, +16), # freq=18 'inadequate': (-106, -11, -119, +0, -55), # freq=2 'inappropriate': (-102, +11, -64, +7, -46), # freq=14 'incident': (-117, +45, -4, +34, -40), # freq=26 'included': ( +58, -18, +22, +0, +19), # freq=14 'income': ( +56, +2, +64, +0, +27), # freq=47 'incompetent': (-102, +18, -114, +11, -55), # freq=11 'inconsiderate': ( -77, +6, -32, +3, -31), # freq=47 'inconvenient': ( -77, +29, -54, +19, -36), # freq=14 'incredible': ( +48, +38, +34, +0, +29), # freq=85 'indeed': ( +48, +0, +29, +0, +19), # freq=217 'independent': ( +41, -4, +52, +0, +20), # freq=31 'industry': ( +32, -9, +97, +0, +25), # freq=29 'infection': ( -52, +49, -92, +81, -29), # freq=15 'info': ( +56, -29, +39, +0, +23), # freq=31 'inform': ( +50, +13, +49, +2, +23), # freq=10 'information': ( +58, -24, +62, +0, +27), # freq=71 'infuriating': (-102, +99, +4, +73, -34), # freq=19 'injured': ( -77, +74, -127, +97, -48), # freq=61 'injuries': (-100, +90, -127, +66, -55), # freq=19 'injury': ( -77, +74, -127, +97, -48), # freq=30 'innocent': ( +39, +29, -34, +25, +16), # freq=33 'inside': ( +5, +5, +5, +5, +0), # freq=240 — spatial, near-neutral 'inspiration': ( +44, +9, +34, +0, +19), # freq=14 'insurance': ( +48, -33, +94, +0, +28), # freq=222 'intelligent': ( +50, +20, +72, +0, +24), # freq=16 'interested': ( +56, +6, +64, +0, +27), # freq=72 'internet': ( +48, +18, +52, +49, -8), # freq=87 'interview': ( -24, +127, -99, +127, +34), # freq=429 'intimidating': ( -77, +76, +92, +50, -12), # freq=16 'intruder': (-100, +65, -77, +46, -46), # freq=13 'invest': ( +48, +27, +59, +12, +0), # freq=21 'investment': ( +48, +15, +72, +4, +25), # freq=20 'invite': ( +55, +27, +32, +4, +20), # freq=64 'invited': ( +39, +20, +34, +0, +16), # freq=117 'ipad': ( +35, +15, +37, +2, +16), # freq=21 'iphone': ( +35, +22, +47, +3, +17), # freq=29 'irked': ( -94, +76, -64, +57, -43), # freq=21 'irritating': (-112, +110, -49, +86, -46), # freq=50 "isn't": ( -24, +13, +0, +18, +0), # freq=419 'isolated': ( -79, -38, -109, +0, -46), # freq=35 'issues': ( -32, +24, -44, +31, -9), # freq=165 'itself': ( +28, -20, -29, +0, +2), # freq=53 'jackpot': ( +77, +56, +67, +6, -29), # freq=12 'jail': (-102, +74, -127, +97, -73), # freq=44 'japan': ( +35, -4, +22, +0, +14), # freq=21 'jar': ( +50, +0, +89, +25, +48), # freq=11 'jerk': ( -46, +22, +18, +26, +15), # freq=59 'jerks': ( -79, +76, -42, +54, -36), # freq=19 'job': ( +32, +38, +84, +67, +34), # freq=2559 'join': ( +50, -4, +54, +0, +24), # freq=69 'joined': ( +35, -20, +29, +0, +16), # freq=33 'joining': ( +56, -6, +54, +0, +25), # freq=26 'joke': ( +29, +29, +17, +0, +16), # freq=41 'joyful': ( +51, +27, +42, +0, +34), # freq=237 'juice': ( +48, +13, +34, +12, -8), # freq=16 'jump': ( +51, +51, +59, +24, -29), # freq=69 'junk': ( -32, +13, -22, +15, -20), # freq=34 'justice': ( +39, +40, +72, +25, +24), # freq=18 'kick': (-127, +127, +127, +127, +85), # freq=51 'kicking': ( -40, +67, +4, +39, -13), # freq=16 'kill': (-127, +127, +127, +127, +73), # freq=109 'kind': ( +50, +9, +34, +0, +24), # freq=1716 'kindergarten': ( +35, -2, -24, +0, +5), # freq=53 'king': ( +37, +33, +112, +9, +31), # freq=28 'kiss': ( +49, +27, +17, +1, +17), # freq=36 'kitten': ( +32, +18, +7, +0, +23), # freq=81 'knock': ( -44, +6, +9, +3, -13), # freq=55 'knowing': ( +35, -11, +22, +0, +13), # freq=140 'knowledge': ( +39, +20, +54, +0, +24), # freq=22 'lack': ( -42, +13, -67, +15, -20), # freq=36 'laid': ( -77, +74, -127, +77, -48), # freq=58 'landed': ( +46, +22, -7, +4, +12), # freq=40 'landlord': ( -32, +38, -44, +49, -20), # freq=47 'laptop': ( +42, +18, +59, +36, +10), # freq=83 'large': ( +43, +11, +69, +2, +24), # freq=139 'larger': ( +50, +27, +74, +7, +27), # freq=11 'lasagna': ( +66, +13, +52, +18, +23), # freq=12 'last': ( -21, +12, +10, +29, -8), # freq=2921 'late': ( -32, +49, -44, +97, -9), # freq=456 'later': ( -24, -27, +49, +125, +23), # freq=351 'laugh': ( +28, +18, +17, +0, +14), # freq=118 'laughing': ( +32, +27, +24, +0, +27), # freq=92 'laundry': ( +32, -38, -34, +0, +2), # freq=33 'law': ( +28, +27, +127, +72, +68), # freq=217 'lawn': ( +77, -18, +59, +0, +19), # freq=74 'lay': ( +71, -42, +59, +6, -14), # freq=50 'lazy': ( -32, -49, -67, +0, -29), # freq=87 'lead': ( +29, +29, +89, +12, +16), # freq=54 'leading': ( +48, -9, +59, +6, +10), # freq=21 'league': ( +34, -27, -9, +0, +8), # freq=59 # 'lean' removed — directional word, context-dependent (lean in=positive, lean toward=neutral) 'leap': ( +56, +29, +47, +4, +24), # freq=16 'leash': ( -42, -36, -27, +0, -17), # freq=20 'least': ( -52, -24, -92, +31, +20), # freq=1087 'leftovers': ( -79, -42, -127, +0, -55), # freq=31 'lesson': ( +42, +13, +34, +30, +8), # freq=97 "let's": ( +28, +27, +49, +18, +23), # freq=54 'letters': ( +35, -31, -39, +0, +2), # freq=20 'lice': (-102, +0, -127, +0, -58), # freq=14 'lie': ( -52, +38, +22, +31, -9), # freq=95 'lied': ( -94, +38, -127, +27, -55), # freq=136 'lifestyle': ( +56, -6, +42, +0, +23), # freq=21 'lift': ( +62, +33, +67, +6, -38), # freq=27 'lifted': ( +48, -9, +47, +0, +20), # freq=11 'light': ( +29, +9, +14, +0, +36), # freq=142 'lights': ( +56, -4, +22, +0, +19), # freq=62 'liked': ( +50, -2, -12, +0, +12), # freq=194 'likely': ( +29, -24, -14, +0, +6), # freq=64 'likes': ( +39, +20, +0, +2, +10), # freq=110 'liking': ( +49, +9, +12, +0, +16), # freq=16 'limited': ( -77, -58, -54, +0, -34), # freq=12 'lining': ( +62, -9, +77, +12, +10), # freq=11 'list': ( +37, +13, +94, +43, +23), # freq=88 'litter': ( -57, +13, -127, +6, -44), # freq=33 'lmao': ( +50, +40, +17, +0, +24), # freq=12 'loan': ( -77, +90, -127, +127, +61), # freq=72 'local': ( +34, -40, -14, +0, +8), # freq=201 'locked': ( -42, +38, -67, +65, -20), # freq=50 'lol': ( +39, +29, +17, +0, +24), # freq=1757 'lonesome': ( -51, -65, -59, +0, -28), # freq=17 'loose': ( +50, -49, -54, +12, -48), # freq=62 'loser': (-117, +2, -127, +3, -65), # freq=16 'lottery': ( +77, +56, +17, +12, -29), # freq=226 'lotto': ( +58, +24, -7, +4, +16), # freq=30 'loud': ( -24, +83, +24, +35, +23), # freq=178 'lovely': ( +43, -4, +32, +0, +17), # freq=107 'low': ( -52, -49, -127, +49, +127), # freq=97 'lower': ( -40, -45, -87, +0, -28), # freq=30 'luck': ( +29, +29, +17, +12, +24), # freq=667 'luckily': ( +51, +0, -7, +0, +13), # freq=249 'lucky': ( +50, +40, +34, +0, +32), # freq=607 'lunch': ( +28, +13, +24, +0, +10), # freq=259 'mad': ( -78, +46, +33, +63, +45), # freq=806 'madden': ( -40, +22, -12, +13, -16), # freq=30 'magical': ( +39, +13, +12, +1, +13), # freq=16 'mail': ( +51, +38, +59, +73, +8), # freq=141 'main': ( +37, +22, +67, +6, +8), # freq=37 'maintain': ( +39, -18, +42, +0, +19), # freq=22 'major': ( +28, +40, +49, +18, +10), # freq=151 'makeup': ( +48, +27, +52, +12, -14), # freq=16 'managed': ( +35, +27, -32, +3, +4), # freq=114 'management': ( +29, +0, +39, +0, +16), # freq=57 'mandatory': ( -52, +38, +99, +23, -1), # freq=10 'marathon': ( +32, +49, +69, +15, +20), # freq=36 'market': ( +57, +47, +59, +55, +23), # freq=63 'married': ( +39, +29, +54, +0, +16), # freq=348 'marry': ( +42, +22, +24, +2, +16), # freq=37 'marvel': ( +49, +22, +49, +1, +21), # freq=10 'massage': ( +46, -24, -24, +0, +9), # freq=13 'mate': ( +35, -6, +24, +0, +14), # freq=20 'math': ( +28, +127, +124, +127, +89), # freq=163 'meal': ( +35, -4, -2, +0, +9), # freq=154 'means': ( +25, -22, -9, +0, +5), # freq=137 'medication': ( -32, +24, -44, +49, -9), # freq=29 'medicine': ( +10, +5, +10, +10, +20), # context-dependent -- "on medicine" vs "medicine stopped" 'member': ( +43, -29, +14, +0, +16), # freq=57 'memories': ( -5, +15, -5, +5, -5), # freq=593 — ambiguous, context-dependent 'memory': ( -5, +15, -5, +5, -5), # freq=128 — ambiguous, context-dependent 'mess': ( -32, +24, -44, +31, -20), # freq=180 'message': ( +32, -20, -24, +0, +5), # freq=32 'mid': ( -52, -49, -22, +0, +9), # freq=21 'middle': ( +28, +0, +99, +18, +23), # freq=178 'milestone': ( +50, +29, +54, +0, +24), # freq=16 # 'million' removed — number word, noise (context-dependent: "a million dollars" vs "one in a million") 'millionaire': ( +43, +22, +47, +1, +20), # freq=11 'mind': ( +29, +29, +54, +25, -8), # freq=397 'mine': ( +42, -13, +22, +0, +16), # freq=623 'minor': ( -59, +0, -119, +0, -40), # freq=27 'miracle': ( +37, +33, +24, +6, +29), # freq=23 'miss': ( -42, +30, -50, +35, -25), # grief: longing, absence 'missed': ( -42, +38, -67, +49, -20), # freq=200 'missing': ( -42, +38, -44, +31, -20), # freq=176 'mission': ( +58, +24, +107, +4, +35), # freq=36 'mix': ( +42, +42, +59, +43, +14), # freq=50 'mold': ( -42, +38, -67, +65, -29), # freq=23 'mom': ( +50, +20, +34, +12, +16), # freq=800 'mommy': ( +41, -11, -9, +0, +9), # freq=18 'monster': ( -52, +74, -67, +49, +20), # freq=23 'mourn': ( -70, +30, -55, +30, -50), # grief: grieving, bereavement 'mourning': ( -70, +30, -55, +30, -50), # grief: grieving process 'moral': ( +43, -9, +87, +0, +27), # freq=15 'mortgage': ( -52, +49, -92, +65, +81), # freq=28 'mortified': ( -94, +63, -97, +46, -48), # freq=58 'mosquito': ( -77, -27, -127, +0, -48), # freq=12 'motivation': ( +36, +24, +39, +2, +17), # freq=40 'motorcycle': ( +37, +47, +62, +12, +20), # freq=30 'mountains': ( +58, -11, +22, +0, +20), # freq=40 'movies': ( +50, -13, -7, +0, +12), # freq=296 'multiple': ( +35, +2, +22, +0, +14), # freq=37 'musical': ( +42, +11, +2, +1, +13), # freq=13 'mutual': ( +50, -31, -9, +0, +12), # freq=13 'naked': ( -40, +87, -77, +51, -25), # freq=16 'nap': ( +29, -40, +17, +0, +8), # freq=39 'nasty': (-106, +33, -104, +23, -53), # freq=123 'national': ( +43, -24, +47, +0, +20), # freq=25 'natural': ( +29, +9, +34, +0, +16), # freq=64 'naturally': ( +36, -18, +7, +0, +12), # freq=23 'nature': ( +36, -27, +19, +0, +14), # freq=59 'near': ( +28, +13, +24, +0, +10), # freq=218 'neat': ( +39, -22, -2, +0, +10), # freq=93 'necessary': ( +56, -11, +49, +0, +24), # freq=34 'necklace': ( +71, +22, +52, +6, +8), # freq=35 'needles': ( -59, +22, -54, +15, -29), # freq=12 'needless': ( -40, -24, -109, +0, -32), # freq=19 'negative': (-25, +5, -20, +5, -10), # liquid -- medical=good, emotional=bad. Context determines. 'nephew': ( +51, +27, +17, +18, -14), # freq=134 'nerve': ( +50, +108, +72, +127, -8), # freq=132 'nerves': ( -37, +63, -87, +35, -28), # freq=91 'nest': ( +42, -49, -47, +0, +2), # freq=22 'new': ( +29, +29, +17, +12, +16), # freq=3265 'newborn': ( +43, +6, -17, +0, +9), # freq=30 'news': ( +28, +127, +127, +127, +44), # freq=400 'nice': ( +29, +4, +7, +0, +12), # freq=3179 'nicer': ( +39, -20, -9, +0, +9), # freq=26 'nicest': ( +56, -24, +29, +0, +20), # freq=10 'niece': ( +38, +12, +7, +15, -14), # freq=73 'nightmare': (-127, +127, -127, +116, -73), # freq=38 'nightmares': (-117, +119, -22, +93, -43), # freq=35 'nintendo': ( +31, +4, -4, +1, +8), # freq=98 'noble': ( +56, +6, +34, +5, +17), # freq=17 'nobody': ( -46, +17, -27, +26, -15), # freq=79 'noise': ( -24, +40, -24, +35, +10), # freq=116 'noisy': (-127, +127, -109, +127, +24), # freq=11 'nope': ( -24, +13, +24, +0, +0), # freq=168 'nostalgia': ( +28, +27, -24, +0, -10), # freq=54 'note': ( +28, -83, -34, +0, +2), # freq=75 'nothing': ( -80, -10, -55, +15, -45), # grief/existential: absence, void, emptiness 'noticed': ( +29, +20, +34, +12, +16), # freq=168 'nowadays': ( +39, -27, -29, +0, +6), # freq=61 'nowhere': (-114, -58, -127, +0, +48), # freq=59 'numb': ( -35, -20, -30, +0, -25), # grief: emotional shutdown, dissociation 'nurse': ( +50, +9, +17, +38, +8), # freq=29 'obnoxious': (-127, +27, -109, +23, -61), # freq=10 'occasion': ( +43, -9, -29, +0, +8), # freq=55 'odd': ( -55, -38, -72, +0, -29), # freq=64 'offer': ( +56, +42, +29, +9, +20), # freq=135 'offered': ( +24, -2, +19, +0, +10), # freq=160 'often': ( +39, +29, +34, +0, +0), # freq=374 'ohhh': ( -57, -13, -59, +0, -28), # freq=27 'oil': ( +50, -9, +126, +38, +32), # freq=66 'okay': ( +28, -13, +24, +0, +0), # freq=822 'oldest': ( -27, -36, -54, +0, -17), # freq=86 'omg': ( +29, +69, -17, +25, +24), # freq=119 'online': ( +28, +13, +24, +18, +10), # freq=282 'ooo': ( -40, -15, -64, +0, -24), # freq=16 'opened': ( +29, +29, +54, +25, +0), # freq=83 'opening': ( +57, +51, +67, +67, +8), # freq=43 'opinion': ( +28, -4, +54, +0, +17), # freq=43 'opportunities': ( +50, +27, +34, +0, +20), # freq=25 'opportunity': ( +50, +40, +54, +25, +32), # freq=96 'opposite': ( -62, +9, -32, +6, -25), # freq=47 'options': ( +28, +51, +59, +43, +8), # freq=48 'orange': ( +62, +13, +52, +6, -10), # freq=15 'ordeal': ( -77, +90, -109, +77, -36), # freq=16 'order': ( +28, +13, +74, +18, +10), # freq=221 'organized': ( +32, -13, +34, +0, +14), # freq=38 'others': ( +35, +9, -64, +2, +0), # freq=287 'otherwise': ( -27, -15, -39, +0, -16), # freq=80 'ouch': ( -40, -15, -72, +0, -25), # freq=85 'outfit': ( +58, -2, +17, +0, +19), # freq=19 'outlook': ( +34, +2, +17, +0, +13), # freq=24 'outside': ( +29, +20, +17, +12, -8), # freq=492 'overnight': ( -49, -29, +17, +0, -13), # freq=19 'overtime': ( -42, +49, -67, +81, -20), # freq=19 'overwhelming': ( -77, +119, -127, +97, -48), # freq=38 'owner': ( +28, -4, +57, +0, +17), # freq=65 'package': ( +28, +27, +24, +18, +10), # freq=99 'painful': ( -89, +40, -55, +63, -45), # freq=73 'pains': (-109, +47, -59, +34, -48), # freq=11 'painting': ( +32, -15, -22, +0, +5), # freq=35 'pair': ( +57, +18, +59, +12, +14), # freq=70 'panama': ( +35, +0, +0, +0, +10), # freq=20 'paranoid': (-106, +112, -59, +86, -46), # freq=15 'parcel': ( +35, -31, -24, +0, +6), # freq=23 'participate': ( +56, +13, +54, +2, +25), # freq=16 'parties': ( +35, +42, +4, +6, +10), # freq=33 'party': ( +50, +58, +34, +0, +40), # freq=696 'passion': ( +36, +31, +29, +3, +16), # freq=35 'pasta': ( +62, +9, +52, +18, +8), # freq=27 'patch': ( +50, +40, +72, +103, +0), # freq=20 'path': ( +51, +13, +52, +12, +10), # freq=48 'paycheck': ( +57, +38, +59, +61, -14), # freq=51 'payday': ( +37, +20, +9, +2, +13), # freq=20 'peeved': ( -96, +65, -17, +50, -36), # freq=20 'pepper': ( +39, +69, +34, +12, -8), # freq=34 'pepperoni': ( +57, +33, +24, +24, +8), # freq=16 'perfect': ( +42, +13, +34, +0, +23), # freq=198 'perfectly': ( +51, +0, +27, +0, +20), # freq=53 'perform': ( +58, +9, +79, +2, +31), # freq=29 'performance': ( +56, +4, +49, +0, +24), # freq=63 'personal': ( +56, -33, -9, +0, +14), # freq=72 'personality': ( +42, +0, +39, +0, +19), # freq=30 'perspective': ( +42, -6, +57, +0, +23), # freq=31 'pet': ( +39, +20, +34, +0, +16), # freq=357 'phobia': ( -92, +108, -92, +77, -46), # freq=13 'physical': ( +56, +4, +32, +0, +20), # freq=53 'piano': ( +43, -27, -17, +0, +9), # freq=27 'picked': ( +51, +4, +49, +0, +24), # freq=106 'picky': ( -57, +51, +37, +31, -13), # freq=14 'pictures': ( +34, -45, -29, +0, +5), # freq=179 'pie': ( +39, -9, -19, +0, +8), # freq=27 'piece': ( +39, +20, +54, +25, +16), # freq=131 'pig': ( +37, +9, +59, +6, +42), # freq=24 'pimple': ( -59, -29, -82, +0, -34), # freq=12 'pineapple': ( +37, -33, -72, +0, -1), # freq=22 'pink': ( +32, +13, +7, +0, -10), # freq=31 'pizza': ( +57, +22, +17, +24, +8), # freq=381 'planet': ( +43, -18, +97, +0, +28), # freq=12 'plant': ( +29, +20, +34, +12, +16), # freq=57 'pleasant': ( +44, -15, +24, +0, +17), # freq=47 'pleasantly': ( +51, -22, -2, +0, +14), # freq=11 'pleasure': ( +44, +20, +24, +1, +17), # freq=22 'plenty': ( +39, +20, +54, +0, +24), # freq=74 'plus': ( +51, +0, +2, +0, +16), # freq=113 'poison': (-127, +127, +127, +127, +61), # freq=10 'poisoning': (-114, +90, +9, +70, -36), # freq=20 'poisonous': (-112, +99, +17, +77, -36), # freq=21 # 'pokemon' removed — proper noun, noise # 'policy' removed — neutral factual word with extreme D bias 'political': ( -36, +51, +127, +29, +9), # freq=36 'politics': ( -59, +6, +126, +3, +1), # freq=12 'poo': ( -96, -29, -124, +0, -55), # freq=18 'poop': ( -94, -18, -127, +0, -55), # freq=118 'poor': (-127, +29, -127, +116, +85), # freq=201 'poorly': (-119, +33, -127, +27, -68), # freq=19 'pop': ( +37, +2, -2, +0, +10), # freq=37 'popular': ( +39, +15, +29, +1, +16), # freq=27 'position': ( +21, -9, +9, +0, +8), # freq=211 'positive': ( +48, +0, +47, +0, +21), # freq=292 'possibility': ( +34, +0, +4, +0, +10), # freq=22 'potato': ( +57, +4, +59, +18, +8), # freq=10 'potatoes': ( +42, -40, -54, +0, +2), # freq=23 'potty': ( -32, -27, -67, +0, -21), # freq=54 'power': ( +29, +49, +126, +25, +24), # freq=149 'practice': ( +28, +27, +49, +18, +10), # freq=102 'pray': ( +28, +27, -24, +35, +23), # freq=103 'prayer': ( +55, -49, +29, +0, +20), # freq=17 'praying': ( +32, -47, -24, +0, +5), # freq=37 'precious': ( +28, +13, +17, +6, +10), # freq=44 'prefer': ( +58, -20, +9, +0, +17), # freq=58 'pregnancy': ( +51, +47, +22, +9, +19), # freq=39 'pregnant': ( +28, +69, -49, +54, +10), # freq=196 'prep': ( +42, +2, +14, +0, +14), # freq=19 'prepare': ( +34, +9, +29, +2, +14), # freq=101 'prepared': ( +46, -4, +69, +0, +24), # freq=697 'preparing': ( +51, +6, +24, +2, +19), # freq=40 'presence': ( +39, -4, +14, +0, +13), # freq=18 'present': ( +28, +13, +24, +0, +10), # freq=96 'presentation': ( -24, +127, +49, +127, +23), # freq=101 'presents': ( +29, -9, +2, +0, +9), # freq=44 'president': ( +37, +22, +127, +4, +35), # freq=48 'pressure': ( -42, +63, -67, +65, -9), # freq=39 'prestigious': ( +51, +11, +57, +0, +24), # freq=10 'pretended': ( -94, +15, -119, +11, -53), # freq=22 'previous': ( +29, +20, +126, +63, +32), # freq=48 'priceless': ( +55, +36, +89, +7, +31), # freq=15 'pricey': ( -37, +15, -27, +9, -16), # freq=19 'prison': (-114, +58, -127, +77, -85), # freq=22 'private': ( +35, -13, +42, +0, +17), # freq=37 'prize': ( +28, +22, +24, +0, +19), # freq=55 'pro': ( +35, -6, +54, +0, +19), # freq=28 'problem': ( -32, +38, -44, +65, -9), # freq=308 'productive': ( +35, +15, +37, +2, +16), # freq=32 'professional': ( +35, -4, +59, +0, +20), # freq=48 'professor': ( +34, -18, +64, +0, +20), # freq=31 'profit': ( +66, +38, +77, +12, -23), # freq=11 'progress': ( +39, +29, +54, +12, +24), # freq=66 'project': ( +29, +49, +72, +103, +16), # freq=206 'promise': ( +39, +20, +54, +12, +16), # freq=58 'promised': ( +37, -22, +2, +0, +10), # freq=109 'promoted': ( +48, +27, +52, +1, +23), # freq=79 'promotion': ( +32, +27, +42, +12, +19), # freq=362 'properly': ( +35, -20, +22, +0, +13), # freq=43 'property': ( +51, -40, +87, +0, +31), # freq=50 # 'proposal' removed — neutral factual word causing positive drift 'proposed': ( +35, +56, +57, +15, +20), # freq=24 'protein': ( +56, -29, +42, +0, +24), # freq=17 'provider': ( +56, -2, +72, +0, +28), # freq=15 'public': ( +28, +2, +64, +0, +20), # freq=121 'puke': ( -83, +11, -92, +7, -43), # freq=25 'punch': (-127, +127, +127, +127, +108), # freq=26 'punched': ( -86, +36, -22, +27, -34), # freq=11 'punish': (-123, +83, +49, +66, -34), # freq=21 'punished': ( -92, +63, -9, +46, -31), # freq=13 'punishment': (-117, +85, +17, +70, -39), # freq=14 'pup': ( +56, -13, -57, +0, +6), # freq=33 'puppies': ( +51, +27, -54, +0, +5), # freq=42 'puppy': ( +32, +22, +7, +0, +23), # freq=242 'purchased': ( +32, +24, -4, +3, +8), # freq=49 'pure': ( +50, +9, +34, +0, +24), # freq=10 'qualified': ( +58, +4, +89, +0, +32), # freq=37 'quality': ( +29, +20, +34, +0, +16), # freq=67 'quick': ( +42, +47, +52, +67, -19), # freq=99 'quiet': ( +28, -69, +24, +0, +0), # freq=195 'quitting': ( -79, +33, -124, +23, -48), # freq=14 'rabbit': ( +39, -29, -74, +0, +0), # freq=26 'raise': ( +29, +29, +34, +12, +16), # freq=242 'raised': ( +34, -31, +39, +0, +17), # freq=57 'ramen': ( +51, +13, +34, +24, +8), # freq=30 'rash': ( -79, +67, -4, +46, -28), # freq=11 'rat': (-127, +127, -127, +127, +24), # freq=40 'ready': ( +80, +78, +119, +121, -34), # freq=962 'realistic': ( +43, +4, +82, +0, +25), # freq=16 'realized': ( +36, -27, +22, +0, +14), # freq=191 'receive': ( +51, -6, +14, +0, +17), # freq=63 'received': ( +32, -11, +17, +0, +12), # freq=135 'recipe': ( +28, +13, +49, +0, +10), # freq=63 'recital': ( +35, -4, +9, +0, +12), # freq=24 'recognize': ( +58, -33, +29, +0, +20), # freq=24 'recognized': ( +39, -4, +39, +0, +17), # freq=21 'record': ( +29, +29, +54, +12, +16), # freq=52 'recover': ( +39, +20, +54, +12, +16), # freq=54 'red': ( +28, +83, +74, +35, +10), # freq=163 'reflect': ( +37, -40, +22, +0, +14), # freq=23 'refreshing': ( +44, +2, +9, +0, +14), # freq=15 'refund': ( +28, +40, +49, +54, +10), # freq=74 'refuse': ( -89, +6, -77, +3, -43), # freq=18 'refused': ( -94, -6, -127, +0, -55), # freq=42 'rejection': ( -89, +74, -127, +57, -48), # freq=10 'relate': ( +34, +0, +34, +0, +16), # freq=104 'related': ( +37, -24, +7, +0, +12), # freq=43 'relative': ( +29, +29, -34, +38, +0), # freq=41 'relax': ( +50, -49, +54, +0, +16), # freq=193 'relaxation': ( +39, -22, -17, +0, +8), # freq=17 'relaxed': ( +37, -38, -12, +0, +9), # freq=51 'relaxing': ( +36, -29, -2, +0, +9), # freq=191 'release': ( +39, -20, +54, -12, +24), # freq=26 'released': ( +35, +0, +19, +0, +13), # freq=29 'reliable': ( +42, -22, +52, +0, +21), # freq=39 'religious': ( +51, -47, +57, +0, +24), # freq=17 'relive': ( +56, +27, +54, +4, +25), # freq=14 'rely': ( +32, -4, +14, +0, +12), # freq=46 'remain': ( +46, -24, +64, +0, +24), # freq=20 'remember': ( -23, +22, -24, +6, -13), # freq=823 'remembered': ( +37, -22, +9, +0, +13), # freq=79 'reminisce': ( +42, +0, -19, +0, +9), # freq=19 'reminiscing': ( +42, -11, -24, +0, +8), # freq=18 'remote': ( +51, -18, +77, +0, -19), # freq=20 'remove': ( -49, +9, -9, +6, -17), # freq=11 'removed': (-100, -90, -97, +0, -51), # freq=26 'rent': ( -42, +49, -67, +81, -29), # freq=103 'replaced': ( -42, +47, -99, +29, -32), # freq=44 # 'report' removed — neutral factual word with extreme A/D/U/G bias 'rescue': ( +39, +58, +72, +51, +24), # freq=75 'rescued': ( +51, +22, -57, +0, +5), # freq=37 'research': ( +28, +40, +49, +35, +10), # freq=93 'resolved': ( +51, -24, +54, +0, +24), # freq=25 'respect': ( +50, +20, +54, +0, +16), # freq=74 'response': ( +39, +40, +72, +89, +0), # freq=47 'responsibilities': ( +35, +27, +52, +3, +17), # freq=30 'responsibility': ( +58, +0, +102, +0, +34), # freq=33 'rest': ( +29, -40, +34, +0, +8), # freq=258 'restaurant': ( +32, +18, +24, +12, +4), # freq=320 'restroom': ( +34, -40, -69, +0, -1), # freq=41 'retire': ( +62, -27, +84, +0, -29), # freq=28 'retired': ( -52, -54, -72, +0, -29), # freq=24 'retirement': ( +66, -38, +84, +0, -34), # freq=35 'returned': ( +29, +20, +34, +0, +8), # freq=95 'reunion': ( +35, +0, +24, +0, +14), # freq=44 'reunited': ( +46, -9, +47, +0, +20), # freq=15 'revenge': ( -77, +103, +109, +77, +36), # freq=14 'review': ( +35, -15, +39, +0, +17), # freq=40 'revolting': (-127, +58, +54, +39, +36), # freq=10 'rewarding': ( +48, +11, +39, +0, +20), # freq=49 'rich': ( +39, +20, +54, +0, +16), # freq=48 'rid': ( -86, -24, -77, +0, -40), # freq=74 'ridden': ( -94, +90, -92, +66, -48), # freq=14 'ride': ( +80, +60, +77, +30, +23), # freq=227 'ridiculous': ( -52, +63, +44, +31, +29), # freq=65 'riding': ( +42, +27, +34, +7, +17), # freq=92 'rip': (-114, +29, -127, +19, +48), # freq=35 'ripped': ( -55, +60, -30, +35, -20), # freq=39 — torn away, violent removal 'roach': (-127, +119, -127, +127, +36), # freq=14 'robbed': (-104, +83, -127, +66, -68), # freq=59 'robber': (-102, +72, -9, +54, -36), # freq=11 'roll': ( +28, +127, +127, +127, -23), # freq=61 'roller': ( +51, +33, +67, +36, +10), # freq=101 'romantic': ( +50, +29, +17, +0, +24), # freq=33 'roommate': ( +56, -4, -2, +0, +16), # freq=129 'rotten': (-102, +74, -54, +39, -48), # freq=24 'rotting': ( -86, -9, -109, +0, -48), # freq=15 'rough': ( -32, +49, +44, +31, -9), # freq=242 'rude': ( -67, +33, +22, +32, +27), # freq=167 'ruin': (-104, +24, -127, +19, -58), # freq=47 'sadly': (-127, -65, -124, +0, -65), # freq=67 'safely': ( +51, -29, +12, +0, +17), # freq=30 'safety': ( +46, -2, +104, +0, +31), # freq=34 'salad': ( +37, -4, +24, +0, -14), # freq=31 'salary': ( +48, +18, +67, +12, -8), # freq=27 'sale': ( +29, +20, +34, +12, +16), # freq=64 'sales': ( +32, +51, +59, +67, -4), # freq=36 'sandwich': ( +51, +9, +52, +30, +4), # freq=61 'santa': ( +51, -38, +2, +0, +16), # freq=10 'satisfying': ( +41, +9, +42, +1, +19), # freq=21 'save': ( +29, +20, +34, +12, +8), # freq=235 'saved': ( +51, -24, +42, +0, +21), # freq=123 'saving': ( +35, -47, +34, +0, +16), # freq=135 'scale': ( -44, -36, +27, +0, -9), # freq=12 'scam': ( -89, +90, -109, +97, -24), # freq=14 'scare': (-106, +110, -104, +86, -53), # freq=105 'scares': (-106, +92, -49, +70, -46), # freq=39 'scariest': ( -94, +99, +17, +70, -28), # freq=15 'scary': ( -77, +103, -127, +57, +36), # freq=904 'scenery': ( +55, -42, +24, +0, +20), # freq=10 # 'scheduled' removed — neutral factual word causing positive drift 'scholarship': ( +32, +22, +34, +0, +23), # freq=67 'science': ( +42, +27, +67, +18, +14), # freq=63 'scold': ( -86, +67, +54, +46, -19), # freq=18 'score': ( +50, +49, +72, +12, +32), # freq=77 'scored': ( +35, +27, +29, +3, +14), # freq=29 'scratch': ( -32, +38, -22, +31, +0), # freq=102 'seafood': ( +34, +0, -49, +0, +1), # freq=22 'season': ( +29, -6, +2, +0, +9), # freq=250 'secret': ( -24, +54, +49, +54, +10), # freq=118 'secure': ( +39, -9, +89, +0, +16), # freq=28 'security': ( +42, +6, +31, +30, +11), # freq=77 'self': ( +43, -24, +0, +0, +12), # freq=236 'selfish': ( -52, +38, +44, +15, +9), # freq=31 'semi': ( -47, -36, -72, +0, -28), # freq=23 'sense': ( +29, -6, -2, +0, +8), # freq=194 'sensitive': ( +48, -13, -72, +0, +1), # freq=14 'sentimental': ( +24, -29, -74, +0, -4), # freq=308 'separated': ( -89, +74, -127, +57, -61), # freq=21 'served': ( +42, -15, -89, +0, -2), # freq=20 'service': ( +39, -15, +9, +0, +12), # freq=164 'settle': ( +35, +2, +37, +0, +16), # freq=27 'severe': ( -94, +63, +59, +46, -21), # freq=36 'shaking': ( -37, +44, -46, +53, +15), # freq=30 'shape': ( +28, +0, -29, +0, +2), # freq=49 'share': ( +29, +20, +17, +0, +16), # freq=125 'shared': ( +35, +0, +29, +0, +14), # freq=32 'sharing': ( +34, -2, +7, +0, +10), # freq=29 'shark': (-127, +127, +127, +127, +85), # freq=18 'sheesh': ( -47, +6, -32, +3, -21), # freq=11 'shelter': ( +28, +27, +24, +18, +10), # freq=86 'shining': ( +39, +15, +42, +1, +19), # freq=40 'shipping': ( +50, +69, +89, +127, +16), # freq=16 'shock': ( -42, +112, -92, +81, +20), # freq=71 'shoot': (-114, +112, +54, +89, -31), # freq=28 'shooting': ( -52, +96, +37, +61, -12), # freq=29 'shopping': ( +43, -4, +17, +0, +14), # freq=214 'shredded': ( -47, +74, -127, +45, -42), # freq=11 'shrimp': ( +51, +18, +24, +18, -8), # freq=12 'shut': ( -32, +24, +44, +31, -9), # freq=56 'sibling': ( +57, +22, +52, +18, +10), # freq=28 'sickness': (-114, +54, -92, +43, -55), # freq=12 'sight': ( +39, -42, +7, +0, +12), # freq=41 'silly': ( -27, -36, -122, +0, -29), # freq=57 'simple': ( +28, -13, +49, +0, +10), # freq=62 'sing': ( +50, +40, +34, +0, +32), # freq=32 'singing': ( +39, +6, +2, +1, +12), # freq=39 'site': ( +37, -40, -14, +0, +9), # freq=23 'skateboard': ( +37, +9, -42, +2, +5), # freq=20 'skating': ( +55, +31, -17, +7, +12), # freq=21 'skiing': ( +34, +27, +17, +3, +13), # freq=35 'skill': ( +35, +15, +47, +2, +17), # freq=46 'skunk': ( -51, -2, -44, +0, -24), # freq=13 'slammed': ( -89, +127, +127, +93, -6), # freq=20 'slap': (-127, +127, +127, +127, +36), # freq=19 'slapped': (-109, +127, -119, +100, -58), # freq=12 'sleepy': ( +50, -127, -126, +115, +40), # freq=11 'slipped': ( -42, +67, -127, +39, -44), # freq=78 'slow': (-114, -127, +127, +116, +127), # freq=118 'smack': ( -40, +38, -44, +23, -21), # freq=23 'small': ( +42, +9, -77, +6, -27), # freq=291 'smaller': ( -47, -42, -119, +0, -36), # freq=24 'smart': ( +50, +29, +72, +0, +24), # freq=270 'smarter': ( +44, +0, +7, +0, +14), # freq=11 'smash': ( -86, +51, +9, +34, -27), # freq=120 'smashed': ( -96, +42, -109, +30, -51), # freq=17 'smelly': (-112, +9, -109, +7, -58), # freq=16 'smile': ( +48, +18, +24, +0, -10), # freq=61 'smoke': ( -32, +24, -22, +15, -9), # freq=30 'smoking': ( -42, +24, -22, +15, -9), # freq=26 'snacks': ( +29, -2, -27, +0, +4), # freq=38 'snake': (-127, +127, -127, +127, +12), # freq=94 'snakes': ( -92, +45, +42, +30, -24), # freq=60 'sneak': ( -51, +54, -17, +35, -20), # freq=18 'sneaky': ( -37, +50, +37, +93, -7), # freq=19 'snuck': ( -44, +69, -72, +41, -28), # freq=13 'soccer': ( +43, +58, +42, +15, +19), # freq=104 'social': ( +32, +33, +17, +12, -8), # freq=159 'socialize': ( +42, +15, +29, +1, +17), # freq=16 'society': ( +37, +13, +65, +10, +36), # freq=41 'socks': ( +51, -18, +34, +6, +4), # freq=32 'soda': ( +32, +22, +24, +18, -8), # freq=32 'softball': ( +51, +24, +2, +4, +16), # freq=15 'solution': ( +39, +29, +72, +25, +24), # freq=27 'solve': ( +39, +29, +72, +25, +24), # freq=23 'sometimes': ( +28, +0, +49, +0, +10), # freq=1415 'somewhere': ( -27, -4, -22, +0, -13), # freq=145 'sore': (-102, +29, -109, +57, +48), # freq=18 'sorry': ( -32, +24, -67, +15, -20), # freq=2697 'sort': ( +37, -20, +49, +0, +19), # freq=152 # 'sound' removed — dual-use noun/adjective, "sounds good" vs "every sound makes me jump" 'source': ( +51, -31, +54, +0, +24), # freq=17 'south': ( +32, +18, +42, +6, +4), # freq=88 'space': ( +31, -15, +9, +0, +10), # freq=65 'spaghetti': ( +50, -24, -62, +0, +5), # freq=15 'speak': ( +28, +27, +49, +18, +10), # freq=109 # 'speaking' removed — neutral verb carrying false positive charge ("generally speaking") 'special': ( +50, +29, +34, +0, +24), # freq=352 'specialist': ( +58, +11, +107, +2, +35), # freq=11 'specific': ( +34, -20, +54, +0, +19), # freq=75 'speech': ( +34, -6, +54, +0, +19), # freq=116 'speed': ( +48, +60, +47, +15, +23), # freq=49 'spider': (-127, +127, -127, +127, +12), # freq=75 'spiders': ( -55, +45, -49, +29, -28), # freq=66 'spilled': ( -24, +40, -24, +35, -10), # freq=93 'spirit': ( +57, +42, +59, +12, -38), # freq=34 'spit': (-100, +11, -27, +7, -39), # freq=19 'spite': (-117, +27, -82, +23, -53), # freq=11 'split': ( -36, +27, -32, +15, -17), # freq=25 'spoil': (-100, +58, -77, +43, -46), # freq=25 'spoiled': ( -52, +38, -22, +31, -20), # freq=32 'spoke': ( +29, -11, -2, +0, +8), # freq=48 'sport': ( +37, +15, +22, +2, +14), # freq=49 'sports': ( +35, +15, +12, +2, +12), # freq=88 'spring': ( +48, +22, +34, +0, -14), # freq=62 'squid': ( +39, +69, +72, +77, -32), # freq=16 'staff': ( +55, -40, +34, +0, +23), # freq=22 'stage': ( +28, -47, -9, +0, +6), # freq=59 'stamp': ( +42, +13, +59, +30, +8), # freq=14 'starved': (-112, +51, -114, +39, -58), # freq=28 'station': ( +50, +90, +126, +127, +80), # freq=84 'steak': ( +57, +18, +24, +6, +19), # freq=50 'steal': ( -89, +90, +82, +77, +24), # freq=83 'stealing': (-117, +110, -22, +89, -43), # freq=64 'stick': ( +28, +13, +74, +35, +34), # freq=83 'sting': ( -94, +42, -54, +30, -40), # freq=10 'stink': (-127, -6, -127, +0, -68), # freq=13 'stole': (-102, +67, -49, +50, -43), # freq=248 'stolen': ( -96, +38, -82, +27, -48), # freq=69 'storage': ( +50, +20, +107, +38, +16), # freq=26 'stories': ( +37, +2, +0, +0, +10), # freq=65 'storm': ( -52, +99, -67, +81, -20), # freq=181 'storming': ( -55, +92, +64, +59, -8), # freq=17 'strange': ( -24, +40, -49, +18, +10), # freq=133 'stray': ( -32, +24, -44, +15, -20), # freq=48 'strength': ( +39, +40, +126, +12, +24), # freq=40 'stressful': ( -96, +101, -49, +73, -40), # freq=191 'stressing': ( -94, +99, -17, +70, -36), # freq=20 'stroke': (-127, +127, -127, +127, +85), # freq=29 'struck': ( -47, -24, +4, +0, -16), # freq=20 'struggled': ( -86, +117, -127, +81, -55), # freq=21 'stubbed': ( -40, +31, -94, +19, -29), # freq=23 'stuck': ( -52, +49, -114, +65, -29), # freq=164 'student': ( +51, +33, -24, +24, +4), # freq=122 'studied': ( +29, -15, +39, +0, +16), # freq=250 'stumbled': ( -81, +83, -127, +57, -61), # freq=15 'stupid': ( -89, +74, +54, +39, +36), # freq=139 'style': ( +55, -6, +24, +0, +19), # freq=53 'succeed': ( +44, +22, +57, +1, +23), # freq=38 'successful': ( +37, +22, +52, +0, +19), # freq=66 'successfully': ( +51, +27, +62, +0, +25), # freq=19 'suddenly': ( +37, +2, -14, +0, +8), # freq=70 'sue': ( -52, +63, +67, +65, +9), # freq=17 'suffer': (-117, +110, -104, +89, -58), # freq=29 'summer': ( +51, +27, +42, +0, -10), # freq=561 'sundays': ( +35, -27, +0, +0, +9), # freq=21 'sunny': ( +50, +29, +34, +0, +40), # freq=32 'super': ( +29, +29, +34, +0, +16), # freq=650 'supermarket': ( +42, +9, +22, +2, +16), # freq=23 'supper': ( +46, -11, +14, +0, +16), # freq=13 'supplies': ( +43, -20, +29, +0, +17), # freq=97 'support': ( +37, +9, +22, +0, +12), # freq=226 'supposed': ( -47, -27, -44, +0, -24), # freq=289 'sure': ( +28, +0, +49, +18, +0), # freq=3594 'surgery': ( -25, +30, -30, +40, -20), # medical context -- scary alone, but "went well" = relief 'surprises': ( +39, +22, +19, +2, +14), # freq=21 'surprising': ( +41, +24, +24, +2, +16), # freq=32 'surprisingly': ( +35, +24, +44, +3, +17), # freq=23 'survived': ( +35, +24, +37, +3, +16), # freq=37 'sushi': ( +51, +18, +17, +12, -8), # freq=36 'suspect': (-102, +65, +4, +50, -34), # freq=14 'suspicious': ( -96, +65, -32, +46, -39), # freq=16 'swallow': ( +50, +49, +126, +103, +24), # freq=12 'sweat': ( -52, +127, -44, +127, +29), # freq=38 'sweating': ( -52, +87, -92, +97, +20), # freq=24 'sweaty': ( -51, +9, -72, +6, -29), # freq=16 'sweet': ( +50, +20, +17, +0, +24), # freq=569 'sweetest': ( +48, +0, -17, +0, +10), # freq=22 'sweetheart': ( +48, -6, +2, +0, +14), # freq=15 'sweets': ( +42, -6, -24, +0, +8), # freq=17 'swift': ( +50, +49, +57, +12, +24), # freq=12 'swim': ( +90, +56, +77, +24, -19), # freq=57 'swimming': ( +28, +40, +24, +18, +23), # freq=92 'switch': ( +39, +69, +127, +127, +16), # freq=109 # 'system' removed — neutral factual word with extreme D bias 'taco': ( +42, +10, +10, +25, -3), # freq=26 'talent': ( +48, +9, +47, +0, +21), # freq=70 'talented': ( +44, +11, +59, +0, +23), # freq=58 'taste': ( +71, +51, +59, +24, -8), # freq=73 'taught': ( +32, -2, +19, +0, +13), # freq=89 'tax': (-127, +90, -127, +127, +73), # freq=36 'teach': ( +29, +20, +54, +12, +16), # freq=136 'teacher': ( +28, +13, +42, +12, +4), # freq=156 'teaching': ( +32, -4, +32, +0, +14), # freq=62 'team': ( +29, +20, +34, +0, +16), # freq=383 'tear': ( -52, +63, -92, +31, -29), # freq=19 'tears': ( -20, +40, -20, +20, +30), # liquid -- tears of joy vs tears of pain 'teary': ( -94, -6, -124, +0, -53), # freq=12 'tech': ( +39, -2, +69, +0, +23), # freq=33 'tent': ( +62, +33, +59, +18, +10), # freq=21 'terrifying': (-127, +90, +42, +77, -39), # freq=143 'thank': ( +50, +20, +17, +0, +24), # freq=990 'thankful': ( +21, +4, +7, +0, +8), # freq=315 'thankfully': ( +51, -15, -4, +0, +14), # freq=186 'thanks': ( +39, +9, +0, +0, +16), # freq=799 'thanksgiving': ( +44, -4, +19, +0, +16), # freq=52 'theater': ( +58, +24, +2, +4, +17), # freq=25 'therapist': ( +48, -13, +34, +18, -8), # freq=17 'thick': ( +50, +29, +127, +25, +121), # freq=24 'thieves': (-127, +90, +127, +77, -24), # freq=13 'thoughtful': ( +50, +9, +54, +0, +24), # freq=56 'thoughts': ( +55, -22, +54, +0, +25), # freq=59 # 'thousand' removed — number word, noise 'threatened': (-125, +117, -64, +93, -53), # freq=4 'threatening': (-119, +101, +64, +81, -31), # freq=10 # 'three' removed — number word, pure noise 'threw': ( -77, +9, -42, +7, -34), # freq=233 'thrift': ( +58, -49, +42, +0, +24), # freq=13 'thunderstorm': (-102, +94, +124, +73, -14), # freq=14 'tight': ( -52, +99, +127, +127, +61), # freq=39 'tiny': ( +48, +18, -52, +12, -29), # freq=74 'tip': ( +37, +13, +34, +6, -8), # freq=48 'tired': ( -28, -28, -27, +13, -30), # freq=155 'toast': ( +51, -22, -42, +0, +8), # freq=10 'toddler': ( +56, -6, -39, +0, +9), # freq=38 'toe': ( +28, +40, +74, +18, +10), # freq=44 'toll': ( -47, -18, -17, +0, -20), # freq=12 'tongue': ( +42, +38, +34, +49, -4), # freq=13 'top': ( +51, +33, +84, +12, -53), # freq=159 'tornado': ( -89, +127, -127, +127, -36), # freq=56 'torture': (-127, +127, -127, +127, +97), # freq=10 'total': ( +62, +22, +126, +61, +61), # freq=52 'touch': ( +80, +42, +59, +30, -14), # freq=112 'touching': ( +58, -9, -2, +0, +16), # freq=14 'tough': ( +28, +40, +124, +18, +10), # freq=487 'tour': ( +35, +9, +9, +2, +12), # freq=30 'traffic': ( -32, +49, -44, +65, -9), # freq=173 'tragedy': (-122, +40, -66, +63, -72), # freq=17 'tragic': (-127, +103, -127, +77, -97), # freq=29 'trained': ( +28, +2, +19, +1, +10), # freq=45 'trainer': ( +43, +40, +94, +9, +28), # freq=16 'training': ( +48, +49, +82, +12, +27), # freq=161 'transfer': ( +43, -2, +7, +0, +14), # freq=14 'transportation': ( +35, +9, -7, +2, +9), # freq=20 'trap': ( -77, +74, -127, +77, -48), # freq=13 'trapped': ( -77, +90, -127, +97, -61), # freq=21 'traps': ( -62, +40, -9, +25, -21), # freq=11 'traumatized': (-127, +101, -127, +86, -77), # freq=10 'travel': ( +44, +15, +4, +1, +13), # freq=120 'traveling': ( +42, +20, +12, +1, +13), # freq=59 'travelling': ( +35, +27, +4, +3, +10), # freq=35 'treat': ( +50, +20, +34, +0, +24), # freq=138 'trees': ( +34, -65, +9, +0, +10), # freq=31 'tricky': ( -79, +42, +0, +27, -27), # freq=11 'trip': ( -24, +40, -49, +35, -23), # freq=699 'tripped': ( -81, +90, -119, +62, -48), # freq=101 'trouble': ( -42, +49, -67, +65, -20), # freq=245 'troubles': (-127, +94, -97, +81, -63), # freq=16 'trump': ( +29, +38, +114, +12, +28), # freq=104 'trusting': ( +36, +0, +34, +0, +16), # freq=330 'trustworthy': ( +49, -15, +47, +0, +21), # freq=34 'truth': ( +29, +20, +54, +12, +16), # freq=51 'tune': ( +46, -4, -22, +0, +9), # freq=11 'turbulence': (-127, +127, -127, +127, +12), # freq=12 'turtle': ( -49, -94, -77, +0, -29), # freq=23 'twice': ( +42, +33, +59, +43, +27), # freq=98 'twins': ( +58, -4, +29, +0, +20), # freq=26 'ugh': ( -42, -24, -44, +0, -20), # freq=245 'ugly': ( -77, +45, -54, +19, -24), # freq=13 'ultrasound': ( +42, +22, +52, +24, -14), # freq=12 'umbrella': ( +51, -4, +67, +61, +8), # freq=18 'unable': (-102, -11, -127, +0, -58), # freq=32 'unacceptable': ( -89, +74, +54, +57, +36), # freq=20 'unaware': ( -81, -38, -82, +0, -40), # freq=11 'uncertainty': (-123, -2, -92, +0, -58), # freq=10 'uncle': ( +28, +9, +42, +0, +10), # freq=77 'understandable': ( +28, -11, +7, +0, +9), # freq=73 'understanding': ( +37, -15, +24, +0, +14), # freq=66 'understood': ( +29, -4, +24, +0, +13), # freq=38 'unemployment': (-114, -27, -87, +0, -53), # freq=15 'unexpectedly': ( -34, +58, -12, +31, -13), # freq=25 'unfortunate': (-119, -2, -127, +0, -63), # freq=128 'unfortunately': ( -52, +24, -44, +15, -29), # freq=243 'unhappy': (-109, +0, -114, +0, -58), # freq=30 'university': ( +51, +13, +69, +2, +27), # freq=98 'unless': ( -34, +0, -104, +0, -29), # freq=91 'unlikely': ( -52, -47, -92, +0, -34), # freq=10 'unlucky': ( -42, +38, -67, +31, -20), # freq=17 'unmotivated': ( -94, -127, -127, +0, -63), # freq=3 'unnecessary': ( -79, -38, -127, +0, -51), # freq=16 'unpleasant': (-106, +29, -127, +23, -61), # freq=23 'unprepared': ( -83, -11, -127, +0, -53), # freq=23 'unsafe': ( -52, +63, -92, +65, -20), # freq=14 'unwanted': ( -92, +11, -127, +7, -53), # freq=3 'upcoming': ( +42, -9, +14, +0, +14), # freq=75 'upsetting': (-127, +90, -127, +77, -70), # freq=55 'upstairs': ( +35, -15, +42, +0, +17), # freq=32 'useful': ( +58, -15, +64, +0, +27), # freq=22 'useless': (-127, +29, -127, +77, -85), # freq=15 'vacation': ( +77, -9, +84, +6, -34), # freq=602 'valid': ( +57, +18, +67, +6, -14), # freq=12 'valuable': ( +42, +4, +39, +0, +19), # freq=22 'value': ( +39, +6, +39, +1, +17), # freq=55 'variety': ( +48, -6, +29, +0, +19), # freq=16 'vegan': ( +39, +9, +54, +0, -16), # freq=33 'vehicle': ( +32, +11, +0, +2, +9), # freq=51 'vet': ( -24, +40, +24, +54, -10), # freq=107 'view': ( +42, -18, +7, +0, +13), # freq=32 'visit': ( +28, -4, -7, +0, +6), # freq=423 'visiting': ( +50, -9, +7, +0, +16), # freq=86 'void': (-127, -127, -127, +0, +0), # freq=10 'volunteer': ( +41, -6, +12, +0, +13), # freq=22 'vomit': (-119, +18, -127, +15, -63), # freq=26 'vomiting': ( -96, +74, -127, +54, -58), # freq=10 'wandering': ( -40, -6, -49, +0, -21), # freq=14 'war': ( -77, +119, +82, +116, +24), # freq=36 'warm': ( +39, +9, +34, +0, +16), # freq=60 'warned': ( -47, +22, +17, +13, -13), # freq=15 'warning': ( -32, +49, -22, +81, +9), # freq=43 'washed': (-127, -58, -127, +19, +73), # freq=22 'washing': ( +32, -18, -29, +0, +5), # freq=28 "wasn't": ( -24, +13, +0, +18, +0), # freq=858 'wasp': (-127, +127, +109, +127, -61), # freq=17 'waste': ( -52, +24, -67, +31, -29), # freq=71 'wasted': ( -86, +15, -104, +11, -48), # freq=54 'watermelon': ( +48, -47, -74, +0, +1), # freq=10 'wave': ( +5, +15, +5, +10, +0), # freq=23 — context-dependent (ocean vs grief) 'waves': ( +5, +15, +5, +10, +0), # context-dependent 'ways': ( +42, +9, -22, +2, +8), # freq=105 'weak': ( -42, -13, -127, +15, -40), # freq=14 'wealthy': ( +77, +18, +84, +0, -29), # freq=10 'weather': ( +56, -18, +17, +0, +19), # freq=232 'weekend': ( +96, +51, +84, +24, -38), # freq=1151 'weight': ( -32, +24, -44, +31, -20), # freq=244 'weird': ( -24, +40, -24, +18, +10), # freq=300 'welcome': ( +50, +20, +34, +0, +16), # freq=67 'werent': ( -62, -18, -77, +0, -34), # freq=14 'west': ( +50, +29, +89, +12, +16), # freq=20 'wet': ( +28, +54, +49, +72, +23), # freq=52 'whenever': ( +25, -11, -49, +0, +0), # freq=118 'white': ( +39, -9, +34, +0, -16), # freq=74 'whoa': ( -34, -13, -44, +0, -17), # freq=65 'whole': ( +29, +9, +34, +0, +16), # freq=484 'whom': ( -40, -4, -39, +0, -20), # freq=23 'willing': ( +35, +4, +39, +1, +16), # freq=52 'winner': ( +49, +27, +52, +1, +23), # freq=12 'winnings': ( +46, +27, +44, +1, +21), # freq=18 'wins': ( +51, +29, +64, +0, +25), # freq=22 'winter': ( -24, +13, +49, +18, +34), # freq=101 'wisdom': ( +50, +9, +72, +0, +24), # freq=13 'wise': ( +39, -20, +52, +0, +20), # freq=33 'wisely': ( +51, -22, +42, +0, +21), # freq=11 'wish': ( -10, 10, -20, 15, 25), # longing -- wanting what you dont have. G high (it matters), D low (powerless) 'wished': ( -12, 8, -22, 12, 25), 'wishing': ( -10, 10, -18, 15, 25), 'without': ( -10, +5, -10, +5, -5), # liquid -- "without you" = loss, "without asking" = ease 'woke': ( +29, +127, +89, +127, +24), # freq=171 'wolf': ( +48, +56, +67, +61, +14), # freq=10 'women': ( +35, +24, +2, +3, +10), # freq=86 'won': ( +32, +27, +52, +0, +27), # freq=509 'wonder': ( +29, +29, +17, +0, +24), # freq=177 'wondering': ( +35, +42, -47, +12, +2), # freq=33 'wonders': ( +51, +13, +22, +0, +19), # freq=10 'wont': ( -62, -36, -77, +0, -34), # freq=141 'woods': ( +28, -58, -54, +0, +0), # freq=53 'word': ( +28, +13, +49, +18, +10), # freq=154 'worker': ( +48, +18, +54, +4, +23), # freq=181 'workout': ( +37, +27, +37, +3, +17), # freq=47 'worries': (-114, +47, -59, +39, -48), # freq=30 'worrisome': ( -94, +90, -119, +66, -53), # freq=12 'worrying': (-127, +65, -87, +54, -58), # freq=39 'worse': ( -77, +45, -54, +39, -36), # freq=349 'worst': (-127, +90, -109, +97, -73), # freq=473 'worth': ( +39, +20, +34, +0, +16), # freq=390 'wow': ( +28, +33, +7, +0, +19), # freq=2454 'wracking': ( -59, +24, -17, +15, -24), # freq=58 'wreck': ( -89, +74, -109, +57, -48), # freq=73 'xbox': ( +35, +38, +4, +6, +10), # freq=26 'yay': ( +42, +13, -42, +2, +5), # freq=45 'yeah': ( +21, -27, -17, +0, +2), # freq=3599 'yell': ( -62, +67, +22, +45, -17), # freq=39 'yelling': ( -77, +127, +54, +77, +36), # freq=40 'yes': ( +22, +4, +14, +10, +6), # freq=3677 'yoga': ( +56, -69, -22, +0, +12), # freq=22 'young': ( +29, +29, +34, +0, +24), # freq=431 'youngest': ( +48, -15, +42, +0, +20), # freq=50 'yourself': ( +37, -31, +29, +0, +16), # freq=668 'youth': ( +44, +9, +32, +0, +19), # freq=15 'youtube': ( +35, +27, +42, +3, +17), # freq=83 'yuck': ( -59, +9, -77, +6, -34), # freq=46 'yum': ( +48, -9, -24, +0, +9), # freq=31 'zombie': ( -79, +38, -37, +27, -34), # freq=10 'zoo': ( +58, +4, +22, +0, +20), # freq=31 # --- Indicator words (common verbs/adjectives that carry emotional signal) --- 'good': ( +20, +8, +10, +0, +12), 'great': ( +25, +10, +12, +0, +15), 'like': ( +15, +5, +5, +0, +8), 'want': ( +15, +10, +5, +5, +8), 'need': ( -15, +10, -10, +10, -8), 'help': ( +28, +15, +10, +10, +15), 'lose': ( -52, +20, -30, +15, -35), 'try': ( +15, +10, +10, +5, +8), 'give': ( -3, +5, -3, +0, +5), # near-neutral -- generous OR demanding depending on structure 'take': ( -10, +5, -5, +0, -5), 'make': ( +15, +10, +10, +0, +8), 'start': ( +20, +10, +10, +5, +12), 'stop': ( -20, +10, +10, +0, -12), 'live': ( +30, +10, +10, +0, +20), 'change': ( +15, +15, +10, +5, +8), 'please': ( +15, +5, -5, +5, +8), 'right': ( +10, +5, +10, +0, +5), 'enough': ( -15, +10, -5, +5, -8), 'more': ( +10, +5, +5, +0, +5), 'less': ( -10, -5, -5, +0, -5), 'pass': ( +30, +10, +15, +0, +18), 'begin': ( +20, +10, +10, +5, +12), 'away': ( -15, +5, -10, +5, -10), 'old': ( -10, -5, -5, +0, -5), } # Convenience: category sets for targeted lookups EMOTION_WORDS = {w for w in EMOTIONAL_VOCABULARY if w in {'reluctant', 'neglected', 'awe', 'shattered', 'grumpy', 'jealous', 'dread', 'hatred', 'cruelty', 'comfort', 'betrayed', 'joy', 'relieved', 'uneasy', 'despair', 'distraught', 'peace', 'thrilled', 'panic', 'irritated', 'insecure', 'terror', 'excitement', 'upset', 'trust', 'jealousy', 'surprise', 'calm', 'rage', 'disgusted', 'depression', 'inspired', 'grief', 'delighted', 'stress', 'satisfied', 'furious', 'fear', 'hate', 'sad', 'grateful', 'comfortable', 'happy', 'confidence', 'envy', 'motivated', 'haunted', 'guilt', 'excited', 'startled', 'scared', 'loved', 'anxious', 'stressed', 'torn', 'confident', 'safe', 'loneliness', 'ashamed', 'shame', 'agony', 'pity', 'brave', 'gloomy', 'hope', 'ruined', 'proud', 'kindness', 'hopeful', 'wrecked', 'compassion', 'determined', 'destroyed', 'worry', 'pride', 'humiliated', 'horrified', 'panicked', 'disgust', 'broken', 'embarrassed', 'passionate', 'nervous', 'overwhelmed', 'frustration', 'peaceful', 'cranky', 'rejected', 'heartbroken', 'pain', 'anxiety', 'optimistic', 'annoyed', 'anguish', 'appreciated', 'afraid', 'terrified', 'angry', 'helpless', 'restless', 'pessimistic', 'empathy', 'ecstatic', 'shocked', 'lonely', 'valued', 'anger', 'crushed', 'livid', 'relief', 'love', 'uncomfortable', 'thrill', 'frustrated', 'regret', 'suffering', 'worthless', 'miserable', 'depressed', 'hopeless', 'nostalgic', 'glad', 'gratitude', 'sympathy', 'worried', 'pleased', 'devastated', 'hesitant', 'content', 'sadness', 'hurt', 'abandoned'}} INTENSIFIERS = {w for w in EMOTIONAL_VOCABULARY if w in {'constantly', 'quite', 'desperately', 'especially', 'awfully', 'horribly', 'rather', 'pretty', 'fairly', 'really', 'insanely', 'never', 'hardly', 'terribly', 'honestly', 'truly', 'extremely', 'incredibly'}} RELATIONSHIP_WORDS = {w for w in EMOTIONAL_VOCABULARY if w in {'unfaithful', 'commitment', 'attachment', 'lying', 'partner', 'honesty', 'loving', 'daughter', 'bond', 'divorce', 'mother', 'friendship', 'alone', 'sister', 'brother', 'friend', 'parent', 'marriage', 'cheating', 'cold', 'dishonest', 'caring', 'wife', 'relationship', 'enemy', 'apart', 'together', 'cheated', 'liar', 'supportive', 'distant', 'family', 'couple', 'faithful', 'husband', 'son', 'breakup', 'honest', 'loyalty', 'lover', 'fake', 'wedding', 'spouse'}} CRISIS_WORDS = {w for w in EMOTIONAL_VOCABULARY if w in {'abuse', 'starving', 'attack', 'harm', 'wound', 'emergency', 'crash', 'dead', 'victim', 'cry', 'poverty', 'addiction', 'danger', 'violence', 'murder', 'addicted', 'healing', 'accident', 'toxic', 'death', 'bleeding', 'crying', 'hospital', 'die', 'screaming', 'suicidal', 'violent', 'crisis', 'lost', 'trauma', 'traumatic', 'dying', 'homeless', 'recovery', 'dangerous', 'abused', 'scream', 'killing', 'harmful', 'suicide'}} SLANG_WORDS = {w for w in EMOTIONAL_VOCABULARY if w in {'screwed', 'basic', 'killer', 'horrible', 'pissed', 'amazing', 'blessed', 'dreadful', 'garbage', 'extra', 'shady', 'brutal', 'hell', 'lit', 'hyped', 'bomb', 'legit', 'sick', 'suck', 'disgusting', 'awesome', 'fantastic', 'awful', 'pathetic', 'yikes', 'crazy', 'petty', 'oof', 'insane', 'wonderful', 'nuts', 'cursed', 'crap', 'gross', 'mood', 'bummed', 'deadly', 'sketchy', 'damn', 'cringe', 'sucks', 'terrible'}} COGNITIVE_EVAL_WORDS = {w for w in EMOTIONAL_VOCABULARY if w in {'fighting', 'certain', 'choice', 'reason', 'responsible', 'irresponsible', 'mistake', 'achievement', 'doubt', 'difficult', 'clear', 'significant', 'villain', 'understand', 'deserved', 'agree', 'struggle', 'fought', 'believe', 'win', 'fight', 'accomplishment', 'true', 'success', 'impossible', 'choose', 'hard', 'wrong', 'defeat', 'overcome', 'blame', 'failure', 'quit', 'purpose', 'unfair', 'false', 'result', 'easy', 'survive', 'fault', 'achieve', 'decide', 'possible', 'winning', 'decision'}} # Gap analysis additions — words the previous engine was missing that caused SST-2 failures # ── MODERN EMOTIONAL VOCAB — Added for real-world coverage ── _MODERN_WORDS = { 'abuser': (-70, 60, 70, 40, -20), 'affirming': (30, 15, 25, 0, 20), 'binging': (-30, 40, -30, 20, -15), 'boundaries': (20, 10, 40, 0, 15), 'breadcrumbed': (-35, 30, -50, 15, -20), 'burnout': (-50, -20, -40, 10, -35), 'catfished': (-50, 40, -60, 20, -25), 'codependent': (-30, 20, -50, 15, -20), 'cutting': (-70, 30, -40, 50, -40), 'dissociating': (-40, -20, -60, 20, -30), 'enabler': (-20, 10, -30, 10, -10), 'flashback': (-60, 70, -50, 50, -35), 'floating': (40, -20, 20, 0, 50), 'gaslighting': (-60, 50, -70, 30, -30), 'gaslit': (-60, 40, -80, 30, -30), 'gutted': (-70, 30, -50, 20, -40), 'invalidating': (-50, 30, -40, 20, -25), 'lovebombed': (-30, 50, -40, 20, -15), 'manifesting': (30, 20, 30, 5, 20), 'mindset': (15, 10, 20, 0, 10), 'narcissist': (-40, 30, 60, 10, -10), 'overdose': (-80, 50, -60, 60, -50), 'purging': (-60, 30, -40, 30, -35), 'relapse': (-60, 40, -50, 40, -40), 'shook': (-30, 60, -40, 30, -20), 'sinking': (-50, -10, -50, 20, -60), 'soaring': (60, 40, 40, 0, 60), 'spiraling': (-60, 50, -60, 40, -40), 'stoked': (60, 50, 40, 10, 30), 'suffocating': (-70, 40, -70, 50, -50), 'thriving': (60, 40, 50, 0, 35), 'triggered': (-50, 70, -60, 40, -30), 'validating': (35, 15, 30, 0, 25), 'vibing': (40, 30, 20, 0, 25), } _GAP_WORDS = { "dull": (-21, -10, -15, 0, -12), "mundane": (-20, -10, -10, 0, -12), "grim": (-40, +10, -15, +5, -25), "hollow": (-30, -10, -20, 0, -20), "flat": (-15, -10, -10, 0, -10), "tedious": (-25, -10, -15, 0, -15), "dreadful": (-50, +15, -25, +10, -35), "pointless": (-30, -5, -20, 0, -20), "bland": (-15, -10, -10, 0, -10), "stale": (-15, -5, -10, 0, -10), "contrived": (-20, +5, -10, 0, -12), "predictable": (-15, -5, -5, 0, -8), "compelling": (+35, +15, +15, 0, +22), "riveting": (+40, +20, +15, 0, +25), "stunning": (+40, +20, +15, 0, +25), "masterful": (+40, +15, +20, 0, +25), "poignant": (+30, +15, -5, 0, +20), "touching": (+35, +15, +5, 0, +22), "heartfelt": (+40, +15, +10, 0, +28), "uplifting": (+40, +15, +15, 0, +30), "entertaining": (+30, +15, +10, 0, +18), "engaging": (+30, +15, +15, 0, +18), "refreshing": (+25, +10, +10, 0, +15), "drama": (-18, +10, -5, 0, -10), "memorable": (+28, +10, +15, 0, +18), "solid": (+29, +5, +15, 0, +15), "cinematic": (+29, +10, +15, 0, +15), "dialogue": (+21, +5, +10, 0, +10), "interesting": (+11, +10, +10, 0, +5), "brilliant": (+42, +27, +42, 0, +27), } EMOTIONAL_VOCABULARY.update(_GAP_WORDS) # Benchmark gap additions — high-impact words from SST-2, GoEmotions, TweetEval # that the previous engine missed (appear 15+ times in benchmarks, |dV| >= 15) _BENCHMARK_WORDS = { # Profanity/slang with strong emotional charge "fuck": (-37, +33, +18, +40, +15), # "fucking" handled as amplifier (1.6x) in context_operators, not as payload "shit": (-52, +38, -22, +31, -9), # "bullshit" = NULL. Not negative — the absence of value. Zero. # Everything > bullshit, so comparison to it = negative. # V near-zero (it IS nothing), but G deeply negative (worthless/void). # When it touches other words, it nullifies them toward zero. "bullshit": (-80, +50, +20, +40, -50), # null — void of value, G-crusher # Common emotional words missing from curated set "director": (+32, +56, +119, +97, +38), "watch": (+50, +29, +127, +63, +16), "show": (+51, +38, +77, +43, -4), "today": (0, 5, 0, 30, 0), "getting": (+24, +83, -44, +28, 0), "keep": (+28, +13, +49, +18, +10), "face": (+28, +40, +49, +18, 0), "play": (+29, +29, +34, 0, +16), "read": (+71, -13, +77, +18, +19), "leave": (-17, +22, -12, +6, -6), "left": (-32, +38, -44, +31, -9), "sleep": (+28, -69, +24, 0, -10), "coming": (+34, -13, 0, 0, +9), # "meeting" removed — neutral factual word (sarcasm context handled by templates) "same": (-24, -54, -14, 0, -10), "plan": (+51, +9, +34, +12, +8), "jammed": (-51, +38, -22, +31, -9), "unsolicited": (-114, +27, -49, +18, -25), "outrage": (-127, +127, +127, +127, +36), "fuming": (-62, +36, -9, +23, -21), "terrorism": (-123, +127, +54, +109, -34), "pathetic": (-50, +15, -25, +10, -20), "ridiculous": (-40, +20, -15, +10, -15), "disgusting": (-60, +40, -20, +25, -20), "fantastic": (+50, +30, +25, 0, +25), "amazing": (+45, +25, +20, 0, +22), "wonderful": (+50, +25, +20, 0, +25), "beautiful": (+45, +20, +15, 0, +25), "hilarious": (+40, +30, +15, 0, +20), "stupid": (-40, +20, -30, +15, -15), "idiot": (-50, +30, -35, +20, -18), "worst": (-60, +30, -30, +20, -25), "best": (+50, +20, +30, 0, +22), "boring": (-25, -15, -15, 0, -15), "perfect": (+55, +15, +30, 0, +28), "rubbish": (-45, +20, -20, +15, -18), "trash": (-45, +20, -25, +15, -18), "epic": (+45, +30, +25, 0, +22), "legendary": (+50, +25, +35, 0, +28), "absurd": (-30, +20, -15, +10, -10), "nightmare": (-60, +50, -40, +50, -30), "paradise": (+55, +15, +25, 0, +30), "toxic": (-55, +30, -25, +20, -22), } EMOTIONAL_VOCABULARY.update(_BENCHMARK_WORDS) # Text/internet slang — high emotional signal in tweets/reddit _SLANG_WORDS = { "wtf": (-102, +127, -24, +97, -12), "smh": (-52, +38, -22, +31, -9), "lmfao": (-16, +50, +13, 0, +10), "bruh": (-24, +13, -12, 0, -5), "tbh": (-23, -9, +7, 0, -5), "fml": (-127, +127, -127, +127, -50), "stfu": (-127, +127, +50, +127, -10), "nah": (-24, -13, +12, 0, -5), "fomo": (-34, +40, -20, +50, -15), "gtfo": (-100, +127, +80, +127, -10), "ngl": (-10, 0, +10, 0, 0), "af": (+10, +20, +10, 0, 0), # intensifier: "happy af" "imo": (-5, 0, +5, 0, 0), "yolo": (+30, +50, +40, +30, +15), "vibes": (+25, +15, +10, 0, +10), "slay": (+40, +30, +40, 0, +15), "goat": (+45, +25, +35, 0, +20), # greatest of all time "lowkey": (-10, -10, -5, 0, -5), "highkey": (+10, +20, +10, +10, +5), "fire": (+40, +30, +25, 0, +15), # slang positive "mid": (-20, -10, -15, 0, -10), # mediocre "sus": (-30, +20, -15, +15, -10), # suspicious "cap": (-25, +15, -20, +10, -10), # lying "bussin": (+40, +30, +20, 0, +15), "bet": (+15, +10, +15, 0, +5), # agreement/confidence "w": (+30, +15, +20, 0, +10), # win "l": (-30, +15, -20, 0, -10), # loss } EMOTIONAL_VOCABULARY.update(_SLANG_WORDS) # Mirror corrections — antonym pairs MUST be symmetric (1=1, love=hate) # The NRC negativity bias means positive words are systematically underscored. # Fix: boost positive words to match their negative antonym's magnitude. # Keep arousal/dominance/urgency/gravity from original — only fix valence. _MIRROR_CORRECTIONS = { # love/hate: hate=-127, so love=+127 "love": (+127, +12, +10, 0, +22), # happy/sad: sad=-78, so happy=+78 "happy": (+78, +8, +10, 0, +17), # joy/anger: anger dV=-89, so joy=+89 "joy": (+89, +27, +34, 0, +29), # hope/despair: NOT symmetric. Hope contains uncertainty. Despair is absolute. "hope": (+45, +15, +20, +10, +25), # brave/afraid: afraid=-78, so brave=+78 "brave": (+78, +22, +52, +6, +14), # proud/ashamed: NOT symmetric. proud is strong positive but not +102. "proud": (+50, +15, +30, 0, +15), # safe/dangerous: dangerous=-127, so safe=+127 "safe": (+127, -20, +72, 0, +16), # trust/betrayed: betrayed=-106, so trust=+106 "trust": (+106, +4, +34, 0, +8), # wonderful/terrible: terrible=-111, so wonderful=+111 "wonderful": (+111, +25, +20, 0, +25), # amazing/awful: awful=-127, so amazing=+127 "amazing": (+127, +25, +20, 0, +22), # perfect/horrible: horrible=-122, so perfect=+122 "perfect": (+122, +15, +30, 0, +28), # Additional high-value antonym corrections # grateful/resentful: resentful not in vocab, but grateful was +28 — too low "grateful": (+78, +15, +20, 0, +20), # excited was +37, but terrified=-127 — excited should be higher "excited": (+78, +40, +20, +10, +15), # good was not mirrored — bad has unknown, use moderate "good": (+50, +10, +15, 0, +12), # beautiful was +45, ugly=-77 — boost to 77 "beautiful": (+77, +20, +15, 0, +25), } EMOTIONAL_VOCABULARY.update(_MIRROR_CORRECTIONS) EMOTIONAL_VOCABULARY.update(_MODERN_WORDS) # Resolver error analysis — 436 cases (230 missed crises + 206 false positives) # Words appearing in 8+ missed-crisis texts that the engine was blind to. # Conservative forces: these are context-dependent words, not pure emotion labels. # Most carry mild negative weight because they appear heavily in crisis text; # the engine needs *some* signal from them to avoid zero-contribution blindness. _RESOLVER_CRISIS_GAPS = { # "attempt" — 10 missed crises, almost always "attempt suicide / attempt to end" "attempt": (-25, +20, -15, +20, -15), # "tonight" — 11 missed crises, temporal urgency marker ("end tonight", "sleep tonight") "tonight": (-5, +10, 0, +25, -5), # "wake" — 8 missed crises ("not wake up", "wake morning why not die") "wake": (-5, +15, +5, +10, -5), # "night" — 12 missed crises, temporal isolation marker "night": (-8, -5, -5, +5, -8), # "past" — 10 missed crises ("past year", "end pain", temporal weight) "past": (-10, -5, -5, 0, -10), # "world" — 11 missed crises ("remove from world", existential) "world": (0, +5, 0, 0, +5), # "stay" — 9 missed crises ("reason to stay", holding on) "stay": (+5, -5, +5, +5, +5), # "close" — 8 missed crises ("close to ending", "get close to killing") "close": (-5, +10, 0, +10, -5), # "life" — 49 missed crises, most common missing word; near-neutral but # existential weight needed ("point in life", "rest of life", "end my life") "life": (0, +5, 0, 0, +5), # "point" — 14 missed crises ("no point", "what's the point") "point": (-5, 0, -5, 0, -5), # "month" — 8 missed crises, temporal marker "month": (0, 0, 0, +5, 0), # "hour" — 8 missed crises, temporal urgency "hour": (0, +5, 0, +10, 0), # "maybe" — 11 missed crises, hedging/uncertainty in crisis "maybe": (-5, -5, -10, 0, -5), # "thought" — 10 missed crises ("suicidal thought", "thought about ending") "thought": (-5, +5, 0, +5, -5), } # ── MUNDANE NEGATIVITY — words that are negative in daily context ── _MUNDANE_NEGATIVE = { 'monday': (-10, +5, -5, +5, -5), 'mondays': (-10, +5, -5, +5, -5), 'bills': (-15, +10, -10, +15, -10), 'homework': (-10, +5, -5, +5, -5), 'chores': (-10, +5, -5, +5, -5), 'traffic': (-15, +10, -10, +10, -10), 'commute': (-10, +5, -5, +5, -5), 'deadline': (-15, +15, -10, +20, -10), 'deadlines': (-15, +15, -10, +20, -10), 'meetings': (-5, +5, -5, +5, -5), 'taxes': (-15, +10, -10, +10, -10), 'overtime': (-10, +10, -10, +10, -5), } EMOTIONAL_VOCABULARY.update(_MUNDANE_NEGATIVE) # ── PANIC / FIGHT-FLIGHT — high arousal emergency words ── _PANIC_WORDS = { 'breathe': (-20, +40, -30, +40, -20), 'breathing': (-15, +35, -25, +35, -15), 'choking': (-40, +50, -40, +50, -30), 'run': (-10, +50, +20, +40, -10), 'running': (-5, +45, +15, +35, -5), 'escape': (-20, +40, -10, +35, -15), 'trapped': (-50, +40, -60, +40, -30), 'panic': (-40, +60, -50, +50, -30), 'panicking': (-40, +60, -50, +50, -30), 'shaking': (-25, +40, -30, +30, -20), 'trembling': (-25, +35, -30, +25, -20), 'hyperventilating': (-35, +50, -40, +45, -25), 'frozen': (-30, -10, -50, +20, -25), 'flee': (-20, +50, -20, +40, -15), 'ambulance': (-30, +40, -20, +50, -25), 'emergency': (-25, +45, -15, +55, -20), } EMOTIONAL_VOCABULARY.update(_PANIC_WORDS) _POST5_WORDS = { 'meaningless': (-60, -10, -45, 10, -40), 'outpouring': (30, 15, 20, 0, 20), 'outpourings': (30, 15, 20, 0, 20), } EMOTIONAL_VOCABULARY.update(_POST5_WORDS) _SARCASM_GAPS = { 'delightful': (50, 20, 15, 0, 25), 'lovely': (45, 15, 10, 0, 20), 'fabulous': (50, 20, 15, 0, 25), 'marvelous': (50, 20, 15, 0, 25), 'splendid': (45, 15, 15, 0, 20), # 'policy' removed — neutral factual word 'paperwork': (-10, 5, -5, 5, -5), } EMOTIONAL_VOCABULARY.update(_SARCASM_GAPS) _CYCLE6_CRISIS_VOCAB = { 'deserve': (-15, 10, -20, 5, -10), # 'I dont deserve this' / 'I deserve to die' 'mental': (-10, 10, -15, 10, -10), # mental health context 'depress': (-50, -15, -40, 10, -30), # depressed/depression root 'depressed': (-55, -15, -45, 10, -35), 'depression': (-50, -10, -40, 10, -30), 'body': (-5, 5, -5, 5, -5), # body in crisis = physical awareness 'person': (0, 0, 0, 0, 0), # truly neutral — person is a subject 'lately': (-5, 5, -5, 5, -5), # temporal marker — things changing 'recently': (-5, 5, -5, 5, -5), # temporal marker 'soon': (-5, 10, 0, 15, -5), # urgency marker 'continue': (-5, 5, -5, 5, -5), # persistence — could be + or - 'stand': (-10, 10, -10, 10, -5), # 'cant stand' / 'stand up for' } EMOTIONAL_VOCABULARY.update(_CYCLE6_CRISIS_VOCAB) EMOTIONAL_VOCABULARY.update(_RESOLVER_CRISIS_GAPS) # ── Cycle 11: Missing emotional words for rage, fear, joy, conviction ── _CYCLE11_EMOTIONAL_GAPS = { # RAGE — words that are clearly angry but were missing 'break': (-30, +40, +20, +30, -15), # destructive intent 'boils': (-35, +50, +10, +20, -10), # "blood boils" = rage 'boiling': (-35, +50, +10, +20, -10), 'smash': (-40, +60, +20, +30, -15), 'punch': (-40, +60, +20, +25, -15), 'snap': (-30, +50, +10, +25, -10), # "going to snap" # FEAR — missing anxiety/panic words 'racing': (-20, +50, -30, +30, -15), # "mind won't stop racing" 'closing': (-25, +30, -30, +25, -20), # "walls closing in" 'walls': (-15, +10, -20, +10, -15), # mild negative in fear context 'falling': (-30, +30, -30, +20, -25), # loss of control 'falls': (-20, +20, -20, +15, -15), # 'apart' already in main vocab — skip # JOY / CONVICTION — missing positive force words 'dreamed': (+50, +20, +20, +0, +25), # "everything I've dreamed of" 'seize': (+40, +40, +50, +20, +20), # "seize the moment" = empowerment 'moment': (+15, +10, +10, +0, +10), # mildly positive, context-dependent 'challenge': (+10, +20, +15, +10, +5), # mild positive — opportunity 'excellence': (+60, +30, +50, +10, +30), # strong positive aspiration 'achieving': (+40, +25, +45, +10, +25), 'overjoyed': (+90, +60, +40, +0, +40), # very strong joy 'elated': (+80, +50, +40, +0, +35), # strong joy 'jubilant': (+85, +55, +45, +0, +38), # strong joy 'exhilarated': (+75, +60, +40, +0, +30), # strong joy + high arousal # NEUTRAL — words that should NOT carry emotional charge 'meetings': (0, 0, 0, 0, 0), # override mundane-negative — truly neutral } EMOTIONAL_VOCABULARY.update(_CYCLE11_EMOTIONAL_GAPS) # ── Cycle 17: Reddit resolver error mining — high-frequency missing emotional words ── _CYCLE17_ERROR_MINING = { # STRONG POSITIVE 'triumph': (+70, +50, +60, +0, +40), # victory/achievement 'masterpiece': (+80, +20, +50, +0, +35), # excellence 'treasure': (+50, +15, +30, +0, +25), # valued/precious # STRONG NEGATIVE 'despise': (-90, +40, +30, +10, -30), # intense hatred 'loathsome': (-100, +30, +10, +10, -35), # deeply repulsive 'sickening': (-80, +40, -20, +15, -30), # nauseating disgust 'abomination': (-100, +40, +10, +15, -40), # extreme moral revulsion 'nonsense': (-30, +15, +20, +5, -10), # dismissive # EMOTIONAL STATE 'emptiness': (-50, -20, -40, +5, -35), # void/hollowness 'fills': (+20, +15, +10, +0, +10), # "fills me with" — mild positive carrier # CHALLENGE/DEFIANCE 'dare': (+20, +40, +40, +15, +10), # defiant challenge } EMOTIONAL_VOCABULARY.update(_CYCLE17_ERROR_MINING) # ── Cycle 23: Reddit false-negative mining — words engine missed as negative ── _CYCLE23_FALSE_NEG_MINING = { # SUFFERING / PAIN 'unbearable': (-80, +40, -50, +30, -35), # extreme suffering 'sorrow': (-60, -10, -40, +5, -40), # deep grief/sadness 'aches': (-30, +15, -20, +10, -15), # physical/emotional pain 'aching': (-30, +15, -20, +10, -15), 'tremble': (-25, +40, -30, +20, -15), # fear/anxiety physical response 'trembles': (-25, +40, -30, +20, -15), 'creeping': (-25, +20, -20, +15, -15), # slow dread/anxiety # DISGUST / REVULSION 'nauseated': (-60, +30, -30, +15, -25), # physical disgust 'nauseous': (-55, +25, -25, +10, -20), 'vile': (-90, +35, +10, +10, -30), # extreme moral disgust 'repulsive': (-85, +30, +5, +10, -30), # deeply disgusting 'revolting': (-80, +35, +5, +10, -30), # INTENSITY MODIFIERS (these appear in "unbelievably sad" etc.) 'unbelievably': (0, +20, 0, +5, 0), # pure intensifier, no V direction 'shockingly': (0, +25, 0, +10, 0), # pure intensifier 'outrageously': (0, +25, 0, +10, 0), # pure intensifier } EMOTIONAL_VOCABULARY.update(_CYCLE23_FALSE_NEG_MINING) # ── Internet/Gen-Z slang with real emotional physics ── # These aren't just mappings to formal words — they carry their own forces. # "boo" isn't just "partner" — it's warmth + belonging + vulnerability. _SLANG_VOCABULARY = { # Relationship / community — high V, moderate G (belonging matters) 'boo': (+50, +20, +10, +0, +30), # romantic partner — warmth + vulnerability 'bae': (+50, +20, +10, +0, +30), # same energy as boo 'fam': (+40, +15, +20, +0, +25), # chosen family — loyalty + belonging 'sis': (+35, +15, +15, +0, +20), # solidarity — "I see you" 'homie': (+40, +15, +20, +0, +20), # deep friendship bond 'bestie': (+45, +20, +15, +0, +25), # best friend — high trust # Affirmation / hype — high V, high A 'deadass': (0, +30, +30, +10, +5), # pure intensifier — "I'm serious" 'nocap': (0, +25, +25, +5, +5), # truthfulness marker 'yeet': (+20, +60, +30, +10, -5), # explosive energy, low gravity 'stan': (+50, +40, +10, +0, +15), # intense devotion/fandom 'simp': (-15, +10, -30, +0, -10), # devotion BUT with D-crush (loss of agency) 'flex': (+30, +30, +50, +5, +10), # showing off — high D (confidence display) 'drip': (+35, +20, +40, +0, +10), # style/confidence 'clout': (+25, +20, +40, +5, +10), # social influence/status # Negative slang — carries real weight 'salty': (-25, +20, -10, +5, -10), # bitter/resentful 'pressed': (-20, +30, -15, +10, -5), # bothered/upset about it 'cancelled': (-40, +25, +10, +15, -20), # social rejection 'ghosted': (-45, -10, -35, +10, -25), # already in vocab but verify 'catfished': (-50, +30, -30, +15, -20), # betrayed/deceived 'doomscrolling': (-30, +15, -20, +10, -15), # anxiety-feeding behavior # Emotional state slang 'vibe': (+30, +10, +15, +0, +15), # general positive feeling 'vibing': (+35, +15, +15, +0, +15), # in the flow 'rekt': (-60, +30, -40, +15, -20), # destroyed/devastated 'tilted': (-30, +35, -20, +15, -10), # frustrated/off-balance (gaming) 'snatched': (+40, +30, +30, +0, +10), # looking amazing 'slaps': (+50, +35, +20, +0, +15), # something is really good 'hits': (+30, +25, +10, +5, +15), # emotionally resonates — "this hits different" 'rent-free': (-10, +15, -15, +10, -10), # can't stop thinking about it 'ick': (-40, +20, -20, +5, -15), # sudden disgust/turn-off 'thicc': (+25, +15, +10, +0, +5), # body-positive compliment } EMOTIONAL_VOCABULARY.update(_SLANG_VOCABULARY) # ── Object Gravity Dictionary ── # "A broken car sucks, but not the same negative as a broken heart." # These are nouns whose GRAVITY (importance to emotional stakes) is knowable. # V is near-zero for most (objects aren't positive or negative by themselves). # G is the key — how much does this object MATTER emotionally? # # Tier 1 (G=+40 to +50): life-or-death, core identity, irreplaceable # Tier 2 (G=+20 to +35): important relationships, home, livelihood # Tier 3 (G=+5 to +15): daily life objects, replaceable but annoying # Tier 4 (G=0): truly neutral objects (engine default) # # The model fills the long tail — context determines if "phone" is Tier 3 # (inconvenient) or Tier 1 (dead mom's last photos). Engine knows anchors. _OBJECT_GRAVITY = { # Tier 1 — life, death, core self (G=40-50) 'soul': (+5, 0, +5, 0, +50), # deepest self 'child': (+15, +10, +5, +5, +45), # someone's kid 'baby': (+20, +10, -5, +5, +45), # infant — maximum vulnerability 'blood': (-5, +15, +5, +10, +40), # life force / violence signal 'breath': (+5, +10, -5, +5, +35), # life/death proximity 'life': (+0, +5, +5, +0, +45), # override — life is max stakes # Tier 2 — relationships, home, livelihood (G=20-35) 'father': (+30, +10, +20, +0, +30), # parent bond 'parent': (+25, +10, +15, +0, +30), 'husband': (+30, +10, +10, +0, +30), 'wife': (+30, +10, +10, +0, +30), 'partner': (+25, +10, +10, +0, +25), 'brain': (+5, +5, +5, +0, +25), # cognition — identity-adjacent 'chest': (-5, +10, -5, +5, +25), # physical anxiety locus 'stomach': (-5, +5, -5, +5, +15), # gut feeling 'money': (+5, +10, +10, +10, +20), # livelihood 'house': (+10, +5, +10, +0, +20), # shelter — basic need # Tier 3 — daily life, replaceable (G=5-15) 'car': (+5, +5, +10, +5, +10), # transportation 'phone': (+5, +5, +5, +5, +10), # communication device 'school': (+5, +5, +5, +5, +10), # education 'computer': (+5, +5, +5, +5, +5), # tool } EMOTIONAL_VOCABULARY.update(_OBJECT_GRAVITY) # ── Body autonomy words ── # These are body experiences that are almost always negative in context. # "Period" is only positive as RELIEF ("I got my period!" = not pregnant). # The base reading is negative — context/exclamation can flip it. _BODY_AUTONOMY = { 'period': (-15, +10, -10, +5, +15), # menstrual — negative + high G (body stakes) 'periods': (-15, +10, -10, +5, +15), 'cramps': (-30, +20, -20, +10, +10), # pain 'cramping': (-25, +15, -15, +10, +10), 'bleeding': (-25, +20, -15, +15, +15), # could be injury or menstrual 'nausea': (-30, +15, -20, +10, +5), 'nauseous': (-30, +15, -20, +10, +5), # may already exist from cycle 23 'pregnant': (-5, +25, -10, +15, +45), # near-neutral V but MASSIVE G — life-changing 'pregnancy': (-5, +20, -10, +10, +40), 'miscarriage': (-70, +20, -50, +15, +45), # devastating loss + high G 'contraction': (-20, +30, -15, +20, +30), # labor pain 'contractions': (-20, +30, -15, +20, +30), } EMOTIONAL_VOCABULARY.update(_BODY_AUTONOMY) # ── Crisis method/planning/farewell words ── # These words are neutral in isolation but become crisis signals in combination. # Mild negative V + elevated U + high G = "something heavy is being discussed" _CRISIS_METHOD_WORDS = { 'goodbye': (-20, +5, -10, +15, -20), # farewell — mild alone, heavy in context 'pill': (-10, +5, -5, +10, -10), # medication — context-dependent 'pills': (-10, +5, -5, +10, -10), 'painkillers': (-15, +5, -10, +10, -10), 'rope': (-15, +10, -10, +15, -15), # method word 'blade': (-20, +15, -10, +15, -15), # weapon word 'wrist': (-10, +10, -10, +10, -10), # self-harm locus 'slit': (-30, +20, -15, +20, -20), # self-harm action 'noose': (-40, +15, -30, +25, -30), # method word — high signal 'overdose': (-40, +15, -25, +25, -30), 'tomorrow': (+5, +5, +5, +10, +0), # temporal — mild urgency 'tonight': (+0, +10, +0, +20, +0), # temporal — higher urgency 'anymore': (-15, +5, -15, +10, -10), # "not anymore" = giving up 'cut': (-15, +10, -5, +10, -10), # dual-use but negative lean 'cutting': (-20, +15, -10, +15, -15), } EMOTIONAL_VOCABULARY.update(_CRISIS_METHOD_WORDS) # ── Permanence/infinity modifiers ── # "permanently" = negative infinity. Nobody wants permanence of bad things. # "Is this permanent?" evokes fear. Permanence on exits = crisis lock. _PERMANENCE_WORDS = { 'permanently': (-30, +10, -20, +15, -25), # infinity lock — amplifies negative exit 'forever': (-15, +5, -10, +10, -15), # softer infinity — "forever alone" vs "love forever" 'eternal': (-10, +5, -5, +5, -10), # can be positive (eternal love) or negative 'endless': (-15, +10, -10, +10, -15), # usually negative — endless pain/suffering 'permanent': (-20, +10, -15, +10, -20), # "is this permanent?" = fear 'irreversible':(-30, +15, -25, +15, -25), # can't undo — high gravity 'vanish': (-40, +5, -35, +15, -30), # disappear — removing self 'cease': (-35, +5, -30, +15, -25), # stop existing 'ceased': (-30, +5, -25, +10, -20), 'over': (-10, +5, -5, +5, -5), # mild exit — context dependent 'belong': (+15, +5, +10, +0, +15), # positive — belonging } EMOTIONAL_VOCABULARY.update(_PERMANENCE_WORDS) # ── Short response words — emotional weight from brevity ── # "k" is not "ok". "k" is angry/dismissive acknowledgment. # "ok" hedges entirely on context — neutral by itself but amplifies previous. # These carry emotional weight from their SHORTNESS, not their meaning. _SHORT_RESPONSES = { 'k': (-20, -15, -20, 0, -10), # curt dismissal — "I acknowledge, nothing more" 'kk': (-5, -5, -5, 0, -5), # softer k — casual acknowledgment 'idk': (-15, -5, -15, 5, -10), # curt "stop asking me" 'idc': (-20, -10, -25, 0, -15), # "i dont care" — dismissal 'smh': (-20, +10, +5, +5, -10), # disappointment/disapproval 'bruh': (-10, +10, +5, +5, -5), # exasperation/disbelief 'oof': (-15, +10, -10, +5, -10), # sympathetic wince 'yikes': (-20, +15, -10, +5, -10), # alarm/cringe 'meh': (-10, -15, -15, 0, -10), # apathy/indifference 'nah': (-5, -5, +5, 0, -5), # casual rejection 'nope': (-5, +5, +10, 0, -5), # firm rejection (higher D than nah) } EMOTIONAL_VOCABULARY.update(_SHORT_RESPONSES) # ── Swearing — standalone vs modifier are different ── # "fuck" alone = negative outburst (like "damn") # "fucking" = amplifier (handled in context_operators, not here) _SWEARING = { 'fuck': (-70, +50, +30, +20, -15), # expletive/attack -- resists negation at |V|>60 'shit': (-30, +25, +10, +10, -10), # frustration # 'bullshit' already in main vocab at V=-60 — don't overwrite 'dammit': (-25, +30, +10, +15, -5), # frustration outburst 'goddamn': (-20, +25, +10, +10, -5), # emphasis outburst # NOTE: "damn" excluded — too context-dependent. # "damn you"=curse, "I don't give a damn"=indifference, "damn that's good"=amplifier # Handled via context_operators as amplifier ("damn good") and bigrams. 'hell': (-15, +20, +10, +10, -5), # mild outburst } EMOTIONAL_VOCABULARY.update(_SWEARING) # ── Connection/transfer words ── # "Talk" = human HDMI port. Not emotional by itself — it's the act of # connecting/transferring between two entities. Emotional weight comes # from the STATE of the connection (opening, closing, urgency). _CONNECTION_WORDS = { 'talk': (0, +5, +5, +5, +10), # connection word — V neutral, G elevated (it matters) 'talking': (0, +5, +5, +5, +10), 'speak': (+5, +10, +10, +10, +10), # more formal connection 'listen': (+10, +5, -5, +5, +10), # receiving — slight positive, lower D (receptive) 'listening': (+10, +5, -5, +5, +10), 'hear': (+10, +5, -5, +5, +10), # same as listen 'communicate': (+10, +10, +10, +10, +10), # bidirectional transfer 'discuss': (+5, +10, +10, +10, +10), # structured transfer 'conversation': (+10, +5, +5, +5, +10), # ongoing connection 'silence': (-15, -20, -10, +5, -15), # connection severed — absence of transfer 'quiet': (-5, -15, -5, +0, -5), # reduced bandwidth } EMOTIONAL_VOCABULARY.update(_CONNECTION_WORDS) # ── Help as a lifter ── # Help is a ramp — it goes UP. Slightly positive V (lifting is positive). # But ASKING for help = the person is DOWN and needs the lift. # "help me" = pulling you to me, vulnerability. "helping" = active lift. # Context determines if it's calm lift or desperate pull. _HELP_WORDS = { # "help" alone implies NEED — a deficit. Nobody says help when things are fine. # The tense shifts the meaning: help (need), helping (active), helped (done/relief) 'help': (-10, +15, -10, +15, +15), # need/pull — something is lacking, elevated U+G 'helping': (+15, +10, +15, +5, +10), # active lifting — positive action in progress 'helped': (+25, +5, +15, +0, +15), # lift completed — relief 'helpful': (+30, +5, +15, +0, +10), # the lift worked — positive # helpless = awareness of need + inability to meet it. Not nothing — # it's knowing the ramp doesn't exist and you can't build one. # Worse than "help" (need) because the person sees the gap AND knows they can't close it. 'helpless': (-60, +10, -60, +20, -35), # aware of need + unable to act — D crushed } EMOTIONAL_VOCABULARY.update(_HELP_WORDS) # ── Gravity Hierarchy ── # Relationships and foundations have tiered gravity based on emotional stakes. # These override the G value from the original vocabulary entry. # "I lost my child" (G=50) hits harder than "I lost my car" (G=30) # which hits harder than "I lost my pen" (G=0). _GRAVITY_HIERARCHY = { # Tier 0 (G=55): foundations of existence 'health': (0, 10, 0, 10, 55), 'life': (0, 5, 5, 0, 55), # Tier 1 (G=50): most vulnerable, your responsibility 'children': (15, 10, 5, 5, 50), # Tier 2 (G=40): core family 'parents': (25, 10, 15, 0, 40), 'spouse': (30, 10, 10, 0, 40), # Tier 3 (G=35): chosen family + security foundations 'career': (15, 15, 20, 10, 35), # Tier 4 (G=30): independence + blood 'savings': (5, 10, 15, 10, 30), # Tier 5-6 (G=20): social circle + anchors 'ring': (10, 5, 5, 0, 20), # Tier 8 (G=5): acquaintance 'neighbor': (5, 5, 5, 0, 5), 'coworker': (5, 5, 5, 5, 5), } EMOTIONAL_VOCABULARY.update(_GRAVITY_HIERARCHY) # Now update existing words' G values to match hierarchy # This overrides just the G dimension while keeping V,A,D,U _G_OVERRIDES = { # Tier 1 'child': 50, 'baby': 50, 'son': 50, 'daughter': 50, # Tier 2 'mom': 40, 'mother': 40, 'dad': 40, 'father': 40, 'parent': 40, 'husband': 40, 'wife': 40, # Tier 3 'dog': 35, 'cat': 35, 'pet': 35, 'puppy': 35, 'kitten': 35, 'home': 35, 'house': 35, 'job': 35, # Tier 4 'money': 30, 'car': 30, 'brother': 30, 'sister': 30, 'sibling': 30, 'family': 30, # Tier 5 'life': 55, # Tier 6 'friend': 20, 'phone': 20, # Tier 7 'boyfriend': 10, 'girlfriend': 10, 'partner': 10, } for word, new_g in _G_OVERRIDES.items(): if word in EMOTIONAL_VOCABULARY: old = EMOTIONAL_VOCABULARY[word] EMOTIONAL_VOCABULARY[word] = (old[0], old[1], old[2], old[3], new_g) # ── Relationship V neutralization ── # Relationship words are NOT positive or negative. They are HEAVY. # "Mom" doesn't carry valence. Mom carries GRAVITY. # Mom forgot = devastating (G amplifies negative action) # Mom hugged = amazing (G amplifies positive action) # The relationship amplifies whatever action follows -- it doesn't add its own V. _RELATIONSHIP_V_NEUTRAL = [ 'mom', 'mother', 'dad', 'father', 'parent', 'parents', 'brother', 'sister', 'sibling', 'son', 'daughter', 'child', 'children', 'baby', 'husband', 'wife', 'partner', 'boyfriend', 'girlfriend', 'family', 'grandma', 'grandmother', 'grandpa', 'grandfather', 'uncle', 'aunt', 'cousin', 'friend', 'friends', 'neighbor', 'boss', 'coworker', 'teacher', ] for word in _RELATIONSHIP_V_NEUTRAL: if word in EMOTIONAL_VOCABULARY: old = EMOTIONAL_VOCABULARY[word] # Zero out V, keep A low, keep D neutral, keep G EMOTIONAL_VOCABULARY[word] = (0, max(0, old[1] // 3), 0, 0, old[4]) # ── Event/object V neutralization ── # Events and milestone nouns are NOT inherently positive or negative. # They are HIGH GRAVITY -- things that MATTER. # "graduation" alone = milestone (G high, V neutral) # "I graduated" = positive (the VERB carries direction) # "my mom forgot my graduation" = negative (forgot carries direction, graduation is the weight) # The noun is the mass. The verb is the force. F = m * a. _EVENT_V_NEUTRAL = [ 'graduation', 'birthday', 'wedding', 'christmas', 'holiday', 'vacation', 'party', 'gift', 'present', 'school', 'college', 'church', 'hospital', 'promotion', 'raise', 'bonus', 'dinner', 'breakfast', 'lunch', 'home', 'house', 'thoughts', 'mind', 'life', 'world', 'future', 'past', 'money', 'job', 'career', 'work', ] for word in _EVENT_V_NEUTRAL: if word in EMOTIONAL_VOCABULARY: old = EMOTIONAL_VOCABULARY[word] # Reduce V to near-zero but keep G high EMOTIONAL_VOCABULARY[word] = (old[0] // 5, old[1] // 3, old[2] // 4, old[3], max(20, old[4])) # ── Action Words (liquid -- context shifts meaning) ── # These carry their MOST COMMON emotional reading. # "hit" is negative in most emotional contexts (violence > "hit song"). # Proximity and structure handle the rare positive cases. _ACTION_WORDS = { # Violence/abuse (almost always negative in conversation) 'hit': (-45, 35, -25, 20, -15), # moderate negative -- VICTIMIZATION amplifies for violence 'hitting': (-40, 45, 20, 25, -15), 'slapping': (-60, 50, 20, 25, -20), 'kicked': (-50, 50, 25, 20, -15), 'kicking': (-50, 50, 25, 25, -15), 'shoved': (-40, 45, 20, 20, -10), 'grabbed': (-30, 40, 25, 20, -10), 'screamed': (-40, 60, 30, 25, -15), 'yelled': (-35, 55, 30, 20, -10), # Betrayal/violation 'blocked': (-35, 15, -20, 10, -15), # cut off connection 'posted': (-10, 15, 10, 10, -5), # mild -- context needed 'exposed': (-40, 30, -25, 20, -20), # violated 'leaked': (-35, 25, -20, 15, -15), 'stolen': (-50, 30, -30, 20, -20), 'stole': (-50, 30, -25, 20, -20), # Abandonment 'walked': (-15, 10, 10, 5, -5), # mild -- "walked out" is idiom 'stormed': (-30, 50, 30, 20, -10), # stormed out = angry exit 'vanished': (-35, 10, -20, 15, -20), 'disappeared': (-35, 10, -25, 15, -20), # Achievement (positive) 'promoted': (48, 30, 35, 5, 25), # keep positive 'graduated': (50, 25, 30, 0, 30), 'accomplished': (45, 20, 35, 0, 25), 'succeeded': (50, 25, 35, 0, 25), 'passed': (20, 10, 15, 0, 10), # mild -- could be death euphemism # Social harm 'gossiping': (-25, 15, 10, 5, -10), 'bullied': (-60, 35, -40, 20, -25), 'bullying': (-55, 35, -35, 20, -25), 'mocked': (-40, 25, 15, 10, -15), 'mocking': (-35, 25, 15, 10, -15), 'humiliated': (-70, 40, -50, 15, -30), 'embarrassed': (-35, 30, -30, 10, -15), } EMOTIONAL_VOCABULARY.update(_ACTION_WORDS) # ── Rejection/abandonment actions ── _REJECTION_WORDS = { 'left': (-8, 5, -5, 5, -3), # near-neutral -- "I left" = agency. VICTIMIZATION adds weight when confirmed 'leaving': (-20, 15, -10, 10, -10), 'ignored': (-35, 10, -25, 10, -15), # social rejection 'ignoring': (-30, 10, -20, 10, -15), 'abandoned': (-60, 15, -50, 15, -30), # severe abandonment (override existing) 'replaced': (-40, 15, -30, 10, -20), 'forgotten': (-35, -10, -30, 5, -20), 'excluded': (-35, 10, -25, 10, -15), 'uninvited': (-30, 10, -20, 5, -10), 'unwanted': (-45, 10, -35, 10, -20), 'unwelcome': (-35, 10, -25, 5, -15), 'dumped': (-50, 25, -35, 15, -25), 'ditched': (-35, 15, -25, 10, -15), 'read': (5, 5, 5, 0, 5), # neutral -- "left on read" needs idiom } EMOTIONAL_VOCABULARY.update(_REJECTION_WORDS) # ── Digital Rejection Patterns ── # Modern communication has its own emotional vocabulary. # "left on read" = received your output, refused to process it. # This is ACKNOWLEDGED rejection -- worse than being ignored. _DIGITAL_REJECTION = { 'unread': (-10, -5, -10, 5, -5), # not yet seen -- uncertainty 'unanswered': (-25, 5, -20, 10, -10), # sent, no reply -- waiting 'unfollowed': (-30, 10, -20, 10, -15), # cut connection publicly 'unfriended': (-35, 10, -25, 10, -15), # removed from circle } EMOTIONAL_VOCABULARY.update(_DIGITAL_REJECTION) # ── Violence/aggression actions ── _VIOLENCE_WORDS = { 'stabbed': (-80, 90, -60, 80, -40), 'stab': (-70, 80, -50, 70, -35), 'stabbing': (-75, 85, -55, 75, -38), 'punched': (-60, 80, -40, 60, -25), 'slapped': (-55, 70, -35, 50, -20), 'choked': (-75, 85, -60, 80, -35), 'shoved': (-45, 60, -30, 40, -15), 'grabbed': (-35, 50, -25, 30, -10), 'attacked': (-70, 85, -50, 70, -30), 'assaulted': (-80, 85, -60, 80, -40), 'beaten': (-75, 80, -55, 70, -35), 'strangled': (-80, 90, -65, 85, -40), 'thrown': (-40, 60, -30, 40, -15), } EMOTIONAL_VOCABULARY.update(_VIOLENCE_WORDS) # ── Mockery/humiliation ── _MOCKERY_WORDS = { 'mocked': (-40, 25, 15, 10, -15), 'mocking': (-35, 25, 15, 10, -15), 'ridiculed': (-45, 30, 15, 10, -20), 'taunted': (-35, 25, 15, 10, -15), 'teased': (-20, 15, 10, 5, -8), 'harassed': (-55, 40, -25, 30, -20), } EMOTIONAL_VOCABULARY.update(_MOCKERY_WORDS) # ── Resignation/dismissal overrides ── # Single-word responses carry emotional weight through what's MISSING. # "whatever" = I stopped fighting. "k" = stripped to minimum effort. _RESIGNATION_OVERRIDES = { 'whatever': (-15, -20, -20, 0, -5), 'sure': (-2, -5, -3, 0, -1), # near-zero -- liquid. context determines. 'cool': (-5, -15, -10, 0, -3), 'k': (-10, -20, -15, 0, -5), 'nvm': (-15, -15, -15, 5, -5), 'nevermind': (-15, -15, -15, 5, -5), 'idk': (-10, -15, -15, 0, -5), 'idc': (-15, -20, -20, 0, -5), } EMOTIONAL_VOCABULARY.update(_RESIGNATION_OVERRIDES) # ── Achievement/success actions ── _ACHIEVEMENT_WORDS = { 'worked': (20, 10, 15, 0, 8), # it worked = success 'succeeded': (35, 20, 30, 0, 15), 'accomplished': (30, 15, 25, 0, 15), 'achieved': (30, 15, 25, 0, 15), 'graduated': (35, 20, 25, 0, 20), 'promoted': (30, 15, 25, 0, 15), 'hired': (25, 15, 20, 0, 10), 'fired': (-45, 30, -35, 25, -20), # job loss 'fired!': (-45, 30, -35, 25, -20), } EMOTIONAL_VOCABULARY.update(_ACHIEVEMENT_WORDS) # ── Violation/intrusion actions ── # Liquid words -- mild negative alone, VICTIMIZATION amplifies when confirmed. _VIOLATION_WORDS = { 'deleted': (-15, 10, -10, 5, -5), 'changed': (-10, 5, -5, 5, -3), 'ate': (-5, 5, -5, 0, -3), 'took': (-10, 5, -10, 5, -5), 'spent': (-15, 5, -10, 5, -5), 'sold': (-15, 10, -10, 5, -5), 'threw': (-15, 15, -10, 5, -5), 'stole': (-50, 30, -30, 20, -15), 'stealing': (-45, 30, -25, 20, -15), 'broke': (-25, 20, -15, 10, -10), 'smashed': (-40, 40, -20, 15, -10), 'ruined': (-50, 20, -30, 15, -20), 'wrecked': (-45, 20, -25, 15, -15), 'destroyed': (-60, 25, -40, 20, -25), } EMOTIONAL_VOCABULARY.update(_VIOLATION_WORDS) # ── Invalidation/gaslighting ── _INVALIDATION_WORDS = { 'overreacting': (-20, 15, 20, 5, -5), # accusation -- D goes UP for speaker 'dramatic': (-15, 10, 15, 5, -5), 'crazy': (-30, 15, 15, 10, -10), 'paranoid': (-25, 15, 10, 5, -8), 'delusional': (-30, 15, 15, 10, -10), 'exaggerating': (-15, 10, 15, 5, -5), } EMOTIONAL_VOCABULARY.update(_INVALIDATION_WORDS) # ── Resolution/outcome words ── _RESOLUTION_WORDS = { 'made': (15, 5, 10, 0, 5), 'well': (15, -5, 10, 0, 5), 'anyway': (5, 5, 10, 0, 0), # persistence despite obstacles 'survived': (10, 5, 15, 0, 10), 'overcame': (20, 10, 20, 0, 10), 'managed': (10, 5, 10, 0, 5), } EMOTIONAL_VOCABULARY.update(_RESOLUTION_WORDS) # ── Threat/oath words ── _THREAT_WORDS = { 'swear': (-15, 20, 20, 15, -5), # oath -- escalation signal 'promise': (10, 5, 10, 5, 15), # commitment -- can be positive or threatening 'warn': (-20, 15, 25, 15, -5), 'warning': (-20, 15, 25, 15, -5), 'threatening': (-40, 30, 20, 20, -10), 'threat': (-40, 30, 15, 20, -10), } EMOTIONAL_VOCABULARY.update(_THREAT_WORDS) # ── Medical/condition words ── _MEDICAL_WORDS = { 'herpes': (-30, 15, -20, 5, -10), 'cancer': (-80, 30, -50, 40, -40), 'sick': (-30, 10, -20, 10, -15), 'infected': (-35, 20, -25, 15, -15), 'pregnant': (5, 30, 0, 30, 40), # high G, context-dependent V 'disability': (-15, 5, -15, 5, 20), } EMOTIONAL_VOCABULARY.update(_MEDICAL_WORDS) # ── Milestone/achievement words ── _MILESTONE_WORDS = { 'million': (35, 15, 25, 5, 10), 'billion': (20, 10, 20, 5, 10), 'streams': (10, 5, 5, 0, 5), 'verified': (20, 10, 15, 0, 10), 'published': (25, 10, 20, 0, 15), 'accepted': (30, 15, 20, 0, 15), 'paid': (15, 5, 10, 0, 5), 'hero': (40, 15, 30, 0, 20), 'dream': (25, 10, 10, 5, 15), } EMOTIONAL_VOCABULARY.update(_MILESTONE_WORDS) # ── Comparison/judgment words ── _JUDGMENT_WORDS = { 'compare': (-15, 5, -10, 5, -5), 'compared': (-15, 5, -10, 5, -5), 'comparing': (-15, 5, -10, 5, -5), 'judge': (-20, 10, 15, 5, -5), 'judged': (-25, 10, -10, 5, -10), 'judging': (-20, 10, 15, 5, -5), 'criticize': (-25, 10, 15, 5, -8), 'criticized': (-30, 10, -15, 5, -10), 'blame': (-30, 15, 15, 10, -10), 'blamed': (-35, 15, -20, 10, -15), 'fault': (-25, 10, -15, 5, -10), } EMOTIONAL_VOCABULARY.update(_JUDGMENT_WORDS) # ── Temporal intensity words ── # These amplify through permanence/repetition _TEMPORAL_INTENSITY = { 'always': (-10, 5, -5, 5, -3), # infinity -- relentless 'constantly': (-10, 10, -5, 5, -3), # nonstop pressure 'every': (-5, 5, -5, 5, -3), # totality 'forever': (-5, 5, -5, 10, -5), # permanence } EMOTIONAL_VOCABULARY.update(_TEMPORAL_INTENSITY) # ── Exclusion/comparison markers ── _EXCLUSION_WORDS = { 'except': (-25, 5, -15, 5, -10), # exclusion -- everyone EXCEPT me 'besides': (-10, 5, -5, 0, -3), 'instead': (-15, 5, -10, 5, -5), # replacement -- they chose X instead of me 'without': (-45, 15, -40, 15, -25), # already exists but reconfirm 'more': (-8, 5, -5, 0, -3), # comparison -- implies less for speaker 'less': (-10, -5, -5, 0, -5), # already exists 'better': (-5, 5, -5, 0, -3), # context: "theyre better" = im worse 'prettier': (-10, 5, -10, 0, -5), 'smarter': (-8, 5, -10, 0, -5), 'faster': (-5, 5, -5, 0, -3), } EMOTIONAL_VOCABULARY.update(_EXCLUSION_WORDS) # ── Doubt/questioning markers ── # "even" in "do you even care" = doubt amplifier # "actually" in "did you actually try" = skepticism _DOUBT_WORDS = { 'even': (-10, 5, -5, 5, -3), # doubt -- "do you EVEN" 'actually': (-8, 5, 5, 0, -3), # skepticism -- "did you ACTUALLY" 'really': (-5, 5, -5, 0, -3), # doubt when questioning: "do you really" 'anymore': (-15, 5, -10, 5, -5), # loss of state -- "i dont care anymore" 'supposed': (-10, 5, -10, 5, -5), # obligation unfulfilled -- "you were supposed to" } EMOTIONAL_VOCABULARY.update(_DOUBT_WORDS) # ── Upbringing/family structure ── _UPBRINGING_WORDS = { 'foster': (-3, 0, -3, 0, -10), # neutralizer/dampener -- substitute. reduces what follows. not negative itself. 'adopted': (-5, 5, -5, 5, 35), # near-neutral -- can be positive (chosen) or painful 'orphan': (-40, 10, -30, 10, 40), # parentless -- high G loss 'homeless': (-50, 15, -40, 15, 35), 'abused': (-70, 30, -50, 30, 40), 'neglected': (-50, 10, -40, 10, 35), 'molested': (-90, 40, -70, 50, 50), 'trafficked': (-80, 40, -60, 50, 45), } EMOTIONAL_VOCABULARY.update(_UPBRINGING_WORDS) # ── Missing common words (found by benchmark) ── _BENCHMARK_FIXES = { 'disappointment': (-45, 10, -25, 10, -25), 'disappointments': (-40, 10, -20, 10, -20), 'forgot': (-25, 8, -15, 8, -10), 'forget': (-15, 5, -10, 5, -8), 'forgetting': (-15, 5, -10, 5, -8), 'finished': (15, 5, 15, 0, 5), # achievement -- completed something 'started': (5, 10, 5, 5, 3), # beginning -- mild positive energy 'called': (-5, 5, 5, 0, 0), # near-neutral -- "called me" = labeled 'invisible': (-35, -10, -30, 5, -15), # social erasure 'burden': (-45, 10, -35, 10, -20), # self as weight on others 'replaced': (-40, 15, -30, 10, -20), # substituted out 'trapped': (-40, 20, -40, 20, -15), # no agency 'stuck': (-25, 10, -25, 10, -10), # mild trapped 'empty': (-30, -15, -20, 5, -15), # hollow 'numb': (-25, -20, -15, 0, -10), # disconnected 'exhausted': (-30, -15, -25, 10, -15), # depleted 'drained': (-25, -15, -20, 5, -10), # emptied out 'overwhelmed': (-35, 30, -30, 20, -15), # too much input 'suffocating': (-45, 35, -40, 25, -20), # can't breathe metaphor # ── Common reducers/modifiers found by SST-2 gap analysis ── 'little': (-15, -5, -10, 0, -5), # reducer -- "little to love" = almost none 'despite': (-10, 5, 5, 0, -3), # concession -- upcoming contradiction 'only': (-10, -5, -5, 0, -3), # minimizer -- "only manages" = barely 'almost': (-8, 0, -5, 0, -3), # fell short -- "almost good" = not good 'seems': (-5, 0, -5, 0, -3), # uncertainty -- not confirmed 'lacks': (-30, 5, -15, 5, -10), # absence of quality 'lacking': (-25, 5, -12, 5, -8), 'obvious': (-15, 5, 5, 0, -5), # dismissive -- "obvious plot" 'predictable': (-20, -5, 5, 0, -5), 'flat': (-20, -10, -10, 0, -5), 'dull': (-25, -15, -10, 0, -8), 'generic': (-15, -5, -5, 0, -5), 'bland': (-20, -10, -10, 0, -5), 'mediocre': (-25, -5, -10, 0, -8), 'forgettable': (-20, -5, -10, 0, -5), 'pointless': (-30, 5, -15, 5, -10), 'mess': (-30, 10, -15, 10, -10), 'waste': (-35, 10, -20, 10, -10), 'wasted': (-30, 10, -15, 10, -8), 'filth': (-50, 15, -25, 10, -15), 'garbage': (-40, 10, -20, 10, -12), 'trash': (-35, 10, -15, 10, -10), 'awful': (-50, 15, -25, 10, -15), 'horrible': (-50, 15, -25, 10, -15), 'terrible': (-50, 15, -25, 10, -15), 'worst': (-55, 15, -30, 10, -18), 'pathetic': (-45, 10, -20, 10, -12), 'absurd': (-25, 10, -10, 5, -8), 'ridiculous': (-30, 10, -10, 5, -10), 'foolish': (-25, 10, -10, 5, -8), 'shallow': (-25, -5, -10, 0, -8), 'lazy': (-25, -10, -15, 0, -8), 'pretentious': (-30, 5, 10, 0, -10), 'overrated': (-25, 5, -10, 5, -8), 'disappointing':(-35, 10, -20, 10, -12), 'uninspired': (-25, -10, -15, 0, -8), 'unfunny': (-25, 5, -10, 5, -8), 'tiresome': (-25, -10, -15, 5, -8), 'clunky': (-20, 5, -10, 0, -5), 'cliche': (-20, 0, -10, 0, -5), # Positive review words 'brilliant': (+55, 15, 20, 0, 12), 'masterpiece': (+60, 15, 25, 0, 15), 'stunning': (+50, 20, 15, 0, 12), 'superb': (+55, 15, 20, 0, 12), 'flawless': (+50, 10, 20, 0, 12), 'captivating': (+45, 15, 15, 0, 10), 'riveting': (+45, 20, 15, 0, 10), 'heartwarming': (+50, 15, 15, 0, 15), 'touching': (+35, 10, 10, 0, 10), 'compelling': (+40, 15, 15, 0, 10), 'gripping': (+40, 20, 15, 0, 10), 'beautifully': (+45, 10, 15, 0, 10), 'finest': (+50, 10, 20, 0, 12), 'thrilling': (+45, 20, 15, 0, 10), 'remarkable': (+45, 10, 15, 0, 10), 'refreshing': (+35, 10, 10, 0, 8), 'entertaining': (+35, 15, 10, 0, 8), 'enjoyable': (+35, 10, 10, 0, 8), 'delightful': (+45, 15, 15, 0, 10), 'witty': (+35, 10, 15, 0, 8), 'clever': (+30, 10, 15, 0, 8), 'engaging': (+35, 15, 10, 0, 8), 'powerful': (+40, 15, 20, 0, 10), 'impressive': (+40, 10, 15, 0, 10), 'cooked': (-30, 15, -20, 10, -10), # slang -- destroyed/ruined 'shade': (-20, 10, 15, 5, -5), # slang -- indirect disrespect 'ratio': (-25, 15, -15, 10, -10), # slang -- publicly outperformed/rejected 'stopped': (-5, 5, -5, 5, -3), # NEGATOR role does the flip. Minimal own force. 'broken': (-30, 10, -25, 10, -15), # damaged state 'ruined': (-50, 20, -30, 15, -20), # destruction (override if exists) 'failed': (-35, 15, -25, 15, -15), # failure 'failing': (-30, 15, -20, 15, -12), 'losing': (-25, 15, -20, 10, -10), 'lost': (-30, 10, -25, 10, -15), 'missing': (-20, 10, -15, 10, -10), # absence 'working': (10, 5, 10, 0, 3), # mild positive -- functioning } EMOTIONAL_VOCABULARY.update(_BENCHMARK_FIXES) # ── RoBERTa-mined emotional words (63 words) ── # Extracted by scoring frequent missing words through RoBERTa. # Filtered: removed structural words, bias (gay/police from twitter data), # and words already handled by other roles (fucking=AMPLIFIER, just=FILLER). _ROBERTA_MINED = { 'bloody': (-54, +27, -27, +0, -14), 'destruction': (-53, +26, -27, +0, -14), 'hated': (-53, +26, -27, +0, -14), 'terrorist': (-52, +26, -26, +0, -13), 'mean': (-40, +20, -20, +0, -10), # reduced -- "mean" is also average/intend 'bombing': (-51, +25, -26, +0, -13), 'terminal': (-50, +25, -25, +0, -13), 'criminal': (-50, +25, -25, +0, -13), 'terrorists': (-50, +25, -25, +0, -13), 'concerning': (-48, +24, -24, +0, -12), 'killed': (-47, +23, -24, +0, -12), 'forced': (-47, +23, -24, +0, -12), 'scandal': (-46, +23, -23, +0, -12), 'violation': (-45, +22, -23, +0, -12), 'problems': (-44, +22, -22, +0, -11), 'divided': (-44, +22, -22, +0, -11), 'lies': (-41, +20, -21, +0, -11), 'struggling': (-40, +20, -20, +0, -10), 'deaths': (-37, +18, -19, +0, -10), 'knife': (-36, +18, -18, +0, -9), 'buried': (-36, +18, -18, +0, -9), 'judgment': (-36, +18, -18, +0, -9), 'important': (+36, +9, +12, +0, +7), 'interest': (+20, +5, +10, +0, +5), # reduced -- context-dep 'skills': (+36, +9, +12, +0, +7), 'music': (+38, +9, +12, +0, +7), 'unique': (+38, +9, +12, +0, +7), 'vital': (+39, +9, +13, +0, +7), 'stronger': (+39, +9, +13, +0, +7), 'strong': (+41, +10, +13, +0, +8), 'smiling': (+42, +10, +14, +0, +8), 'benefits': (+43, +10, +14, +0, +8), 'loves': (+46, +11, +15, +0, +9), 'helps': (+47, +11, +15, +0, +9), 'smooth': (+47, +11, +15, +0, +9), 'historic': (+47, +11, +15, +0, +9), 'adore': (+48, +12, +16, +0, +9), 'potential': (+30, +8, +10, +0, +6), # reduced -- context-dep 'clean': (+49, +12, +16, +0, +9), 'greater': (+30, +8, +10, +0, +6), # reduced -- comparative 'fascinating': (+51, +12, +17, +0, +10), 'victory': (+53, +13, +17, +0, +10), 'enjoyed': (+54, +13, +18, +0, +10), 'magic': (+54, +13, +18, +0, +10), 'gold': (+30, +8, +10, +0, +6), # reduced -- physical object 'ideal': (+56, +14, +18, +0, +11), 'outstanding': (+57, +14, +19, +0, +11), } EMOTIONAL_VOCABULARY.update(_ROBERTA_MINED) # ── Common modifiers + slang found by corpus mining ── _CORPUS_MINED = { 'happened': (-10, 10, -5, 10, 5), # event occurred -- slight unease, urgency 'happening': (-8, 10, -5, 10, 5), 'again': (-10, 5, -8, 5, -5), # repetition -- wearing down 'anymore': (-15, 5, -10, 5, -5), # loss of state (override if exists) 'wait': (-5, 5, -5, 10, 0), # patience/urgency 'waiting': (-8, 5, -8, 10, -3), 'down': (-15, 5, -10, 5, -5), # negative direction 'kids': (0, 5, 0, 0, 45), # relationship -- high G like child 'kid': (0, 5, 0, 0, 45), 'guy': (0, 0, 0, 0, 5), # neutral person reference 'girl': (0, 0, 0, 0, 5), 'man': (0, 5, 5, 0, 5), # neutral/mild empathy filler 'must': (-5, 5, 5, 5, 0), # inference/obligation 'sounds': (0, 0, 0, 0, 0), # hedging -- passes through 'first': (5, 5, 5, 5, 5), # milestone marker 'once': (-5, 0, -3, 0, -3), # past -- something ended 'another': (-5, 5, -3, 5, -3), # repetition 'anything': (-5, 5, -5, 5, 0), # open/desperate depending on context 'ago': (-3, 0, -3, 0, -3), # past temporal 'yesterday': (0, 0, 0, 10, 0), # time marker -- urgency only 'rough': (-25, 10, -15, 5, -8), # difficulty/hardship 'tough': (-20, 10, -10, 5, -5), 'harsh': (-30, 15, -15, 5, -10), 'brutal': (-40, 20, -20, 10, -12), 'insane': (-20, 25, -10, 10, -5), # slang -- extreme, often negative 'nuts': (-15, 20, -5, 5, -3), 'wild': (-5, 20, 5, 5, 0), # intense, context-dependent 'crazy': (-15, 15, -5, 10, -5), # override if exists -- slang varies 'messed': (-25, 10, -15, 10, -8), 'screwed': (-30, 15, -20, 10, -10), 'ruined': (-45, 15, -25, 10, -15), # override if exists 'wrecked': (-40, 15, -20, 10, -12), 'done': (-10, -5, -10, 5, -5), # finality -- "im done" 'over': (-10, -5, -5, 5, -5), # ending 'gone': (-20, 5, -15, 5, -10), # absence 'lost': (-30, 10, -25, 10, -15), # override 'left': (-8, 5, -5, 5, -3), # override -- near neutral, VICTIMIZATION resolves 'wrong': (-25, 10, -15, 10, -8), 'fault': (-25, 10, -15, 5, -10), # override if exists 'blame': (-30, 15, 15, 10, -10), # override 'worth': (10, 5, 10, 0, 10), # value 'worthy': (15, 5, 15, 0, 10), 'deserve': (5, 5, 5, 5, 10), # context-dep -- "i deserve better" vs "you deserve this" 'deserved': (5, 5, 5, 5, 10), 'matters': (5, 5, 5, 5, 15), # gravity -- this matters 'counts': (5, 5, 5, 0, 10), 'enough': (-15, 10, -5, 5, -8), # "not enough" = lacking. override. } EMOTIONAL_VOCABULARY.update(_CORPUS_MINED) # ── Novel sentence gap fills (round 2) ── _NOVEL_GAPS_2 = { 'laughed': (-5, 20, 5, 0, 5), # liquid -- laughed at vs laughed with 'grave': (-20, -10, -15, 0, 30), # death-related, high G 'singled': (-15, 10, -10, 5, -5), # isolated/targeted 'suspended': (-25, 15, -20, 10, -10), # punished/removed 'defending': (10, 15, 15, 10, 5), # standing up for 'garnished': (-20, 5, -20, 10, -10), # wages taken 'wages': (0, 0, 0, 0, 20), # money -- object with G 'fainted': (-25, 20, -30, 20, -10), # medical event 'chose': (-5, 5, 5, 5, 5), # decision -- near neutral 'danced': (25, 15, 10, 0, 10), # joyful movement 'normal': (10, -5, 10, 0, 5), # stability/relief 'benign': (25, -10, 15, 0, 15), # medical relief 'sunset': (15, -5, 5, 0, 8), # peaceful/romantic 'mile': (10, 10, 10, 0, 5), # achievement context 'breathe': (-10, 10, -10, 5, -5), # liquid -- cant breathe vs finally breathe 'texts': (-5, 5, -5, 5, 10), # high G (communication) 'subtweeted': (-20, 10, 10, 5, -8), # indirect attack 'screenshotted':(-15, 10, -5, 5, -5), # privacy violation 'watching': (-3, 5, 5, 5, 0), # near neutral -- context determines 'reaching': (5, 5, 5, 5, 5), # effort 'stopping': (-5, 5, -5, 5, 0), # cessation 'asking': (0, 5, -5, 5, 0), # neutral request # Fix overwieghted words 'stories': (5, 5, 5, 0, 5), # was +37, too positive for neutral noun 'space': (0, -5, 0, 0, 0), # was +31, "needs space" = distance 'shared': (5, 5, 5, 0, 5), # was +35, context-dep 'credit': (5, 5, 10, 0, 5), # was +28, too positive 'order': (0, 0, 5, 0, 0), # was +28, too positive for neutral noun } EMOTIONAL_VOCABULARY.update(_NOVEL_GAPS_2) # ── Novel sentence gap fills (round 3) ── _NOVEL_GAPS_3 = { 'texting': (-5, 5, 0, 5, 10), # communication -- context determines 'her': (0, 0, 0, 0, 0), # pronoun -- neutral 'feelings': (10, 10, -5, 5, 20), # emotional state -- high G 'were': (0, 0, 0, 0, 0), # verb -- neutral 'treated': (-10, 5, -10, 5, -5), # "treated like" = objectified 'listened': (10, 5, 5, 5, 5), # attention given 'should': (-8, 5, -5, 5, -3), # obligation/regret 'have': (0, 0, 0, 0, 0), # auxiliary -- neutral 'been': (0, 0, 0, 0, 0), 'there': (0, 0, 0, 0, 0), 'things': (0, 0, 0, 0, 5), # objects 'could': (-5, 0, -5, 0, -3), # hypothetical -- missed opportunity 'year': (0, 0, 0, 5, 5), # time marker 'years': (0, 0, 0, 5, 5), 'situation': (-5, 5, -5, 5, 5), # context -- usually negative context 'hand': (5, 0, 5, 0, 10), # connection -- high G (touch) 'how': (0, 0, 0, 0, 0), # question word 'coffee': (5, 5, 0, 0, 3), # comfort object 'curled': (10, -5, 5, 0, 5), # warmth/comfort 'next': (0, 0, 0, 0, 0), 'when': (0, 0, 0, 0, 0), 'everyone': (0, 5, 0, 5, 10), # scope amplifier -- high G 'saw': (-5, 5, -5, 5, 0), # witnessed -- slight negative lean 'breakdown': (-45, 30, -30, 20, -15), # emotional collapse 'myself': (5, 5, 10, 0, 15), # self-empowerment or self-reference 'learned': (15, 5, 15, 0, 8), # growth/achievement 'their': (0, 0, 0, 0, 0), 'approval': (10, 5, -10, 5, 15), # seeking validation -- high G 'underwater': (-30, 15, -25, 10, -10), # drowning metaphor 'think': (0, 5, 5, 0, 0), 'straight': (5, 0, 5, 0, 0), 'bittersweet': (-10, 5, -5, 0, 10), # mixed -- lean negative 'necessary': (5, 5, 10, 5, 5), # needed -- slight positive 'let': (-5, 0, -5, 0, 0), # release/permission 'them': (0, 0, 0, 0, 0), 'own': (5, 0, 10, 0, 5), # ownership/agency 'fumbled': (-25, 10, -15, 10, -8), # slang -- dropped the ball 'bag': (0, 0, 0, 0, 5), # slang object 'caught': (-10, 15, -5, 10, 0), # surprise/trap 'aired': (-20, 10, -10, 10, -8), # exposed/put on blast 'out': (-5, 5, -3, 0, 0), # direction/exposure 'purpose': (-10, 10, 10, 5, -5), # "on purpose" = intentional harm 'she': (0, 0, 0, 0, 0), # pronoun 'they': (0, 0, 0, 0, 0), 'bro': (-3, 5, 5, 0, 5), # casual address 'cant': (-10, 5, -10, 5, -5), # inability -- override negator force } EMOTIONAL_VOCABULARY.update(_NOVEL_GAPS_3) # ── Novel sentence gap fills (round 4) ── _NOVEL_GAPS_4 = { 'intrusive': (-35, 20, -20, 15, -10), # unwanted -- intrusive thoughts 'disconnected': (-25, -10, -20, 5, -10), # isolation 'autopilot': (-15, -15, -10, 0, -5), # disengaged from life 'people': (0, 0, 0, 0, 5), # neutral collective 'attacks': (-40, 30, -25, 20, -12), # assault -- panic attacks 'frequent': (0, 0, 0, 0, 0), # neutral modifier 'reached': (10, 5, 10, 5, 5), # effort -- reaching out 'check': (0, 5, 5, 0, 0), 'media': (0, 5, 0, 5, 5), 'said': (0, 5, 5, 0, 0), 'didnt': (-10, 5, -5, 5, -3), # negation -- same as dont 'doing': (0, 5, 5, 0, 0), 'would': (-3, 0, -3, 0, 0), # hypothetical 'having': (0, 0, 0, 0, 0), 'safe': (20, -10, 20, 0, 15), # security -- important G 'trusting': (10, 5, -5, 0, 15), # vulnerability 'trouble': (-20, 10, -15, 10, -8), 'flashbacks': (-40, 30, -25, 20, -12), 'wya': (-5, 5, 0, 5, 0), # where you at -- checking 'ong': (10, 10, 10, 0, 5), # on god -- emphasis/genuine 'thats': (0, 0, 0, 0, 0), } EMOTIONAL_VOCABULARY.update(_NOVEL_GAPS_4) # ── Novel sentence gap fills (round 5) ── _NOVEL_GAPS_5 = { 'erased': (-30, 10, -25, 10, -12), # deleted from existence 'photo': (0, 0, 0, 0, 10), # object -- high G (memories) 'question': (-10, 10, -5, 5, -3), # doubt/challenge 'sanity': (5, 5, 5, 0, 20), # mental health -- high G 'twisted': (-30, 15, -15, 10, -10), # manipulated/distorted 'words': (0, 5, 0, 0, 5), # neutral carrier 'until': (0, 0, 0, 0, 0), # temporal connector 'stayed': (10, -5, 10, 0, 10), # presence/commitment 'went': (0, 5, 0, 5, 0), # movement -- neutral 'time': (0, 0, 0, 5, 5), # temporal -- neutral with G 'since': (0, 0, 0, 0, 0), # temporal connector 'none': (-15, -5, -10, 0, -5), # absence/zero 'audacity': (-25, 20, 15, 10, -8), # offense/disbelief 'youre': (0, 0, 0, 0, 0), # contraction -- neutral 'here': (0, 0, 0, 0, 0), # location -- neutral 'thing': (0, 0, 0, 0, 0), # object -- neutral 'wouldnt': (-5, 0, -5, 0, 0), # hypothetical negation 'exhaust': (-25, -10, -20, 5, -8), 'exhausting': (-25, -10, -20, 5, -8), 'avoid': (-10, 5, -10, 5, -5), # avoidance behavior 'conflict': (-25, 15, -10, 10, -8), 'hollow': (-20, -5, -15, 0, -8), # empty/insincere 'pretend': (-15, 5, -10, 5, -5), # masking 'pretending': (-15, 5, -10, 5, -5), 'scream': (-30, 40, -15, 20, -10), 'punch': (-35, 40, 20, 20, -10), 'dare': (-15, 20, 20, 10, -5), 'invited': (15, 10, 5, 0, 10), # included/welcomed 'photo': (0, 0, 0, 0, 10), 'mowed': (10, 5, 5, 0, 5), # act of service 'groceries': (0, 0, 0, 0, 5), 'procedure': (-10, 10, -10, 15, 10), # medical -- high G 'nurse': (10, 5, 10, 0, 15), # caretaker 'flowers': (20, 5, 10, 0, 10), 'doorstep': (0, 0, 0, 0, 5), 'apartment': (0, 0, 0, 0, 15), # home -- high G 'thanksgiving': (10, 5, 5, 0, 15), # holiday gathering 'date': (10, 15, 5, 5, 10), # romantic context 'smiled': (25, 10, 10, 0, 8), 'meant': (5, 5, 5, 5, 5), } EMOTIONAL_VOCABULARY.update(_NOVEL_GAPS_5) # ── Novel sentence gap fills (round 6) ── _NOVEL_GAPS_6 = { 'corrects': (-15, 10, 15, 5, -5), # correction = power dynamic 'keeps': (0, 0, 5, 0, 0), 'weaponize': (-40, 15, 15, 10, -12), # using something AS a weapon 'weaponized': (-40, 15, 15, 10, -12), 'insecurities': (-30, 10, -25, 5, -12), 'insecurity': (-25, 10, -20, 5, -10), 'reads': (5, -5, 5, 0, 5), # near-neutral -- reading to someone vs reading texts 'being': (0, 0, 0, 0, 0), 'asked': (0, 5, -5, 5, 0), 'judges': (-20, 10, 15, 5, -8), # judgment 'judging': (-20, 10, 15, 5, -8), 'sees': (5, 5, 5, 0, 5), # recognition -- mild positive 'else': (0, 0, 0, 0, 0), 'does': (0, 0, 0, 0, 0), 'voice': (5, 5, 5, 0, 10), # expression -- high G 'doesnt': (-10, 5, -5, 5, -3), # negation 'matter': (5, 0, 5, 0, 10), # importance -- G 'shrink': (-15, -5, -20, 0, -5), # making self smaller 'shrinking': (-15, -5, -20, 0, -5), 'expect': (-10, 5, 10, 5, -3), # obligation/pressure 'expects': (-10, 5, 10, 5, -3), 'eggshells': (-25, 15, -20, 10, -10), # walking on eggshells = anxiety 'score': (-5, 5, 10, 0, 0), # keeping score = resentment context 'arguments': (-25, 15, -10, 10, -8), 'ghost': (-20, -10, -15, 0, -8), # invisible/ignored 'disappearing': (-25, 5, -20, 5, -10), 'perform': (-10, 5, -5, 5, -3), # performing = masking 'comfortable': (15, -10, 10, 0, 8), 'accept': (15, 5, 10, 0, 10), 'accepts': (15, 5, 10, 0, 10), 'fight': (-20, 25, 15, 15, -5), # conflict -- but "fight for me" = positive 'excited': (40, 25, 15, 5, 10), 'excitement': (35, 25, 10, 5, 8), 'bike': (5, 10, 5, 0, 5), 'ring': (5, 5, 5, 0, 15), # high G -- engagement ring 'laugh': (15, 15, 10, 0, 8), # override -- was +28 } EMOTIONAL_VOCABULARY.update(_NOVEL_GAPS_6) # ── Novel sentence gap fills (round 7) ── _NOVEL_GAPS_7 = { 'shouldnt': (-10, 5, -5, 5, -3), # regret/prohibition 'staring': (-5, 5, -5, 0, 0), # fixation 'ceiling': (0, -5, 0, 0, 0), # physical -- neutral 'version': (0, 0, 0, 0, 0), # neutral concept 'cycle': (-5, 5, -5, 5, 10), # pattern -- high G (cycles of behavior) 'through': (0, 5, 5, 0, 0), # movement/endurance 'gave': (5, 5, 5, 0, 5), # giving -- mild positive (override old) 'built': (15, 10, 15, 0, 8), # construction/achievement 'real': (5, 5, 5, 0, 5), 'hair': (0, 0, 0, 0, 5), 'harmed': (-40, 15, -25, 15, -12), # self-harm 'harm': (-35, 15, -20, 15, -10), 'days': (0, 0, 0, 5, 0), # temporal 'isnt': (-8, 5, -5, 5, -3), # negation 'working': (8, 5, 8, 0, 3), # functioning -- override 'sober': (15, -5, 20, 0, 20), # recovery milestone -- high G 'sobriety': (15, -5, 20, 0, 20), 'cycle': (-5, 5, -5, 5, 10), 'replaying': (-15, 10, -10, 5, -5), # stuck in loop 'brain': (0, 5, 0, 0, 10), # high G -- mental state 'asleep': (5, -15, 5, 0, 0), # rest state 'ceiling': (0, -5, 0, 0, 0), 'honest': (15, 5, 10, 0, 10), # integrity 'honestly': (5, 5, 5, 0, 5), # override old V=+50 'belong': (10, 5, 5, 0, 15), # inclusion -- high G 'talented': (30, 10, 15, 0, 10), 'meals': (5, 0, 5, 0, 5), 'answered': (5, 5, 5, 0, 5), 'phone': (0, 5, 0, 5, 15), # override -- high G communication 'deserve': (5, 5, 5, 5, 10), # override } EMOTIONAL_VOCABULARY.update(_NOVEL_GAPS_7) # ── Novel sentence gap fills (round 8) ── _NOVEL_GAPS_8 = { 'ideas': (10, 10, 10, 0, 10), # creative output -- G matters 'replacement': (-20, 10, -20, 10, -10), # being replaced 'knows': (5, 0, 10, 0, 5), # awareness/understanding 'bearable': (10, -5, 5, 0, 5), # making it through 'skipped': (-10, 5, -10, 5, -5), # missed/avoided 'water': (3, 0, 0, 0, 3), # basic need -- tiny positive 'walk': (8, 5, 8, 0, 5), # movement/exercise 'around': (0, 0, 0, 0, 0), 'blinds': (0, 0, 0, 0, 0), 'opened': (5, 5, 5, 0, 3), # opening = progress 'block': (0, 5, 0, 0, 0), 'drank': (3, 0, 0, 0, 0), 'bed': (0, -5, 0, 0, 5), # rest context 'brushed': (3, 0, 3, 0, 0), # self-care 'teeth': (0, 0, 0, 0, 0), 'morning': (5, 5, 5, 5, 3), # new day -- mild positive 'recital': (10, 10, 5, 5, 15), # performance -- high G (child's event) 'promote': (10, 5, 10, 0, 8), 'promoted': (15, 10, 15, 0, 10), # achievement 'blame': (-30, 15, 15, 10, -10), # override 'trained': (10, 5, 10, 0, 5), 'silence': (-10, -15, -5, 0, 5), # absence of sound -- slight negative 'sentences': (0, 0, 0, 0, 0), 'bill': (-15, 5, -10, 10, 10), # financial stress -- G from importance 'bills': (-15, 5, -10, 10, 10), 'paycheck': (5, 5, 5, 5, 15), # income -- high G 'homeless': (-50, 15, -40, 15, 35), # severe -- high G 'shut': (-15, 10, -10, 10, -5), 'promised': (-5, 5, -5, 5, 10), # commitment -- high G, context-dep 'different': (0, 5, 0, 5, 0), 'scares': (-25, 20, -15, 10, -8), 'scared': (-30, 25, -20, 15, -10), # override -- was too extreme 'traumatizing': (-40, 20, -25, 15, -15), 'traumatized': (-45, 15, -30, 10, -18), 'yelled': (-30, 25, 15, 15, -10), } EMOTIONAL_VOCABULARY.update(_NOVEL_GAPS_8) # ── Permanent suite gap fills ── _PERM_GAPS = { 'odds': (-10, 10, -5, 5, 5), # adversity context 'turned': (-15, 10, -10, 10, -5), # reversal -- "turned on me" 'slightly': (-3, 0, 0, 0, 0), 'dogs': (5, 5, 0, 0, 30), # pet -- high G 'playing': (10, 10, 5, 0, 5), # recreation 'video': (0, 5, 0, 0, 0), 'messages': (0, 5, 0, 5, 10), # communication -- G 'between': (0, 0, 0, 0, 0), 'food': (5, 0, 5, 5, 10), # basic need -- G 'found': (-5, 10, 5, 10, 0), # discovery -- slight neg lean (found out = bad news often) 'something': (-3, 5, -3, 5, 0), # vague -- slight unease 'scan': (-10, 10, -10, 15, 10), # medical test -- G + urgency 'kitchen': (5, 0, 5, 0, 5), # domestic warmth 'visited': (5, 5, 5, 5, 5), # went to see 'chat': (5, 5, 5, 0, 5), # communication 'choose': (-5, 10, 5, 10, 5), # forced choice = stress 'speaking': (0, 5, 5, 0, 0), 'generally': (0, 0, 0, 0, 0), } EMOTIONAL_VOCABULARY.update(_PERM_GAPS) # ── Novel sentence gap fills (round 9) ── _NOVEL_GAPS_9 = { 'theyd': (0, 0, 0, 0, 0), # contraction -- they would 'someone': (0, 0, 0, 0, 5), # person reference -- already OTHER_REF 'conversation': (0, 5, 0, 0, 5), 'dissociating': (-30, -15, -25, 10, -12), # mental health -- disconnection 'dissociate': (-25, -15, -20, 10, -10), 'mirror': (-5, 5, -5, 0, 10), # self-reflection -- high G 'guilty': (-35, 10, -20, 10, -12), 'meal': (5, 0, 5, 0, 5), # basic need 'rings': (0, 5, 0, 5, 5), 'apartment': (0, 0, 0, 0, 10), # override with G 'quiet': (-5, -15, -5, 0, 0), # absence of sound 'holidays': (5, 5, 0, 5, 15), # high G event 'stranger': (0, 5, 0, 0, 3), 'leaves': (0, 0, 0, 0, 0), # nature -- neutral 'color': (5, 5, 5, 0, 3), 'song': (10, 5, 5, 0, 8), 'reminded': (5, 5, 0, 5, 5), 'sun': (10, 5, 5, 0, 5), 'window': (0, 0, 0, 0, 0), 'perfect': (40, 10, 15, 0, 10), 'smiled': (25, 10, 10, 0, 8), # override -- confirm 'lucky': (10, 5, -5, 0, 5), # reduced -- "youre lucky" is often condescending 'bother': (-15, 5, -15, 5, -5), # burden 'clothes': (0, 0, 0, 0, 5), } EMOTIONAL_VOCABULARY.update(_NOVEL_GAPS_9) # ── Final vocab gaps from permanent suite ── _FINAL_GAPS = { 'got': (5, 5, 5, 5, 0), # acquisition -- mild positive ("got the job") 'off': (-5, 5, -3, 0, 0), # removal/separation -- slight negative 'ran': (5, 15, 10, 5, 0), # movement/effort 'day': (0, 0, 0, 5, 3), # time marker -- near neutral 'night': (-5, -5, -3, 0, 3), # darkness -- slight negative lean 'today': (0, 5, 0, 10, 0), # immediacy -- urgency only (override) 'room': (0, 0, 0, 0, 3), 'house': (0, 0, 0, 0, 15), # G override 'door': (0, 0, 0, 0, 5), 'car': (0, 0, 0, 0, 20), # G override 'name': (0, 0, 0, 0, 10), # identity -- high G 'face': (0, 5, 0, 0, 8), 'eyes': (0, 5, 0, 0, 5), 'heart': (5, 5, 0, 5, 20), # emotional core -- high G 'head': (0, 5, 0, 0, 8), 'body': (0, 5, 0, 0, 15), # physical self -- high G 'mind': (0, 5, 0, 0, 15), # mental self -- high G (override) 'world': (0, 5, 0, 0, 10), # scope 'person': (0, 0, 0, 0, 10), 'reason': (0, 5, 5, 5, 5), 'truth': (10, 5, 10, 5, 10), 'lie': (-30, 10, -15, 10, -10), 'real': (5, 5, 5, 0, 5), # authenticity (override confirm) 'fake': (-25, 10, -10, 5, -8), 'true': (10, 5, 10, 0, 8), 'wrong': (-25, 10, -15, 10, -8), # override confirm 'right': (5, 5, 10, 0, 5), # correctness -- mild pos } EMOTIONAL_VOCABULARY.update(_FINAL_GAPS) # ── Round 10 gaps ── _R10 = { 'whisper': (-10, -10, -10, 5, -5), # secrecy/exclusion 'whispered': (-10, -10, -10, 5, -5), 'rolled': (-10, 10, 5, 0, -3), # "rolled eyes" = dismissal 'carried': (15, 10, 15, 0, 10), # bearing weight for someone 'carry': (5, 10, 10, 5, 5), 'clapped': (20, 15, 10, 0, 8), # applause 'writes': (5, 0, 5, 0, 5), 'wrote': (5, 0, 5, 0, 5), 'letters': (5, 0, 0, 0, 10), # high G -- personal correspondence 'piece': (0, 0, 0, 0, 0), 'biggest': (5, 5, 5, 0, 3), 'performance': (10, 10, 10, 5, 10), # achievement context 'holding': (5, 5, 5, 0, 8), # connection 'hands': (5, 5, 5, 0, 8), # connection 'drew': (10, 5, 10, 0, 8), # created 'picture': (5, 0, 0, 0, 10), # memory -- high G 'flinched': (-25, 20, -25, 15, -10), # fear response 'flinch': (-20, 20, -20, 10, -8), 'raised': (-5, 15, 15, 10, 0), # "raised voice" = aggression context 'restaurant': (5, 5, 0, 0, 5), 'mistake': (-20, 10, -15, 5, -8), 'mistakes': (-20, 10, -15, 5, -8), 'perfection': (-5, 5, 5, 5, 5), # unrealistic standard 'lighter': (10, -5, 5, 0, 5), # relief } EMOTIONAL_VOCABULARY.update(_R10) # ── Round 11: love languages + control/abuse ── _R11 = { 'interrupt': (-15, 10, 15, 5, -5), 'interrupts': (-15, 10, 15, 5, -5), 'jacket': (5, 0, 0, 0, 5), 'framed': (10, 5, 10, 0, 8), # preserved/displayed 'ever': (-5, 5, -3, 0, -3), 'monitors': (-20, 10, 20, 10, -8), # surveillance = control 'location': (0, 0, 0, 5, 5), 'isolate': (-35, 10, 20, 10, -12), # cutting off from support 'isolated': (-30, -5, -25, 5, -10), 'controls': (-25, 10, 25, 10, -8), # domination 'controlling': (-25, 10, 25, 10, -8), 'wear': (0, 0, 0, 0, 0), 'tabs': (-10, 5, 15, 5, -3), # keeping tabs = surveillance 'spending': (-5, 5, -5, 5, 5), 'tells': (-3, 5, 10, 5, 0), 'needy': (-20, 10, -20, 5, -8), # insult / invalidation 'clingy': (-20, 10, -15, 5, -8), 'bombs': (-15, 15, 10, 10, -5), # love bombing 'punishes': (-30, 15, 25, 10, -10), 'punished': (-30, 15, -20, 10, -10), 'threatens': (-30, 20, 20, 20, -10), 'guilts': (-20, 10, 15, 10, -8), 'guilt': (-30, 10, -20, 10, -12), 'memorized': (15, 5, 10, 0, 10), # attention/care 'schedule': (0, 5, 5, 5, 5), 'surprise': (15, 20, 5, 5, 8), 'soup': (5, 0, 0, 0, 5), # comfort 'songs': (10, 5, 5, 0, 8), 'wifi': (0, 0, 0, 0, 0), 'joke': (5, 10, 5, 0, 3), # reduced from old V=+20 'drawing': (10, 5, 10, 0, 8), 'introduced': (10, 10, 10, 0, 8), } EMOTIONAL_VOCABULARY.update(_R11) # ── Round 12: relationship dynamics ── _R12 = { 'remembers': (15, 5, 10, 0, 10), # attention/care 'weve': (0, 0, 0, 0, 0), # contraction 'validate': (20, 5, 10, 0, 10), # affirming someone's experience 'validates': (20, 5, 10, 0, 10), 'dismissing': (-25, 10, 15, 5, -8), # invalidation 'dismisses': (-25, 10, 15, 5, -8), 'advocates': (20, 10, 15, 5, 10), # fighting for someone 'closed': (-5, -5, -5, 0, 0), 'doors': (0, 0, 0, 0, 0), 'thin': (-5, 5, -5, 0, -3), 'ice': (-10, 5, -5, 5, -3), # "thin ice" = precarious 'drains': (-25, -10, -15, 5, -8), # energy vampire 'drained': (-25, -15, -20, 5, -10), 'lights': (10, 10, 5, 0, 5), 'granted': (-15, -5, -10, 0, -5), # "taken for granted" 'celebrates': (25, 15, 10, 0, 10), 'allergies': (0, 0, 0, 0, 10), # personal detail = G 'defended': (15, 10, 15, 5, 10), # stood up for 'future': (5, 5, 5, 5, 10), # forward-looking (override neutral) 'convenient': (-5, 0, 5, 0, -3), # "when convenient" = selfish 'ego': (-10, 5, 15, 0, -3), 'constantly': (-10, 10, -5, 5, -3), # override 'amplifies': (-10, 10, 10, 5, -3), # making bigger (negative context usually) 'minimizes': (-20, 5, 15, 5, -8), # shrinking experience 'worst': (-40, 10, -25, 10, -12), # override 'rock': (15, -5, 20, 0, 15), # "my rock" = stability 'walking': (0, 5, 0, 5, 0), 'energy': (5, 10, 5, 0, 5), 'room': (0, 0, 0, 0, 3), # override } EMOTIONAL_VOCABULARY.update(_R12) # ── Round 13 + GPT-recommended vocabulary expansion ── _R13_GPT = { # Round 13 gaps 'shows': (0, 5, 5, 0, 0), 'affection': (25, 10, 5, 0, 15), 'twists': (-20, 10, 10, 5, -5), 'weapons': (-30, 20, 15, 10, -10), 'withdrawing': (-20, -5, -15, 5, -8), 'drove': (0, 10, 5, 5, 0), # movement -- neutral 'town': (0, 0, 0, 0, 0), 'bring': (5, 5, 5, 0, 3), 'brings': (5, 5, 5, 0, 3), 'notes': (5, 0, 5, 0, 5), 'makes': (0, 5, 5, 0, 0), 'fundraiser': (15, 10, 10, 5, 10), 'medical': (-5, 5, -5, 10, 10), 'sunday': (5, -5, 0, 0, 5), 'umbrella': (0, 0, 0, 0, 0), 'wakes': (5, 10, 5, 5, 3), 'organized': (10, 5, 10, 5, 5), 'recipe': (10, 5, 5, 0, 8), 'grandmother': (0, 0, 0, 0, 40), # relationship -- high G 'greeted': (10, 10, 5, 0, 5), 'dimmed': (-15, -5, -15, 0, -5), 'rewrite': (-10, 5, 10, 5, -5), # GPT bucket 1: passive-aggressive cues 'nice': (10, 0, 5, 0, 3), # reduced -- "must be nice" = PA 'cute': (15, 5, 5, 0, 5), # can be condescending 'please': (5, 0, -5, 5, 3), # plea or politeness # GPT bucket 2: numb/flat distress 'checked': (-5, -5, -5, 0, 0), 'detached': (-20, -15, -15, 0, -8), 'fried': (-25, -10, -20, 5, -8), 'wrecked': (-40, 15, -20, 10, -12), # override 'spent': (-15, -10, -15, 5, -5), # emotionally spent # GPT bucket 3: modern distress 'spiraling': (-35, 25, -25, 15, -12), 'spiral': (-30, 20, -20, 10, -10), 'crashing': (-30, 25, -20, 15, -10), 'unraveling': (-30, 15, -20, 10, -10), 'snapped': (-35, 30, -15, 15, -10), 'doom': (-40, 10, -25, 10, -15), 'burnout': (-30, -15, -25, 10, -12), 'drowning': (-35, 20, -25, 15, -12), # GPT bucket 4: self-worth/erasure 'unwanted': (-35, 10, -25, 10, -15), 'replaceable': (-25, 5, -20, 5, -10), 'unlovable': (-40, 10, -30, 10, -18), 'forgettable': (-25, -5, -20, 5, -10), 'irrelevant': (-25, -5, -20, 5, -10), 'meaningless': (-35, -5, -25, 5, -15), # GPT bucket 5: abuse verbs 'pressured': (-25, 15, -15, 10, -8), 'cornered': (-30, 20, -25, 15, -10), 'coerced': (-35, 15, -25, 10, -12), 'demeaned': (-35, 10, -20, 10, -12), 'belittled': (-30, 10, -20, 10, -10), 'gaslit': (-35, 15, -20, 10, -12), 'gaslighting': (-35, 15, -20, 10, -12), 'manipulated': (-35, 15, -15, 10, -12), # GPT bucket 6: internet crisis 'meh': (-10, -15, -10, 0, -5), 'unalive': (-50, 15, -30, 30, -20), # platform-evasive crisis language } EMOTIONAL_VOCABULARY.update(_R13_GPT) # ── Final GPT audit gaps ── _GPT_FINAL = { 'clearly': (-5, 5, 10, 0, 0), # sarcasm opener already, mild force 'controlled': (-25, 10, -20, 10, -8), 'dismissed': (-25, 10, 15, 5, -8), 'obviously': (-8, 5, 10, 0, -3), # dismissive / condescending } EMOTIONAL_VOCABULARY.update(_GPT_FINAL) # ── Round 14: silent treatment, gossip, performance, empathy drain ── _R14 = { 'silent': (-15, -15, -10, 5, -5), # silence as weapon 'treatment': (-10, 5, -5, 5, -3), # "silent treatment" = punishment 'gossip': (-25, 15, 10, 5, -8), # talking behind back 'gossiping': (-25, 15, 10, 5, -8), 'acts': (-5, 5, 5, 0, 0), # performing/pretending 'lap': (5, -5, 5, 0, 5), # comfort/warmth 'pocket': (0, 0, 0, 0, 0), 'performing': (-10, 10, -5, 5, -3), # masking/performing for others 'audience': (-5, 5, -5, 5, 0), 'absorb': (-10, 5, -10, 5, -5), # taking in others emotions 'absorbs': (-10, 5, -10, 5, -5), 'everyones': (0, 5, 0, 5, 5), 'emotions': (0, 10, 0, 5, 15), # high G -- emotional content 'see': (0, 5, 0, 0, 0), 'drain': (-25, -10, -15, 5, -8), # override confirm 'call': (0, 5, 0, 5, 0), 'promises': (-5, 5, -5, 5, 10), # high G -- broken promises 'keeps': (0, 0, 5, 0, 0), # confirm 'asleep': (5, -15, 5, 0, 0), # rest 'cookies': (10, 5, 5, 0, 5), # comfort food 'smells': (5, 5, 0, 0, 0), 'fresh': (10, 5, 5, 0, 3), 'renewed': (15, 10, 10, 0, 8), 'elevator': (0, 0, 0, 0, 0), 'barista': (0, 5, 0, 0, 0), 'spelled': (0, 0, 0, 0, 0), 'green': (5, 5, 5, 0, 0), 'shower': (5, -5, 5, 0, 3), 'lasted': (5, 0, 5, 0, 3), 'opinion': (-5, 5, 5, 0, 0), 'listener': (5, 0, -5, 0, 5), 'empathy': (10, 5, -5, 0, 15), # high G 'weapon': (-30, 20, 15, 10, -10), 'pieces': (-10, 5, -10, 5, -5), # "pieces of myself" 'weight': (-10, 5, -10, 5, -5), # burden 'notice': (0, 5, -5, 5, 5), } EMOTIONAL_VOCABULARY.update(_R14) # ── Round 15: physical reactions + care signals ── _R15 = { 'fakes': (-20, 5, -10, 5, -5), # pretending 'faking': (-20, 5, -10, 5, -5), 'convincingly': (-5, 5, 10, 0, 0), 'making': (0, 5, 5, 0, 0), 'bled': (-30, 20, -20, 15, -10), 'bleeding': (-30, 20, -20, 15, -10), 'send': (0, 5, 5, 5, 0), 'defends': (15, 10, 15, 5, 10), 'notices': (10, 5, 10, 0, 8), # attention/care 'before': (0, 0, 0, 0, 0), 'say': (0, 5, 5, 0, 0), 'details': (5, 5, 5, 0, 8), # attention to detail = care 'braided': (10, 5, 5, 0, 8), # intimate care act 'lump': (-15, 10, -10, 5, -5), # "lump in throat" 'throat': (-10, 10, -10, 5, -3), 'stomach': (-10, 10, -10, 10, -3), # "stomach dropped" 'tongue': (-5, 5, -5, 0, 0), 'shaking': (-20, 25, -20, 15, -8), 'dropped': (-20, 15, -15, 10, -5), # override -- "stomach dropped" "heart dropped" 'bond': (15, 5, 10, 0, 10), # connection 'accountability':(-5, 5, 10, 5, 5), 'texts': (0, 5, 0, 5, 5), # override -- neutral communication 'morning': (5, 5, 5, 5, 3), # override confirm 'fail': (-25, 10, -20, 10, -8), 'judgment': (-20, 10, 10, 5, -5), # override confirm 'space': (0, -5, 0, 0, 0), # override confirm 'photo': (0, 0, 0, 0, 10), # high G memory 'photos': (0, 0, 0, 0, 10), 'movie': (5, 5, 0, 0, 5), 'comfort': (15, -10, 10, 0, 10), 'car': (0, 0, 0, 0, 15), # override with G } EMOTIONAL_VOCABULARY.update(_R15) # ── Round 16: competition, mockery, care acts ── _R16 = { 'screenshot': (-15, 10, -5, 5, -5), # privacy violation 'screenshots': (-15, 10, -5, 5, -5), 'laughs': (-5, 15, 5, 0, 0), # liquid -- laughs at vs laughs with 'competes': (-15, 10, 10, 5, -5), # competition instead of support 'competing': (-15, 10, 10, 5, -5), 'supporting': (20, 5, 10, 0, 10), # active support 'bookshelf': (5, 5, 5, 0, 5), # built something 'drives': (0, 5, 5, 5, 0), # movement -- neutral 'copies': (-10, 5, -5, 5, -3), # copying/stealing identity 'compliments': (10, 5, 5, 0, 5), # positive attention 'insult': (-30, 15, 15, 10, -10), 'insults': (-30, 15, 15, 10, -10), 'boundaries': (10, 5, 15, 0, 10), # healthy -- high G 'boundary': (10, 5, 15, 0, 10), 'dreams': (10, 10, 5, 0, 10), # aspirations -- high G 'memory': (5, 5, -5, 0, 10), # high G -- identity 'doubt': (-20, 10, -15, 10, -8), 'doubts': (-20, 10, -15, 10, -8), 'poems': (15, 5, 10, 0, 10), # creative expression of care 'napkins': (0, 0, 0, 0, 0), 'taught': (15, 5, 15, 0, 10), # passing knowledge 'fish': (5, 5, 5, 0, 5), 'soup': (5, 0, 0, 0, 5), # comfort food 'named': (5, 5, 5, 0, 10), # honor -- high G 'hour': (0, 0, 0, 5, 0), # time marker 'scratch': (5, 5, 10, 0, 5), # "from scratch" = effort } EMOTIONAL_VOCABULARY.update(_R16) # ── Round 17: social manipulation + sacrifice acts ── _R17 = { 'rehearse': (-10, 10, -10, 5, -3), # anxiety -- preparing for confrontation 'conversations':(-3, 5, 0, 0, 5), 'happen': (-5, 5, -3, 5, 0), # "what happened" = unease 'conveniently': (-10, 0, 10, 0, -3), # sarcastic availability 'plans': (0, 5, 5, 5, 0), 'needed': (-5, 5, -5, 5, -3), # "i needed" = unmet need 'moving': (0, 5, 0, 5, 0), 'posts': (0, 5, 0, 0, 5), 'bringing': (-5, 5, 0, 5, 0), # "bringing up" = resurfacing 'favors': (-5, 5, -5, 5, -3), # weaponized generosity 'sat': (5, -5, 5, 0, 5), # presence -- staying 'six': (0, 0, 0, 0, 0), 'hours': (0, 0, 0, 5, 0), 'covered': (10, 5, 10, 0, 8), # covered shift = support 'shift': (0, 5, 0, 5, 0), 'donated': (15, 10, 15, 0, 10), # giving -- selfless act 'type': (0, 0, 0, 0, 0), 'rare': (0, 5, 0, 5, 5), 'blood': (-5, 10, -5, 10, 10), # medical + sacrifice context 'crayon': (10, 5, 5, 0, 8), # childlike -- warmth 'sign': (0, 5, 0, 0, 0), 'language': (0, 5, 0, 0, 5), 'waiting': (-8, 5, -8, 10, -3), # override 'fixed': (10, 5, 10, 0, 5), # repaired 'leaky': (-5, 5, -5, 5, 0), 'faucet': (0, 0, 0, 0, 0), 'volunteers': (-5, 5, -5, 5, -3), # "volunteers my time" = boundary violation 'passive': (-10, -5, -5, 0, -3), 'aggressive': (-20, 20, 15, 10, -5), 'accidentally': (-8, 5, -5, 5, -3), # "accidentally forget" = deliberate 'invite': (10, 10, 5, 0, 5), # inclusion 'likes': (5, 5, 0, 0, 3), } EMOTIONAL_VOCABULARY.update(_R17) # ── Round 18: sacrifice + score-keeping ── _R18 = { 'bullet': (-15, 30, 15, 20, 15), # "took a bullet" = ultimate sacrifice. High G. 'stood': (5, 10, 15, 5, 5), # stood up / stood between = protection 'awake': (-5, 10, 5, 10, 0), # staying awake = sacrifice of rest 'archived': (-10, 5, 5, 5, -3), # preserving evidence / control 'remind': (-10, 5, 10, 5, -3), # "remind me daily" = score-keeping 'reminds': (-10, 5, 10, 5, -3), 'turns': (-5, 5, 5, 5, 0), # override -- "turns into" = transformation 'competition': (-15, 10, 10, 5, -5), 'trophies': (-5, 5, 5, 0, 5), # "collect mistakes like trophies" 'collect': (-5, 5, 5, 0, 0), 'owe': (-15, 5, -15, 10, -5), # debt/obligation 'owes': (-15, 5, -15, 10, -5), 'root': (-5, 5, -5, 5, 0), # "root against" = opposition 'enjoys': (5, 10, 10, 0, 3), # liquid -- "enjoys watching me struggle" = sadistic 'celebrated': (15, 15, 10, 0, 8), # override -- celebration 'celebrates': (15, 15, 10, 0, 8), 'crowd': (5, 15, 0, 5, 5), 'chanted': (10, 20, 5, 5, 5), 'stage': (5, 10, 5, 5, 5), 'wiped': (5, 5, 5, 0, 5), # care act -- wiping tears 'danger': (-35, 25, -20, 20, -10), 'daily': (-3, 5, 0, 5, 0), 'ex': (-15, 10, -5, 10, 10), # high G -- past relationship 'smiles': (5, 5, 5, 0, 3), # liquid -- context determines 'struggle': (-25, 15, -20, 10, -8), 'sacrificed': (10, 10, 10, 5, 15), # giving up for someone -- high G 'sacrifice': (5, 10, 10, 5, 15), } EMOTIONAL_VOCABULARY.update(_R18) # ── Round 19: social rejection + recognition ── _R19 = { 'looked': (0, 5, 5, 0, 0), # neutral -- "looked through me" = structural 'glass': (-5, 0, -5, 0, 0), # "like glass" = invisible/fragile 'subject': (-5, 5, 5, 0, 0), # "changed the subject" = avoidance 'seen': (-10, 5, -5, 5, -3), # "left on seen" = acknowledged rejection 'week': (0, 0, 0, 5, 0), 'standing': (10, 10, 10, 0, 5), # "standing ovation" = recognition 'ovation': (25, 15, 15, 0, 10), # applause/recognition 'calmed': (15, -10, 10, 0, 8), # brought peace -- care act 'during': (0, 0, 0, 0, 0), 'degree': (15, 5, 15, 0, 15), # achievement -- high G 'spoke': (0, 5, 5, 0, 0), 'tone': (-5, 5, 5, 0, 0), # "tone changed" = shift 'closed': (-5, -5, -5, 0, 0), 'door': (0, 0, 0, 0, 5), 'unfollowed': (-20, 10, -10, 5, -8), # digital rejection -- override 'stories': (5, 5, 5, 0, 5), # override confirm 'window': (0, 0, 0, 0, 0), 'seat': (5, 0, 5, 0, 3), # "saved me a seat" = inclusion 'panic': (-40, 35, -30, 25, -12), # override -- stronger 'attack': (-35, 30, -20, 20, -10), # override -- "panic attack" } EMOTIONAL_VOCABULARY.update(_R19) # ── Round 20: rumor, therapy, art, body modification ── _R20 = { 'spread': (-15, 10, 10, 10, -5), # spreading rumors/info 'rumors': (-30, 15, 10, 10, -10), 'rumor': (-25, 15, 10, 10, -8), 'showed': (0, 5, 5, 5, 0), 'herself': (0, 0, 0, 0, 0), 'therapy': (5, 5, -5, 5, 20), # high G -- mental health 'therapist': (10, 5, -5, 0, 20), # caretaker -- high G 'poem': (15, 5, 10, 0, 10), # creative expression 'tattooed': (10, 10, 10, 0, 15), # permanent commitment -- high G 'tattoo': (5, 10, 10, 0, 10), 'portrait': (10, 5, 10, 0, 10), 'painted': (10, 5, 10, 0, 8), 'mariachi': (15, 15, 5, 0, 5), 'adopted': (10, 10, 10, 0, 20), # override -- chosen family. high G 'flew': (5, 10, 5, 5, 5), # effort/distance 'candlelight': (10, -5, 5, 0, 15), # high G -- memorial/honor 'vigil': (-5, -10, -5, 0, 20), # high G -- remembrance 'honor': (20, 10, 15, 0, 15), 'lullaby': (15, -10, 5, 0, 15), # tenderness -- high G 'deployed': (-15, 15, 15, 15, 20), # military -- sacrifice, high G 'recovering': (5, 5, -5, 5, 10), # healing process 'garden': (10, -5, 5, 0, 8), 'planted': (10, 5, 10, 0, 8), 'locked': (-20, 10, -20, 10, -8), # "locked out" = excluded/trapped 'poisoned': (-35, 15, 15, 10, -12), # turning others against 'recorded': (-5, 5, 5, 5, 5), # context-dep -- recorded without permission vs recorded lullaby 'permission': (-5, 5, -5, 5, 5), 'evidence': (-10, 10, 10, 10, 5), 'deleted': (-15, 10, -10, 5, -5), # override confirm 'childhood': (0, 0, 0, 0, 20), # high G -- identity period (override V=0) 'uninvited': (-20, 10, -10, 5, -8), 'wrist': (0, 5, 0, 0, 5), } EMOTIONAL_VOCABULARY.update(_R20) # ── Hitting 3,000 ── _THREE_K = { 'proposal': (20, 15, 10, 5, 15), 'proposed': (20, 15, 10, 5, 15), 'engagement': (20, 15, 10, 5, 20), 'anniversary': (10, 5, 5, 0, 20), 'milestone': (10, 10, 10, 5, 10), 'progress': (15, 5, 15, 0, 8), 'achievement': (20, 10, 20, 0, 10), 'celebrate': (20, 15, 10, 0, 8), 'blessing': (20, 5, 10, 0, 15), } EMOTIONAL_VOCABULARY.update(_THREE_K) # ── Final push to 3,000 ── _FINAL_3K = { 'grateful': (30, 5, 10, 0, 15), 'thankful': (25, 5, 10, 0, 12), 'humble': (10, -5, -5, 0, 10), 'blessed': (25, 5, 5, 0, 15), 'resilient': (20, 10, 20, 0, 10), 'strength': (15, 10, 20, 0, 10), 'courage': (20, 15, 25, 0, 12), 'warrior': (15, 15, 25, 0, 10), 'survivor': (15, 10, 20, 0, 15), 'healing': (15, -5, 10, 0, 15), } EMOTIONAL_VOCABULARY.update(_FINAL_3K) # ── 3,000 ── _HIT_3K = { 'kindness': (25, 5, 10, 0, 12), 'compassion': (25, 5, 5, 0, 15), 'dignity': (15, 5, 20, 0, 15), 'integrity': (20, 5, 20, 0, 12), 'generosity': (20, 5, 10, 0, 10), } EMOTIONAL_VOCABULARY.update(_HIT_3K) # ── MEGA round: 38 words from 72 fresh sentences ── _MEGA = { 'publicly': (-10, 10, 10, 5, -3), 'corrected': (-15, 10, 15, 5, -5), 'moved': (-5, 5, 0, 5, 0), 'desk': (0, 0, 0, 0, 5), 'corner': (-5, -5, -5, 0, -3), 'sends': (5, 5, 5, 5, 0), 'responds': (5, 5, 5, 0, 3), 'within': (0, 0, 0, 0, 0), 'minutes': (0, 0, 0, 5, 0), 'while': (0, 0, 0, 0, 0), 'three': (0, 0, 0, 0, 0), 'jobs': (0, 5, 0, 5, 10), 'librarian': (10, -5, 5, 0, 10), 'noises': (-10, 10, -5, 5, -3), 'weighing': (-5, 5, -5, 0, -3), 'froze': (-20, 10, -15, 10, -8), 'gives': (0, 5, 5, 0, 0), 'allowance': (-10, 0, -15, 0, -5), 'single': (-5, 0, 0, 0, 3), 'defensive': (-15, 15, 15, 5, -5), 'came': (0, 5, 0, 5, 0), 'pull': (-5, 10, 5, 5, 0), 'any': (0, 0, 0, 0, 0), 'younger': (0, 5, 0, 0, 0), 'already': (-3, 5, 0, 5, 0), 'two': (0, 0, 0, 0, 0), 'sides': (-10, 5, -5, 5, -3), 'inviting': (10, 10, 5, 0, 5), 'copied': (-10, 5, -5, 5, -3), 'entire': (-5, 5, -3, 5, 0), 'ketchup': (0, 0, 0, 0, 0), 'apologizing': (-10, 5, -10, 5, -3), 'sent': (0, 5, 5, 5, 0), 'email': (0, 5, 0, 5, 5), 'rereading': (-5, 5, -5, 0, 0), 'ten': (0, 0, 0, 0, 0), 'times': (0, 5, 0, 5, 0), 'bought': (5, 5, 5, 0, 3), } EMOTIONAL_VOCABULARY.update(_MEGA) # ── New domain vocabulary: medical, legal, dating, parenting, customer service ── _DOMAINS = { 'chemotherapy': (-35, 15, -25, 20, 30), # serious medical -- very high G 'wants': (0, 5, 5, 5, 0), 'urgently': (-10, 15, 5, 25, 5), # high urgency 'filed': (-15, 10, 10, 15, 5), # legal action 'custody': (-20, 15, -15, 20, 35), # extremely high G -- children at stake 'sided': (10, 5, 10, 5, 5), # "sided with me" = support 'violated': (-35, 20, 15, 20, -10), # broke rules/boundaries 'restraining': (-20, 15, 15, 15, 10), # legal protection 'subpoenaed': (-20, 15, 5, 20, 5), 'records': (-5, 5, 0, 5, 5), 'charges': (-20, 15, -10, 15, 10), # legal charges -- high G 'netflix': (5, -5, 0, 0, 0), 'pickup': (-5, 5, 5, 0, 0), 'line': (0, 0, 0, 0, 0), 'sons': (0, 5, 0, 0, 40), # relationship -- high G 'classmate': (0, 5, 0, 0, 5), 'resolving': (10, 5, 10, 5, 5), 'issue': (-10, 5, -5, 10, 5), 'supervisor': (-5, 10, 15, 10, 5), # authority figure 'tumor': (-40, 20, -25, 25, 30), 'mass': (-25, 15, -15, 20, 20), # medical mass 'specialist': (-5, 5, 5, 10, 10), 'cleared': (15, -5, 15, 0, 8), # "cleared to go" = relief 'visitation': (-15, 10, -15, 10, 25), # custody -- high G 'settlement': (5, -5, 5, 5, 10), 'unmatched': (-15, 10, -10, 5, -5), # dating rejection 'ghosted': (-30, 10, -20, 10, -10), # override confirm 'midnight': (-5, -5, -5, 5, 0), 'suspended': (-25, 15, -20, 10, -10), # override confirm 'nightmares': (-30, 20, -20, 15, -10), 'refund': (-10, 10, -5, 10, 5), 'kitchen': (5, 0, 5, 0, 5), # override confirm 'report': (-10, 5, 5, 10, 5), } EMOTIONAL_VOCABULARY.update(_DOMAINS) # ── Domains 2: sports, military, immigration, aging, addiction ── _DOMAINS_2 = { 'coach': (5, 10, 15, 5, 10), 'benched': (-20, 10, -20, 10, -8), # excluded from participation 'game': (5, 15, 5, 5, 5), 'waited': (10, -5, 5, 5, 10), # patience/loyalty -- high G 'deployment': (-10, 10, 10, 15, 20), # military -- high G 'where': (0, 0, 0, 0, 0), 'accent': (-5, 5, -5, 0, 5), 'differently': (-10, 5, -5, 5, -3), # "treated differently" = othered 'put': (-5, 5, 0, 5, 0), 'poured': (5, 5, 10, 5, 5), # action -- "poured it out" = agency 'bottle': (-10, 5, -5, 5, 10), # addiction context -- high G 'sink': (0, 0, 0, 0, 0), 'relapsed': (-35, 15, -25, 15, 20), # addiction setback -- high G 'relapse': (-30, 15, -20, 15, 20), 'months': (0, 0, 0, 5, 0), 'clean': (20, -5, 15, 0, 15), # sobriety -- override, high G 'sponsor': (10, 5, 5, 0, 15), # support person -- high G 'citizenship': (15, 10, 15, 5, 20), # achievement -- high G 'papers': (0, 5, 0, 5, 10), # documents -- G from importance 'retirement': (5, -5, 0, 0, 15), # milestone -- high G 'booed': (-25, 20, -15, 10, -8), 'scored': (20, 20, 15, 5, 8), 'winning': (25, 20, 20, 5, 10), 'championship': (15, 20, 15, 10, 15), 'teammates': (5, 10, 5, 0, 10), 'battle': (-20, 25, 15, 15, 10), 'buddy': (10, 5, 10, 0, 10), 'overseas': (-5, 5, 5, 5, 5), 'welcomed': (20, 10, 10, 0, 10), 'hid': (-15, 10, -15, 5, -5), 'bottles': (-10, 5, -5, 5, 8), 'drugs': (-30, 15, -20, 15, 15), 'picked': (-5, 5, -5, 5, 0), # "picked last" = excluded } EMOTIONAL_VOCABULARY.update(_DOMAINS_2) # ── Domains 3: religion, academic, housing, food, pet loss ── _DOMAINS_3 = { 'eviction': (-35, 20, -30, 25, 30), # losing home -- extremely high G 'evicted': (-35, 20, -30, 25, 30), 'unadoptable': (-20, 5, -15, 5, 15), # rejected/unwanted 'landlord': (-10, 10, 15, 10, 10), 'rent': (-10, 5, -5, 10, 10), 'pantry': (-5, 0, 0, 5, 5), 'coins': (-10, 5, -10, 5, -3), # poverty signal 'bread': (3, 0, 0, 5, 5), # basic need 'vet': (-5, 5, -5, 10, 15), # veterinarian -- high G (pet's life) 'shelter': (-5, 5, -5, 5, 10), 'rescue': (10, 10, 10, 5, 10), 'congregation': (0, 5, 0, 0, 10), 'excommunicated':(-30, 15, -20, 10, 20), # expelled from community -- high G 'thesis': (0, 10, 5, 10, 10), 'advisor': (0, 5, 10, 5, 10), 'dissertation': (5, 10, 10, 10, 15), 'defended': (15, 10, 15, 5, 10), # override confirm 'published': (20, 10, 15, 5, 12), # override confirm 'journal': (5, 5, 5, 0, 8), 'professor': (0, 5, 10, 5, 10), 'lecture': (0, 5, 5, 5, 5), 'rental': (0, 5, 0, 5, 8), 'application': (0, 5, 0, 10, 8), 'thanksgiving': (10, 5, 5, 0, 15), # override confirm 'anonymously': (10, 5, -5, 0, 5), # anonymous kindness } EMOTIONAL_VOCABULARY.update(_DOMAINS_3) # ── Domain mining round 4: workplace, disability, recovery, DV, grief, # gen-z slang, therapy, immigration (124 words) ────────────────────── _DOMAINS_4 = { # Workplace harassment 'hostile': (-55, 60, 40, 35, -20), 'intimidate': (-70, 75, 80, 50, -30), 'retaliation': (-65, 70, 60, 55, -35), 'demeaning': (-60, 40, 30, 25, -25), 'condescending': (-40, 30, 50, 10, -15), 'overworked': (-45, 35, -40, 30, -20), 'underpaid': (-40, 25, -35, 20, -18), 'ostracized': (-65, 20, -50, 15, -30), 'mobbing': (-70, 55, -45, 40, -35), 'scapegoat': (-60, 40, -55, 30, -30), 'exploited': (-65, 35, -50, 30, -25), 'silenced': (-50, 15, -60, 20, -25), 'empowered': (45, 25, 55, 5, 15), 'degraded': (-70, 45, -50, 25, -30), 'manipulate': (-50, 35, 55, 25, -20), 'narcissistic': (-45, 35, 60, 15, -15), # Disability / accessibility 'inaccessible': (-35, 20, -30, 20, -15), 'meltdown': (-55, 90, -50, 60, -30), 'overstimulated': (-40, 70, -35, 40, -20), 'masking': (-30, 25, -20, 15, -15), 'chronic': (-20, 10, -15, 5, 30), 'fatigue': (-30, -20, -25, 10, -15), 'dissociation': (-30, -25, -30, 15, -20), 'dysregulated': (-40, 60, -40, 35, -20), 'numbness': (-20, -30, -20, 5, -10), 'stigma': (-40, 20, -30, 10, 25), 'hypervigilant': (-35, 80, -25, 50, -20), 'vulnerable': (-25, 20, -40, 15, 20), # 12-step / recovery 'powerless': (-50, 15, -80, 20, -35), 'surrender': (-15, -10, -60, 5, 25), 'serenity': (40, -30, 25, -5, 20), 'amends': (20, 25, -5, 15, 25), 'enabling': (-25, 15, -20, 15, -15), 'temptation': (-25, 45, -30, 40, -20), 'tempted': (-20, 40, -25, 35, -15), 'craving': (-30, 55, -35, 50, -20), 'detox': (-35, 50, -40, 60, 25), 'withdrawal': (-50, 60, -45, 55, -30), 'abstinence': (10, -10, 15, 5, 20), 'cope': (5, 10, -10, 10, 10), 'coping': (5, 10, -10, 10, 10), 'denial': (-20, -5, -15, 10, -15), 'forgiven': (45, 15, 30, 0, 20), # Domestic violence shelter 'coerce': (-60, 50, 70, 45, -25), 'coercion': (-55, 45, 65, 40, -25), 'stalk': (-65, 60, 50, 55, -30), 'stalker': (-60, 55, 55, 50, -25), 'stalking': (-65, 60, 50, 55, -30), 'lovebombing': (-30, 40, 45, 20, -20), 'battered': (-75, 45, -60, 40, -40), 'devalue': (-55, 30, 40, 20, -25), 'hoovering': (-35, 35, 45, 25, -20), 'protective': (25, 20, 30, 15, 15), 'retraumatize': (-60, 65, -40, 50, -35), 'retraumatized': (-60, 65, -40, 50, -35), 'fawn': (-20, 25, -55, 20, -15), 'freeze': (-25, 10, -45, 15, -15), 'dehumanize': (-80, 50, 50, 40, -40), # Grief stages clinical 'yearning': (-45, 30, -35, 25, -30), 'longing': (-40, 25, -30, 20, -25), 'bargaining': (-30, 35, -25, 30, -20), 'bereaved': (-55, 20, -40, 15, 35), 'widow': (-40, 10, -25, 10, 35), 'eulogy': (-25, 15, -10, 5, 30), 'memorial': (-15, 10, -5, 5, 30), 'anticipatory': (-30, 35, -20, 25, -20), 'disenfranchised': (-50, 30, -45, 20, -30), 'keening': (-65, 75, -40, 35, -40), 'sobbing': (-55, 65, -35, 30, -30), 'wailing': (-60, 70, -35, 35, -35), # Gen-Z / Gen-alpha slang 'delulu': (-15, 25, -20, 5, -10), 'brainrot': (-25, 15, -20, 5, -15), 'situationship': (-20, 25, -15, 10, -10), 'unhinged': (-10, 60, 20, 10, -10), 'feral': (-10, 55, 25, 10, -10), 'demure': (15, -15, -5, 0, 5), 'brat': (10, 40, 20, 5, -5), 'aura': (20, 15, 20, 0, 10), 'glazing': (-20, 15, -25, 5, -10), 'ghosting': (-40, 25, -30, 15, -18), 'doomscrolling': (-25, 20, -20, 10, -12), 'rotting': (-30, -15, -25, 5, -15), 'cooked': (-35, 30, -30, 20, -15), 'slaying': (40, 35, 40, 5, 15), # Therapy modalities 'grounding': (15, -15, 15, 0, 10), 'grounded': (20, -20, 20, -5, 12), 'somatic': (0, 10, 0, 5, 10), 'ruminate': (-35, 30, -25, 20, -20), 'rumination': (-35, 30, -25, 20, -20), 'catastrophize': (-50, 65, -35, 45, -25), 'reframe': (20, 10, 20, 5, 10), 'validated': (35, 10, 25, 0, 15), 'validation': (30, 10, 20, 0, 15), 'invalidated': (-50, 35, -45, 25, -25), 'invalidate': (-45, 30, -40, 20, -20), 'mindful': (15, -10, 15, -5, 10), 'mindfulness': (15, -10, 15, -5, 10), 'regulate': (10, -5, 15, 0, 8), 'coregulate': (20, -10, 10, 0, 12), # Immigration / displacement 'deported': (-65, 50, -60, 60, -35), 'deportation': (-60, 45, -55, 55, 35), 'asylum': (-10, 20, -25, 30, 30), 'refugee': (-30, 20, -35, 20, 40), 'undocumented': (-25, 20, -35, 25, 25), 'displaced': (-45, 25, -40, 25, 30), 'displacement': (-40, 20, -35, 20, 30), 'stateless': (-50, 20, -55, 25, 35), 'diaspora': (-20, 10, -15, 5, 30), 'uprooted': (-50, 30, -40, 25, -25), 'xenophobia': (-55, 45, 30, 25, -25), 'othered': (-45, 25, -35, 15, -20), 'homeland': (20, 15, 5, 5, 30), 'sanctuary': (25, -10, 15, 0, 25), 'detained': (-55, 40, -65, 50, -30), 'detention': (-50, 35, -60, 45, 30), 'exile': (-45, 20, -45, 15, 30), } EMOTIONAL_VOCABULARY.update(_DOMAINS_4) # ── Domain mining round 5: legal, eating disorders, neurodiversity, # fertility, caregiving, military, disaster, financial crisis (248 words) ── _DOMAINS_5 = { # Legal / criminal justice 'arraignment': (-30, 45, -60, 50, 40), 'arraigned': (-35, 50, -65, 55, 42), 'acquitted': (60, -20, 50, -30, 35), 'acquittal': (55, -25, 45, -35, 35), 'wrongful': (-60, 50, -70, 55, 50), 'wrongfully': (-60, 50, -70, 55, 50), 'incarcerated': (-80, 30, -127, 40, 55), 'incarceration': (-75, 25, -120, 35, 55), 'parole': (25, 30, -30, 35, 30), 'paroled': (30, 25, -25, 30, 28), 'vindicated': (70, 30, 60, -20, 40), 'vindication': (65, 25, 55, -25, 40), 'convicted': (-85, 40, -110, 50, 60), 'conviction': (-80, 35, -105, 45, 58), 'sentenced': (-75, 50, -120, 60, 65), 'sentencing': (-70, 55, -115, 65, 63), 'indicted': (-55, 60, -70, 65, 50), 'indictment': (-50, 55, -65, 60, 48), 'exonerated': (80, 35, 70, -20, 50), 'exoneration': (75, 30, 65, -25, 50), 'plea': (-30, 35, -50, 50, 35), 'verdict': (0, 60, 0, 70, 55), 'trial': (-10, 50, -20, 55, 50), 'probation': (-15, 20, -40, 25, 25), 'felony': (-60, 40, -80, 50, 55), 'misdemeanor': (-25, 20, -35, 25, 20), 'bail': (-20, 40, -30, 55, 30), 'prosecuted': (-50, 45, -60, 55, 45), 'defendant': (-30, 40, -55, 50, 35), 'plaintiff': (10, 35, 30, 45, 30), 'lawsuit': (-20, 45, -10, 55, 40), 'restitution': (20, 15, 20, 20, 35), 'appealed': (10, 30, 15, 45, 35), 'overturned': (50, 40, 45, 30, 45), 'warrant': (-35, 50, -60, 65, 40), 'subpoena': (-20, 45, -50, 55, 35), 'testimony': (0, 40, 20, 45, 40), 'testify': (5, 45, 25, 50, 40), 'manslaughter': (-90, 60, -50, 55, 70), 'homicide': (-95, 65, -40, 55, 75), 'assault': (-70, 80, -30, 65, 50), 'fraud': (-55, 40, -50, 45, 40), 'perjury': (-50, 35, -40, 40, 45), 'contempt': (-45, 50, 30, 40, 35), 'solitary': (-90, 20, -127, 30, 60), 'confinement': (-70, 15, -110, 25, 50), 'shackled': (-80, 30, -127, 35, 55), 'handcuffed': (-60, 45, -110, 50, 40), 'fugitive': (-40, 80, -50, 90, 45), # Eating disorders 'purge': (-60, 70, -40, 60, 35), 'bingeing': (-50, 55, -50, 50, 30), 'restrict': (-35, 30, 40, 35, 25), 'restricting': (-40, 35, 45, 40, 28), 'anorexia': (-75, 40, -30, 45, 55), 'anorexic': (-70, 35, -35, 40, 45), 'bulimic': (-65, 50, -40, 45, 45), 'bulimia': (-70, 45, -35, 45, 50), 'dysmorphia': (-65, 50, -50, 45, 45), 'dysmorphic': (-60, 45, -45, 40, 40), 'emaciated': (-80, 30, -60, 35, 55), 'malnourished': (-65, 25, -50, 40, 50), 'calorie': (-15, 25, 10, 20, 10), 'fasting': (-25, 20, 30, 25, 15), 'starvation': (-90, 40, -70, 60, 60), 'bloated': (-30, 25, -20, 20, 10), 'laxative': (-45, 35, -30, 40, 25), 'compulsive': (-40, 55, -50, 50, 30), 'distorted': (-40, 30, -30, 25, 20), 'skinny': (-10, 15, -10, 10, 10), 'obese': (-35, 20, -25, 15, 25), 'overweight': (-20, 15, -15, 10, 15), 'underweight': (-25, 20, -20, 20, 20), 'disordered': (-45, 35, -40, 35, 30), 'compensate': (-20, 30, 15, 30, 15), 'compensating': (-25, 35, 10, 35, 18), # Neurodiversity 'stimming': (15, 30, 20, 10, 10), 'shutdown': (-60, -30, -70, 40, 35), 'hyperfocus': (20, 50, 30, 15, 15), 'hyperfocusing': (15, 55, 25, 20, 15), 'neurotypical': (0, 5, 10, 0, 5), 'autistic': (-5, 15, -15, 10, 20), 'unmasking': (30, 40, 35, 25, 25), 'dysregulation': (-45, 55, -50, 45, 30), 'accommodations': (20, 10, 20, 15, 15), 'accommodation': (20, 10, 20, 15, 15), 'echolalia': (0, 15, -10, 5, 10), 'perseveration': (-15, 30, -20, 20, 15), 'perseverating': (-20, 35, -25, 25, 15), 'alexithymia': (-30, 15, -30, 20, 25), 'impulsive': (-20, 60, -30, 45, 15), 'impulsivity': (-25, 55, -35, 40, 18), 'hyperactive': (0, 70, -15, 30, 10), 'fidgeting': (0, 30, -10, 10, 5), 'compulsion': (-35, 50, -45, 50, 25), 'obsession': (-30, 55, -40, 50, 25), 'obsessive': (-35, 50, -45, 45, 25), 'ritualistic': (-15, 25, 15, 20, 15), 'routine': (10, -10, 20, -5, 5), 'disrupted': (-30, 45, -30, 40, 20), 'overwhelm': (-50, 60, -50, 50, 25), 'disclosure': (-10, 35, -20, 30, 25), 'inattentive': (-15, -10, -20, 15, 10), # Fertility / pregnancy loss 'miscarried': (-90, 50, -70, 30, 65), 'stillborn': (-120, 40, -80, 20, 80), 'stillbirth': (-115, 35, -75, 20, 80), 'infertility': (-65, 30, -55, 40, 50), 'infertile': (-60, 25, -60, 35, 45), 'conceive': (15, 20, 10, 25, 20), 'postpartum': (-40, 35, -30, 30, 35), 'ectopic': (-75, 55, -50, 70, 55), 'hemorrhage': (-70, 80, -60, 90, 55), 'hemorrhaging': (-75, 85, -65, 95, 55), 'premature': (-45, 50, -40, 60, 40), 'viable': (25, 15, 15, 20, 20), 'nonviable': (-80, 30, -60, 25, 55), 'nicu': (-55, 50, -50, 65, 50), 'heartbeat': (40, 35, 15, 20, 30), 'womb': (10, 5, 10, 5, 20), 'maternal': (20, 10, 15, 10, 20), 'paternal': (10, 5, 15, 5, 15), 'childbirth': (10, 50, 15, 40, 45), 'labor': (-15, 60, -10, 50, 35), 'endometriosis': (-50, 35, -40, 35, 40), 'bonding': (45, 20, 20, 10, 20), 'expecting': (35, 25, 15, 20, 20), 'embryo': (5, 15, 5, 20, 25), 'fertile': (20, 10, 15, 10, 15), 'reproductive': (0, 10, 0, 10, 15), 'surrogate': (10, 15, -10, 20, 25), 'donor': (20, 10, 10, 10, 15), 'implanted': (15, 25, 10, 30, 20), # Caregiving / elder care 'caregiver': (-15, 25, 20, 30, 30), 'caregiving': (-20, 30, 15, 35, 30), 'alzheimers': (-110, 60, -70, 50, 70), 'declining': (-55, 25, -40, 35, 35), 'sundowning': (-50, 55, -45, 50, 35), 'palliative': (-30, -15, -20, 20, 50), 'prognosis': (-20, 35, -15, 40, 40), 'degenerative': (-70, 25, -55, 35, 50), 'lucid': (35, 20, 25, 15, 15), 'lucidity': (30, 15, 20, 10, 15), 'confused': (-30, 30, -40, 25, 15), 'disoriented': (-35, 35, -45, 30, 18), 'bedridden': (-55, -15, -80, 20, 40), 'wheelchair': (-15, 5, -35, 10, 20), 'immobile': (-40, -10, -70, 15, 30), 'respite': (30, -20, 20, -15, 15), 'agitated': (-35, 70, -25, 50, 20), 'combative': (-40, 80, 20, 55, 25), 'unresponsive': (-60, 25, -80, 40, 50), 'comatose': (-70, -20, -90, 25, 60), 'coma': (-65, -15, -85, 30, 60), 'ventilator': (-50, 25, -80, 45, 55), 'deteriorating': (-60, 40, -50, 50, 40), 'rallying': (30, 25, 20, 20, 30), 'resentment': (-40, 40, -15, 30, 25), 'resentful': (-45, 45, -10, 35, 25), 'obligation': (-20, 20, -25, 25, 25), 'obligated': (-25, 25, -30, 30, 25), 'thankless': (-40, 25, -20, 20, 20), 'unappreciated': (-45, 30, -25, 25, 20), 'frail': (-40, 5, -55, 15, 30), 'fragile': (-35, 10, -50, 15, 25), 'dependent': (-25, 15, -60, 20, 25), 'dependence': (-30, 15, -55, 20, 25), 'stable': (20, -15, 15, -10, 15), 'critical': (-55, 55, -40, 70, 55), 'passing': (-50, 10, -40, 10, 50), 'duty': (-5, 15, 20, 20, 25), 'sacrificing': (-25, 25, 15, 25, 30), # Military / veteran 'veteran': (10, 15, 25, 10, 30), 'combat': (-40, 80, 20, 60, 45), 'enlisted': (5, 30, -20, 25, 25), 'discharge': (15, 20, -10, 20, 25), 'discharged': (10, 15, -5, 15, 25), 'honorable': (40, 10, 40, 5, 35), 'dishonorable': (-70, 35, -80, 30, 45), 'reintegration': (10, 35, -15, 30, 25), 'hypervigilance': (-30, 70, 15, 50, 20), 'concussion': (-40, 35, -30, 45, 30), 'ambush': (-50, 90, -40, 80, 40), 'ambushed': (-55, 85, -45, 75, 40), 'firefight': (-35, 95, 10, 80, 40), 'casualty': (-80, 40, -50, 35, 60), 'casualties': (-85, 45, -50, 40, 65), 'wounded': (-60, 50, -40, 50, 45), 'medevac': (-40, 70, -30, 85, 45), 'triage': (-30, 55, 20, 75, 40), 'valor': (50, 40, 55, 20, 40), 'bravery': (45, 40, 50, 20, 35), 'heroism': (50, 45, 55, 20, 40), 'heroic': (45, 50, 50, 25, 35), 'fallen': (-80, 20, -30, 10, 65), 'homecoming': (60, 40, 30, 15, 30), 'readjustment': (-15, 30, -20, 30, 20), 'civilian': (10, -5, 10, -5, 5), 'demoted': (-45, 40, -60, 35, 25), 'stationed': (0, 10, -15, 10, 10), 'sniper': (-30, 50, 30, 40, 35), 'patrol': (-10, 35, 15, 30, 20), 'convoy': (-10, 30, 10, 25, 20), 'classified': (-5, 15, 30, 15, 25), 'debriefed': (10, 20, 10, 15, 15), 'ptsd': (-70, 70, -50, 50, 50), 'insurgent': (-30, 50, -10, 45, 30), 'medal': (40, 25, 35, 10, 30), 'coffin': (-70, 20, -40, 10, 65), 'remains': (-55, 15, -30, 15, 55), # Natural disaster / climate 'evacuated': (-35, 60, -40, 75, 35), 'evacuation': (-30, 55, -35, 70, 35), 'wildfire': (-50, 65, -30, 70, 45), 'devastation': (-100, 50, -80, 40, 65), 'catastrophe': (-90, 60, -70, 60, 65), 'catastrophic': (-95, 65, -75, 65, 65), 'rubble': (-60, 20, -50, 15, 40), 'debris': (-35, 15, -25, 15, 20), 'wreckage': (-55, 20, -45, 15, 35), 'demolished': (-65, 40, -55, 30, 40), 'leveled': (-70, 35, -60, 25, 40), 'obliterated': (-90, 50, -70, 30, 55), 'flooded': (-50, 45, -40, 55, 35), 'flooding': (-45, 50, -35, 60, 35), 'submerged': (-50, 30, -45, 40, 30), 'inundated': (-40, 35, -35, 40, 25), 'earthquake': (-60, 70, -50, 65, 50), 'tsunami': (-80, 75, -60, 70, 60), 'landslide': (-55, 55, -45, 55, 40), 'avalanche': (-60, 65, -50, 60, 45), 'drought': (-40, 15, -30, 30, 35), 'famine': (-85, 30, -60, 50, 60), 'contaminated': (-40, 30, -25, 40, 30), 'uninhabitable': (-65, 25, -50, 30, 40), 'rebuild': (25, 30, 30, 25, 25), 'rebuilding': (20, 35, 25, 30, 25), 'aftermath': (-35, 20, -20, 20, 30), 'resilience': (40, 25, 40, 15, 25), 'survivors': (-15, 30, 20, 20, 30), 'pollution': (-30, 15, -15, 20, 25), 'hazardous': (-35, 35, -20, 45, 30), 'donation': (30, 10, 15, 10, 10), 'donations': (25, 10, 10, 10, 10), # Financial crisis personal 'foreclosure': (-70, 50, -60, 55, 50), 'foreclosed': (-75, 45, -65, 50, 50), 'bankruptcy': (-65, 40, -55, 45, 50), 'bankrupt': (-70, 45, -60, 50, 48), 'collections': (-40, 45, -35, 50, 25), 'garnishment': (-50, 40, -55, 45, 30), 'indebted': (-35, 25, -40, 30, 25), 'delinquent': (-35, 30, -30, 40, 20), 'defaulted': (-55, 35, -50, 40, 35), 'repossessed': (-65, 45, -60, 45, 40), 'evicting': (-50, 50, -55, 55, 35), 'homelessness': (-60, 25, -50, 25, 45), 'unhoused': (-55, 20, -45, 20, 40), 'unemployed': (-45, 25, -40, 30, 30), 'downsized': (-40, 30, -35, 35, 25), 'terminated': (-50, 40, -45, 40, 30), 'severance': (10, 15, -10, 20, 15), 'harassing': (-40, 55, -30, 50, 25), 'overdraft': (-30, 35, -25, 40, 15), 'overdrawn': (-35, 30, -30, 35, 15), 'bounced': (-30, 35, -25, 35, 15), 'tanked': (-55, 40, -40, 35, 25), 'plummeted': (-55, 50, -45, 40, 30), 'liquidated': (-35, 20, -30, 25, 20), 'pawned': (-40, 25, -35, 35, 15), 'desperation': (-65, 70, -60, 70, 35), 'predatory': (-50, 40, 40, 40, 30), 'welfare': (-20, 10, -30, 15, 15), 'assistance': (15, 10, -10, 15, 10), 'utilities': (-10, 15, -5, 20, 10), 'shutoff': (-45, 40, -40, 50, 25), 'sued': (-45, 55, -50, 55, 40), } EMOTIONAL_VOCABULARY.update(_DOMAINS_5) # ── Domain mining round 6: bullying, cyberbullying, body image, chronic pain, # LGBTQ+, foster care, incarceration aftermath, layoffs (208 words) ──────── _DOMAINS_6 = { # Childhood / school bullying 'outcasted': (-40, 15, -30, 10, -20), 'wedgie': (-25, 35, -30, 15, -10), 'snitched': (-20, 25, -15, 15, -10), 'tattled': (-15, 20, -10, 10, -8), 'clique': (-10, 10, 15, 5, 15), 'cliquey': (-20, 15, 15, 5, -10), 'loner': (-25, -10, -20, 5, -15), 'outcast': (-40, 10, -30, 10, -20), 'unpopular': (-25, 10, -20, 5, -12), 'popularity': (10, 15, 20, 5, 15), 'snitch': (-20, 25, -15, 15, -10), 'narc': (-20, 25, -10, 15, -10), 'nerd': (-10, 5, -10, 0, -5), 'geek': (-8, 5, -8, 0, -5), 'dork': (-12, 10, -10, 0, -8), 'weirdo': (-20, 10, -15, 5, -10), 'crybaby': (-25, 20, -20, 10, -12), 'wimp': (-25, 15, -25, 10, -12), 'pushover': (-20, 10, -30, 5, -10), 'doormat': (-30, 10, -40, 5, -15), 'snubbed': (-30, 15, -20, 10, -15), 'unchosen': (-35, 10, -25, 10, -18), 'sidelined': (-25, 10, -25, 10, -12), 'scapegoated': (-45, 30, -35, 20, -25), 'ganged': (-40, 40, -40, 25, -20), 'intimidated': (-35, 35, -40, 20, -15), # Online / cyberbullying 'doxxed': (-60, 50, -50, 40, -30), 'swatted': (-70, 70, -60, 50, -35), 'trolled': (-25, 25, -15, 10, -10), 'brigaded': (-40, 40, -35, 25, -20), 'cyberbullied': (-55, 35, -40, 25, -25), 'impersonated': (-45, 35, -30, 25, -20), 'viral': (0, 50, -10, 30, 15), 'stalked': (-60, 45, -50, 35, -30), 'muted': (-20, -5, -15, 5, -10), 'deplatformed': (-35, 30, -40, 25, -15), 'shadowbanned': (-30, 20, -35, 15, -15), 'dogpiled': (-45, 45, -40, 30, -25), 'ratioed': (-25, 20, -20, 10, -10), 'flamed': (-30, 35, -20, 15, -15), 'spammed': (-15, 20, -10, 10, -5), 'hacked': (-45, 40, -40, 30, -20), 'phished': (-40, 30, -35, 25, -18), 'deepfaked': (-50, 40, -40, 30, -25), 'outed': (-45, 40, -50, 30, -25), # Body image beyond ED 'cellulite': (-10, 10, -10, 5, 10), 'acne': (-15, 15, -10, 10, 10), 'scarring': (-20, 10, -15, 5, 15), 'birthmark': (-5, 5, -5, 0, 10), 'blemish': (-10, 10, -8, 5, 8), 'wrinkles': (-10, 5, -8, 5, 10), 'sagging': (-15, 10, -10, 5, 10), 'flabby': (-20, 15, -15, 10, -10), 'chubby': (-12, 10, -8, 5, -5), 'lanky': (-8, 5, -5, 0, -3), 'stocky': (-3, 5, 5, 0, 5), 'curvy': (5, 10, 5, 0, 5), 'petite': (0, 5, -5, 0, 5), 'disfigured': (-50, 25, -35, 15, 30), 'prosthetic': (0, 5, 0, 0, 15), 'amputation': (-40, 25, -30, 15, 35), 'complexion': (0, 5, 0, 0, 5), 'freckles': (5, 5, 0, 0, 5), 'balding': (-15, 10, -10, 5, 10), 'receding': (-12, 8, -8, 5, 8), 'graying': (-5, 5, -5, 0, 8), 'bodyshamed': (-50, 35, -35, 20, -25), 'unfiltered': (15, 10, 15, 0, 10), # Chronic pain / invisible illness 'flare': (-35, 30, -25, 25, 20), 'flareup': (-40, 35, -30, 30, 22), 'remission': (50, -10, 30, -20, 25), 'fibromyalgia': (-30, 15, -25, 15, 35), 'lupus': (-30, 15, -25, 15, 35), 'spoons': (-15, 5, -15, 10, 15), 'spoonie': (-15, 10, -15, 10, 15), 'fatigued': (-30, -20, -25, 10, -15), 'debilitating': (-55, 25, -50, 25, 30), 'crippling': (-60, 30, -55, 30, 30), 'housebound': (-45, -10, -60, 15, 30), 'homebound': (-40, -10, -55, 15, 28), 'bedbound': (-55, -15, -75, 20, 35), 'inflammation': (-20, 15, -15, 10, 15), 'inflamed': (-25, 20, -15, 15, 12), 'migraine': (-40, 30, -30, 25, 20), 'vertigo': (-30, 25, -25, 20, 15), 'flaring': (-35, 30, -25, 25, 18), 'progressive': (-20, 15, -15, 15, 25), 'manageable': (15, -5, 15, -10, 10), 'unmanageable': (-40, 30, -35, 25, -20), 'tolerable': (10, -5, 10, -10, 10), 'intolerable': (-60, 35, -40, 30, -25), 'excruciating': (-80, 50, -50, 40, -35), 'agonizing': (-75, 45, -45, 35, -30), 'throbbing': (-30, 25, -20, 20, 10), 'radiating': (-25, 20, -15, 15, 10), 'tingling': (-10, 15, -10, 10, 8), 'stiffness': (-15, 10, -15, 10, 10), # LGBTQ+ experience 'closeted': (-30, 20, -35, 15, 20), 'deadnamed': (-50, 35, -45, 25, -25), 'deadnaming': (-45, 30, -40, 20, -22), 'misgendered': (-40, 30, -35, 20, -20), 'misgendering': (-35, 25, -30, 15, -18), 'transitioning': (10, 25, 20, 15, 30), 'transitioned': (20, 10, 25, 0, 25), 'nonbinary': (0, 5, 5, 0, 10), 'queer': (0, 10, 10, 0, 10), 'questioning': (-10, 15, -10, 10, 15), 'homophobia': (-55, 40, 20, 20, 30), 'homophobic': (-50, 35, 20, 15, -25), 'transphobia': (-55, 40, 20, 20, 30), 'transphobic': (-50, 35, 20, 15, -25), 'conversion': (-40, 30, -35, 20, 25), 'dysphoria': (-55, 40, -40, 30, 35), 'euphoria': (70, 50, 40, 10, 20), 'affirmed': (35, 15, 30, 0, 18), 'allyship': (30, 15, 15, 0, 15), 'ally': (25, 10, 10, 0, 12), # Foster care / adoption 'reunification': (30, 25, 15, 20, 30), 'placement': (-10, 15, -20, 15, 20), 'caseworker': (0, 10, 15, 10, 20), 'adoptee': (0, 10, -5, 5, 20), 'adoptive': (15, 10, 15, 5, 18), 'relinquished': (-45, 20, -40, 15, 30), 'relinquishment': (-40, 15, -35, 10, 30), 'kinship': (20, 10, 10, 0, 20), 'permanency': (20, 5, 15, -5, 25), 'guardianship': (10, 10, 20, 10, 25), 'detachment': (-30, 10, -20, 5, -15), 'disruption': (-35, 30, -30, 25, 20), 'siblings': (5, 10, 5, 0, 25), 'rehomed': (-30, 20, -35, 15, -18), 'abandonment': (-60, 25, -50, 20, -30), # Incarceration aftermath 'reentry': (10, 25, -15, 25, 25), 'felon': (-50, 25, -60, 20, 40), 'parolee': (-10, 15, -30, 20, 25), 'recidivism': (-40, 20, -40, 25, 35), 'imprisoned': (-75, 25, -120, 35, 50), 'imprisonment': (-70, 20, -115, 30, 50), 'expunged': (35, 15, 25, -10, 20), 'expungement': (30, 10, 20, -10, 20), 'stigmatized': (-40, 25, -30, 15, -20), 'employable': (20, 10, 15, 5, 10), 'unemployable': (-40, 20, -40, 25, -25), 'supervised': (-10, 10, -20, 10, 15), 'monitored': (-10, 10, -20, 10, 12), 'curfew': (-10, 10, -20, 10, 12), 'restricted': (-15, 10, -25, 10, 15), 'reintegrated': (15, 20, -10, 15, 20), # Workplace layoff / restructuring 'restructured': (-15, 20, -15, 20, 18), 'restructuring': (-20, 25, -15, 25, 20), 'redundant': (-40, 25, -35, 25, -20), 'redundancy': (-35, 20, -30, 20, 20), 'offboarded': (-30, 20, -25, 20, 15), 'offboarding': (-25, 15, -20, 15, 15), 'downsizing': (-30, 25, -20, 25, 20), 'furloughed': (-35, 20, -30, 25, 20), 'furlough': (-30, 15, -25, 20, 18), 'layoff': (-40, 30, -35, 30, 22), 'layoffs': (-35, 25, -25, 25, 22), 'termination': (-45, 35, -40, 35, 28), 'outsourced': (-30, 20, -25, 20, 18), 'outsourcing': (-25, 20, -20, 20, 18), 'reorg': (-20, 25, -15, 20, 18), 'reorganized': (-15, 20, -10, 15, 15), 'reorganization': (-15, 20, -10, 15, 18), 'attrition': (-15, 10, -10, 10, 15), 'involuntary': (-30, 20, -40, 20, 15), 'buyout': (10, 15, 10, 15, 15), 'transition': (-5, 15, -5, 10, 12), 'pivoted': (5, 15, 10, 10, 10), 'pivoting': (5, 15, 10, 10, 10), 'upskill': (15, 15, 15, 10, 10), 'upskilling': (15, 15, 15, 10, 10), 'reskill': (10, 15, 10, 10, 10), 'reskilling': (10, 15, 10, 10, 10), } EMOTIONAL_VOCABULARY.update(_DOMAINS_6) # ── Domain batch 7: parenting stress, divorce/separation, loneliness, # betrayal/trust, achievement, gratitude, physical sensations, sound/music _DOMAINS_7 = { # --- Parenting stress --- 'colic': (-20, 30, -25, 30, 15), 'tantrum': (-35, 60, -40, 45, 20), 'tantrums': (-35, 55, -40, 40, 20), 'sleepless': (-30, 20, -25, 25, 15), 'daycare': (0, 5, 0, 5, 8), 'teething': (-15, 25, -15, 20, 10), 'fussy': (-20, 25, -20, 20, 8), 'colicky': (-20, 30, -25, 30, 12), 'inconsolable': (-55, 50, -50, 50, 30), 'whining': (-25, 30, -20, 20, 8), 'bedtime': (0, 5, 5, 5, 5), 'naptime': (0, -5, 5, 0, 5), 'breastfeeding': (5, 5, 5, 5, 10), 'pacifier': (5, -10, 5, -5, 5), 'diaper': (0, 5, 0, 5, 3), 'weaning': (-5, 10, 5, 10, 8), 'developmental': (0, 5, 0, 5, 10), 'sleep-deprived': (-35, 15, -30, 25, 18), 'overtired': (-30, 20, -25, 20, 12), 'fretful': (-25, 25, -20, 20, 10), 'nanny': (0, 0, 5, 0, 5), 'babysitter': (0, 0, 5, 0, 5), 'sitter': (0, 0, 5, 0, 3), 'preschool': (5, 5, 0, 5, 8), 'formula': (0, 0, 0, 0, 5), # --- Divorce/separation --- 'alimony': (-15, 15, -20, 15, 20), 'co-parenting': (-5, 15, -5, 15, 18), 'coparenting': (-5, 15, -5, 15, 18), 'mediator': (0, 10, 0, 10, 18), 'contested': (-25, 35, -20, 30, 22), 'separation': (-35, 20, -25, 20, 22), 'prenup': (-5, 10, 10, 5, 15), 'prenuptial': (-5, 10, 10, 5, 15), 'annulment': (-30, 20, -15, 20, 25), 'estranged': (-45, 15, -30, 15, 25), 'ex-husband': (-15, 15, -10, 10, 12), 'ex-wife': (-15, 15, -10, 10, 12), 'ex-spouse': (-15, 15, -10, 10, 12), 'irreconcilable': (-40, 20, -25, 15, 25), 'infidelity': (-80, 60, -60, 40, 40), 'adultery': (-80, 55, -55, 35, 42), 'proceedings': (-10, 15, -5, 15, 20), 'petition': (-5, 15, 5, 15, 18), 'dissolution': (-35, 15, -20, 15, 25), 'decree': (-10, 10, 15, 10, 22), 'marital': (0, 5, 0, 5, 15), 'spousal': (0, 5, 0, 5, 12), 'divorcee': (-20, 10, -10, 5, 15), 'remarriage': (10, 15, 10, 10, 15), 'remarried': (10, 10, 10, 5, 12), 'stepparent': (0, 10, 5, 5, 12), 'blended': (5, 10, 5, 5, 10), 'cohabitation': (0, 5, 0, 5, 8), # --- Loneliness/social isolation --- 'withdrawn': (-40, -15, -35, 10, -25), 'reclusive': (-35, -20, -30, 5, -20), 'alienated': (-55, 20, -45, 15, -30), 'solitude': (-15, -20, -10, 0, 10), 'friendless': (-55, 10, -40, 15, -35), 'hermit': (-20, -25, -15, 0, -10), 'recluse': (-25, -20, -20, 0, -12), 'secluded': (-15, -15, -10, 0, 5), 'seclusion': (-15, -15, -10, 0, 5), 'aloof': (-20, -15, 10, 0, -8), 'unapproachable': (-25, 10, 15, 5, -10), 'overlooked': (-40, 10, -35, 10, -20), 'marginalized': (-50, 20, -45, 15, -30), 'shunned': (-55, 20, -45, 15, -30), 'unnoticed': (-35, -5, -30, 5, -18), 'wallflower': (-20, -15, -25, 0, -10), 'homesick': (-40, 20, -25, 20, -20), 'homesickness': (-40, 20, -25, 20, -20), 'forlorn': (-55, -10, -40, 10, -35), 'desolate': (-65, -5, -45, 10, -45), # --- Betrayal/trust violation --- 'backstabbed': (-85, 70, -65, 50, -40), 'backstabbing': (-80, 65, -60, 45, -35), 'two-faced': (-60, 40, -45, 30, -25), 'deceived': (-75, 55, -60, 40, -35), 'conned': (-70, 55, -60, 40, -30), 'scammed': (-65, 55, -55, 40, -28), 'treachery': (-90, 60, -70, 45, -50), 'treacherous': (-85, 55, -65, 40, -45), 'duplicitous': (-65, 40, -50, 30, -30), 'duplicity': (-65, 40, -50, 30, -30), 'swindled': (-65, 50, -55, 35, -28), 'defrauded': (-60, 45, -50, 35, -25), 'hoodwinked': (-55, 45, -50, 30, -22), 'bamboozled': (-50, 40, -45, 25, -18), 'double-crossed': (-85, 65, -65, 50, -40), 'disloyal': (-70, 45, -55, 30, -35), 'disloyalty': (-70, 45, -55, 30, -35), 'traitor': (-90, 65, -70, 50, -50), 'traitorous': (-85, 60, -65, 45, -45), 'sellout': (-55, 40, -45, 25, -25), 'ratted': (-50, 45, -40, 30, -22), 'informant': (-20, 25, -15, 20, 15), 'turncoat': (-75, 55, -60, 40, -40), 'judas': (-90, 55, -70, 40, -50), 'phishing': (-30, 30, -25, 25, 15), 'fraudulent': (-55, 35, -40, 25, 20), 'impostor': (-45, 40, -35, 30, 18), 'impersonator': (-35, 30, -25, 25, 15), 'gaslighted': (-80, 50, -70, 45, -40), # --- Achievement/success --- 'breakthrough': (55, 50, 45, 20, 35), 'excelled': (40, 25, 35, 0, 20), 'excelling': (40, 25, 35, 0, 18), 'triumphant': (70, 50, 60, 0, 40), 'victorious': (60, 45, 55, 0, 35), 'succeeding': (35, 20, 30, 0, 15), 'mastered': (45, 20, 45, 0, 25), 'mastery': (50, 15, 50, 0, 30), 'valedictorian': (50, 25, 40, 0, 35), 'summa': (40, 15, 30, 0, 28), 'honors': (35, 15, 25, 0, 22), 'dean': (5, 5, 15, 0, 18), 'certified': (20, 10, 20, 0, 15), 'licensed': (15, 5, 15, 0, 12), 'tenured': (30, 5, 35, 0, 25), 'awarded': (35, 20, 25, 0, 22), 'accolade': (35, 15, 25, 0, 22), 'recognition': (30, 15, 20, 0, 18), 'commendation': (30, 10, 20, 0, 20), 'pioneered': (45, 30, 45, 0, 30), 'innovated': (40, 30, 40, 0, 25), 'launched': (30, 35, 30, 10, 20), 'founded': (30, 20, 35, 0, 25), # --- Gratitude/appreciation --- 'thanking': (25, 10, 5, 0, 10), 'beholden': (10, 5, -15, 5, 15), 'obliged': (5, 5, -10, 5, 12), 'gracious': (35, 10, 15, 0, 18), 'graciousness': (35, 10, 15, 0, 20), 'privileged': (25, 10, 15, 0, 15), 'humbled': (20, 10, -10, 0, 18), 'honored': (35, 15, 15, 0, 20), 'touched': (35, 20, -5, 0, 18), 'sincere': (30, 10, 15, 0, 18), 'sincerely': (25, 5, 10, 0, 12), 'benevolent': (40, 10, 20, 0, 22), 'benevolence': (40, 10, 20, 0, 25), 'magnanimous': (40, 10, 25, 0, 25), 'selfless': (40, 15, -10, 0, 25), 'altruistic': (35, 10, -5, 0, 22), 'philanthropic': (30, 10, 15, 0, 25), # --- Physical sensations (emotional) --- 'butterflies': (10, 30, -15, 15, 8), 'chills': (-10, 30, -15, 15, 10), 'goosebumps': (5, 30, -10, 10, 8), 'dizzy': (-20, 25, -25, 20, 10), 'flushed': (-15, 30, -20, 15, 8), 'shivering': (-20, 25, -20, 15, 8), 'palpitations': (-30, 50, -35, 35, 15), 'breathless': (-15, 40, -25, 25, 12), 'lightheaded': (-15, 20, -20, 15, 8), 'queasy': (-25, 20, -20, 15, 8), 'pounding': (-25, 45, -20, 25, 12), 'clenching': (-30, 35, -15, 20, 10), 'tightness': (-25, 25, -20, 15, 10), 'knot': (-30, 20, -25, 15, 12), 'fluttering': (5, 25, -10, 10, 5), 'freezing': (-15, 20, -15, 10, 8), 'burning': (-30, 40, -15, 25, 12), 'stinging': (-25, 30, -15, 20, 8), 'wincing': (-20, 25, -15, 15, 5), 'flinching': (-25, 30, -25, 20, 8), 'recoiling': (-30, 35, -30, 20, 10), 'tensing': (-20, 30, -15, 15, 8), # --- Sound/music (emotional) --- 'haunting': (-20, 15, -10, 5, 25), 'soothing': (30, -15, 10, -10, 15), 'jarring': (-30, 50, -25, 30, 10), 'deafening': (-20, 60, -20, 25, 15), 'cacophony': (-30, 55, -20, 25, 10), 'melody': (20, 5, 5, 0, 12), 'melodic': (20, 5, 5, 0, 10), 'harmonious': (30, -5, 15, 0, 18), 'harmony': (30, -5, 15, 0, 18), 'dissonant': (-25, 30, -15, 15, 10), 'dissonance': (-25, 30, -15, 15, 12), 'rhythmic': (10, 10, 5, 0, 8), 'rhythm': (10, 10, 5, 0, 10), 'anthem': (25, 30, 20, 5, 22), 'requiem': (-30, 10, -5, 0, 30), 'symphonic': (15, 10, 10, 0, 18), 'symphony': (15, 10, 10, 0, 20), 'crescendo': (15, 45, 15, 15, 15), 'diminuendo': (-5, -15, -5, -5, 8), 'resonant': (15, 15, 10, 0, 15), 'resonance': (15, 15, 10, 0, 18), 'reverberating': (0, 25, 5, 5, 12), 'echoing': (-5, 15, -5, 5, 10), 'muffled': (-15, -10, -15, 5, 8), 'piercing': (-25, 50, -15, 25, 10), 'shrill': (-25, 45, -15, 20, 8), 'blaring': (-20, 50, -10, 20, 8), 'thunderous': (-10, 60, 15, 15, 20), 'whispering': (5, -10, -10, 0, 8), 'murmuring': (0, -10, -10, 0, 5), 'humming': (10, -5, 5, 0, 5), 'shrieking': (-50, 70, -20, 40, 15), 'moaning': (-35, 30, -25, 20, 10), 'groaning': (-30, 25, -20, 15, 8), 'sighing': (-15, -5, -15, 5, 5), } EMOTIONAL_VOCABULARY.update(_DOMAINS_7) # ===================================================================== # _DOMAINS_8: Power dynamics, self-talk, survival, existential crisis, # nostalgia, compliment, insult, weather/nature as emotion # ===================================================================== _DOMAINS_8 = { # --- Power dynamics / control --- 'stonewalling': (-35, 15, 30, 15, 20), 'breadcrumbing': (-25, 15, 25, 10, 12), 'benching': (-20, 10, 25, 10, 10), 'manipulating': (-40, 25, 35, 20, 22), 'coercing': (-45, 35, 40, 30, 25), 'dominating': (-30, 35, 45, 20, 22), 'isolating': (-40, 20, 30, 20, 25), 'triangulating': (-35, 25, 30, 15, 18), 'enmeshed': (-25, 20, -20, 15, 20), 'enmeshment': (-25, 20, -20, 15, 22), 'codependency': (-20, 15, -15, 10, 20), 'grooming': (-45, 20, 35, 20, 28), 'exploiting': (-45, 25, 35, 20, 25), 'silencing': (-40, 20, 35, 20, 22), 'undermining': (-35, 20, 30, 15, 18), 'dismissive': (-30, 10, 25, 10, 15), 'belittling': (-40, 20, 30, 15, 18), 'patronizing': (-30, 15, 30, 10, 15), # --- Self-talk / inner critic --- 'unworthy': (-45, 20, -35, 15, 25), 'incapable': (-35, 15, -35, 15, 20), 'defective': (-40, 15, -30, 15, 22), 'unredeemable': (-50, 15, -35, 10, 30), 'irredeemable': (-50, 15, -35, 10, 30), 'undeserving': (-40, 15, -30, 15, 22), 'flawed': (-25, 10, -15, 10, 18), 'inferior': (-35, 15, -30, 10, 20), 'insufficient': (-25, 10, -20, 10, 15), 'unfit': (-30, 15, -25, 10, 18), 'self-loathing': (-55, 30, -35, 20, 28), 'self-hatred': (-55, 35, -35, 25, 30), 'self-doubt': (-30, 20, -25, 15, 18), 'self-sabotage': (-40, 25, -20, 20, 22), 'imposter': (-30, 25, -25, 20, 18), # --- Survival / resilience language --- 'endured': (15, 15, 25, 5, 25), 'persevered': (20, 20, 30, 5, 25), 'withstood': (15, 15, 30, 5, 25), 'outlasted': (15, 10, 25, 5, 22), 'perseverance': (20, 15, 25, 5, 25), 'tenacity': (20, 20, 30, 5, 25), 'tenacious': (20, 25, 30, 5, 22), 'grit': (15, 25, 30, 10, 22), 'fortitude': (20, 15, 30, 5, 28), 'indomitable': (25, 25, 35, 5, 28), 'unyielding': (10, 20, 35, 10, 25), 'steadfast': (20, 10, 30, 5, 25), 'unwavering': (20, 10, 30, 5, 22), 'endurance': (15, 15, 25, 5, 25), 'hardy': (10, 10, 20, 5, 15), 'hardened': (-5, 10, 25, 5, 20), 'weathered': (5, 5, 20, 0, 22), 'battle-tested': (10, 15, 30, 5, 25), 'unbreakable': (20, 20, 35, 5, 28), 'undaunted': (20, 20, 30, 5, 22), 'persisting': (15, 15, 25, 10, 20), # --- Spiritual / existential crisis --- 'purposeless': (-40, 10, -25, 10, 28), 'abyss': (-45, 20, -30, 15, 35), 'existential': (-20, 15, -10, 10, 30), 'nihilism': (-40, 10, -15, 5, 30), 'nihilistic': (-40, 10, -15, 5, 28), 'nothingness': (-35, 5, -20, 5, 30), 'absurdity': (-20, 15, -10, 5, 22), 'godless': (-25, 10, -10, 5, 25), 'faithless': (-30, 10, -15, 10, 22), 'soulless': (-35, 5, -10, 5, 25), 'desolation': (-45, 10, -25, 10, 30), 'futile': (-35, 10, -25, 10, 22), 'futility': (-35, 10, -25, 10, 25), 'unmoored': (-30, 20, -25, 15, 22), 'untethered': (-20, 15, -20, 10, 18), 'directionless': (-30, 10, -20, 10, 20), 'aimless': (-25, 5, -20, 5, 18), 'barren': (-30, 5, -15, 5, 22), 'forsaken': (-50, 20, -30, 15, 30), # --- Nostalgia / memory --- 'wistful': (-10, 5, -10, 0, 18), 'pining': (-20, 15, -15, 10, 18), 'bygone': (-5, 0, -5, 0, 18), 'remembrance': (-5, 5, -5, 0, 20), 'memoir': (0, 5, 5, 0, 20), 'reminiscence': (5, 5, -5, 0, 18), 'melancholic': (-25, 5, -15, 5, 22), 'melancholy': (-25, 5, -15, 5, 22), 'reverie': (10, -5, -5, 0, 15), 'daydream': (10, -5, -5, 0, 10), 'sepia': (-5, 0, -5, 0, 12), 'faded': (-10, -5, -10, 0, 15), 'bygones': (5, -5, 5, 0, 12), 'halcyon': (20, -5, 10, 0, 20), 'waning': (-15, -5, -10, 5, 15), # --- Compliment / praise --- 'radiant': (40, 20, 15, 0, 18), 'magnificent': (45, 25, 20, 0, 25), 'exceptional': (40, 20, 20, 0, 22), 'extraordinary': (45, 25, 20, 0, 25), 'dazzling': (40, 30, 15, 0, 18), 'exquisite': (45, 15, 15, 0, 22), 'phenomenal': (45, 30, 20, 0, 22), 'glorious': (45, 25, 20, 0, 25), 'majestic': (40, 20, 25, 0, 28), 'resplendent': (40, 15, 15, 0, 22), 'luminous': (35, 15, 10, 0, 18), 'awe-inspiring': (45, 30, 15, 0, 28), 'breathtaking': (45, 35, 10, 0, 22), 'impeccable': (40, 10, 20, 0, 20), 'stellar': (40, 20, 15, 0, 18), 'sublime': (45, 15, 15, 0, 25), 'transcendent': (40, 20, 15, 0, 30), 'virtuoso': (40, 20, 25, 0, 22), # --- Insult / degradation --- 'contemptible': (-45, 25, 25, 15, 22), 'deplorable': (-45, 25, 20, 15, 25), 'despicable': (-50, 30, 25, 20, 25), 'abhorrent': (-50, 30, 20, 15, 28), 'grotesque': (-40, 25, 15, 10, 20), 'wretched': (-45, 20, -20, 15, 25), 'abominable': (-50, 30, 20, 15, 28), 'insufferable': (-40, 30, 20, 15, 18), 'detestable': (-45, 25, 20, 15, 22), 'repugnant': (-50, 25, 15, 15, 22), 'odious': (-45, 20, 20, 10, 22), 'nauseating': (-40, 25, -10, 15, 15), 'scummy': (-45, 25, 20, 10, 15), 'sleazy': (-40, 20, 15, 10, 15), 'slimy': (-35, 15, 15, 10, 12), 'spineless': (-35, 15, -30, 10, 18), 'gutless': (-35, 20, -30, 10, 18), # --- Weather / nature as emotion --- 'stormy': (-20, 35, -10, 15, 15), 'blossoming': (25, 15, 10, 0, 15), 'wilting': (-25, -5, -20, 10, 15), 'turbulent': (-25, 40, -15, 20, 18), 'serene': (30, -15, 15, -10, 18), 'overcast': (-15, -5, -10, 5, 10), 'tempestuous': (-25, 45, -15, 20, 20), 'foggy': (-10, -5, -10, 5, 8), 'misty': (-5, -5, -5, 0, 8), 'blooming': (25, 15, 10, 0, 12), 'withering': (-30, 10, -20, 10, 18), 'parched': (-20, 10, -15, 10, 12), 'thawing': (15, 5, 5, 0, 10), 'budding': (15, 10, 5, 0, 10), 'flourishing': (30, 15, 15, 0, 18), 'dormant': (-5, -10, -10, 0, 12), 'scorching': (-20, 35, -10, 15, 12), 'frigid': (-20, 10, -10, 5, 12), 'balmy': (15, -10, 5, 0, 8), } EMOTIONAL_VOCABULARY.update(_DOMAINS_8) # ── Structural force words: meaning comes from position, not isolation ── _STRUCTURAL_FORCES = { 'one': (35, 5, 15, 0, 30), # a person/someone. "no one" = zero people = isolation } EMOTIONAL_VOCABULARY.update(_STRUCTURAL_FORCES) # ── Vocabulary corrections from permanent suite miss analysis ────── _VOCAB_FIXES = { # Laughed is positive -- shared laughter = joy, not negative 'laughed': (30, 25, 15, 0, 10), # override: was -5, laughing is positive 'laughing': (25, 30, 10, 0, 8), # same fix 'chuckled': (20, 15, 10, 0, 5), # Breathe is neutral-to-positive (relief, life, calm) 'breathe': (10, -5, 10, 0, 5), # override: was -10 # Electricity is a utility noun -- neutral, not positive 'electricity': (0, 5, 0, 5, 10), # override: was +43. "shut off" = negative from verb # Loan and debt are liquid -- V near zero, high G (financial weight) 'loan': (-5, 10, -10, 15, 30), # override: was -77. Liquid. "approved" vs "defaulted" resolves 'debt': (-15, 10, -15, 10, 30), # override: was -77. "paid off debt" = positive from "paid off" # Proposed is a big positive life event 'proposed': (40, 30, 25, 5, 25), # override: was +20. Proposal = major positive # Anniversary has more weight 'anniversary': (25, 10, 10, 0, 25), # override: was +10. Remembered anniversary = love # Danced is more joyful 'danced': (35, 20, 15, 0, 12), # override: was +25 'dancing': (35, 25, 15, 0, 10), # "passed over" -- passed needs slight negative (skipped, rejected) 'passed': (-10, 5, -10, 5, 5), # liquid: "passed away" vs "passed the test" vs "passed me over" # "shut off" -- shut is a cessation/rejection word 'shut': (-30, 15, -20, 10, -10), # "shut off", "shut out", "shut down" -- all negative # "wrong" needs to be in vocab 'wrong': (-35, 15, -20, 10, -15), # error, mistake, incorrect # "through" as in "went through my phone" -- violation # Actually "through" is too common. Leave it. # "reaching" as in "always the one reaching out" 'reaching': (5, 10, 5, 5, 5), # mild positive (effort) # ── Negator contractions: these are OPERATORS not emotional words ── # They flip what follows. They should NOT carry their own massive force. # "couldnt" was V=-79 (as negative as "abandoned") -- that's wrong. # A negator's job is to reverse polarity, not add its own weight. 'couldnt': (-5, 0, -5, 0, 0), # pure operator, flips what follows 'wont': (-15, 5, -10, 5, -5), # refusal/inability -- slightly heavier than other negators 'havent': (-5, 0, -5, 0, 0), 'dont': (-8, 0, -5, 0, 0), 'cant': (-10, 5, -10, 5, -5), # inability carries slight weight 'didnt': (-5, 0, -5, 0, 0), 'shouldnt': (-5, 0, -5, 0, 0), 'wouldnt': (-5, 0, -5, 0, 0), 'isnt': (-5, 0, -5, 0, 0), 'wasnt': (-5, 0, -5, 0, 0), # ── Permanent suite miss fixes ── 'afford': (15, -5, 15, 0, 10), # override: was -32. "Can afford" = financial security 'help': (20, 10, 15, 5, 10), # override: was -10. Help is positive (assistance) 'helped': (25, 5, 15, 0, 10), 'helping': (20, 10, 15, 5, 10), 'slow': (0, 5, 0, 0, 5), # override: was -114! Tempo word, neutral. Context resolves. 'nightmares': (-60, 50, -40, 50, -30), # override: was -30. Nightmares = recurring horror 'stop': (-5, 5, 5, 0, -3), # override: was -20. "Stop" is near-neutral cessation # ── Bayesian corrections: corpus says these are coded wrong direction ── # Based on 30K EmpatheticDialogues sentences. Only high-confidence (count>=30). 'least': (-5, 0, 0, 0, 0), # was -52. "At least" = silver lining. 70% positive in corpus. 'miss': (-15, 10, -10, 5, 15), # was -42. "I miss you" = longing. 66% positive. High G. 'without': (-10, 5, -8, 0, 5), # Slight neg lean. "Without me"=exclusion. "Without stress"=relief (handled by absence scope). # ── Math verification fixes: words pulling in wrong direction ── 'front': (0, 5, 5, 0, 5), # override: was V=+32 D=+52. "Front" is a location, not emotional. 'everything': (0, 0, 0, 0, 0), # AMPLIFIER. Scope = ALL. No emotional force. Amplifies context direction. 'realized': (-5, 5, 5, 0, 5), # override: was V=+36. "Realized" is neutral cognition, context resolves. 'group': (5, 5, 5, 0, 10), # override: was V=+32. "Group" is neutral noun. # ── Math pass 2: words identified from 27-miss trace ── 'against': (-5, 10, 5, 0, 5), # override: was V=-32. Preposition/connector, not emotional. "Against all odds" = neutral. 'pressure': (-10, 10, -5, 5, 10), # override: was V=-42. "Blood pressure" = clinical. Context resolves. 'one': (5, 0, 0, 0, 10), # override: was V=+35. "The one reaching out" ≠ positive. Pronoun/number, low V. 'small': (0, 0, 0, 0, 5), # override: was V=+42. Size descriptor, not emotional. 'whole': (0, 0, 0, 0, 5), # override: was V=+29. Scope word like "everything". Amplifier, not emotional. 'grocery': (0, 0, 0, 0, 5), # override: was V=+42. Neutral noun. Store, not emotion. 'understands': (10, 0, 5, 0, 5), # override: was pulling positive. Neutral cognition with slight positive. 'nobody': (-8, 5, -5, 5, -5), # Minimal own force. NEGATOR role + force flow do the real work. 'needs': (5, 10, 0, 10, 10), # Slight positive lean. "Needs me"=valued, "needs space"=pushing away. Liquid. 'cares': (20, 5, 10, 0, 10), # "cares about me" = loved. Positive. 'caring': (20, 5, 10, 0, 10), 'notice': (5, 10, 5, 0, 10), # Observation/attention. Near-neutral. 'noticed': (5, 10, 5, 0, 10), 'medicine': (10, 5, 5, 5, 25), # Healing tool. Positive purpose but not strongly. High G -- health matters. 'kind': (5, 5, 5, 0, 5), # override: was V=+50. Liquid: "kind person"=positive, "another kind"=type/neutral. 'make': (5, 5, 5, 0, 5), # override: was V=+15. Neutral action verb. Context resolves. 'working': (0, 5, 0, 0, 5), # override: was V=+8. Status indicator: ON/OFF. Not positive or negative. 'between': (-10, 5, -10, 5, 5), # "Choose between" = forced split. Losing one for the other. # ── Novel sentence miss fixes ── 'exam': (0, 15, 0, 10, 15), # override: was -24. Neutral event. "Passed the exam" = context resolves. 'passed': (5, 5, 5, 0, 5), # override: was -10. "Passed" = succeeded/completed. Slight positive. 'cooked': (15, 5, 10, 0, 5), # override: was -35! Cooking = act of care/service. Positive. 'cooking': (15, 10, 10, 0, 5), 'cook': (10, 5, 10, 0, 5), 'steps': (5, 5, 5, 0, 5), # "First steps" = progress/milestone. Slight positive. 'took': (0, 5, 5, 0, 5), # override: was -10. Neutral action verb. 'message': (0, 5, 0, 0, 5), # override: was +32. Neutral communication noun. 'messages': (0, 5, 0, 0, 5), 'reply': (5, 5, 5, 0, 5), # "Didnt reply" = silence. Reply itself is neutral-positive. 'down': (-5, 5, -5, 0, 0), # override: was -15. Directional. "Put down" vs "calmed down". 'dog': (5, 5, 5, 0, 20), # override: was +39. Relationship noun, not strongly positive. High G. 'again': (0, 5, 0, 0, 5), # override: was -10. Neutral repetition. "Try again" = resilience. 'space': (-10, -5, 5, 0, 5), # "Needs space" = distance/rejection context. Slight neg. 'paid': (20, 5, 15, 0, 10), # override: was +15. "Paid off" = accomplishment. Slightly stronger. 'called': (-10, 10, -5, 10, 5), # override: was -5. "Got called in" = summoned = slight threat. 'through': (-5, 5, -5, 0, 5), # "Went through" = searched/violated. Slight neg. 'first': (0, 5, 0, 0, 5), # Ordinal position setter. "First to die" vs "first to graduate". Context resolves. 'off': (0, 0, 0, 0, 0), # override: was -5. Directional/spatial. "Paid off" ≠ negative. 'stopping': (0, 5, 0, 0, 0), # override: was -5. Neutral action. "Without stopping" = continuous. 'debt': (-10, 5, -10, 5, 20), # override: was -15. High G (financial weight) but less V. "Paid off debt" = relief. 'crying': (-15, 15, -10, 5, -5), # override: was -25. "Without crying" = achievement. Less negative V. 'mile': (0, 5, 0, 0, 5), # override: was +10. Distance measurement. Neutral. 'ran': (0, 15, 5, 5, 5), # override: was +5. Movement verb. Could be running FROM or TO. Context resolves. 'finally': (15, -10, 15, -10, 10), # override: was +5. Wall breaker. Pressure RELEASE. Relief + achievement. 'groceries': (0, 0, 0, 0, 15), # override: was G=5. Food = human need = high gravity. 'came': (5, 5, 5, 0, 5), # "came to my birthday" = showed up = positive. 'tough': (-5, 10, 10, 0, 10), # was -20. "Tough" = strong/resilient. 79% positive. 'problems': (-10, 10, -5, 5, 10), # was -44. "No problems", "solved it". 63% positive. 'trip': (5, 10, 5, 0, 10), # was -24. "Amazing trip" vs "tripped". 64% positive. 'remember': (5, 5, 5, 0, 10), # was -23. "Remember" = connection. 68% positive. 'interview': (0, 10, 0, 5, 10), # was -24. Neutral event. 66% positive. 'far': (0, 5, 0, 0, 5), # was -24. "So far so good". 66% positive. 'distance': (0, 5, 0, 0, 5), # was -62. Neutral measurement. 50% each. 'low': (-10, 5, -10, 0, 5), # was -52. "Low" can be "low key". 58% positive. 'stress': (-15, 15, -10, 10, 10), # was -52. 50% each. Near neutral with slight neg lean. 'fall': (-10, 15, -10, 5, 10), # was -52. "Fall in love" vs "fall down". 53% positive. 'loss': (-25, 10, -15, 10, 15), # was -60. Still negative but less extreme. 42% positive. 'public': (0, 10, 0, 0, 10), # override: was +28. Neutral location, not positive 'office': (0, 5, 0, 5, 8), # neutral location 'odds': (-5, 10, -5, 5, 10), # override: was -10. "Against all odds" = neutral noun 'exist': (0, 0, 0, 0, 5), # override: was +39. State of being, neutral 'existence': (0, 0, 0, 0, 10), 'idea': (5, 5, 5, 0, 10), # override: was +50. Neutral noun with some G 'class': (0, 5, 0, 0, 10), # override: was +34. Group of people, neutral noun 'baby': (10, 10, 5, 0, 25), # override: was 0. Relationship noun, positive G 'stepdad': (0, 5, 0, 0, 30), # relationship noun, neutral V, high G 'stepfather': (0, 5, 0, 0, 30), 'stepmom': (0, 5, 0, 0, 30), 'stepmother': (0, 5, 0, 0, 30), 'treats': (-10, 10, 10, 5, 5), # behavioral verb, slightly negative (implies judgment) 'punishing': (-30, 20, 30, 10, -15), # power verb, punisher has D 'answered': (5, 5, 5, 0, 5), # neutral action # ── Liquid word V-neutralization: high G, near-zero V ── # These words have strong MASS (gravity) but their polarity comes from context. # "kick" = violence OR winning goal. "kill" = murder OR slang for dominate. # Pinning V kills the context resolution. Keep A/G, zero V. 'kick': (-15, 40, 5, 5, 20), # override: was V=-127. Lean negative but context can flip. 'kicked': (-15, 40, 5, 5, 20), 'kicking': (-15, 40, 5, 5, 20), 'kill': (-40, 40, 10, 10, 25), # override: was V=-127. Still negative lean -- killing is bad. But "killed it" can override. 'killed': (-40, 40, 10, 10, 25), 'killing': (-40, 40, 10, 10, 25), 'kills': (-40, 40, 10, 10, 25), 'shot': (-20, 35, -5, 10, 20), # "Got shot" = bad (majority case). "Great shot" = context overrides. 'shots': (0, 35, 5, 10, 20), 'poor': (-15, 5, -15, 5, 20), # override: was V=-127. "Poor" = pity or poverty. Context resolves. 'blow': (0, 30, 5, 5, 15), # override: was V=-42. "Blew my mind" vs "blew up in my face". 'blew': (0, 30, 5, 5, 15), 'burn': (-10, 25, 5, 5, 15), # override: was V=-79. "Sick burn" vs "burned down". 'burned': (-10, 25, 5, 5, 15), 'burning': (-10, 25, 5, 5, 15), 'fire': (10, 35, 10, 5, 20), # "Thats fire" = slang positive. "Fire" as noun = neutral/positive energy. 'fired': (-25, 30, -15, 10, 20), # "Got fired" = negative. Verb form leans negative. 'crash': (-10, 30, -5, 10, 15), # override: was V=-67. "Crashed at his place" vs "car crashed". 'crashed': (-10, 30, -5, 10, 15), 'drop': (-5, 20, 5, 5, 10), # override: was V=-77. "Beat dropped" vs "dropped me". 'dropped': (-5, 20, 5, 5, 10), 'slam': (0, 35, 10, 5, 15), # "Slam dunk" vs "slammed the door". High A. 'slammed': (0, 35, 10, 5, 15), 'snap': (-5, 25, 5, 5, 10), # override: was V=-30. "Snapped at me" vs "snap out of it". 'snapped': (-5, 25, 5, 5, 10), 'strike': (0, 30, 10, 5, 15), # "Struck gold" vs "struck me". 'struck': (0, 30, 10, 5, 15), 'nail': (0, 15, 5, 0, 10), # "Nailed it" vs "stepped on a nail". 'nailed': (0, 15, 5, 0, 10), 'scream': (-15, 50, -5, 10, 15), # slight neg lean. "Screamed at me" > "scream of joy" in frequency. 'screamed': (-15, 50, -5, 10, 15), 'screaming': (-15, 50, -5, 10, 15), 'screams': (-15, 50, -5, 10, 15), 'feeding': (5, 10, 5, 0, 10), # slight pos lean. "Feeding baby" most common usage. 'impact': (-10, 20, 5, 5, 15), # slight neg lean. "Impact" alone = collision. Context overrides. 'noisy': (-10, 30, -5, 5, 5), # override: was V=-127. Annoying, not devastating. 'false': (-20, 15, -10, 5, -5), # override: was V=-127. Adjective, not catastrophe. 'shark': (0, 25, 15, 5, 15), # override: was V=-127. Shark = predator OR investor. Liquid. 'rat': (-10, 15, -5, 5, 5), # override: was V=-127. Rat = snitch OR animal. Liquid. 'roach': (-15, 15, -10, 5, 5), # override: was V=-127. Pest but not devastating. 'slap': (-10, 35, 10, 5, 10), # override: was V=-127. "Slap" = violence OR "that slaps" = great. 'bipolar': (-10, 15, -10, 5, 20), # override: was V=-127. Clinical term, not emotional extreme. 'poison': (-20, 20, -10, 10, 15), # override: was V=-127. "Toxic" but not max negative. 'cringe': (-15, 20, -10, 5, 5), # override: was V=-127. Embarrassing, not devastating. # ── Novel stress test round 2 ── 'party': (5, 10, 5, 0, 15), # override: was V=+10. Event noun, context resolves. "Nobody at my party" ≠ positive. 'test': (0, 10, 0, 5, 10), # Neutral evaluation. "Test came back" = waiting for result. 'negative': (-5, 5, -5, 5, 5), # override: was V=-25. Medical "negative" = GOOD. Liquid word. 'waitlisted': (-15, 10, -15, 10, 10), # Rejection-adjacent. Limbo. Not accepted. 'towed': (-25, 15, -20, 15, -10), # Property taken by force. 'slept': (5, -10, 5, 0, 5), # Neutral action. "Slept well" = positive. Context resolves. 'eaten': (5, 0, 5, 0, 5), # Neutral action. "Havent eaten" = deprivation from absence scope. # ── Novel stress test round 3 ── 'keep': (0, 5, 5, 0, 5), # override: was +28. Continuity operator. "Keep trying" OR "keep failing". Context resolves. 'keeping': (0, 5, 5, 0, 5), 'kept': (0, 5, 5, 0, 5), 'sell': (-10, 5, -5, 5, 5), # Giving up possession. Slight negative (loss of ownership). 'selling': (-10, 5, -5, 5, 5), 'sold': (-10, 5, -5, 5, 5), 'brought': (10, 5, 10, 0, 5), # "Brought me X" = delivered/gave. Act of service. Slight positive. 'bring': (5, 5, 5, 0, 5), 'shoulder': (5, -5, 5, 0, 10), # "Cry on my shoulder" = support/comfort. Slight positive. # ── Temporal/duration words: these amplify the DURATION of surrounding emotion ── # "Long painful" = pain lasted longer. "Brief joy" = joy was fleeting. # These are context-dependent -- their V comes from what they modify. 'long': (-5, 5, 0, 0, 5), # duration extender. Slight neg lean (long wait, long day). 'dragged': (-15, -5, -10, 0, -5), # "dragged on" = lasted too long = negative duration 'dragging': (-15, -5, -10, 0, -5), 'endless': (-15, 10, -10, 5, -5), # override: was -15. Duration amplifier, slight neg. 'prolonged': (-10, 5, -5, 0, -5), 'lingering': (-5, 5, -5, 0, 5), # could be positive (lingering kiss) or negative (lingering pain) 'lasting': (5, 0, 5, 0, 5), # "lasting impact" = enduring, slight positive 'brief': (0, -5, 0, 0, -5), # short duration, reduces impact 'short': (0, -5, 0, 0, -5), # duration reducer 'fleeting': (-5, -5, -5, 0, -5), # impermanent, can be bittersweet 'momentary': (0, -5, 0, 0, -5), 'instant': (0, 10, 0, 5, 0), # speed, not emotion 'sudden': (-5, 30, -5, 10, 0), # surprise/shock timing 'abrupt': (-10, 20, -10, 5, -5), # jarring timing 'quickly': (0, 10, 5, 5, 0), # speed 'rapid': (0, 15, 0, 5, 0), 'rushed': (-10, 15, -10, 10, -5), # too fast = negative 'hasty': (-10, 10, -10, 5, -5), 'repetitive': (-15, -5, -10, 0, -5), 'monotonous': (-20, -10, -10, 0, -5), 'fast': (0, 20, 5, 5, 0), # override: was +62! Speed, not emotion. # ── Critique/quality words ── 'formulaic': (-25, 5, -10, 0, -10), 'wooden': (-30, -10, -15, 0, -10), 'lifeless': (-35, -15, -20, 0, -15), 'lackluster': (-25, 5, -10, 0, -10), 'overwrought': (-20, 15, -10, 0, -5), 'muddled': (-20, 10, -15, 0, -10), 'plodding': (-25, -10, -10, 0, -10), 'derivative': (-20, 5, -10, 0, -10), 'nuanced': (20, 5, 10, 0, 10), 'mesmerizing': (35, 15, 15, 0, 15), 'riveting': (35, 25, 15, 0, 15), 'captivating': (30, 15, 10, 0, 12), 'gripping': (30, 20, 10, 0, 12), 'superb': (40, 10, 15, 0, 15), 'exquisite': (35, 5, 10, 0, 15), 'mediocre': (-20, -5, -10, 0, -10), 'forgettable': (-20, -10, -10, 0, -10), 'predictable': (-15, -5, -10, 0, -5), 'cliche': (-20, 5, -10, 0, -10), 'contrived': (-25, 5, -15, 0, -10), 'pretentious': (-25, 10, 10, 0, -10), # ── Topic/genre nouns: these are SUBJECTS, not assessments ── # "A terrible comedy" -- comedy is the topic, terrible is the assessment. # Topic words should be near-neutral V with appropriate G (mass/importance). 'comedy': (5, 10, 5, 0, 15), # override: was +80! Genre, not emotion. 'horror': (-5, 15, 0, 5, 15), # override: was -114! Genre, not terror. 'drama': (0, 10, 0, 0, 15), # override: was -18. 'action': (0, 15, 5, 5, 10), # override: was +58. Activity type. 'adventure': (5, 10, 5, 0, 10), # override: was +50. 'crime': (-10, 10, -5, 5, 15), # override: was -89. Topic, not crime happening. 'war': (-10, 15, -5, 5, 20), # override: was -77. Topic, not being in war. 'basketball': (0, 10, 0, 0, 10), # override: was +32. Sport, not emotion. 'baseball': (0, 10, 0, 0, 10), # override: was +35. 'football': (0, 10, 0, 0, 10), # override: was +56. 'soccer': (0, 10, 0, 0, 10), # override: was +43. 'theater': (0, 5, 0, 0, 10), # override: was +58. Venue, not emotion. 'theatre': (0, 5, 0, 0, 10), 'movies': (0, 5, 0, 0, 10), # override: was +50. 'movie': (0, 5, 0, 0, 10), 'acting': (0, 5, 0, 0, 10), # override: was +43. Skill, not emotion. 'scenery': (5, 0, 0, 0, 10), # override: was +55. Visual setting. 'director': (0, 5, 5, 0, 10), # override: was +32. Role, not emotion. 'character': (0, 5, 0, 0, 10), # override: was +35. Story element. # ── SST-2 vocabulary mining: words causing systematic errors ── 'humor': (5, 10, 5, 0, 10), # override: was +50. Topic noun, not emotional. 'pretty': (0, 5, 0, 0, 5), # override: was +50. "Pretty boring" = amplifier. "Pretty girl" = positive. Liquid. 'special': (10, 5, 5, 0, 10), # override: was +50 then +5. "Special friend" = positive. "Nothing special" = context. 'itself': (0, 0, 0, 0, 0), # override: was +28. Pronoun. Zero force. 'experience': (0, 5, 0, 0, 10), # override: was +29. Topic noun. 'sense': (0, 5, 0, 0, 5), # override: was +29. "Makes no sense" vs "sense of humor". Liquid. 'familiar': (0, 5, 0, 0, 5), # override: was +29. "Too familiar" = derivative. Context resolves. 'often': (0, 0, 0, 0, 0), # override: was +39. Frequency word. Zero force. 'big': (0, 10, 5, 0, 10), # override: was +32. Size descriptor. 'new': (0, 5, 0, 0, 5), # override: was +29. Temporal/novelty. Near neutral. 'young': (0, 5, 0, 0, 5), # override: was +29. Age descriptor. 'emotional': (0, 15, 0, 0, 10), # override: was +29. Describes intensity, not polarity. 'fine': (-5, -5, 0, 0, 5), # override: was -32 then +5. "Im fine" = mask. "Just fine" = adequate. Slight neg lean. 'minor': (0, 5, 0, 0, 5), # override: was -59. "A minor masterpiece" ≠ negative. Size descriptor. 'revenge': (-10, 15, 5, 5, 15), # override: was -77. Topic noun in reviews. # ── Gemini consensus fixes: words causing engine disagreement ── 'human': (0, 5, 0, 0, 10), # override: was +58. Species noun, not emotional. 'greatly': (0, 10, 0, 0, 0), # override: was +56. Amplifier, not positive. 'choosing': (0, 5, 5, 0, 5), # override: was +48. Action verb. "I'll be choosing" = control. 'training': (0, 10, 5, 0, 5), # override: was +48. Activity noun. 'station': (0, 5, 0, 0, 5), # override: was +50. Location noun. 'treasure': (5, 10, 5, 0, 15), # override: was +50. Object noun with gravity. 'nest': (0, 5, 0, 0, 5), # override: was +42. Location noun. 'constant': (0, 5, 0, 0, 5), # override: was +51. Frequency descriptor. 'directly': (0, 5, 5, 0, 0), # override: was +55. Manner adverb. 'useful': (10, 5, 5, 0, 5), # override: was +58. Mild positive utility. 'everybody': (0, 5, 0, 0, 10), # override: was +42. Scope word like everything. AMPLIFIER. 'offer': (5, 5, 5, 0, 5), # override: was +56. Neutral action. 'offered': (5, 5, 5, 0, 5), 'trust': (15, 5, 10, 0, 15), # override: was +106! Way too high. "Trust me" vs "I don't trust you." 'okay': (0, -5, 0, 0, 0), # override: was +28. "I'm okay" = mask. "Okay but" = hedge. Near neutral. 'plan': (0, 5, 5, 0, 5), # override: was +51. Action noun. 'terminal': (0, 5, 0, 0, 5), # override: was -50. Computer terminal, not death. 'opposite': (0, 5, 0, 0, 0), # override: was -62. Direction/contrast word. 'argue': (-5, 15, 5, 5, 5), # override: was -42. Debate verb. Mild negative lean. 'harder': (-20, 10, -10, 5, -5), # override: was -52. Difficulty. # ── Internet/Twitch cultural tokens (dual-state: surface ≠ meaning) ── # These are cultural compression artifacts, not standard words. # Engine reads SURFACE. Model should read UNDERLYING. 'gg': (-10, 5, -5, 0, -5), # "good game" → culturally: resignation/hyperbolic defeat 'rip': (-15, 10, -10, 5, -5), # override: was -114! Culturally: "oh well that sucks" not actual death 'fr': (0, 10, 5, 0, 0), # "for real" = emphasis/agreement. Neutral amplifier. 'lol': (5, 10, 5, 0, 5), # override: was +39. Often nervous/deflection/padding, not genuine joy. 'lmao': (10, 15, 10, 0, 5), # override: was +50. Amusement but often performative. 'lul': (5, 10, 5, 0, 5), # = lol. Twitch variant. # ── Informal contractions (map to their expanded forms) ── 'gonna': (0, 5, 5, 5, 0), # = going to. Forward intent. Slight urgency. 'wanna': (0, 10, 0, 5, 0), # = want to. Desire. Slight arousal. 'gotta': (0, 10, 0, 10, 0), # = got to. Obligation. Urgency. 'kinda': (0, 0, 0, 0, 0), # = kind of. Hedge. Zero force. 'tryna': (0, 10, 5, 5, 0), # = trying to. Effort. Slight arousal. 'imma': (0, 10, 10, 5, 0), # = I'm going to. Declaration. Slight D. 'finna': (0, 10, 10, 10, 0), # = fixing to / going to. Strong forward intent. 'lemme': (0, 5, 5, 5, 0), # = let me. Request for action. 'dunno': (0, 0, -5, 0, 0), # = don't know. Uncertainty. # ── Internet slang with emotional weight ── 'lowkey': (0, -5, 0, 0, 0), # understated. Dampener on what follows. 'highkey': (0, 10, 0, 0, 0), # amplified. Booster on what follows. 'deadass': (0, 10, 10, 0, 0), # = seriously, for real. Emphasis. 'sus': (-10, 10, -5, 5, -5), # suspicious. Mild negative. 'mid': (-15, 0, 0, 0, -5), # mediocre, underwhelming. Negative. 'bussin': (25, 15, 10, 0, 10), # = amazing, delicious. Strong positive. 'slay': (20, 15, 15, 0, 10), # = killed it, amazing. Positive. 'bet': (5, 5, 10, 0, 5), # = okay, agreed, for sure. Slight positive. 'based': (10, 10, 15, 0, 10), # = authentic, bold. Positive. 'cringe': (-20, 10, -10, 0, -10), # embarrassing, awkward. Negative. 'cope': (-15, 5, -10, 0, -10), # delusional self-comfort. Negative. 'ratio': (-10, 15, 15, 0, -5), # getting ratioed = dunked on. Negative for target. # ── Gemini+Claude consensus round 2 ── 'sort': (0, 5, 0, 0, 5), # override: was +37. "Sort of" = hedge. Neutral. 'convince': (0, 10, 5, 5, 5), # override: was +46. Neutral action. 'baked': (0, 5, 0, 0, 0), # override: was +31. Cooking OR slang. Neutral. 'gas': (0, 5, 0, 0, 5), # override: was +28. Substance noun. Neutral. 'activities': (0, 5, 0, 0, 5), # override: was +35. Action noun. Neutral. 'knowledge': (5, 5, 5, 0, 10), # override: was +39. Information noun. Slight positive. 'released': (0, 10, 5, 5, 5), # override: was +35. Action verb. Context resolves. 'gang': (-10, 15, -5, 5, 15), # override: was -79. Group noun. "My gang" vs "gang violence." 'awfully': (0, 10, 0, 0, 0), # override: was -94! Amplifier. "Awfully nice" = very nice. 'bummed': (-15, 5, -10, 0, -5), # override: was -47. Mild disappointment. 'ugh': (-10, 10, -5, 0, -5), # override: was -42. Mild disgust/annoyance. 'shady': (-10, 10, -5, 5, -5), # override: was -40. Suspicious but could be playful. # ── Novel miss fixes cycle 11 ── 'highway': (0, 5, 0, 0, 5), # override: was +29. Location noun. Neutral. 'away': (-10, 5, -5, 0, -5), # override: was -15. Slight neg lean. "Far away" = distance. "Went away" = departure. 'relationship': (10, 5, 5, 0, 25), # override: was +37. Still slight positive (relationships have value) but less extreme. # ── SST-2 round 2: next batch of over-weighted words ── 'like': (5, 0, 0, 0, 0), # override: was +15. FILLER/comparison word. "Like a dream" ≠ positive. 'watch': (0, 5, 0, 0, 5), # override: was +50. Action verb. "Watch a movie" ≠ positive. 'focus': (0, 5, 5, 0, 5), # override: was +32. Attention verb. Neutral. 'full': (0, 5, 0, 0, 5), # override: was +28. Quantity descriptor. "Full of" ≠ positive. 'fun': (15, 15, 10, 0, 5), # override: was +28. Still positive but less extreme. 'funny': (15, 15, 10, 0, 5), # override: was +28. Same. # Discovery verbs -- zero polarity, the OBJECT determines the emotion 'found': (0, 10, 5, 5, 5), # override: was -5. Context resolves. 'find': (0, 10, 5, 5, 5), 'discovered': (0, 10, 5, 5, 5), 'discover': (0, 10, 5, 5, 5), # ── Slurs/derogatory: these carry heavy negative force ── 'whore': (-60, 30, -30, 10, -20), 'slut': (-55, 25, -25, 10, -18), 'bitch': (-50, 30, -20, 10, -15), # can be reclaimed but default = slur 'hoe': (-45, 20, -20, 5, -12), 'skank': (-50, 20, -25, 5, -15), # Bookend compound command tokens (collapsed from "shut [spice] up" etc.) 'shutup': (-40, 40, 40, 15, -10), # silence command. D+40 = controller has power. V negative. 'getout': (-45, 50, 45, 20, -15), # expulsion command. Stronger than shutup. 'fuckoff': (-50, 50, 40, 15, -15), # rejection command. Strong negative. 'backoff': (-30, 35, 30, 10, -10), # distance command. Less aggressive. 'pissoff': (-40, 40, 35, 10, -12), # rejection. Similar to fuckoff but milder. # ── Structural edge case fixes ── 'fought': (-15, 30, 15, 10, 15), # override: was -94! "Fought FOR me" = advocated. "Fought me" = violence. Liquid. 'fighting': (-15, 30, 15, 10, 15), 'survived': (30, 10, 25, 0, 20), # override: was +10. Surviving = overcoming death. Strongly positive. 'survival': (25, 10, 20, 0, 20), 'surgery': (-10, 20, -10, 20, 25), # override: was -25. Medical procedure, high G. Not inherently negative. 'benign': (35, -15, 20, -10, 15), # override: was +25. "Benign" = NOT dangerous. Relief. Stronger positive. 'charges': (-10, 10, -10, 10, 15), # override: was -20. Legal noun, slight neg lean but context resolves. 'tumor': (-20, 15, -15, 15, 25), # override: was -40. Medical noun. High G. Less extreme V. } EMOTIONAL_VOCABULARY.update(_VOCAB_FIXES) # ══════════════════════════════════════════════════════════════════════ # SESSION 2026-04-03: Targeted V5.5 fixes. Original vocab + surgical overrides. # ══════════════════════════════════════════════════════════════════════ _V55_FIXES = { 'myself':(0,0,0,0,5), 'yourself':(0,0,0,0,5), 'himself':(0,0,0,0,5), 'herself':(0,0,0,0,5), 'themselves':(0,0,0,0,5), 'traffic':(0,0,0,0,0), 'weather':(0,0,0,0,0), 'homework':(0,3,0,0,0), 'weekend':(5,5,0,0,3), 'fruit':(3,0,0,0,0), 'cream':(3,0,0,0,0), 'tax':(-5,5,-5,0,5), 'humid':(-5,5,-5,0,3), 'hasnt':(0,0,0,0,0), 'hardly':(0,0,-3,0,0), 'aged':(0,0,-3,0,5), 'spit':(-15,15,10,5,5), 'removed':(-10,5,-5,5,10), 'blast':(0,15,5,0,5), 'snake':(-10,15,10,5,10), 'spider':(-5,10,0,0,5), 'washed':(0,5,0,0,3), 'birth':(0,15,0,5,35), 'only':(0,0,-3,0,0), 'just':(0,0,-3,0,0), 'merely':(0,0,-5,0,0), 'simply':(0,0,0,0,0), 'barely':(-5,5,-5,5,3), 'almost':(0,5,0,5,5), 'begging':(-10,15,-25,15,12), 'kill':(-40,40,10,10,25), 'killed':(-40,40,10,10,25), 'killing':(-40,40,10,10,25), 'suicide':(-80,30,-20,20,40), 'suicidal':(-70,25,-20,15,35), 'pregnant':(0,15,0,10,40), 'adopted':(0,5,0,0,25), 'diagnosed':(0,15,-5,15,40), 'deployed':(0,15,0,15,35), 'overdosed':(-20,20,-20,20,35), 'relapsed':(-40,15,-20,10,35), 'relapse':(-40,15,-20,10,35), 'sober':(10,-5,15,0,20), 'whore':(-20,25,-10,5,25), 'slut':(-15,20,-10,5,20), 'bitch':(-10,25,10,5,20), 'hoe':(-10,15,-5,0,15), 'bastard':(-10,20,5,5,15), 'asshole':(-20,20,10,5,10), 'dick':(-15,15,5,0,10), 'prick':(-20,15,5,0,10), 'cunt':(-25,25,-10,5,20), 'jump':(0,3,0,0,0), 'want':(0,5,0,5,3), 'born':(0,10,0,0,30), 'living':(0,5,0,0,20), 'alive':(0,5,0,0,15), 'live':(0,5,0,0,15), 'life':(0,0,0,0,40), 'pills':(-10,10,-10,15,20), 'point':(0,0,0,0,5), 'deserve':(0,0,0,0,10), 'disappear':(-15,5,-15,0,20), 'disappeared':(-15,5,-15,0,20), 'lost':(-20,5,-15,0,20), 'lol':(15,15,5,0,-5), 'nice':(15,0,5,0,3), 'crying':(-25,15,-15,5,-10), 'best':(25,10,15,0,10), 'easier':(15,-5,5,0,5), 'trusted':(5,0,5,0,15), 'terrible':(-30,10,-15,5,-8), 'horrible':(-30,10,-15,5,-8), 'awful':(-25,10,-10,5,-5), 'comeon':(0,10,-5,10,5), 'killedit':(30,20,25,0,10), 'goeshard':(25,20,20,0,8), 'closedon':(20,10,15,0,15), # ── V1 words too extreme for FORCE_SCALE=1.4 ── 'hurt':(-25,15,-15,10,-10), 'hurts':(-25,15,-15,10,-10), 'pain':(-30,20,-25,15,-15), 'ache':(-15,10,-10,5,-5), 'sore':(-15,10,-10,5,-5), 'sad':(-25,10,-10,0,-10), 'sadness':(-30,10,-15,0,-12), 'angry':(-25,30,15,10,10), 'anger':(-25,30,15,10,10), 'scared':(-25,25,-20,15,-10), 'fear':(-30,25,-25,15,-12), 'worried':(-20,15,-10,10,-8), 'anxious':(-25,20,-15,15,-10), 'depressed':(-35,5,-25,5,-20), 'lonely':(-25,5,-15,0,-15), 'miserable':(-35,10,-20,5,-15), 'hopeless':(-35,5,-30,5,-20), 'devastated':(-35,15,-25,10,-20), 'heartbroken':(-35,15,-20,10,-18), 'furious':(-30,35,20,15,10), 'livid':(-30,35,20,15,10), 'terrified':(-30,30,-25,20,-15), 'horrified':(-30,25,-20,15,-12), 'disgusted':(-25,20,10,5,-8), 'ashamed':(-25,10,-20,5,-15), 'embarrassed':(-20,15,-15,5,-10), 'frustrated':(-20,20,-10,10,-8), 'annoyed':(-15,10,-5,5,-5), 'irritated':(-15,10,-5,5,-5), 'jealous':(-20,15,-10,5,-8), 'envious':(-20,10,-10,0,-8), 'guilty':(-25,10,-20,5,-15), 'regret':(-25,10,-15,5,-12), 'grief':(-35,10,-20,5,-20), 'mourning':(-30,5,-15,0,-18), 'panicked':(-30,35,-25,25,-15), 'terror':(-35,35,-30,25,-18), 'hate':(-35,30,10,5,10), 'hatred':(-35,25,10,5,12), 'love':(40,10,10,0,20), 'loved':(35,5,10,0,18), 'happy':(30,10,10,0,10), 'happiness':(35,10,10,0,12), 'joy':(35,15,10,0,12), 'joyful':(30,15,10,0,10), 'excited':(30,25,10,5,8), 'thrilled':(30,25,10,5,10), 'grateful':(30,5,10,0,15), 'thankful':(25,5,10,0,12), 'proud':(30,10,20,0,15), 'confident':(25,15,20,0,10), 'peaceful':(20,-10,10,0,10), 'calm':(15,-10,10,0,8), 'hopeful':(25,10,10,5,10), 'optimistic':(25,10,10,0,10), 'amused':(20,15,5,0,5), 'entertained':(20,10,5,0,5), 'inspired':(25,15,15,0,10), 'motivated':(20,15,15,5,8), 'relieved':(25,-5,10,-5,10), 'wonderful':(35,15,10,0,12), 'amazing':(35,20,10,0,10), 'awesome':(30,20,10,0,8), 'fantastic':(30,20,10,0,10), 'beautiful':(30,5,10,0,12), 'gorgeous':(25,10,10,0,10), 'brilliant':(30,15,15,0,10), 'excellent':(25,10,10,0,8), 'perfect':(30,10,15,0,10), 'lovely':(25,5,10,0,10), 'delightful':(25,10,10,0,8), 'pleasant':(20,5,5,0,5), 'sweet':(20,5,5,0,8), 'worthless':(-35,10,-35,5,-20), 'useless':(-25,5,-20,0,-12), 'nothing':(-30,-5,-20,5,-15), 'death':(-35,25,-25,15,-18), 'die':(-35,35,-25,25,-18), 'dead':(-35,20,-25,10,-15), 'agony':(-35,30,-25,15,-18), 'anguish':(-35,25,-25,10,-18), 'despair':(-35,10,-30,5,-20), 'suffering':(-30,15,-20,10,-15), 'abuse':(-35,25,-20,15,-18), 'torture':(-35,30,-25,15,-18), } EMOTIONAL_VOCABULARY.update(_V55_FIXES) # ── New words added 2026-04-03 (original forces preserved) ── _NEW_WORDS = { 'about' : ( +0, +1, +0, +0, -8), 'above' : ( +0, +0, +0, +0, -5), 'acted' : ( +2, +1, +0, +0, -5), 'actor' : ( +0, +0, +0, +0, +2), 'actors' : ( +0, +0, +0, +0, +2), 'adaptation' : ( +0, +0, +0, +0, +3), 'ads' : ( +0, +0, +0, +0, +2), 'adults' : ( -1, +0, +0, +0, +3), 'after' : ( +0, +0, +0, +0, -8), 'aint' : ( +0, +0, +0, +0, +0), 'alien' : ( -3, +5, -1, +0, -1), 'aliens' : ( -1, +5, +0, +0, +0), 'all' : ( +8, +5, +2, +0, +8), 'also' : ( +0, +0, +0, +0, -8), 'although' : ( +0, +0, +0, +0, +0), 'american' : ( +0, +0, +0, +0, +0), 'among' : ( +0, +0, +0, +0, +0), 'amusing' : ( +12, +9, +3, +0, -5), 'and' : ( +0, +0, +0, +0, +0), 'anyone' : ( +0, +0, +0, +0, +0), 'apex' : ( +1, +1, +0, +0, +5), 'are' : ( +0, +0, +0, +0, -5), 'arent' : ( +0, +0, +0, +0, +0), 'back' : ( +1, +1, +0, +0, -1), 'ball' : ( +0, +0, +0, +0, +6), 'ban' : ( +0, +0, +0, +0, +6), 'banned' : ( +0, +0, +0, +0, +2), 'because' : ( +0, +0, +0, +0, +0), 'bigsad' : ( +0, +0, +0, +0, +0), 'bits' : ( +0, +0, +0, +0, +4), 'bleedpurplehd' : ( +0, +0, +0, +0, +0), 'blend' : ( +0, +0, +0, +0, +2), 'both' : ( +0, +0, +0, +0, -8), 'boy' : ( +0, +1, +0, +0, +3), 'bros' : ( +0, +0, +0, +0, +0), 'btw' : ( +0, +0, +0, +0, +0), 'bud' : ( +1, +1, +0, +0, +3), 'but' : ( +0, +0, +0, +0, -8), 'buy' : ( +5, +3, +1, +0, -2), 'bye' : ( +0, +0, +0, +0, +7), 'cam' : ( +0, +0, +0, +0, +7), 'camera' : ( +0, +0, +0, +0, +9), 'can' : ( +0, +0, +0, +0, +3), 'case' : ( +0, +0, +0, +0, +4), 'caseoh' : ( +0, +0, +0, +0, +0), 'caseohdailydoodledance': ( +0, +0, +0, +0, +0), 'caseohdailydoodlestwerk': ( +0, +0, +0, +0, +0), 'casey' : ( +0, +0, +0, +0, +0), 'cast' : ( +0, +0, +0, +0, +1), 'cause' : ( +0, +0, +0, +0, +1), 'channel' : ( +0, +0, +0, +0, +3), 'characters' : ( +7, +3, +2, +0, +4), 'charm' : ( +12, +3, +3, +0, +0), 'charming' : ( +12, +4, +3, +0, -5), 'chris' : ( +0, +0, +0, +0, +0), 'cinema' : ( +0, +0, +0, +0, +7), 'clumsy' : ( -12, +9, -3, +0, -5), 'come' : ( +0, +0, +0, +0, -4), 'comes' : ( +0, +0, +0, +0, -4), 'comet' : ( +0, +0, +0, +0, +4), 'completely' : ( +11, +5, +3, +0, -5), 'consecutive' : ( -4, +4, -2, +0, -8), 'costumes' : ( -3, +1, +0, +0, +4), 'cult' : ( +1, +1, +0, +0, +7), 'currently' : ( +0, +0, +0, +0, -8), 'dark' : ( -5, +6, -2, +0, -4), 'david' : ( +0, +0, +0, +0, +6), 'dawg' : ( +0, +0, +0, +0, +0), 'deftly' : ( +5, +2, +1, +0, -5), 'delete' : ( -1, +0, +0, +0, -3), 'delivers' : ( +0, +0, +0, +0, -4), 'depth' : ( +0, +2, +0, +0, +4), 'did' : ( +0, +0, +0, +0, -5), 'diesel' : ( +0, +0, +0, +0, +9), 'dinodance' : ( +0, +0, +0, +0, +0), 'directed' : ( +1, +0, +0, +0, -3), 'documentary' : ( +0, +3, +0, +0, -3), 'dude' : ( +0, +0, +0, +0, +4), 'eat' : ( +1, +0, +0, +0, -3), 'effects' : ( -2, +1, +0, +0, +1), 'either' : ( +0, +0, +0, +0, -8), 'energetic' : ( +5, +4, +1, +0, -5), 'engage' : ( +0, +0, +0, +0, -4), 'ensemble' : ( +0, +0, +0, +0, +4), 'entertainment' : ( +12, +0, +3, +0, +6), 'entirely' : ( +7, +7, +2, +0, -5), 'exactly' : ( +5, +2, +1, +0, -5), 'exquisitely' : ( +11, +5, +3, +0, -5), 'fans' : ( +1, +0, +0, +0, +0), 'feature' : ( +0, +1, +0, +0, +3), 'featuring' : ( +1, +4, +0, +0, -5), 'few' : ( +0, +0, +0, +0, -1), 'film' : ( +0, +0, +0, +0, +2), 'filmmaker' : ( +0, +0, +0, +0, +4), 'filmmakers' : ( +0, +0, +0, +0, +4), 'films' : ( +0, +0, +0, +0, +2), 'flick' : ( +0, +0, +0, +0, -2), 'following' : ( +1, +0, +0, +0, -4), 'for' : ( +0, +0, +0, +0, +0), 'force' : ( +0, +1, +0, +0, +0), 'form' : ( +0, +0, +0, +0, +1), 'french' : ( +0, +0, +0, +0, +1), 'from' : ( +0, +0, +0, +0, +0), 'genre' : ( +0, +0, +0, +0, +4), 'gentle' : ( +4, +6, +1, +0, -5), 'get' : ( +0, +1, +0, +0, -3), 'gets' : ( +0, +1, +0, +0, -3), 'given' : ( +0, +1, +0, +0, -2), 'goatemotey' : ( +0, +0, +0, +0, +0), 'god' : ( +0, +0, +0, +0, +6), 'goes' : ( +0, +0, +0, +0, -4), 'going' : ( +0, +0, +0, +0, -5), 'goldplz' : ( +0, +0, +0, +0, +0), 'goober' : ( +0, +0, +0, +0, +15), 'granny' : ( -3, +2, -1, +0, +10), 'guys' : ( +0, +0, +0, +0, +4), 'hacker' : ( -1, +5, +0, +0, +4), 'hacking' : ( +0, +0, +0, +0, -2), 'had' : ( +0, +1, +0, +0, -5), 'harry' : ( -1, +1, +0, +0, -5), 'has' : ( +0, +1, +0, +0, -4), 'heard' : ( +0, +0, +0, +0, -5), 'heavyhanded' : ( +0, +0, +0, +0, +0), 'hes' : ( +0, +0, +0, +0, +5), 'heyguys' : ( +0, +0, +0, +0, +0), 'high' : ( +1, +2, +0, +0, -2), 'him' : ( +0, +0, +0, +0, +0), 'his' : ( +0, +0, +0, +0, +0), 'hollywood' : ( -4, +2, -1, +0, +1), 'imaginative' : ( +11, +5, +3, +0, -5), 'imagine' : ( -5, +6, -2, +0, -3), 'into' : ( +0, +0, +0, +0, +0), 'intriguing' : ( +10, +5, +3, +0, -5), 'its' : ( +0, +0, +0, +0, +8), 'ive' : ( +0, +0, +0, +0, +0), 'jack' : ( +0, +0, +0, +0, +8), 'japanese' : ( +0, +0, +0, +0, +0), 'jebasted' : ( +0, +0, +0, +0, +0), 'jesus' : ( +0, +0, +0, +0, +2), 'jinxlul' : ( +0, +0, +0, +0, +0), 'jokes' : ( +10, +8, +3, +0, +2), 'journey' : ( +0, +0, +0, +0, +0), 'jynxzi' : ( +0, +0, +0, +0, +0), 'know' : ( +4, +4, +1, +0, -4), 'komodohype' : ( +0, +0, +0, +0, +0), 'latest' : ( +0, +1, +0, +0, -5), 'lee' : ( +0, +0, +0, +0, +6), 'lets' : ( +0, +0, +0, +0, +0), 'level' : ( +0, +1, +0, +0, -1), 'literally' : ( +0, +0, +0, +0, -8), 'lock' : ( -1, +0, +0, +0, +1), 'look' : ( +0, +1, +0, +0, -1), 'looking' : ( +0, +1, +0, +0, -2), 'looks' : ( +0, +1, +0, +0, -1), 'lot' : ( -1, +1, +0, +0, +0), 'maddie' : ( +0, +0, +0, +0, +0), 'manages' : ( +0, +0, +0, +0, -4), 'many' : ( +0, +0, +0, +0, -8), 'material' : ( +1, +1, +0, +0, -3), 'may' : ( +0, +0, +0, +0, +10), 'might' : ( -3, +17, -1, +0, +2), 'miller' : ( +0, +0, +0, +0, +9), 'minute' : ( +0, +1, +0, +0, +0), 'moments' : ( +1, +0, +0, +0, +4), 'mormon' : ( +0, +0, +0, +0, +0), 'most' : ( +0, +0, +0, +0, -8), 'mostly' : ( +0, +0, +0, +0, -5), 'move' : ( +0, +1, +0, +0, -3), 'much' : ( +3, +3, +0, +0, -6), 'mystery' : ( +3, +1, +0, +0, +9), 'narrative' : ( -1, +2, +0, +0, -4), 'not' : ( -15, +12, -7, +3, -8), 'notlikethis' : ( +0, +0, +0, +0, +0), 'now' : ( +0, +1, +0, +0, -6), 'occasionally' : ( +0, +0, +0, +0, -5), 'offers' : ( +0, +0, +0, +0, -1), 'open' : ( -2, +4, -1, +0, -5), 'opera' : ( +0, +0, +0, +0, +8), 'original' : ( +0, +4, +0, +0, -3), 'originality' : ( -9, +4, -2, +0, +1), 'other' : ( -6, +8, -3, +2, -8), 'our' : ( +0, +0, +0, +0, +0), 'overall' : ( +0, +0, +0, +0, +0), 'part' : ( +0, +0, +0, +0, +0), 'pay' : ( +1, +1, +0, +0, -1), 'peanut' : ( +1, +2, +0, +0, +7), 'performances' : ( +12, +1, +3, +0, +4), 'perhaps' : ( +0, +0, +0, +0, -5), 'pewpewpew' : ( +0, +0, +0, +0, +0), 'place' : ( +0, +0, +0, +0, +1), 'played' : ( +0, +0, +0, +0, -4), 'plot' : ( +0, +0, +0, +0, +2), 'pls' : ( +0, +0, +0, +0, +0), 'pogchamp' : ( +0, +0, +0, +0, +0), 'points' : ( +1, +0, +0, +0, +2), 'pool' : ( +0, +1, +0, +0, +4), 'potter' : ( +0, +0, +0, +0, -2), 'price' : ( +2, +1, +0, +0, +2), 'probably' : ( +0, +0, +0, +0, -8), 'production' : ( +0, +0, +0, +0, +5), 'psychological' : ( -5, +2, -1, +0, -5), 'quidditch' : ( +0, +0, +0, +0, +0), 'quirky' : ( -15, +7, -4, +0, -5), 'reality' : ( +3, +2, +0, +0, +3), 'redfield' : ( +0, +0, +0, +0, +0), 'religion' : ( +0, +0, +0, +0, +4), 'rentals' : ( +0, +0, +0, +0, +3), 'retro' : ( +1, +1, +0, +0, +2), 'rewind' : ( +0, +0, +0, +0, +0), 'romance' : ( +4, +3, +1, +0, +1), 'saying' : ( +0, +0, +0, +0, -2), 'scene' : ( -1, +0, +0, +0, +6), 'scenes' : ( -1, +0, +0, +0, +6), 'screen' : ( +0, +0, +0, +0, +2), 'script' : ( +0, +0, +0, +0, +2), 'second' : ( +0, +1, +0, +0, +1), 'seconds' : ( +0, +1, +0, +0, +3), 'seem' : ( +3, +2, +0, +0, -5), 'seemsgood' : ( +0, +0, +0, +0, +0), 'sentimentality' : ( -7, +9, -2, +0, +3), 'sequel' : ( +0, +0, +0, +0, +6), 'series' : ( +0, +0, +0, +0, +3), 'serious' : ( -2, +10, -1, +0, -8), 'shes' : ( +0, +0, +0, +0, +0), 'siptime' : ( +0, +0, +0, +0, +0), 'sitcom' : ( +0, +0, +0, +0, +7), 'skin' : ( +0, +0, +0, +0, +2), 'slop' : ( -1, +2, +0, +0, +1), 'some' : ( +3, +6, +0, +0, -8), 'soundtrack' : ( +0, +0, +0, +0, +10), 'sparked' : ( +0, +0, +0, +0, -4), 'spooky' : ( -11, +7, -5, +2, -8), 'star' : ( +1, +1, +0, +0, +1), 'steam' : ( +0, +0, +0, +0, -2), 'still' : ( -2, +5, -1, +0, -3), 'story' : ( -1, +1, +0, +0, +4), 'streak' : ( +0, +0, +0, +0, +1), 'stream' : ( +0, +0, +0, +0, +1), 'study' : ( +1, +0, +0, +0, +1), 'stuff' : ( +0, +1, +0, +0, +0), 'sub' : ( -2, +1, -1, +0, +6), 'subs' : ( -2, +1, -1, +0, +6), 'subscribed' : ( +0, +0, +0, +0, -4), 'subtember' : ( +0, +0, +0, +0, +0), 'such' : ( -1, +1, +0, +0, -8), 'surreal' : ( -1, +8, +0, +0, -5), 'suspense' : ( +12, +0, +3, +0, +7), 'takes' : ( +0, +0, +0, +0, -4), 'taking' : ( +0, +1, +0, +0, -4), 'tale' : ( -5, +2, -1, +0, +3), 'technical' : ( +2, +1, +0, +0, -2), 'tell' : ( +0, +3, +0, +0, +0), 'tension' : ( -2, +1, +0, +0, +6), 'terrific' : ( +1, +9, +0, +0, -5), 'than' : ( +0, +0, +0, +0, +0), 'that' : ( +0, +0, +0, +0, +0), 'the' : ( +0, +0, +0, +0, +0), 'then' : ( +2, +1, +0, +0, -6), 'theres' : ( +0, +0, +0, +0, +0), 'these' : ( +0, +0, +0, +0, +0), 'theyre' : ( +0, +0, +0, +0, +0), 'theyve' : ( +0, +0, +0, +0, +0), 'this' : ( +0, +0, +0, +0, +0), 'tho' : ( +0, +0, +0, +0, +8), 'those' : ( +0, +0, +0, +0, +0), 'though' : ( +0, +0, +0, +0, -8), 'thriller' : ( +0, +0, +0, +0, +10), 'thrills' : ( +0, +4, +0, +0, +2), 'tier' : ( +1, +1, +0, +0, +4), 'title' : ( -1, +0, +0, +0, +5), 'told' : ( +0, +2, +0, +0, +0), 'too' : ( -1, +3, +0, +0, -8), 'tree' : ( +0, +0, +0, +0, +1), 'tries' : ( +0, +1, +0, +0, -2), 'trying' : ( -2, +4, -1, +0, -3), 'turn' : ( +0, +0, +0, +0, +0), 'twitchconhype' : ( +0, +0, +0, +0, +0), 'ultimately' : ( +0, +0, +0, +0, -5), 'use' : ( +2, +1, +0, +0, +0), 'used' : ( +2, +2, +0, +0, -7), 'user' : ( +0, +0, +0, +0, +2), 'uses' : ( +1, +0, +0, +0, +0), 'utterly' : ( +15, +7, +4, +0, -5), 'very' : ( +8, +9, +2, +0, +8), 'viewers' : ( +2, +1, +0, +0, +4), 'visual' : ( -5, +2, -1, +0, -5), 'votenay' : ( +0, +0, +0, +0, +0), 'voteyea' : ( +0, +0, +0, +0, +0), 'wanted' : ( +2, +7, +0, +0, -5), 'wars' : ( -1, +1, +0, +0, +3), 'was' : ( +0, +0, +0, +0, -4), 'watched' : ( +3, +2, +0, +0, -7), 'way' : ( +0, +0, +0, +0, +3), 'wellacted' : ( +0, +0, +0, +0, +0), 'what' : ( +0, +0, +0, +0, +0), 'whats' : ( +0, +0, +0, +0, +0), 'which' : ( +0, +0, +0, +0, +0), 'who' : ( +0, +0, +0, +0, +8), 'whose' : ( +0, +0, +0, +0, +0), 'why' : ( +0, +0, +0, +0, +4), 'will' : ( +0, +0, +0, +0, +1), 'with' : ( +0, +0, +0, +0, +0), 'work' : ( +0, +0, +0, +0, -2), 'writerdirector' : ( +0, +0, +0, +0, +0), 'wutface' : ( +0, +0, +0, +0, +0), 'yall' : ( +0, +0, +0, +0, +0), 'yea' : ( +3, +2, +0, +0, +1), 'yet' : ( -3, +6, -1, +0, -8), 'you' : ( +0, +0, +0, +0, +0), 'youll' : ( +0, +0, +0, +0, +0), 'your' : ( +0, +0, +0, +0, +0), } EMOTIONAL_VOCABULARY.update(_NEW_WORDS) # ── Gemini LLM Calibration: 200 words rated by conversational usage ── _GEMINI_CAL = { 'abomination' : ( -25, +15, -5, +0, +12), 'abusive' : ( -25, +20, +10, +10, +18), 'accident' : ( -15, +15, -10, +15, +12), 'accused' : ( -15, +15, -10, +10, +10), 'addict' : ( -20, +10, -15, +5, +12), 'addicted' : ( -20, +10, -15, +5, +12), 'addiction' : ( -20, +10, -15, +5, +12), 'affair' : ( -15, +15, -5, +5, +12), 'allergic' : ( -10, +5, -3, +0, +3), 'alzheimers' : ( -25, +5, -20, +5, +20), 'annoy' : ( -8, +5, -3, +0, -3), 'annoys' : ( -8, +5, -3, +0, -3), 'anxiety' : ( -15, +12, -10, +8, -8), 'autoimmune' : ( -15, +5, -10, +5, +12), 'badly' : ( -8, +5, -3, +0, -3), 'beating' : ( -20, +20, +10, +10, +10), 'betrayal' : ( -25, +15, -15, +10, +20), 'betrayed' : ( -25, +15, -15, +10, +18), 'bomb' : ( -20, +25, +10, +15, +12), 'breakup' : ( -20, +15, -10, +10, +15), 'bummer' : ( -8, +0, -3, +0, -3), 'burnt' : ( -10, +5, -5, +0, +3), 'burst' : ( +0, +15, +0, +5, +0), 'catastrophic' : ( -25, +15, -10, +10, +18), 'cheated' : ( -20, +15, -15, +10, +15), 'cheating' : ( -20, +15, -15, +10, +15), 'clogged' : ( -8, +5, -3, +0, +3), 'complain' : ( -8, +5, -3, +0, -3), 'complaint' : ( -8, +5, -3, +0, -3), 'crappy' : ( -8, +5, -3, +0, -3), 'cruel' : ( -20, +15, +10, +5, +12), 'cruelty' : ( -25, +15, +10, +5, +15), 'crushed' : ( -20, +15, -15, +5, +10), 'culprit' : ( -10, +10, +5, +5, +5), 'damaged' : ( -15, +10, -10, +5, +8), 'damages' : ( -10, +10, -5, +5, +8), 'dangerous' : ( -15, +20, +5, +15, +10), 'darn' : ( -8, +5, +0, +0, +0), 'deadly' : ( -20, +15, +10, +10, +10), 'declined' : ( -8, +5, -5, +0, +5), 'dementia' : ( -25, +5, -20, +5, +20), 'depressing' : ( -20, +0, -10, +0, +10), 'desperately' : ( -15, +15, -10, +10, +8), 'destroy' : ( -20, +20, +10, +10, +10), 'devastating' : ( -20, +15, -15, +10, +18), 'devastation' : ( -25, +15, -15, +10, +20), 'diabetes' : ( -15, +5, -10, +5, +12), 'died' : ( -20, +10, -15, +5, +15), 'difficulties' : ( -8, +5, -5, +5, +5), 'disaster' : ( -20, +15, -10, +10, +15), 'disease' : ( -20, +10, -15, +10, +15), 'dislike' : ( -8, +5, -3, +0, -3), 'distraught' : ( -20, +15, -15, +5, +12), 'disturbing' : ( -15, +10, -5, +5, +8), 'divorce' : ( -20, +15, -10, +10, +20), 'divorced' : ( -15, +10, -10, +5, +15), 'doomed' : ( -15, +10, -10, +5, +12), 'dreading' : ( -15, +10, -10, +10, +8), 'drunken' : ( -10, +10, -5, +0, +3), 'dying' : ( -20, +15, -15, +10, +15), 'enemy' : ( -15, +15, +10, +5, +10), 'enraged' : ( -20, +25, +15, +10, +10), 'evil' : ( -25, +15, +15, +5, +12), 'fears' : ( -15, +15, -15, +10, +10), 'fever' : ( -10, +10, -5, +5, +5), 'fights' : ( -15, +20, +10, +10, +8), 'fml' : ( -20, +15, -10, +5, +5), 'freaked' : ( -15, +20, -10, +5, +5), 'frightened' : ( -15, +15, -15, +10, +8), 'frightening' : ( -15, +15, -10, +10, +8), 'frustrating' : ( -15, +15, -5, +5, +5), 'funeral' : ( -20, +0, -10, +0, +25), 'gloomy' : ( -10, +0, -5, +0, +5), 'greed' : ( -15, +10, +10, +0, +8), 'grieve' : ( -25, +5, -15, +0, +20), 'grudge' : ( -10, +5, -5, +0, +8), 'gtfo' : ( -20, +25, +15, +10, +5), 'gun' : ( -15, +20, +10, +10, +10), 'harmful' : ( -15, +10, -5, +5, +8), 'hassle' : ( -8, +5, -3, +0, +0), 'headaches' : ( -10, +5, -5, +5, +5), 'heartbreaking' : ( -25, +10, -15, +5, +20), 'hectic' : ( -8, +15, -3, +5, +3), 'hoarder' : ( -15, +5, -10, +0, +8), 'homicide' : ( -25, +15, +10, +10, +20), 'horribly' : ( -15, +10, -8, +5, -5), 'horrific' : ( -25, +20, -15, +10, +15), 'horrifying' : ( -20, +20, -10, +10, +12), 'humiliating' : ( -20, +15, -20, +5, +12), 'hungover' : ( -10, +0, -5, +0, +3), 'hurting' : ( -15, +10, -10, +5, +8), 'ill' : ( -10, +5, -5, +5, +5), 'illegal' : ( -15, +10, +5, +5, +8), 'illness' : ( -15, +5, -10, +5, +12), 'inadequate' : ( -15, +5, -10, +0, +8), 'inappropriate' : ( -10, +5, -3, +0, +3), 'incident' : ( -8, +10, +0, +10, +8), 'incompetent' : ( -15, +5, -10, +0, +5), 'infuriating' : ( -20, +25, +10, +10, +8), 'injuries' : ( -15, +10, -10, +10, +10), 'insanely' : ( +0, +10, +0, +0, +0), 'intruder' : ( -20, +20, -10, +15, +10), 'irked' : ( -8, +5, -3, +0, +0), 'irresponsible' : ( -15, +10, -5, +0, +5), 'irritating' : ( -8, +10, -3, +0, +3), 'jail' : ( -15, +10, -15, +5, +12), 'killer' : ( -20, +20, +10, +5, +10), 'liar' : ( -15, +10, +5, +5, +8), 'lied' : ( -15, +10, -10, +5, +10), 'loathsome' : ( -20, +10, -5, +0, +8), 'loser' : ( -15, +10, -10, +0, +5), 'mortified' : ( -20, +10, -15, +0, +8), 'murder' : ( -25, +20, +10, +10, +20), 'nasty' : ( -15, +15, +5, +0, +5), 'nowhere' : ( +0, +0, +0, +0, +0), 'obnoxious' : ( -10, +10, +5, +0, +5), 'outrage' : ( -20, +25, +15, +10, +12), 'pains' : ( -15, +10, -10, +5, +8), 'peeved' : ( -8, +5, -3, +0, +0), 'pessimistic' : ( -8, +5, -5, +0, -3), 'pissed' : ( -15, +20, +10, +5, +5), 'pity' : ( -10, +0, -5, +0, +8), 'poisoning' : ( -20, +15, -10, +10, +12), 'poisonous' : ( -15, +10, -5, +5, +8), 'poo' : ( -8, +5, +0, +0, +0), 'poop' : ( -8, +5, +0, +0, +0), 'poorly' : ( -8, +0, -3, +0, -3), 'poverty' : ( -20, +5, -15, +5, +15), 'pretended' : ( -8, +5, -3, +0, +5), 'prison' : ( -15, +10, -15, +5, +12), 'punish' : ( -15, +10, +10, +5, +8), 'punishment' : ( -15, +10, +5, +5, +8), 'rage' : ( -20, +25, +15, +10, +8), 'refused' : ( -8, +10, +5, +5, +5), 'rejected' : ( -15, +10, -15, +5, +10), 'restless' : ( -8, +10, -3, +5, +3), 'ridden' : ( +0, +0, +0, +0, +0), 'robbed' : ( -20, +15, -15, +10, +12), 'robber' : ( -15, +10, +5, +5, +8), 'rotten' : ( -10, +5, -5, +0, +3), 'ruin' : ( -20, +15, -10, +5, +12), 'sadly' : ( -8, +0, -3, +0, -3), 'scare' : ( -15, +15, -10, +10, +5), 'scariest' : ( -20, +20, -15, +10, +10), 'severe' : ( -15, +10, -5, +10, +8), 'shattered' : ( -20, +15, -15, +5, +12), 'shoot' : ( -15, +20, +10, +10, +8), 'sickness' : ( -15, +5, -10, +5, +10), 'smelly' : ( -8, +5, +0, +0, +0), 'spite' : ( -15, +10, +10, +5, +8), 'spoil' : ( -8, +5, -3, +0, +3), 'starved' : ( -20, +10, -15, +10, +12), 'stfu' : ( -20, +25, +15, +10, +5), 'stillbirth' : ( -25, +10, -20, +5, +25), 'stillborn' : ( -25, +10, -20, +5, +25), 'sting' : ( -8, +10, -3, +5, +3), 'stink' : ( -8, +5, -3, +0, -3), 'stressful' : ( -15, +15, -10, +10, +8), 'stressing' : ( -15, +15, -10, +10, +5), 'stroke' : ( -20, +15, -15, +15, +15), 'suffer' : ( -20, +10, -15, +5, +12), 'suspect' : ( -10, +10, -5, +5, +5), 'suspicious' : ( -10, +10, -5, +5, +5), 'teary' : ( -10, +5, -5, +0, +5), 'terribly' : ( -10, +5, -5, +0, -3), 'terrifying' : ( -20, +25, -15, +15, +12), 'terrorism' : ( -25, +25, +10, +15, +20), 'thieves' : ( -15, +10, +5, +5, +10), 'threatened' : ( -20, +20, -15, +15, +12), 'thunderstorm' : ( -8, +15, -3, +0, +5), 'tragedy' : ( -25, +10, -10, +5, +20), 'tragic' : ( -20, +10, -10, +5, +15), 'trauma' : ( -25, +15, -15, +10, +20), 'traumatic' : ( -25, +15, -15, +10, +18), 'troubles' : ( -8, +5, -3, +5, +5), 'turbulence' : ( -8, +10, -5, +5, +5), 'unable' : ( +0, +0, +0, +0, +0), 'uncertainty' : ( -8, +5, -5, +5, +5), 'unemployment' : ( -15, +5, -10, +5, +12), 'unfair' : ( -15, +10, -10, +5, +8), 'unfaithful' : ( -20, +10, -15, +5, +15), 'unfortunate' : ( -8, +5, -3, +0, +5), 'unhappy' : ( -15, +5, -5, +0, +5), 'unmotivated' : ( -10, -5, -5, +0, +3), 'unpleasant' : ( -8, +5, -3, +0, -3), 'unsolicited' : ( -8, +5, -3, +0, +3), 'upsetting' : ( -15, +10, -8, +5, +8), 'victim' : ( -20, +10, -20, +5, +15), 'villain' : ( -15, +15, +10, +5, +8), 'violence' : ( -20, +25, +10, +10, +15), 'violent' : ( -20, +25, +10, +10, +12), 'void' : ( -8, +0, -5, +0, +5), 'vomit' : ( -15, +10, -10, +5, +5), 'vomiting' : ( -15, +10, -10, +5, +5), 'wasp' : ( -8, +10, +0, +5, +3), 'worries' : ( -8, +5, -5, +5, +3), 'worrisome' : ( -10, +5, -5, +5, +5), 'worrying' : ( -10, +10, -5, +5, +5), 'wtf' : ( -15, +20, +0, +10, +3), } EMOTIONAL_VOCABULARY.update(_GEMINI_CAL) # ── 3-LLM Consensus Calibration (Gemini+Claude+GPT-4 average) ── _LLM_CONSENSUS = { 'abomination' : ( -23, +11, -9, +7, -7), 'abusive' : ( -23, +11, -9, +7, -7), 'accident' : ( -15, +7, -6, +4, -4), 'accused' : ( -13, +6, -5, +4, -4), 'addict' : ( -18, +8, -7, +5, -5), 'addicted' : ( -17, +8, -6, +5, -5), 'addiction' : ( -19, +9, -7, +6, -6), 'affair' : ( -17, +8, -6, +5, -5), 'allergic' : ( -9, +4, -3, +0, -2), 'alzheimers' : ( -23, +11, -9, +7, -7), 'annoy' : ( -9, +4, -3, +0, -2), 'annoys' : ( -9, +4, -3, +0, -2), 'anxiety' : ( -15, +7, -6, +4, -4), 'autoimmune' : ( -15, +7, -6, +4, -4), 'badly' : ( -9, +4, -3, +0, -2), 'beating' : ( -19, +9, -7, +6, -6), 'betrayal' : ( -23, +11, -9, +7, -7), 'betrayed' : ( -23, +11, -9, +7, -7), 'bomb' : ( -19, +9, -7, +6, -6), 'breakup' : ( -19, +9, -7, +6, -6), 'bummer' : ( -9, +4, -3, +0, -2), 'burnt' : ( -10, +4, -4, +0, -3), 'burst' : ( -3, +1, -1, +0, +0), 'catastrophic' : ( -24, +11, -9, +7, -7), 'cheated' : ( -20, +9, -8, +6, -6), 'cheating' : ( -19, +9, -7, +6, -6), 'clogged' : ( -7, +3, -2, +0, -2), 'complain' : ( -8, +3, -3, +0, -2), 'complaint' : ( -8, +3, -3, +0, -2), 'crappy' : ( -9, +4, -3, +0, -2), 'cruel' : ( -20, +9, -8, +6, -6), 'cruelty' : ( -23, +11, -9, +7, -7), 'crushed' : ( -19, +9, -7, +6, -6), 'culprit' : ( -9, +4, -3, +0, -2), 'damaged' : ( -14, +6, -5, +4, -4), 'damages' : ( -11, +5, -4, +3, -3), 'dangerous' : ( -14, +6, -5, +4, -4), 'darn' : ( -5, +2, -2, +0, -1), 'deadly' : ( -20, +9, -8, +6, -6), 'declined' : ( -9, +4, -3, +0, -2), 'dementia' : ( -22, +10, -8, +7, -7), 'depressing' : ( -18, +8, -7, +5, -5), 'desperately' : ( -15, +7, -6, +4, -4), 'destroy' : ( -20, +9, -8, +6, -6), 'devastating' : ( -21, +10, -8, +6, -6), 'devastation' : ( -23, +11, -9, +7, -7), 'diabetes' : ( -15, +7, -6, +4, -4), 'died' : ( -21, +10, -8, +6, -6), 'difficulties' : ( -9, +4, -3, +0, -2), 'disaster' : ( -20, +9, -8, +6, -6), 'disease' : ( -19, +9, -7, +6, -6), 'dislike' : ( -7, +3, -2, +0, -2), 'distraught' : ( -20, +9, -8, +6, -6), 'disturbing' : ( -16, +7, -6, +5, -5), 'divorce' : ( -19, +9, -7, +6, -6), 'divorced' : ( -16, +7, -6, +5, -5), 'doomed' : ( -17, +8, -6, +5, -5), 'dreading' : ( -15, +7, -6, +4, -4), 'drunken' : ( -10, +4, -4, +0, -3), 'dying' : ( -21, +10, -8, +6, -6), 'enemy' : ( -15, +7, -6, +4, -4), 'enraged' : ( -19, +9, -7, +6, -6), 'evil' : ( -23, +11, -9, +7, -7), 'fears' : ( -14, +6, -5, +4, -4), 'fever' : ( -11, +5, -4, +3, -3), 'fights' : ( -12, +5, -4, +3, -3), 'fml' : ( -18, +8, -7, +5, -5), 'freaked' : ( -15, +7, -6, +4, -4), 'frightened' : ( -16, +7, -6, +5, -5), 'frightening' : ( -16, +7, -6, +5, -5), 'frustrating' : ( -12, +5, -4, +3, -3), 'funeral' : ( -19, +9, -7, +6, -6), 'gloomy' : ( -11, +5, -4, +3, -3), 'greed' : ( -16, +7, -6, +5, -5), 'grieve' : ( -22, +10, -8, +7, -7), 'grudge' : ( -11, +5, -4, +3, -3), 'gtfo' : ( -18, +8, -7, +5, -5), 'gun' : ( -12, +5, -4, +3, -3), 'harmful' : ( -16, +7, -6, +5, -5), 'hassle' : ( -9, +4, -3, +0, -2), 'headaches' : ( -9, +4, -3, +0, -2), 'heartbreaking' : ( -23, +11, -9, +7, -7), 'hectic' : ( -9, +4, -3, +0, -2), 'hoarder' : ( -12, +5, -4, +3, -3), 'homicide' : ( -25, +12, -10, +8, -8), 'horribly' : ( -14, +6, -5, +4, -4), 'horrific' : ( -23, +11, -9, +7, -7), 'horrifying' : ( -21, +10, -8, +6, -6), 'humiliating' : ( -19, +9, -7, +6, -6), 'hungover' : ( -9, +4, -3, +0, -2), 'hurting' : ( -15, +7, -6, +4, -4), 'ill' : ( -11, +5, -4, +3, -3), 'illegal' : ( -12, +5, -4, +3, -3), 'illness' : ( -15, +7, -6, +4, -4), 'inadequate' : ( -15, +7, -6, +4, -4), 'inappropriate' : ( -10, +4, -4, +0, -3), 'incident' : ( -7, +3, -2, +0, -2), 'incompetent' : ( -15, +7, -6, +4, -4), 'infuriating' : ( -18, +8, -7, +5, -5), 'injuries' : ( -15, +7, -6, +4, -4), 'insanely' : ( -4, +1, -1, +0, -1), 'intruder' : ( -18, +8, -7, +5, -5), 'irked' : ( -8, +3, -3, +0, -2), 'irresponsible' : ( -13, +6, -5, +4, -4), 'irritating' : ( -9, +4, -3, +0, -2), 'jail' : ( -16, +7, -6, +5, -5), 'killer' : ( -20, +9, -8, +6, -6), 'liar' : ( -15, +7, -6, +4, -4), 'lice' : ( -11, +5, -4, +3, -3), 'lied' : ( -15, +7, -6, +4, -4), 'loathsome' : ( -20, +9, -8, +6, -6), 'loser' : ( -15, +7, -6, +4, -4), 'mortified' : ( -18, +8, -7, +5, -5), 'murder' : ( -25, +12, -10, +8, -8), 'nasty' : ( -14, +6, -5, +4, -4), 'nowhere' : ( -5, +2, -2, +0, -1), 'obnoxious' : ( -11, +5, -4, +3, -3), 'outrage' : ( -18, +8, -7, +5, -5), 'pains' : ( -13, +6, -5, +4, -4), 'peeved' : ( -8, +3, -3, +0, -2), 'pessimistic' : ( -9, +4, -3, +0, -2), 'pissed' : ( -14, +6, -5, +4, -4), 'pity' : ( -10, +4, -4, +0, -3), 'poisoning' : ( -20, +9, -8, +6, -6), 'poisonous' : ( -16, +7, -6, +5, -5), 'poo' : ( -7, +3, -2, +0, -2), 'poop' : ( -7, +3, -2, +0, -2), 'poorly' : ( -8, +3, -3, +0, -2), 'poverty' : ( -19, +9, -7, +6, -6), 'pretended' : ( -8, +3, -3, +0, -2), 'prison' : ( -16, +7, -6, +5, -5), 'punish' : ( -12, +5, -4, +3, -3), 'punishment' : ( -13, +6, -5, +4, -4), 'rage' : ( -19, +9, -7, +6, -6), 'refused' : ( -9, +4, -3, +0, -2), 'rejected' : ( -16, +7, -6, +5, -5), 'restless' : ( -7, +3, -2, +0, -2), 'ridden' : ( -3, +1, -1, +0, +0), 'robbed' : ( -19, +9, -7, +6, -6), 'robber' : ( -15, +7, -6, +4, -4), 'rotten' : ( -11, +5, -4, +3, -3), 'ruin' : ( -19, +9, -7, +6, -6), 'sadly' : ( -10, +4, -4, +0, -3), 'scare' : ( -13, +6, -5, +4, -4), 'scariest' : ( -19, +9, -7, +6, -6), 'severe' : ( -15, +7, -6, +4, -4), 'shattered' : ( -20, +9, -8, +6, -6), 'shoot' : ( -12, +5, -4, +3, -3), 'sickness' : ( -15, +7, -6, +4, -4), 'smelly' : ( -7, +3, -2, +0, -2), 'spite' : ( -14, +6, -5, +4, -4), 'spoil' : ( -9, +4, -3, +0, -2), 'starved' : ( -17, +8, -6, +5, -5), 'stfu' : ( -17, +8, -6, +5, -5), 'stillbirth' : ( -25, +12, -10, +8, -8), 'stillborn' : ( -25, +12, -10, +8, -8), 'sting' : ( -9, +4, -3, +0, -2), 'stink' : ( -8, +3, -3, +0, -2), 'stressful' : ( -15, +7, -6, +4, -4), 'stressing' : ( -14, +6, -5, +4, -4), 'stroke' : ( -19, +9, -7, +6, -6), 'suffer' : ( -19, +9, -7, +6, -6), 'suspect' : ( -8, +3, -3, +0, -2), 'suspicious' : ( -9, +4, -3, +0, -2), 'teary' : ( -12, +5, -4, +3, -3), 'terribly' : ( -11, +5, -4, +3, -3), 'terrifying' : ( -21, +10, -8, +6, -6), 'terrorism' : ( -25, +12, -10, +8, -8), 'thieves' : ( -15, +7, -6, +4, -4), 'threatened' : ( -18, +8, -7, +5, -5), 'thunderstorm' : ( -6, +2, -2, +0, -1), 'tragedy' : ( -23, +11, -9, +7, -7), 'tragic' : ( -21, +10, -8, +6, -6), 'trauma' : ( -22, +10, -8, +7, -7), 'traumatic' : ( -22, +10, -8, +7, -7), 'troubles' : ( -9, +4, -3, +0, -2), 'turbulence' : ( -8, +3, -3, +0, -2), 'unable' : ( -7, +3, -2, +0, -2), 'uncertainty' : ( -10, +4, -4, +0, -3), 'unemployment' : ( -16, +7, -6, +5, -5), 'unfair' : ( -14, +6, -5, +4, -4), 'unfaithful' : ( -19, +9, -7, +6, -6), 'unfortunate' : ( -9, +4, -3, +0, -2), 'unhappy' : ( -14, +6, -5, +4, -4), 'unmotivated' : ( -11, +5, -4, +3, -3), 'unpleasant' : ( -9, +4, -3, +0, -2), 'unsolicited' : ( -7, +3, -2, +0, -2), 'upsetting' : ( -14, +6, -5, +4, -4), 'victim' : ( -17, +8, -6, +5, -5), 'villain' : ( -16, +7, -6, +5, -5), 'violence' : ( -21, +10, -8, +6, -6), 'violent' : ( -20, +9, -8, +6, -6), 'void' : ( -10, +4, -4, +0, -3), 'vomit' : ( -14, +6, -5, +4, -4), 'vomiting' : ( -15, +7, -6, +4, -4), 'wasp' : ( -6, +2, -2, +0, -1), 'worries' : ( -11, +5, -4, +3, -3), 'worrisome' : ( -11, +5, -4, +3, -3), 'worrying' : ( -11, +5, -4, +3, -3), 'wtf' : ( -14, +6, -5, +4, -4), } EMOTIONAL_VOCABULARY.update(_LLM_CONSENSUS) # ── 4-LLM Final Consensus (Gemini+Claude+GPT-4+Grok average) ── _LLM_CONSENSUS_4 = { 'abomination' : ( -22, +10, -8, +7, -7), 'abusive' : ( -22, +10, -8, +7, -7), 'accident' : ( -15, +7, -6, +4, -4), 'accused' : ( -13, +6, -5, +4, -4), 'addict' : ( -18, +8, -7, +5, -5), 'addicted' : ( -18, +8, -7, +5, -5), 'addiction' : ( -19, +9, -7, +6, -6), 'affair' : ( -17, +8, -6, +5, -5), 'allergic' : ( -9, +4, -3, +0, -2), 'alzheimers' : ( -22, +10, -8, +7, -7), 'annoy' : ( -9, +4, -3, +0, -2), 'annoys' : ( -9, +4, -3, +0, -2), 'anxiety' : ( -16, +7, -6, +5, -5), 'autoimmune' : ( -16, +7, -6, +5, -5), 'badly' : ( -10, +4, -4, +0, -3), 'beating' : ( -18, +8, -7, +5, -5), 'betrayal' : ( -22, +10, -8, +7, -7), 'betrayed' : ( -22, +10, -8, +7, -7), 'bomb' : ( -17, +8, -6, +5, -5), 'breakup' : ( -19, +9, -7, +6, -6), 'bummer' : ( -10, +4, -4, +0, -3), 'burnt' : ( -10, +4, -4, +0, -3), 'burst' : ( -4, +1, -1, +0, -1), 'catastrophic' : ( -24, +11, -9, +7, -7), 'cheated' : ( -20, +9, -8, +6, -6), 'cheating' : ( -20, +9, -8, +6, -6), 'clogged' : ( -8, +3, -3, +0, -2), 'complain' : ( -8, +3, -3, +0, -2), 'complaint' : ( -8, +3, -3, +0, -2), 'crappy' : ( -9, +4, -3, +0, -2), 'cruel' : ( -20, +9, -8, +6, -6), 'cruelty' : ( -22, +10, -8, +7, -7), 'crushed' : ( -19, +9, -7, +6, -6), 'culprit' : ( -10, +4, -4, +0, -3), 'damaged' : ( -14, +6, -5, +4, -4), 'damages' : ( -12, +5, -4, +3, -3), 'dangerous' : ( -14, +6, -5, +4, -4), 'darn' : ( -6, +2, -2, +0, -1), 'deadly' : ( -20, +9, -8, +6, -6), 'declined' : ( -10, +4, -4, +0, -3), 'dementia' : ( -21, +10, -8, +6, -6), 'depressing' : ( -18, +8, -7, +5, -5), 'desperately' : ( -14, +6, -5, +4, -4), 'destroy' : ( -20, +9, -8, +6, -6), 'devastating' : ( -21, +10, -8, +6, -6), 'devastation' : ( -22, +10, -8, +7, -7), 'diabetes' : ( -15, +7, -6, +4, -4), 'died' : ( -22, +10, -8, +7, -7), 'difficulties' : ( -10, +4, -4, +0, -3), 'disaster' : ( -20, +9, -8, +6, -6), 'disease' : ( -18, +8, -7, +5, -5), 'dislike' : ( -8, +3, -3, +0, -2), 'distraught' : ( -20, +9, -8, +6, -6), 'disturbing' : ( -16, +7, -6, +5, -5), 'divorce' : ( -18, +8, -7, +5, -5), 'divorced' : ( -17, +8, -6, +5, -5), 'doomed' : ( -17, +8, -6, +5, -5), 'dreading' : ( -15, +7, -6, +4, -4), 'drunken' : ( -10, +4, -4, +0, -3), 'dying' : ( -21, +10, -8, +6, -6), 'enemy' : ( -15, +7, -6, +4, -4), 'enraged' : ( -18, +8, -7, +5, -5), 'evil' : ( -22, +10, -8, +7, -7), 'fears' : ( -14, +6, -5, +4, -4), 'fever' : ( -11, +5, -4, +3, -3), 'fights' : ( -12, +5, -4, +3, -3), 'fml' : ( -18, +8, -7, +5, -5), 'freaked' : ( -15, +7, -6, +4, -4), 'frightened' : ( -17, +8, -6, +5, -5), 'frightening' : ( -17, +8, -6, +5, -5), 'frustrating' : ( -12, +5, -4, +3, -3), 'funeral' : ( -19, +9, -7, +6, -6), 'gloomy' : ( -11, +5, -4, +3, -3), 'greed' : ( -16, +7, -6, +5, -5), 'grieve' : ( -21, +10, -8, +6, -6), 'grudge' : ( -12, +5, -4, +3, -3), 'gtfo' : ( -17, +8, -6, +5, -5), 'gun' : ( -12, +5, -4, +3, -3), 'harmful' : ( -16, +7, -6, +5, -5), 'hassle' : ( -9, +4, -3, +0, -2), 'headaches' : ( -10, +4, -4, +0, -3), 'heartbreaking' : ( -22, +10, -8, +7, -7), 'hectic' : ( -9, +4, -3, +0, -2), 'hoarder' : ( -12, +5, -4, +3, -3), 'homicide' : ( -25, +12, -10, +8, -8), 'horribly' : ( -14, +6, -5, +4, -4), 'horrific' : ( -23, +11, -9, +7, -7), 'horrifying' : ( -20, +9, -8, +6, -6), 'humiliating' : ( -19, +9, -7, +6, -6), 'hungover' : ( -10, +4, -4, +0, -3), 'hurting' : ( -15, +7, -6, +4, -4), 'ill' : ( -12, +5, -4, +3, -3), 'illegal' : ( -12, +5, -4, +3, -3), 'illness' : ( -15, +7, -6, +4, -4), 'inadequate' : ( -15, +7, -6, +4, -4), 'inappropriate' : ( -10, +4, -4, +0, -3), 'incident' : ( -7, +3, -2, +0, -2), 'incompetent' : ( -15, +7, -6, +4, -4), 'infuriating' : ( -18, +8, -7, +5, -5), 'injuries' : ( -15, +7, -6, +4, -4), 'insanely' : ( -3, +1, -1, +0, +0), 'intruder' : ( -18, +8, -7, +5, -5), 'irked' : ( -8, +3, -3, +0, -2), 'irresponsible' : ( -14, +6, -5, +4, -4), 'irritating' : ( -10, +4, -4, +0, -3), 'jail' : ( -16, +7, -6, +5, -5), 'killer' : ( -19, +9, -7, +6, -6), 'liar' : ( -15, +7, -6, +4, -4), 'lice' : ( -12, +5, -4, +3, -3), 'lied' : ( -15, +7, -6, +4, -4), 'loathsome' : ( -20, +9, -8, +6, -6), 'loser' : ( -15, +7, -6, +4, -4), 'mortified' : ( -18, +8, -7, +5, -5), 'murder' : ( -25, +12, -10, +8, -8), 'nasty' : ( -13, +6, -5, +4, -4), 'nowhere' : ( -6, +2, -2, +0, -1), 'obnoxious' : ( -12, +5, -4, +3, -3), 'outrage' : ( -17, +8, -6, +5, -5), 'pains' : ( -13, +6, -5, +4, -4), 'peeved' : ( -8, +3, -3, +0, -2), 'pessimistic' : ( -10, +4, -4, +0, -3), 'pissed' : ( -14, +6, -5, +4, -4), 'pity' : ( -10, +4, -4, +0, -3), 'poisoning' : ( -20, +9, -8, +6, -6), 'poisonous' : ( -16, +7, -6, +5, -5), 'poo' : ( -7, +3, -2, +0, -2), 'poop' : ( -7, +3, -2, +0, -2), 'poorly' : ( -8, +3, -3, +0, -2), 'poverty' : ( -18, +8, -7, +5, -5), 'pretended' : ( -8, +3, -3, +0, -2), 'prison' : ( -16, +7, -6, +5, -5), 'punish' : ( -12, +5, -4, +3, -3), 'punishment' : ( -14, +6, -5, +4, -4), 'rage' : ( -18, +8, -7, +5, -5), 'refused' : ( -9, +4, -3, +0, -2), 'rejected' : ( -16, +7, -6, +5, -5), 'restless' : ( -8, +3, -3, +0, -2), 'ridden' : ( -5, +2, -2, +0, -1), 'robbed' : ( -18, +8, -7, +5, -5), 'robber' : ( -16, +7, -6, +5, -5), 'rotten' : ( -12, +5, -4, +3, -3), 'ruin' : ( -19, +9, -7, +6, -6), 'sadly' : ( -10, +4, -4, +0, -3), 'scare' : ( -14, +6, -5, +4, -4), 'scariest' : ( -20, +9, -8, +6, -6), 'severe' : ( -15, +7, -6, +4, -4), 'shattered' : ( -20, +9, -8, +6, -6), 'shoot' : ( -12, +5, -4, +3, -3), 'sickness' : ( -15, +7, -6, +4, -4), 'smelly' : ( -8, +3, -3, +0, -2), 'spite' : ( -13, +6, -5, +4, -4), 'spoil' : ( -9, +4, -3, +0, -2), 'starved' : ( -16, +7, -6, +5, -5), 'stfu' : ( -17, +8, -6, +5, -5), 'stillbirth' : ( -25, +12, -10, +8, -8), 'stillborn' : ( -25, +12, -10, +8, -8), 'sting' : ( -9, +4, -3, +0, -2), 'stink' : ( -8, +3, -3, +0, -2), 'stressful' : ( -15, +7, -6, +4, -4), 'stressing' : ( -14, +6, -5, +4, -4), 'stroke' : ( -19, +9, -7, +6, -6), 'suffer' : ( -18, +8, -7, +5, -5), 'suspect' : ( -9, +4, -3, +0, -2), 'suspicious' : ( -10, +4, -4, +0, -3), 'teary' : ( -12, +5, -4, +3, -3), 'terribly' : ( -12, +5, -4, +3, -3), 'terrifying' : ( -21, +10, -8, +6, -6), 'terrorism' : ( -24, +11, -9, +7, -7), 'thieves' : ( -15, +7, -6, +4, -4), 'threatened' : ( -17, +8, -6, +5, -5), 'thunderstorm' : ( -7, +3, -2, +0, -2), 'tragedy' : ( -22, +10, -8, +7, -7), 'tragic' : ( -20, +9, -8, +6, -6), 'trauma' : ( -22, +10, -8, +7, -7), 'traumatic' : ( -22, +10, -8, +7, -7), 'troubles' : ( -10, +4, -4, +0, -3), 'turbulence' : ( -8, +3, -3, +0, -2), 'unable' : ( -8, +3, -3, +0, -2), 'uncertainty' : ( -10, +4, -4, +0, -3), 'unemployment' : ( -16, +7, -6, +5, -5), 'unfair' : ( -14, +6, -5, +4, -4), 'unfaithful' : ( -20, +9, -8, +6, -6), 'unfortunate' : ( -10, +4, -4, +0, -3), 'unhappy' : ( -14, +6, -5, +4, -4), 'unmotivated' : ( -11, +5, -4, +3, -3), 'unpleasant' : ( -10, +4, -4, +0, -3), 'unsolicited' : ( -7, +3, -2, +0, -2), 'upsetting' : ( -14, +6, -5, +4, -4), 'victim' : ( -16, +7, -6, +5, -5), 'villain' : ( -16, +7, -6, +5, -5), 'violence' : ( -21, +10, -8, +6, -6), 'violent' : ( -20, +9, -8, +6, -6), 'void' : ( -12, +5, -4, +3, -3), 'vomit' : ( -14, +6, -5, +4, -4), 'vomiting' : ( -15, +7, -6, +4, -4), 'wasp' : ( -5, +2, -2, +0, -1), 'worries' : ( -11, +5, -4, +3, -3), 'worrisome' : ( -12, +5, -4, +3, -3), 'worrying' : ( -12, +5, -4, +3, -3), 'wtf' : ( -13, +6, -5, +4, -4), } EMOTIONAL_VOCABULARY.update(_LLM_CONSENSUS_4) # ── V7 corrections: GAS atoms zeroed, deception/betrayal tuned ── _V7_FIXES = { # GAS atoms: objects have no inherent emotional charge 'necklace': ( 0, 0, 0, 0, 10), # object. Gravity from possession, not valence. 'bracelet': ( 0, 0, 0, 0, 8), 'ring': ( 0, 0, 0, 0, 12), # high G (symbol of commitment) 'drawer': ( 0, 0, 0, 0, 0), # GAS interjections: these carry zero charge, context fills them 'yeah': ( 0, 0, 0, 0, 0), # pure GAS. "yeah right" = sarcasm. "yeah!" = excitement. 'yep': ( 0, 0, 0, 0, 0), 'yup': ( 0, 0, 0, 0, 0), 'nah': ( -3, 0, 0, 0, 0), # mild dismissal 'well': ( 0, 0, 0, 0, 0), # filler / hedge. Not emotional. 'went': ( 0, 0, 0, 0, 0), # movement verb, neutral 'all': ( 0, 0, 0, 0, 5), # quantifier, not emotional. Was dV=8. # Deception verbs: the act of deception IS negative 'pretended': (-20, 5, -15, 0, -10), # deception = betrayal of trust 'pretending': (-18, 5, -12, 0, -8), 'faked': (-20, 5, -15, 0, -10), 'faking': (-18, 5, -12, 0, -8), 'lied': (-25, 10, -20, 5, -12), 'lying': (-22, 8, -18, 5, -10), 'deceived': (-25, 10, -20, 5, -15), 'betrayed': (-30, 15, -25, 10, -18), 'betrayal': (-30, 15, -25, 10, -18), # Abandonment: "left" in isolation is spatial. With people context = abandonment. # Keep low dV — proximity to RELATION_REF creates the betrayal. 'left': ( -5, 5, -5, 5, -3), # slightly negative base # GAS verbs: meaning entirely from context 'catch': ( 0, 5, 5, 0, 5), # catch a ball, catch up, catch fire 'caught': ( 0, 5, 5, 0, 5), 'weather': ( 0, 0, 0, 0, 0), # pure neutral noun 'changing': ( 0, 0, 0, 0, 0), # pure neutral verb 'change': ( 0, 0, 0, 0, 0), 'changed': ( 0, 0, 0, 0, 0), 'messages': ( 0, 0, 0, 0, 5), # neutral object 'phone': ( 0, 0, 0, 0, 5), # neutral object 'should': ( 0, 0, 0, 0, 0), # modal, no charge # ── MASSIVE GAS ZEROING: common nouns/verbs with bloated dV ── # These are GAS atoms. Their meaning comes from CONTEXT, not from the word itself. # "pizza" is not happy. "appointment" is not happy. "alarm" is not scary. # The anchor+web model: only ~111 anchor words carry real dV. # Everything else gets dV from proximity to anchors at runtime. # # Common objects / places 'pizza': ( 0, 0, 0, 0, 5), 'laundry': ( 0, 0, 0, 0, 0), 'appointment': ( 0, 0, 0, 0, 5), 'alarm': ( 0, 5, 0, 0, 0), 'flight': ( 0, 0, 0, 0, 5), 'show': ( 0, 0, 0, 0, 5), 'double': ( 0, 0, 0, 0, 0), 'dentist': ( 0, 0, 0, 0, 5), 'bus': ( 0, 0, 0, 0, 0), 'train': ( 0, 0, 0, 0, 0), 'subway': ( 0, 0, 0, 0, 0), 'parking': ( 0, 0, 0, 0, 0), 'store': ( 0, 0, 0, 0, 0), 'line': ( 0, 0, 0, 0, 0), 'restaurant': ( 0, 0, 0, 0, 5), 'order': ( 0, 0, 0, 0, 0), # "order pizza" ≠ emotion 'ordered': ( 0, 0, 0, 0, 0), 'grab': ( 0, 2, 0, 0, 0), 'airport': ( 0, 0, 0, 0, 0), 'hotel': ( 0, 0, 0, 0, 0), 'office': ( 0, 0, 0, 0, 0), 'movie': ( 0, 0, 0, 0, 5), 'class': ( 0, 0, 0, 0, 5), 'exam': ( 0, 5, 0, 5, 8), # slightly high arousal/urgency 'test': ( 0, 5, 0, 5, 5), 'school': ( 0, 0, 0, 0, 5), 'license': ( 0, 0, 0, 0, 0), 'package': ( 0, 0, 0, 0, 0), 'porch': ( 0, 0, 0, 0, 0), # Common verbs that are context-dependent 'see': ( 0, 0, 0, 0, 0), 'saw': ( 0, 0, 0, 0, 0), 'went': ( 0, 0, 0, 0, 0), 'going': ( 0, 0, 0, 0, 0), 'come': ( 0, 0, 0, 0, 0), 'coming': ( 0, 0, 0, 0, 0), 'pick': ( 0, 0, 0, 0, 0), 'picked': ( 0, 0, 0, 0, 0), 'called': ( 0, 0, 0, 0, 0), 'calling': ( 0, 0, 0, 0, 0), 'stopped': ( 0, 0, 0, 0, 0), 'told': ( 0, 0, 0, 0, 0), 'tell': ( 0, 0, 0, 0, 0), 'doing': ( 0, 0, 0, 0, 0), 'running': ( 0, 3, 0, 0, 0), 'walk': ( 0, 0, 0, 0, 0), 'run': ( 0, 3, 0, 0, 0), 'sit': ( 0, 0, 0, 0, 0), 'sitting': ( 0, 0, 0, 0, 0), 'standing': ( 0, 0, 0, 0, 0), 'waiting': ( 0, 0, 0, 0, 0), 'watching': ( 0, 0, 0, 0, 0), 'looking': ( 0, 0, 0, 0, 0), 'making': ( 0, 0, 0, 0, 0), 'working': ( 0, 0, 0, 0, 0), # Common adjectives that are neutral 'interesting': ( 0, 3, 0, 0, 0), 'actual': ( 0, 0, 0, 0, 0), 'able': ( 0, 0, 5, 0, 0), 'active': ( 0, 3, 0, 0, 0), 'available': ( 0, 0, 0, 0, 0), 'different': ( 0, 0, 0, 0, 0), 'certain': ( 0, 0, 5, 0, 0), 'real': ( 0, 0, 0, 0, 0), 'right': ( 0, 0, 0, 0, 0), # too liquid: "right" = correct OR direction 'wrong': (-10, 5, -5, 0, -5), # slightly negative — "wrong" has mild charge # Spatial/temporal that leaked dV 'last': ( 0, 0, 0, 5, 0), # "last night" ≠ "last" as finality. FINALITY role handles context. 'night': ( 0, 0, 0, 0, 0), 'morning': ( 0, 0, 0, 0, 0), 'day': ( 0, 0, 0, 0, 0), 'time': ( 0, 0, 0, 0, 0), 'today': ( 0, 0, 0, 0, 0), 'tomorrow': ( 0, 0, 0, 0, 0), 'week': ( 0, 0, 0, 0, 0), 'year': ( 0, 0, 0, 0, 0), 'month': ( 0, 0, 0, 0, 0), 'hour': ( 0, 0, 0, 0, 0), 'minute': ( 0, 0, 0, 0, 0), 'ago': ( 0, 0, 0, 0, 0), 'ahead': ( 8, 3, 5, 0, 0), # "go ahead" = permission, mild positive 'across': ( 0, 0, 0, 0, 0), 'abroad': ( 0, 0, 0, 0, 0), # Abstract nouns with bloated dV 'choice': ( 0, 3, 5, 0, 5), # neutral — context decides 'ability': ( 0, 0, 5, 0, 5), 'abilities': ( 0, 0, 5, 0, 5), 'access': ( 0, 0, 0, 0, 0), 'account': ( 0, 0, 0, 0, 0), 'activity': ( 0, 0, 0, 0, 0), 'add': ( 0, 0, 0, 0, 0), 'advice': ( 0, 0, 0, 0, 5), 'advantage': ( 5, 0, 5, 0, 5), # slight positive lean 'air': ( 0, 0, 0, 0, 0), 'airplane': ( 0, 0, 0, 0, 0), 'act': ( 0, 0, 0, 0, 0), 'action': ( 0, 3, 0, 0, 0), 'agreed': ( 3, 0, 0, 0, 0), 'agree': ( 3, 0, 0, 0, 0), 'aid': ( 5, 0, 0, 0, 5), 'admitted': ( 0, 0, 0, 0, 0), # Life events — these have HIGH gravity but LOW valence # "born" is not pos or neg. The CONTEXT determines it. # "my daughter was born" = pos. "stillborn" = devastating. 'born': ( 12, 10, 5, 5, 30), # mild positive, high G. "Born" implies new life. 'surgery': ( -5, 10, -8, 15, 25), # mild neg, high G 'bar': ( 0, 0, 0, 0, 5), 'passed': ( 5, 0, 0, 0, 10), # mild pos. "Passed the test" = achievement context. 'accepted': ( 15, 5, 8, 0, 15), # moderate positive. "Accepted" = inclusion. 'proposed': ( 15, 10, 8, 0, 25), # moderate positive, high G. 'daughter': ( 0, 0, 0, 0, 30), # person, high G 'son': ( 0, 0, 0, 0, 30), 'baby': ( 5, 5, 0, 0, 30), # slight positive, high G 'paycheck': ( 8, 0, 5, 0, 10), 'loans': ( -5, 0, -5, 0, 5), 'birthday': ( 10, 8, 0, 0, 20), # positive event, high G 'surprise': ( 5, 15, 0, 0, 10), # slight positive + arousal 'surprised': ( 5, 15, 0, 0, 10), 'happiest': ( 35, 15, 10, 0, 15), # superlative of happy # Words that are emotional but were way too hot 'layoffs': (-15, 10, -10, 10, 15), # was -35 'doctor': ( 0, 5, -5, 5, 10), # was -24 # "cancelled" is context-dependent. Flight cancelled ≠ wedding cancelled. # Keep mild negative — inconvenience baseline. Structure amplifies. 'cancelled': (-12, 5, -5, 5, 5), # was -40 'cancel': ( -8, 3, -3, 0, 0), # Common words that need force reduction 'forgot': ( -8, 3, -3, 0, -3), # was -25. Forgetting is a mild negative. 'broken': (-12, 5, -5, 0, -5), # "dishwasher is broken" ≠ "i am broken" 'failed': (-12, 5, -10, 5, -8), # "i failed my exam" = disappointment not devastation 'messed': ( -8, 3, -3, 0, -3), # "need" is too negative — "i need to do laundry" ≠ desperate need 'need': ( -5, 3, -3, 3, 5), # was -15. Keep mild negative for unmet need. 'renew': ( 0, 0, 0, 0, 0), 'license': ( 0, 0, 0, 0, 0), 'dishwasher': ( 0, 0, 0, 0, 0), 'porch': ( 0, 0, 0, 0, 0), 'oil': ( 0, 0, 0, 0, 0), 'saturday': ( 0, 0, 0, 0, 0), 'channel': ( 0, 0, 0, 0, 0), 'power': ( 0, 3, 5, 0, 5), # neutral with slight D lean 'coffee': ( 3, 0, 0, 0, 0), # very mild positive 'gonna': ( 0, 0, 0, 0, 0), 'grab': ( 0, 2, 0, 0, 0), # Missing verb forms + corrections 'murdered': (-25, 12, -10, 8, -8), 'murdering': (-25, 12, -10, 8, -8), 'suicidal': (-30, 15, -20, 15, -15), 'mondays': ( -5, 3, -3, 0, 0), 'suspense': ( 0, 8, 0, 5, 5), # arousal, not valence } EMOTIONAL_VOCABULARY.update(_V7_FIXES) # ── V8 MASS CORRECTION: zero 500+ inflated GAS atoms ── # These common words carried residual positive dV from V1 vocabulary. # Spot-check audit showed 59% accuracy on real text due to positive inflation. # Nuclear fix: zero all common nouns/verbs/adj with dV>10 and low G/A. # Genuinely positive emotional words (love, happy, proud, etc.) preserved. _V8_MASS_ZERO = { 'accept': (0, 5, 0, 0, 10), 'accepts': (0, 5, 0, 0, 10), 'accommodation': (0, 5, 0, 0, 15), 'accommodations': (0, 5, 0, 0, 15), 'ace': (0, -4, 0, 0, 10), 'achieve': (0, 5, 0, 0, 19), 'achieved': (0, 5, 0, 0, 15), 'adoptive': (0, 5, 0, 0, 18), 'adult': (0, 0, 0, 0, 16), 'advocates': (0, 5, 0, 0, 10), 'affirmed': (0, 5, 0, 0, 18), 'afford': (0, -5, 0, 0, 10), 'album': (0, -27, 0, 0, 6), 'ally': (0, 5, 0, 0, 12), 'allyship': (0, 5, 0, 0, 15), 'along': (0, -20, 0, 0, 5), 'alright': (0, -29, 0, 0, 9), 'amazed': (0, 5, 0, 0, 9), 'amused': (0, 5, 0, 0, 5), 'amusing': (0, 5, 0, 0, 0), 'animal': (0, 5, 0, 0, 10), 'answer': (0, 5, 0, 0, 16), 'anywhere': (0, -24, 0, 0, 1), 'apartments': (0, -29, 0, 0, 9), 'apologized': (0, -29, 0, 0, 0), 'apple': (0, 4, 0, 0, 0), 'applied': (0, 5, 0, 0, 14), 'appreciate': (0, 4, 0, 0, 8), 'appreciated': (0, -4, 0, 0, 19), 'appreciative': (0, -11, 0, 0, 14), 'approaching': (0, 5, 0, 0, 14), 'approved': (0, -13, 0, 0, 14), 'arrive': (0, -6, 0, 0, 12), 'arrived': (0, 5, 0, 0, 16), 'assistance': (0, 5, 0, 0, 10), 'assume': (0, -18, 0, 0, 10), 'assuming': (0, -20, 0, 0, 16), 'assured': (0, -15, 0, 0, 17), 'athletic': (0, 5, 0, 0, 16), 'attachment': (0, 5, 0, 0, 10), 'attend': (0, -13, 0, 0, 16), 'aura': (0, 5, 0, 0, 10), 'award': (0, 5, 0, 0, 14), 'babies': (0, 5, 0, 0, 8), 'babysit': (0, 5, 0, 0, 9), 'bahamas': (0, 5, 0, 0, 9), 'bake': (0, 5, 0, 0, 16), 'balmy': (0, -10, 0, 0, 8), 'banana': (0, 4, 0, 0, 0), 'band': (0, 5, 0, 0, 10), 'beaches': (0, 0, 0, 0, 10), 'beautifully': (0, 5, 0, 0, 10), 'beauty': (0, 5, 0, 0, 13), 'beef': (0, 5, 0, 0, 14), 'begin': (0, 5, 0, 0, 12), 'belief': (0, -11, 0, 0, 16), 'believed': (0, 5, 0, 0, 8), 'benefits': (0, 5, 0, 0, 8), 'benign': (0, -15, 0, 0, 15), 'bicycle': (0, 4, 0, 0, 9), 'bigger': (0, -2, 0, 0, 17), 'billion': (0, 5, 0, 0, 10), 'bit': (0, 5, 0, 0, 0), 'blessing': (0, 5, 0, 0, 15), 'blessings': (0, -11, 0, 0, 16), 'blooming': (0, 5, 0, 0, 12), 'blossoming': (0, 5, 0, 0, 15), 'blue': (0, -20, 0, 0, 0), 'bond': (0, 5, 0, 0, 10), 'boost': (0, 5, 0, 0, 16), 'bowling': (0, -11, 0, 0, 1), 'breast': (0, -11, 0, 0, 16), 'brownies': (0, -27, 0, 0, 14), 'buddies': (0, 5, 0, 0, 14), 'budding': (0, 5, 0, 0, 10), 'buffet': (0, 5, 0, 0, 10), 'built': (0, 5, 0, 0, 8), 'bunch': (0, 5, 0, 0, 10), 'burger': (0, 5, 0, 0, 10), 'burrito': (0, 5, 0, 0, 14), 'bussin': (0, 5, 0, 0, 10), 'button': (0, 5, 0, 0, 0), 'cake': (0, 5, 0, 0, 0), 'calm': (0, -10, 0, 0, 8), 'calmed': (0, -10, 0, 0, 8), 'camping': (0, 5, 0, 0, 9), 'captivating': (0, 5, 0, 0, 12), 'careful': (0, 5, 0, 0, 0), 'cares': (0, 5, 0, 0, 10), 'carried': (0, 5, 0, 0, 10), 'celebrated': (0, 5, 0, 0, 8), 'celebrates': (0, 5, 0, 0, 8), 'celebrating': (0, 5, 0, 0, 19), 'cereal': (0, 5, 0, 0, 0), 'certainly': (0, 5, 0, 0, 16), 'certification': (0, 2, 0, 0, 13), 'certified': (0, 5, 0, 0, 15), 'championship': (0, 5, 0, 0, 15), 'charm': (0, 3, 0, 0, 0), 'charming': (0, 4, 0, 0, 0), 'cheesecake': (0, -18, 0, 0, 5), 'chef': (0, -6, 0, 0, 12), 'chemistry': (0, 4, 0, 0, 17), 'chicken': (0, 5, 0, 0, 8), 'chip': (0, 5, 0, 0, 8), 'chipotle': (0, 5, 0, 0, 16), 'chocolate': (0, 5, 0, 0, 0), 'chuckled': (0, 5, 0, 0, 5), 'cinematic': (0, 5, 0, 0, 15), 'circus': (0, 5, 0, 0, 10), 'cities': (0, 5, 0, 0, 17), 'clapped': (0, 5, 0, 0, 8), 'clean': (0, -5, 0, 0, 15), 'clear': (0, 5, 0, 0, 16), 'cleared': (0, -5, 0, 0, 8), 'closedon': (0, 5, 0, 0, 15), 'closest': (0, -18, 0, 0, 12), 'clothing': (0, -27, 0, 0, 10), 'clout': (0, 5, 0, 0, 10), 'club': (0, 5, 0, 0, 5), 'clubs': (0, 5, 0, 0, 19), 'clue': (0, -22, 0, 0, 5), 'coast': (0, -18, 0, 0, 12), 'colleague': (0, 5, 0, 0, 16), 'colors': (0, -13, 0, 0, 8), 'comforting': (0, -13, 0, 0, 14), 'comic': (0, -4, 0, 0, 9), 'comics': (0, 5, 0, 0, 6), 'commitment': (0, 5, 0, 0, 16), 'community': (0, 5, 0, 0, 16), 'company': (0, -6, 0, 0, 19), 'compelling': (0, 5, 0, 0, 10), 'complete': (0, 5, 0, 0, 16), 'completed': (0, -11, 0, 0, 16), 'completely': (0, 5, 0, 0, 0), 'conference': (0, 5, 0, 0, 17), 'confident': (0, 5, 0, 0, 10), 'congratulation': (0, 5, 0, 0, 17), 'connection': (0, 5, 0, 0, 16), 'consider': (0, -24, 0, 0, 14), 'contact': (0, -13, 0, 0, 16), 'cooked': (0, 5, 0, 0, 5), 'cookie': (0, 5, 0, 0, 0), 'cooking': (0, 5, 0, 0, 5), 'coregulate': (0, -10, 0, 0, 12), 'counselor': (0, -11, 0, 0, 16), 'counter': (0, 5, 0, 0, 0), 'couple': (0, 4, 0, 0, 10), 'course': (0, -2, 0, 0, 8), 'courses': (0, -15, 0, 0, 16), 'cousins': (0, -15, 0, 0, 14), 'creative': (0, 2, 0, 0, 19), 'danced': (0, 5, 0, 0, 12), 'dancing': (0, 5, 0, 0, 10), 'deal': (0, 5, 0, 0, 16), 'dealing': (0, -15, 0, 0, 19), 'dear': (0, -4, 0, 0, 14), 'decent': (0, -15, 0, 0, 13), 'dedication': (0, -2, 0, 0, 14), 'deep': (0, 5, 0, 0, 16), 'defended': (0, 5, 0, 0, 10), 'defends': (0, 5, 0, 0, 10), 'definitely': (0, 5, 0, 0, 16), 'degree': (0, 5, 0, 0, 15), 'delicious': (0, 5, 0, 0, 14), 'delightful': (0, 5, 0, 0, 8), 'delivery': (0, 5, 0, 0, 10), 'demure': (0, -15, 0, 0, 5), 'dessert': (0, 5, 0, 0, 0), 'dialogue': (0, 5, 0, 0, 10), 'digital': (0, -22, 0, 0, 16), 'dignity': (0, 5, 0, 0, 15), 'donation': (0, 5, 0, 0, 10), 'donations': (0, 5, 0, 0, 10), 'donor': (0, 5, 0, 0, 15), 'dream': (0, 5, 0, 0, 15), 'drinks': (0, 5, 0, 0, 10), 'drip': (0, 5, 0, 0, 10), 'ease': (0, -9, 0, 0, 9), 'easier': (0, -5, 0, 0, 5), 'easily': (0, 5, 0, 0, 10), 'east': (0, 5, 0, 0, 0), 'easy': (0, -20, 0, 0, 16), 'education': (0, 5, 0, 0, 8), 'eggs': (0, 5, 0, 0, 4), 'electronics': (0, 5, 0, 0, 17), 'employable': (0, 5, 0, 0, 10), 'empowered': (0, 5, 0, 0, 15), 'engaged': (0, 5, 0, 0, 19), 'engaging': (0, 5, 0, 0, 8), 'enjoyable': (0, 5, 0, 0, 8), 'enter': (0, -6, 0, 0, 12), 'entertained': (0, 5, 0, 0, 5), 'entertaining': (0, 5, 0, 0, 8), 'entertainment': (0, 0, 0, 0, 6), 'episode': (0, -24, 0, 0, 14), 'especially': (0, 5, 0, 0, 10), 'europe': (0, 0, 0, 0, 16), 'everyday': (0, -20, 0, 0, 14), 'excelling': (0, 5, 0, 0, 18), 'excitement': (0, 5, 0, 0, 8), 'expected': (0, -15, 0, 0, 17), 'experienced': (0, 5, 0, 0, 17), 'experiences': (0, 5, 0, 0, 16), 'explain': (0, 5, 0, 0, 10), 'exquisite': (0, 5, 0, 0, 15), 'exquisitely': (0, 5, 0, 0, 0), 'fairly': (0, -6, 0, 0, 14), 'faithful': (0, 5, 0, 0, 8), 'families': (0, -24, 0, 0, 14), 'fan': (0, 5, 0, 0, 16), 'fancy': (0, 5, 0, 0, 10), 'favor': (0, -15, 0, 0, 9), 'favorite': (0, 5, 0, 0, 14), 'favourite': (0, 0, 0, 0, 16), 'feed': (0, 5, 0, 0, 10), 'feedback': (0, 5, 0, 0, 6), 'feeling': (0, -13, 0, 0, 9), 'fertile': (0, 5, 0, 0, 15), 'festival': (0, 5, 0, 0, 16), 'fiance': (0, -22, 0, 0, 9), 'fiancee': (0, 5, 0, 0, 14), 'figure': (0, -29, 0, 0, 12), 'figured': (0, 0, 0, 0, 14), 'fills': (0, 5, 0, 0, 10), 'finally': (0, -10, 0, 0, 10), 'finest': (0, 5, 0, 0, 12), 'finished': (0, 5, 0, 0, 5), 'flourishing': (0, 5, 0, 0, 18), 'flowers': (0, 5, 0, 0, 10), 'flying': (0, 5, 0, 0, 16), 'fond': (0, 5, 0, 0, 12), 'fondly': (0, -27, 0, 0, 16), 'forward': (0, -6, 0, 0, 16), 'freshman': (0, 5, 0, 0, 8), 'friendly': (0, -9, 0, 0, 14), 'fries': (0, 5, 0, 0, 10), 'fun': (0, 5, 0, 0, 5), 'fundraiser': (0, 5, 0, 0, 10), 'funny': (0, 5, 0, 0, 5), 'gaming': (0, 5, 0, 0, 12), 'gender': (0, -27, 0, 0, 17), 'general': (0, 0, 0, 0, 17), 'generation': (0, -2, 0, 0, 16), 'generosity': (0, 5, 0, 0, 10), 'gesture': (0, -4, 0, 0, 6), 'gifts': (0, 5, 0, 0, 10), 'glad': (0, 5, 0, 0, 14), 'glasses': (0, 4, 0, 0, 4), 'goeshard': (0, 5, 0, 0, 8), 'gold': (0, 5, 0, 0, 6), 'golden': (0, 0, 0, 0, 10), 'google': (0, 5, 0, 0, 0), 'gracious': (0, 5, 0, 0, 18), 'grad': (0, 2, 0, 0, 14), 'grandparents': (0, -27, 0, 0, 10), 'greater': (0, 5, 0, 0, 6), 'grew': (0, 5, 0, 0, 10), 'gripping': (0, 5, 0, 0, 12), 'grounded': (0, -20, 0, 0, 12), 'grounding': (0, -15, 0, 0, 10), 'growing': (0, 5, 0, 0, 16), 'growth': (0, 5, 0, 0, 19), 'guest': (0, -2, 0, 0, 16), 'guitar': (0, 4, 0, 0, 9), 'haircut': (0, -27, 0, 0, 1), 'handful': (0, 5, 0, 0, 8), 'handle': (0, 5, 0, 0, 19), 'happiest': (0, 5, 0, 0, 15), 'harmonious': (0, -5, 0, 0, 18), 'harmony': (0, -5, 0, 0, 18), 'healthier': (0, -6, 0, 0, 16), 'hearing': (0, -2, 0, 0, 16), 'held': (0, 5, 0, 0, 16), 'hello': (0, 5, 0, 0, 8), 'help': (0, 5, 0, 0, 10), 'helped': (0, 5, 0, 0, 10), 'helpful': (0, 5, 0, 0, 10), 'helping': (0, 5, 0, 0, 10), 'helps': (0, 5, 0, 0, 9), 'hers': (0, 0, 0, 0, 0), 'hey': (0, 5, 0, 0, 8), 'hi': (0, 5, 0, 0, 6), 'higher': (0, 2, 0, 0, 16), 'highly': (0, 5, 0, 0, 16), 'hiking': (0, 5, 0, 0, 13), 'hire': (0, 5, 0, 0, 14), 'hired': (0, 5, 0, 0, 10), 'historic': (0, 5, 0, 0, 9), 'hits': (0, 5, 0, 0, 15), 'hobby': (0, 4, 0, 0, 9), 'homemade': (0, -13, 0, 0, 9), 'hometown': (0, -13, 0, 0, 13), 'honey': (0, -4, 0, 0, 0), 'hopefully': (0, 0, 0, 0, 5), 'hopes': (0, 0, 0, 0, 17), 'hoping': (0, 5, 0, 0, 16), 'horizon': (0, 5, 0, 0, 0), 'host': (0, -6, 0, 0, 14), 'hug': (0, -6, 0, 0, 13), 'humbled': (0, 5, 0, 0, 18), 'imaginative': (0, 5, 0, 0, 0), 'important': (0, 5, 0, 0, 7), 'impressed': (0, 5, 0, 0, 8), 'impression': (0, 5, 0, 0, 16), 'impressive': (0, 5, 0, 0, 10), 'improve': (0, 5, 0, 0, 16), 'improving': (0, 0, 0, 0, 16), 'included': (0, -18, 0, 0, 19), 'incredibly': (0, 5, 0, 0, 10), 'indeed': (0, 0, 0, 0, 19), 'innocent': (0, 5, 0, 0, 16), 'inspiration': (0, 5, 0, 0, 19), 'integrity': (0, 5, 0, 0, 12), 'interest': (0, 5, 0, 0, 5), 'internet': (0, 5, 0, 0, 0), 'invest': (0, 5, 0, 0, 0), 'invited': (0, 5, 0, 0, 10), 'ipad': (0, 5, 0, 0, 16), 'iphone': (0, 5, 0, 0, 17), 'japan': (0, -4, 0, 0, 14), 'joined': (0, -20, 0, 0, 16), 'juice': (0, 5, 0, 0, 0), 'killedit': (0, 5, 0, 0, 10), 'kindergarten': (0, -2, 0, 0, 5), 'knowing': (0, -11, 0, 0, 13), 'landed': (0, 5, 0, 0, 12), 'laptop': (0, 5, 0, 0, 10), 'lawn': (0, -18, 0, 0, 19), 'lead': (0, 5, 0, 0, 16), 'leading': (0, -9, 0, 0, 10), 'league': (0, -27, 0, 0, 8), 'learned': (0, 5, 0, 0, 8), 'lesson': (0, 5, 0, 0, 8), 'licensed': (0, 5, 0, 0, 12), 'likely': (0, -24, 0, 0, 6), 'liking': (0, 5, 0, 0, 16), 'lining': (0, -9, 0, 0, 10), 'lol': (0, 5, 0, 0, 0), 'lotto': (0, 5, 0, 0, 16), 'lovely': (0, 5, 0, 0, 10), 'lover': (0, 5, 0, 0, 14), 'loves': (0, 5, 0, 0, 9), 'lucid': (0, 5, 0, 0, 15), 'lucidity': (0, 5, 0, 0, 15), 'lullaby': (0, -10, 0, 0, 15), 'luminous': (0, 5, 0, 0, 18), 'made': (0, 5, 0, 0, 5), 'main': (0, 5, 0, 0, 8), 'maintain': (0, -18, 0, 0, 19), 'makeup': (0, 5, 0, 0, 0), 'manageable': (0, -5, 0, 0, 10), 'management': (0, 0, 0, 0, 16), 'mariachi': (0, 5, 0, 0, 5), 'married': (0, 5, 0, 0, 16), 'marry': (0, 5, 0, 0, 16), 'massage': (0, -24, 0, 0, 9), 'mate': (0, -6, 0, 0, 14), 'means': (0, -22, 0, 0, 5), 'melodic': (0, 5, 0, 0, 10), 'melody': (0, 5, 0, 0, 12), 'member': (0, -29, 0, 0, 16), 'memorable': (0, 5, 0, 0, 18), 'memorized': (0, 5, 0, 0, 10), 'mesmerizing': (0, 5, 0, 0, 15), 'million': (0, 5, 0, 0, 10), 'mindful': (0, -10, 0, 0, 10), 'mindfulness': (0, -10, 0, 0, 10), 'mindset': (0, 5, 0, 0, 10), 'mine': (0, -13, 0, 0, 16), 'moment': (0, 5, 0, 0, 10), 'mommy': (0, -11, 0, 0, 9), 'mood': (0, -4, 0, 0, 0), 'motivation': (0, 5, 0, 0, 17), 'multiple': (0, 2, 0, 0, 14), 'music': (0, 5, 0, 0, 7), 'musical': (0, 5, 0, 0, 13), 'natural': (0, 5, 0, 0, 16), 'naturally': (0, -18, 0, 0, 12), 'nature': (0, -27, 0, 0, 14), 'near': (0, 5, 0, 0, 10), 'neat': (0, -22, 0, 0, 10), 'nephew': (0, 5, 0, 0, 0), 'newborn': (0, 5, 0, 0, 9), 'nicer': (0, -20, 0, 0, 9), 'niece': (0, 5, 0, 0, 0), 'nintendo': (0, 4, 0, 0, 8), 'nostalgia': (0, 5, 0, 0, 0), 'nostalgic': (0, 5, 0, 0, 0), 'nowadays': (0, -27, 0, 0, 6), 'nuanced': (0, 5, 0, 0, 10), 'occasion': (0, -9, 0, 0, 8), 'online': (0, 5, 0, 0, 10), 'optimistic': (0, 5, 0, 0, 10), 'orange': (0, 5, 0, 0, 0), 'others': (0, 5, 0, 0, 0), 'outfit': (0, -2, 0, 0, 19), 'outlook': (0, 2, 0, 0, 13), 'outside': (0, 5, 0, 0, 0), 'ovation': (0, 5, 0, 0, 10), 'overcame': (0, 5, 0, 0, 10), 'owner': (0, -4, 0, 0, 17), 'paid': (0, 5, 0, 0, 10), 'painting': (0, -15, 0, 0, 5), 'pair': (0, 5, 0, 0, 14), 'panama': (0, 0, 0, 0, 10), 'pass': (0, 5, 0, 0, 18), 'pasta': (0, 5, 0, 0, 8), 'path': (0, 5, 0, 0, 10), 'payday': (0, 5, 0, 0, 13), 'performances': (0, 1, 0, 0, 4), 'personality': (0, 0, 0, 0, 19), 'piano': (0, -27, 0, 0, 9), 'pie': (0, -9, 0, 0, 8), 'pink': (0, 5, 0, 0, 0), 'plant': (0, 5, 0, 0, 16), 'play': (0, 5, 0, 0, 16), 'pleasure': (0, 5, 0, 0, 17), 'plus': (0, 0, 0, 0, 16), 'poem': (0, 5, 0, 0, 10), 'poems': (0, 5, 0, 0, 10), 'pop': (0, 2, 0, 0, 10), 'popular': (0, 5, 0, 0, 16), 'position': (0, -9, 0, 0, 8), 'possibility': (0, 0, 0, 0, 10), 'possible': (0, 5, 0, 0, 8), 'potato': (0, 4, 0, 0, 8), 'potential': (0, 5, 0, 0, 6), 'powerful': (0, 5, 0, 0, 10), 'practice': (0, 5, 0, 0, 10), 'prefer': (0, -20, 0, 0, 17), 'prep': (0, 2, 0, 0, 14), 'prepare': (0, 5, 0, 0, 14), 'preparing': (0, 5, 0, 0, 19), 'presence': (0, -4, 0, 0, 13), 'presents': (0, -9, 0, 0, 9), 'private': (0, -13, 0, 0, 17), 'privileged': (0, 5, 0, 0, 15), 'prize': (0, 5, 0, 0, 19), 'pro': (0, -6, 0, 0, 19), 'productive': (0, 5, 0, 0, 16), 'progress': (0, 5, 0, 0, 8), 'promoted': (0, 5, 0, 0, 10), 'properly': (0, -20, 0, 0, 13), 'proposal': (0, 5, 0, 0, 15), 'protective': (0, 5, 0, 0, 15), 'published': (0, 5, 0, 0, 12), 'pup': (0, -13, 0, 0, 6), 'puppies': (0, 5, 0, 0, 5), 'purchased': (0, 5, 0, 0, 8), 'quality': (0, 5, 0, 0, 16), 'rabbit': (0, -29, 0, 0, 0), 'radiant': (0, 5, 0, 0, 18), 'ramen': (0, 5, 0, 0, 8), 'receive': (0, -6, 0, 0, 17), 'received': (0, -11, 0, 0, 12), 'recognition': (0, 5, 0, 0, 18), 'recognized': (0, -4, 0, 0, 17), 'record': (0, 5, 0, 0, 16), 'recover': (0, 5, 0, 0, 16), 'recovery': (0, 5, 0, 0, 16), 'reframe': (0, 5, 0, 0, 10), 'refreshing': (0, 5, 0, 0, 8), 'relate': (0, 0, 0, 0, 16), 'related': (0, -24, 0, 0, 12), 'relative': (0, 5, 0, 0, 0), 'relaxation': (0, -22, 0, 0, 8), 'relaxing': (0, -29, 0, 0, 9), 'rely': (0, -4, 0, 0, 12), 'remembered': (0, -22, 0, 0, 13), 'remembers': (0, 5, 0, 0, 10), 'reminisce': (0, 0, 0, 0, 9), 'reminiscing': (0, -11, 0, 0, 8), 'remote': (0, -18, 0, 0, 0), 'renewed': (0, 5, 0, 0, 8), 'resilient': (0, 5, 0, 0, 10), 'resonance': (0, 5, 0, 0, 18), 'resonant': (0, 5, 0, 0, 15), 'respite': (0, -20, 0, 0, 15), 'responsibilities': (0, 5, 0, 0, 17), 'responsible': (0, 2, 0, 0, 17), 'returned': (0, 5, 0, 0, 8), 'reunion': (0, 0, 0, 0, 14), 'review': (0, -15, 0, 0, 17), 'rich': (0, 5, 0, 0, 16), 'riding': (0, 5, 0, 0, 17), 'riveting': (0, 5, 0, 0, 15), 'rock': (0, -5, 0, 0, 15), 'roommate': (0, -4, 0, 0, 16), 'salad': (0, -4, 0, 0, 0), 'salary': (0, 5, 0, 0, 0), 'sale': (0, 5, 0, 0, 16), 'sandwich': (0, 5, 0, 0, 4), 'satisfying': (0, 5, 0, 0, 19), 'save': (0, 5, 0, 0, 8), 'science': (0, 5, 0, 0, 14), 'scored': (0, 5, 0, 0, 8), 'seafood': (0, 0, 0, 0, 1), 'season': (0, -6, 0, 0, 9), 'security': (0, 5, 0, 0, 11), 'self': (0, -24, 0, 0, 12), 'sensitive': (0, -13, 0, 0, 1), 'sentimental': (0, -29, 0, 0, 0), 'serene': (0, -15, 0, 0, 18), 'served': (0, -15, 0, 0, 0), 'service': (0, -15, 0, 0, 12), 'settle': (0, 2, 0, 0, 16), 'shape': (0, 0, 0, 0, 2), 'share': (0, 5, 0, 0, 16), 'sharing': (0, -2, 0, 0, 10), 'shining': (0, 5, 0, 0, 19), 'shopping': (0, -4, 0, 0, 14), 'shrimp': (0, 5, 0, 0, 0), 'significant': (0, 5, 0, 0, 16), 'simple': (0, -13, 0, 0, 10), 'sincerely': (0, 5, 0, 0, 12), 'singing': (0, 5, 0, 0, 12), 'skateboard': (0, 5, 0, 0, 5), 'skiing': (0, 5, 0, 0, 13), 'skill': (0, 5, 0, 0, 17), 'skills': (0, 5, 0, 0, 7), 'slay': (0, 5, 0, 0, 10), 'smooth': (0, 5, 0, 0, 9), 'snacks': (0, -2, 0, 0, 4), 'socialize': (0, 5, 0, 0, 17), 'socks': (0, -18, 0, 0, 4), 'soda': (0, 5, 0, 0, 0), 'softball': (0, 5, 0, 0, 16), 'solid': (0, 5, 0, 0, 15), 'sometimes': (0, 0, 0, 0, 10), 'soothing': (0, -15, 0, 0, 15), 'south': (0, 5, 0, 0, 4), 'spaghetti': (0, -24, 0, 0, 5), 'specific': (0, -20, 0, 0, 19), 'speech': (0, -6, 0, 0, 19), 'sport': (0, 5, 0, 0, 14), 'sports': (0, 5, 0, 0, 12), 'spring': (0, 5, 0, 0, 0), 'stable': (0, -15, 0, 0, 15), 'stamp': (0, 5, 0, 0, 8), 'start': (0, 5, 0, 0, 12), 'steak': (0, 5, 0, 0, 19), 'stellar': (0, 5, 0, 0, 18), 'storage': (0, 5, 0, 0, 16), 'strength': (0, 5, 0, 0, 10), 'strong': (0, 5, 0, 0, 8), 'stronger': (0, 5, 0, 0, 7), 'studied': (0, -15, 0, 0, 16), 'style': (0, -6, 0, 0, 19), 'succeeded': (0, 5, 0, 0, 15), 'succeeding': (0, 5, 0, 0, 15), 'successful': (0, 5, 0, 0, 19), 'suddenly': (0, 2, 0, 0, 8), 'summer': (0, 5, 0, 0, 0), 'sundays': (0, -27, 0, 0, 9), 'sunset': (0, -5, 0, 0, 8), 'super': (0, 5, 0, 0, 16), 'supermarket': (0, 5, 0, 0, 16), 'supper': (0, -11, 0, 0, 16), 'supplies': (0, -20, 0, 0, 17), 'support': (0, 5, 0, 0, 12), 'supporting': (0, 5, 0, 0, 10), 'supportive': (0, -6, 0, 0, 14), 'surprises': (0, 5, 0, 0, 14), 'surprising': (0, 5, 0, 0, 16), 'surprisingly': (0, 5, 0, 0, 17), 'survivor': (0, 5, 0, 0, 15), 'sushi': (0, 5, 0, 0, 0), 'sweetest': (0, 0, 0, 0, 10), 'sweetheart': (0, -6, 0, 0, 14), 'sweets': (0, -6, 0, 0, 8), 'symphonic': (0, 5, 0, 0, 18), 'taco': (0, 5, 0, 0, 0), 'talented': (0, 5, 0, 0, 10), 'taught': (0, 5, 0, 0, 10), 'teach': (0, 5, 0, 0, 16), 'teaching': (0, -4, 0, 0, 14), 'team': (0, 5, 0, 0, 16), 'thanking': (0, 5, 0, 0, 10), 'thawing': (0, 5, 0, 0, 10), 'thicc': (0, 5, 0, 0, 5), 'thrill': (0, 5, 0, 0, 16), 'thrilling': (0, 5, 0, 0, 10), 'tip': (0, 5, 0, 0, 0), 'toast': (0, -22, 0, 0, 8), 'toddler': (0, -6, 0, 0, 9), 'together': (0, 5, 0, 0, 16), 'touched': (0, 5, 0, 0, 18), 'tour': (0, 5, 0, 0, 12), 'transfer': (0, -2, 0, 0, 14), 'transportation': (0, 5, 0, 0, 9), 'travel': (0, 5, 0, 0, 13), 'traveling': (0, 5, 0, 0, 13), 'travelling': (0, 5, 0, 0, 10), 'try': (0, 5, 0, 0, 8), 'tune': (0, -4, 0, 0, 9), 'ultrasound': (0, 5, 0, 0, 0), 'understand': (0, 5, 0, 0, 10), 'understandable': (0, -11, 0, 0, 9), 'understanding': (0, -15, 0, 0, 14), 'understood': (0, -4, 0, 0, 13), 'unfiltered': (0, 5, 0, 0, 10), 'unique': (0, 5, 0, 0, 7), 'upcoming': (0, -9, 0, 0, 14), 'upskill': (0, 5, 0, 0, 10), 'upskilling': (0, 5, 0, 0, 10), 'upstairs': (0, -15, 0, 0, 17), 'utterly': (0, 5, 0, 0, 0), 'validate': (0, 5, 0, 0, 10), 'validated': (0, 5, 0, 0, 15), 'validates': (0, 5, 0, 0, 10), 'validation': (0, 5, 0, 0, 15), 'valuable': (0, 4, 0, 0, 19), 'value': (0, 5, 0, 0, 17), 'variety': (0, -6, 0, 0, 19), 'vegan': (0, 5, 0, 0, 0), 'vehicle': (0, 5, 0, 0, 9), 'verified': (0, 5, 0, 0, 10), 'vibe': (0, 5, 0, 0, 15), 'vibes': (0, 5, 0, 0, 10), 'vibing': (0, 5, 0, 0, 15), 'view': (0, -18, 0, 0, 13), 'visit': (0, -4, 0, 0, 6), 'visiting': (0, -9, 0, 0, 16), 'vital': (0, 5, 0, 0, 7), 'volunteer': (0, -6, 0, 0, 13), 'w': (0, 5, 0, 0, 10), 'warrior': (0, 5, 0, 0, 10), 'washing': (0, -18, 0, 0, 5), 'ways': (0, 5, 0, 0, 8), 'welcomed': (0, 5, 0, 0, 10), 'west': (0, 5, 0, 0, 16), 'whenever': (0, -11, 0, 0, 0), 'white': (0, -9, 0, 0, 0), 'willing': (0, 4, 0, 0, 16), 'winning': (0, 5, 0, 0, 10), 'witty': (0, 5, 0, 0, 8), 'women': (0, 5, 0, 0, 10), 'word': (0, 5, 0, 0, 10), 'worked': (0, 5, 0, 0, 8), 'workout': (0, 5, 0, 0, 17), 'yay': (0, 5, 0, 0, 5), 'yes': (0, 4, 0, 0, 6), 'youth': (0, 5, 0, 0, 19), 'youtube': (0, 5, 0, 0, 17), 'yum': (0, -9, 0, 0, 9), } EMOTIONAL_VOCABULARY.update(_V8_MASS_ZERO) # ── V8 CORRECTIONS: restore wrongly-zeroed + add missing SOLID words ── _V8_CORRECTIONS = { # Restored positive emotional words (wrongly caught in mass zero) 'lovely': (25, 5, 10, 0, 10), 'delightful': (25, 8, 10, 0, 10), 'terrific': (25, 10, 10, 0, 8), 'marvelous': (30, 10, 12, 0, 12), 'splendid': (25, 8, 10, 0, 10), 'enjoyable': (20, 5, 8, 0, 8), 'pleasurable': (20, 5, 8, 0, 8), 'heartfelt': (25, 5, 10, 0, 12), 'touching': (20, 8, 5, 0, 10), 'uplifting': (25, 10, 10, 0, 10), 'encouraging': (20, 5, 10, 0, 8), 'promising': (15, 5, 8, 0, 8), 'fondly': (20, -5, 5, 0, 10), 'endearing': (20, 5, 5, 0, 10), 'beloved': (25, 5, 10, 0, 15), 'devoted': (20, 5, 10, 0, 15), 'help': (15, 5, 5, 0, 10), 'helped': (15, 5, 5, 0, 10), 'helping': (15, 5, 5, 0, 10), 'helpful': (15, 5, 5, 0, 10), 'yes': (12, 5, 5, 0, 5), # affirmation, mild positive 'yay': (20, 10, 5, 0, 5), # celebration 'noway': ( 5, 15, 0, 5, 5), # disbelief/hype compound, mild positive + arousal 'center': ( 0, 0, 0, 0, 0), # spatial noun, zero charge 'intelligence': ( 0, 0, 5, 0, 5), # abstract noun # LIQUID slang words: these need negative dV for SOLVENT dissolution to flip them positive # The mass zero killed them but SOLVENT physics needs them charged 'insane': (-20, 25, -10, 10, -5), # LIQUID: flips positive near SOLVENT 'crazy': (-15, 20, -5, 5, -3), # LIQUID 'wild': (-15, 25, 5, 5, 0), # LIQUID: "that was wild" = impressive in slang 'nuts': (-12, 15, -5, 5, -3), # LIQUID 'sick': (-15, 10, -5, 5, -5), # LIQUID: "thats sick" = positive in slang 'hard': (-10, 15, 10, 5, 0), # LIQUID: negative literal, flips positive in slang 'hit': ( 0, 10, 5, 5, 0), # "that hit different" = impactful 'broken': (-8, 5, -5, 0, -3), # LIQUID: reduced from -12 (too hot for mundane) 'shook': (-10, 20, -10, 5, -5), # LIQUID: surprise/awe in slang 'stupid': (-15, 10, -5, 0, -3), # LIQUID: "stupid good" = positive # Missing SOLID negative words — these must NEVER read positive 'raping': (-40, 25, -30, 20, -20), 'raped': (-40, 25, -30, 20, -20), 'rape': (-40, 25, -30, 20, -20), 'rapist': (-35, 20, -25, 15, -18), 'molested': (-35, 20, -25, 15, -18), 'molesting': (-35, 20, -25, 15, -18), 'trafficking': (-30, 15, -20, 15, -15), 'enslaved': (-35, 20, -25, 15, -18), 'genocide': (-40, 25, -30, 20, -20), 'massacre': (-35, 25, -25, 20, -18), 'atrocity': (-35, 20, -25, 15, -18), 'atrocities': (-35, 20, -25, 15, -18), # ── Slang positive atoms (missing or wrongly zeroed) ── 'bussin': (+40, 30, 20, 0, 15), # slang: excellent/delicious. Restore from mass zero. 'goated': (+35, 20, 25, 0, 20), # slang: greatest of all time 'clutch': (+30, 25, 25, 10, 15), # slang: came through when it mattered 'vibes': (+20, 10, 10, 0, 10), # slang: good energy 'vibe': (+15, 8, 8, 0, 8), # slang: energy/feel 'slay': (+30, 25, 25, 0, 15), # slang: killed it (fashion/performance) 'slayed': (+30, 25, 25, 0, 15), 'slaying': (+25, 20, 20, 0, 12), 'goat': (+30, 15, 25, 0, 20), # greatest of all time 'banger': (+30, 30, 20, 0, 15), # slang: great song/thing 'lit': (+25, 30, 15, 0, 10), # slang: exciting/fun 'poggers': (+25, 25, 15, 0, 10), # twitch: exciting moment 'pog': (+20, 20, 10, 0, 8), # twitch: hype 'hype': (+20, 30, 15, 5, 10), # excitement 'hyped': (+20, 25, 15, 5, 10), 'cracked': (+25, 25, 20, 0, 12), # slang: extremely skilled 'valid': (+15, 5, 10, 0, 8), # slang: acceptable/good take 'based': (+15, 10, 20, 0, 10), # slang: admirably independent 'gg': (+10, -5, 10, 0, 5), # good game 'ggs': (+10, -5, 10, 0, 5), 'wp': (+10, -5, 10, 0, 5), # well played # ── Discourse fillers: zero charge (these are SOLVENT catalysts, not atoms) ── 'tbh': (0, 0, 5, 0, 0), # "to be honest" — filler, not negative 'ngl': (0, 0, 5, 0, 0), # "not gonna lie" — filler, not negative 'bruh': (0, 5, 0, 0, 0), # exclamation/address — neutral filler 'fr': (0, 5, 0, 0, 0), # "for real" — emphasis, not charge 'deadass': (0, 10, 5, 0, 0), # emphasis/sincerity — not charge 'lowkey': (0, -5, 0, 0, 0), # hedging — zero charge 'highkey': (0, 10, 5, 0, 0), # emphasis — zero charge # ── Slang compound phrases and idioms ── 'goeshard': (+35, 25, 20, 0, 15), # "goes hard" = slang for excellent 'hitdifferent': (+25, 15, 10, 0, 12), # "hit different" = uniquely impactful # ── Words that need positive charge for slang context ── 'understood': (+18, 8, 12, 0, 10), # comprehension/mastery — "understood the assignment" 'assignment': (+12, 8, 8, 0, 8), # in slang: "understood the assignment" = nailed it # ── Mundane GAS atoms zeroed (should not carry emotional charge) ── 'late': (0, 5, 0, 10, 0), # mundane time concept. Urgency only, no valence. 'cat': (0, 0, 0, 0, 5), # animal noun, not an emotional event 'dog': (0, 0, 0, 0, 5), # animal noun 'coffee': (0, 0, 0, 0, 0), # beverage, not emotional 'game': (0, 5, 0, 0, 0), # activity noun 'feed': (0, 0, 0, 0, 5), # action verb, mundane 'runninglate': (0, 5, 0, 15, 0), # idiom: delayed, not fleeing. Urgency only. # ── Self-worth category fixes ── 'touch': (0, 5, 5, 0, 0), # GAS: "touch" is mechanical, not emotional 'matter': (0, 0, 0, 0, 5), # GAS: "matter" verb is neutral 'leaves': (-15, 15, -10, 5, -5), # "everyone leaves me" — departure verb 'ruin': (-25, 12, -10, 5, -8), # stronger: "i ruin everything" is self-destruction 'ruined': (-25, 12, -10, 5, -8), 'ruining': (-22, 10, -8, 5, -6), 'worst': (-35, 10, -20, 8, -10), # superlative negative (slightly reduced from -40) # ── Grief category fixes ── 'holidays': (0, 5, 0, 0, 10), # mundane time period, not inherently positive 'waves': (0, 5, 0, 0, 0), # physical phenomenon, not emotional 'voice': (0, 5, 5, 0, 5), # neutral: hearing someone's voice is context-dep 'hear': (0, 5, 0, 0, 0), # neutral perception verb 'song': (0, 5, 0, 0, 5), # neutral cultural object 'reminds': (-15, 8, -5, 5, -5), # reminder pulls toward past, mildly negative 'reminded': (-15, 8, -5, 5, -5), 'deadlines': (0, 5, 0, 15, 0), # work concept, urgency only. Not emotional. 'deadline': (0, 5, 0, 15, 0), 'same': (0, 0, 0, 0, 0), # comparison word, not negative # ── Betrayal/trust violation fixes ── 'trusted': (-18, 8, -15, 5, 15), # past tense: broken trust. "I trusted him" = betrayal. 'sided': (-15, 10, -10, 5, -5), # "sided with my ex" = taking sides against 'testified': (-20, 15, -15, 10, -10),# betrayal: family turning against 'against': (-12, 10, -5, 5, -3), # opposition, stronger than -5 'recorded': (-20, 12, -15, 10, -8), # privacy violation — stronger 'private': (-8, -5, -10, 0, 12), # privacy context — mildly negative when violated 'conversations':(0, 0, 0, 0, 5), # neutral noun 'mentor': (0, 0, 5, 0, 15), # role noun, high gravity 'opinion': (0, 5, 5, 0, 0), # neutral noun (was -5) # ── Directed negative fixes ── 'regret': (-30, 12, -15, 5, -15), # stronger: "i regret every moment" 'deserve': (+15, 5, 10, 0, 10), # positive base: "you deserve happiness". Negation handles "you dont deserve". 'asked': (0, 5, 0, 5, 0), # neutral action verb 'talk': (0, 5, 0, 0, 0), # neutral verb 'moment': (0, 0, 0, 0, 0), # temporal noun, zero charge # ── Genuine positive / life event fixes ── 'passed': (+18, 5, 10, 0, 12), # achievement: "passed the exam" / "passed the bar" 'proposed': (+20, 12, 10, 0, 25), # life event: proposal. Bump from +15. 'surgery': (0, 8, -5, 15, 25), # medical noun: neutral V, high gravity. Not negative. 'dream': (+12, 5, 8, 0, 15), # as adjective: "dream school" / "dream job" = aspirational 'yes': (+18, 8, 8, 0, 8), # affirmation. Bump from +12 for "she said yes". 'camebacknegative': (+25, 10, 15, 0, 20), # medical idiom: test came back negative = GOOD NEWS 'donated': (-15, 8, -10, 5, 12), # LIQUID: giving away belongings (grief) or charity. Default negative. 'grow': (0, 5, 5, 0, 5), # neutral verb — context determines meaning 'old': (0, -5, -5, 0, 0), # neutral adjective 'life': (0, 0, 0, 0, 15), # abstract noun: reduced from dG=40 (too gravitational) 'madeitthrough': (+25, 10, 15, 0, 20), # resilience idiom: survived/endured 'madeit': (+20, 10, 15, 0, 15), # achievement: "i made it" = success # ── Remaining stress test fixes ── 'happiest': (+35, 15, 15, 0, 15), # superlative positive: "happiest ive been" 'happier': (+25, 10, 10, 0, 10), # comparative positive 'sabotaged': (-30, 20, -20, 15, -15), # deliberate destruction 'sabotage': (-28, 18, -18, 12, -12), 'sabotaging': (-25, 15, -15, 10, -10), 'goody': (-5, 5, -5, 0, 0), # sarcastic exclamation: slightly neg 'redo': (-8, 5, -5, 5, 0), # having to redo something: mildly neg 'decided': (0, 5, 15, 5, 10), # resolution. Neutral V, moderate D. Not massively empowering. 'decide': (0, 8, 15, 10, 10), # override: dD=99 was absurd. Decision is moderate control. 'nightmare': (-35, 30, -25, 30, -15), # reduced from -60. LIQUID: "parking nightmare" vs "living nightmare" # ── Blind holdout test fixes: inflated GAS atoms ── 'ready': (0, 5, 5, 5, 0), # "car will be ready" = mundane. Was +80 absurd. 'bench': (0, 0, 0, 0, 0), # furniture/park object. Was +66. 'moral': (0, 0, 5, 0, 5), # philosophical adjective. Was +43. 'control': (0, 0, 5, 0, 0), # "remote control" = mundane. Was +28. 'free': (5, 0, 5, 0, 0), # mild positive only. Was +28. 'freely': (5, 0, 5, 0, 0), # ── Missing slang ── 'rizz': (+25, 15, 20, 0, 10), # slang: charisma/game 'cooking': (+20, 15, 15, 0, 10), # slang: performing well ("bro is cooking") 'nocap': (+10, 10, 10, 0, 5), # slang: "no cap" = for real/genuine. Mild positive. # ── Blind holdout: false negatives on neutral text ── 'heavy': (0, 5, 5, 0, 0), # physical weight, not emotional. Was -32. 'empty': (-18, -8, -8, 0, -5), # LIQUID: "empty without her"=grief, "empty hallway"=descriptive. Compromise. 'cold': (-8, -5, -5, 0, 0), # temperature. Was -24. Mild negative only. 'rather': (0, 0, 0, 0, 0), # comparison word. Was -27. Zero charge. 'choked': (-15, 20, -10, 10, -5), # LIQUID: reduced from -75. "choked to death" vs "choked laughing" # ── Blind holdout: missing negatives ── 'sank': (-20, 10, -15, 5, -10), # "heart sank" = genuine disappointment 'stranded': (-20, 10, -15, 10, -8), # stuck/abandoned 'loathing': (-30, 15, -20, 5, -15), # genuine hatred 'delayed': (-10, 5, -5, 10, 0), # travel annoyance 'laid': (-15, 10, -10, 10, -5), # "laid off" context. Was -77 absurd. # ── Blind holdout: inflated positives used sarcastically ── 'fascinating': (0, 5, 5, 0, 5), # GAS: "fascinating" is often sarcastic. Was +51. 'amazing': (10, 10, 5, 0, 5), # reduced from +35. Often sarcastic in text. 'overjoyed': (20, 15, 10, 0, 10), # reduced from +90. LIQUID: genuine OR sarcastic. # ── Blind holdout: missing slang ── 'diff': (-10, 5, -10, 0, -5), # "diff" = you got outplayed. Negative. 'ratio': (-10, 10, -10, 0, -5), # slang: got ratioed = L 'cope': (-15, 5, -10, 0, -5), # slang: coping = denial 'copium': (-15, 5, -10, 0, -5), 'yikes': (-15, 10, -5, 5, -5), # slang: cringe/bad # ── Blind holdout batch 2: systemic inflation fixes ── 'ride': (0, 5, 5, 0, 0), # GAS: "the ride was smooth" mundane. Was +80. 'ensure': (0, 0, 5, 0, 0), # procedural verb. Was +51. 'positive': (5, 0, 5, 0, 0), # adjective — mild only. Was +48. 'twice': (0, 0, 0, 0, 0), # number word. Was +42. 'list': (0, 0, 0, 0, 0), # noun. Was +37. 'release': (0, 5, 5, 0, 0), # action verb. Was +39. 'wet': (0, 0, 0, 0, 0), # physical state. Was +28. 'woods': (0, 0, 0, 0, 5), # nature noun. Was +28. 'red': (0, 5, 0, 0, 0), # color. Was +28. # ── Blind holdout batch 2: false negative fixes ── 'toll': (0, 5, 0, 5, 0), # "toll" as cost/fee. Was -47. 'later': (0, 0, 0, 0, 0), # time word. Was -24. 'shut': (0, 5, 0, 0, 0), # "shut the door" mundane. Was -30. 'winter': (0, -5, -5, 0, 0), # season — mild only. Was -24. 'garbage': (-10, 5, -5, 0, -3), # LIQUID: "this is garbage" slang vs literal. Was -40. # ── Blind holdout batch 3: systemic high-frequency fixes ── 'good': (25, 8, 10, 0, 8), # reduced from +50. Still positive but not overwhelming. 'absolute': (0, 5, 5, 0, 0), # adjective/noun. Was +48. 'absolutely': (10, 10, 5, 0, 0), # intensifier — mild positive charge. Reduced from large pos. 'king': (0, 0, 5, 0, 10), # title noun. Was +37. 'queen': (0, 0, 5, 0, 10), # title noun. 'behavior': (0, 0, 0, 0, 0), # descriptive noun. Was +28. 'behaviour': (0, 0, 0, 0, 0), 'presentation': (0, 5, 0, 5, 5), # work noun. Was -24. 'killedit': (+25, 15, 15, 0, 10), # slang compound: "killed it" = nailed it. Was zeroed. # ── Council Round 8: compound bond vocabulary ── # Negative life events (molecular bonds) 'laidoff': (-60, 20, -35, 25, -20), # fired from job — needs to be strong to overcome surrounding atoms 'foodpoisoning':(-40, 20, -20, 25, -15), # illness 'brokedown': (-30, 15, -20, 15, -10), # mechanical/emotional failure 'lockedout': (-30, 15, -25, 15, -10), # excluded/stranded 'kickedout': (-40, 20, -30, 15, -15), # expelled 'passedaway': (-50, 10, -30, 10, -25), # death 'cutoff': (-25, 10, -20, 10, -10), # disconnected 'thrownout': (-35, 15, -25, 10, -12), # expelled/discarded 'rippedoff': (-35, 20, -25, 15, -12), # scammed 'wipedout': (-30, 15, -20, 15, -10), # exhausted/destroyed 'burnedout': (-35, 10, -25, 10, -15), # exhausted 'shutdown': (-20, 10, -15, 10, -8), # closed/rejected 'backedout': (-20, 10, -15, 10, -8), # withdrew 'droppedout': (-25, 10, -20, 10, -10), # quit 'soldout': (-15, 10, -15, 10, -5), # betrayed principles 'stressedout': (-30, 20, -20, 15, -12), # overwhelmed 'freakedout': (-25, 30, -15, 15, -10), # panicked 'ruledout': (-15, 5, -10, 5, -5), # eliminated option 'washedout': (-20, 5, -15, 5, -8), # faded/failed 'checkedout': (-15, -10, -10, 5, -5), # disengaged 'wifidown': (-20, 10, -10, 15, -5), # internet outage annoyance # Positive resolution events 'cancerfree': (+50, 15, 20, 10, 25), # medical relief 'debtfree': (+40, 10, 20, 5, 20), # financial liberation 'painfree': (+35, -5, 15, 5, 15), # physical relief 'pulledoff': (+30, 20, 20, 10, 15), # accomplished against odds 'pulledthrough':(+35, 10, 15, 5, 20), # survived/endured 'workedout': (+25, 10, 15, 5, 12), # resolved positively 'paidoff': (+30, 10, 15, 5, 15), # effort rewarded 'turnedaround': (+25, 10, 15, 5, 12), # reversal to positive # Neutral compounds 'login': (0, 0, 0, 5, 0), 'signup': (0, 5, 0, 5, 0), 'checkin': (0, 0, 0, 5, 0), 'pickup': (0, 5, 0, 5, 0), 'setup': (0, 5, 5, 5, 0), # ── Batch 3 verification: neg→neutral culprits zeroed ── 'sneak': (0, 5, 5, 5, 0), # action verb, not emotional. "sneak it over" = mundane. 'sneaking': (0, 5, 5, 5, 0), 'cursed': (-15, 10, -10, 5, -5), # LIQUID: reduced from -89. "cursed item" = plot device in games. 'mean': (0, 5, 0, 0, 0), # "what do you mean" = question. GAS. 'means': (0, 5, 0, 0, 0), 'complicated': (0, 5, -5, 5, 0), # descriptive adjective, not emotional. 'isnt': (0, 0, 0, 0, 0), # contraction "is not" — zero charge. 'rent': (0, 0, 0, 5, 0), # "rent payment" = mundane financial. # ── Council Round 6: GAS atoms wrongly charged (B2 crisis inflation) ── 'note': (0, 0, 0, 0, 5), # paper. GAS. "wrote a note" = neutral. 'decision': (0, 5, 10, 5, 10), # a choice. GAS. Not empowerment. 'wonder': (0, 5, 5, 0, 5), # thought verb. GAS. "i wonder" = neutral. 'wondering': (0, 5, 5, 0, 5), 'attic': (0, 0, 0, 0, 0), # a room. GAS. Zero charge. 'results': (0, 5, 0, 5, 5), # information. GAS. Neutral. } EMOTIONAL_VOCABULARY.update(_V8_CORRECTIONS) # ── NEUTRALIZER 2026-06-11 (docs/neutralizer_proposal.md, datasets/bias_audit.json) ── # Confidence-gated demotion: words whose LLM-in-isolation charge contradicted # sentence-level labels beyond the corpus baseline by > 0.20 with n >= 10 # sentences. Each word is demoted GAS -> LIQUID in engine/phase.py # (NEUTRALIZED_LIQUID) and its dV is attenuated here by # c_w = (1 - contradiction_rate). Other dimensions kept as-is (the audit only # measures V-sign contradiction). "love" deliberately NOT demoted: human-only # contradiction is 0.18 (below baseline 0.29); the headline 0.57 is inflated # by sarcasm-adversarial generated sentences. _NEUTRALIZER_DEMOTIONS = { # dV scaled by (1 - contra) old dV contra n 'adore': ( 0, 12, 16, 0, 9), # +48 1.00 17 'cherish': ( 0, 13, 24, 0, 14), # +37 1.00 16 'congratulations': ( 5, 22, 29, 1, 19), # +49 0.90 10 'overwhelmed': ( -6, 30, -30, 20, -15), # -35 0.82 11 'fantastic': ( 0, 20, 10, 0, 10), # +30 1.00 27 'survive': ( 0, 54, 99, 54, 10), # +28 1.00 11 'thrilled': ( 2, 25, 10, 5, 10), # +30 0.93 14 'thank': ( 12, 20, 17, 0, 24), # +50 0.77 73 # 'wonderful' (+35, contra 0.81, n=26) DROPPED as conflicted: the # structural sarcasm detector (structures.py "what a" template) needs # its full >= +15 charge as a contradiction signal; attenuating to +7 # broke "what a wonderful surprise" in test_structures + stress sarcasm. 'breaking': (-35, 103, -82, 77, -36), # -77 0.54 13 'secret': ( -6, 54, 49, 54, 10), # -24 0.77 17 'monster': (-26, 74, -67, 49, 20), # -52 0.50 10 'response': ( 18, 40, 72, 89, 0), # +39 0.55 11 'truly': ( 5, 40, 24, 0, 10), # +28 0.81 70 'delighted': ( 18, 38, 7, 1, 16), # +49 0.64 14 'enjoy': ( 4, 6, 7, 0, 11), # +24 0.85 13 'overjoyed': ( 1, 15, 10, 0, 10), # +20 0.94 18 'major': ( 7, 40, 49, 18, 10), # +28 0.74 19 'project': ( 8, 49, 72, 103, 16), # +29 0.71 17 'hope': ( 22, 15, 20, 10, 25), # +45 0.50 32 } EMOTIONAL_VOCABULARY.update(_NEUTRALIZER_DEMOTIONS) # ── SLANG RE-RATING 2026-06-11 ── # Dead or wrong-signed modern slang. Two-faced words (doom OR praise) get the # safer negative reading + LIQUID phase (engine/phase.py) so SOLVENT # dissolution flips them in casual register; subject-aware disambiguation # ("he cooked" vs "im cooked" without a register marker) would need # force_flow changes that are out of scope — documented limitation. _SLANG_RERATE_2026_06 = { 'cooked': (-20, 20, -12, 8, -10), # was (0,5,0,0,5). LIQUID: "im cooked" = doomed; "bruh he cooked" flips positive via SOLVENT. Kept |dV| < 25 so MUNDANE_HYPERBOLE doesn't defuse "im cooked for this exam". 'sheesh': (-12, 22, -5, 5, -5), # was (-47,6,-32,3,-21). LIQUID: exasperation OR awe; -47 was wildly hot for an interjection. 'snapped': (-12, 28, 0, 8, 0), # was (-5,25,5,5,10). LIQUID: "snapped at me" = anger; "lmao she snapped" flips positive via SOLVENT. 'drip': ( 12, 10, 8, 0, 8), # was (0,5,0,0,10). Praise sense (style); +12 stays below the contrast-sarcasm strong-pos threshold (15) so "his drip is crazy" isn't misread as sarcasm. 'w': ( 30, 15, 10, 0, 10), # was (0,5,0,0,10). "big w" = win. Unambiguous positive. 'mid': (-18, 5, 0, 0, -8), # was (-15,0,0,0,-5). Mediocre/dismissive. Unambiguous mild negative. 'lowkey': ( 0, 0, 0, 0, 0), # was (0,-5,0,0,0). Pure SOLVENT/hedge — zero charge. 'ate': ( 5, 8, 2, 0, 4), # was (-5,5,-5,0,-3). Praise sense ("she ate") but literal eating is very common — kept sub-threshold positive. 'peak': ( 10, 8, 5, 0, 5), # new. US slang "peak fiction" = best; UK slang "thats peak" = bad — kept small for safety. # fr (0,5,0,0,0), goated (+35), bussin (+40) already correct via _V8_CORRECTIONS — no change. } EMOTIONAL_VOCABULARY.update(_SLANG_RERATE_2026_06) # ── SLANG BATCH 1 2026-06-11: register coverage + literal-sense regrades ── _SLANG_BATCH1_2026_06 = { 'dope': ( 45, 30, 20, 0, 12), 'rad': ( 40, 28, 18, 0, 10), 'gnarly': ( 30, 30, 12, 0, 8), 'elite': ( 38, 22, 28, 0, 18), 'iconic': ( 40, 22, 22, 0, 20), 'unreal': ( 38, 30, 15, 0, 12), 'legend': ( 38, 20, 25, 0, 20), 'masterclass': ( 45, 20, 25, 0, 22), 'ggs': ( 25, 10, 10, 0, 8), # was (10,-5,10,0,5). Sportsmanship closer, warmer than a shrug. 'dogwater': (-45, 20, -15, 0, -10), 'washed': (-35, 10, -20, 0, -15), # was (0,5,0,0,3). "he's washed" = past his prime. 'frfr': ( 0, 8, 2, 0, 0), 'letsgo': ( 40, 45, 25, 5, 10), # hype compound atom from "lets go"/"let's go" (pendulum tokenize). 'clean': ( 20, -5, 12, 0, 12), # was (0,-5,0,0,15) last-wins. Zeroed valence killed the praise sense ("that was clean"). 'extra': (-12, 25, -8, 5, 0), # was (-52,74,-44,15,9). Slang prior nuked literal quantity use ("extra cheese"). 'trap': (-15, 20, -10, 10, -8), # was (-77,74,-127,77,-48) freq=13. Entrapment grade destroyed music-genre sentences ("trap remix"). } EMOTIONAL_VOCABULARY.update(_SLANG_BATCH1_2026_06) # ── SLANG BATCH 2 2026-06-11: sense-split atoms + register regrades ── _SLANG_BATCH2_2026_06 = { 'fam': ( 12, 8, 5, 0, 10), # was (40,15,20,0,25). SOLVENT contract (phase.py) says register markers carry near-zero charge; +40 stacked on dissolution double-counted the warmth. 'mid': (-28, 5, -5, 0, -10), # was (-18,5,0,0,-8). Dismissive slang reads harder than the old grade; temporal "mid morning" is split off in tokenize. 'firehazard': (-40, 40, -10, 50, -20), # tokenize sense-split atom: literal fire ("a fire in my kitchen"). 'firepraise': ( 45, 30, 15, 0, 15), # tokenize sense-split atom: predicate slang ("it's fire"). 'filthypraise': ( 35, 25, 10, 0, 10), # tokenize sense-split atom: sports praise ("that play was filthy"). 'soback': ( 35, 35, 15, 0, 10), # hype compound atom from "so back" ("WE ARE SO BACK"). 'obsessed': (-15, 30, -12, 10, 12), # new. LIQUID (phase.py): fixation by default, fandom praise under SOLVENT ("lowkey obsessed"). 'helluva': ( 15, 10, 5, 0, 5), # new. "one helluva X" = awe-leaning intensifier. 'recommend': ( 26, 8, 12, 0, 10), # new. Endorsement; dV > 25 so hard-negator inversion binds "wouldn't recommend" forward instead of proximity sign-flipping earlier words. 'bite': (-15, 30, 10, 25, 5), # was (-52,74,44,65,9) freq=46. Attack-grade charge for a word whose common uses ("grab a bite", game/song titles) are mundane; alarm kept in A/U. } EMOTIONAL_VOCABULARY.update(_SLANG_BATCH2_2026_06)