Skip to content
Open

e #1

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
e11a3bf
e
SiyovushS Jul 16, 2025
b3912b9
e2
SiyovushS Jul 16, 2025
94a7467
e23
SiyovushS Jul 16, 2025
fea56a1
e
SiyovushS Jul 17, 2025
b0344e7
e
SiyovushS Jul 17, 2025
e136a50
w
SiyovushS Jul 17, 2025
9f49c95
Merge branch 'Siy' of https://github.com/SiyovushS/BRIGHTER into Siy
SiyovushS Jul 17, 2025
b0f4182
e
SiyovushS Jul 17, 2025
b345636
Merge branch 'Siy' of https://github.com/SiyovushS/BRIGHTER into Siy
SiyovushS Jul 17, 2025
3974d1b
e7
SiyovushS Jul 17, 2025
0b699c6
ew
SiyovushS Jul 17, 2025
12f7e7e
ewwq
SiyovushS Jul 17, 2025
258fa67
jghjygyghj
SiyovushS Jul 17, 2025
9ecd480
ddsaads
SiyovushS Jul 17, 2025
655f540
e
SiyovushS Jul 17, 2025
49617e1
ewqqwqw
SiyovushS Jul 18, 2025
3aa640f
qewqwqe
SiyovushS Jul 18, 2025
5cb1177
R
SiyovushS Jul 20, 2025
b613403
yg
SiyovushS Jul 22, 2025
96eda14
yg
SiyovushS Jul 22, 2025
5ac60d6
khgf
SiyovushS Jul 25, 2025
f0d9bbc
ewae
SiyovushS Jul 27, 2025
32eb1bb
sw
SiyovushS Jul 27, 2025
15068a4
eqw
SiyovushS Jul 27, 2025
6be7dde
sw
SiyovushS Jul 27, 2025
07db740
dwak
SiyovushS Jul 28, 2025
a5bff7d
wre
SiyovushS Jul 28, 2025
35f92f6
eqw
SiyovushS Jul 28, 2025
2703f30
rewdfg
SiyovushS Jul 30, 2025
9c18dab
ewae
SiyovushS Jul 30, 2025
c5098d4
ewaewa
SiyovushS Jul 31, 2025
8e10951
eawewaewaewaeea
SiyovushS Jul 31, 2025
f37144e
ewaeawewaewaeaeae
SiyovushS Aug 1, 2025
fcb3f2d
wad
SiyovushS Aug 1, 2025
b9885a8
ewae
SiyovushS Aug 1, 2025
b45925f
2133213321321321
SiyovushS Aug 6, 2025
fe0f63f
hgfd
SiyovushS Aug 6, 2025
9af593f
ewewew
SiyovushS Aug 8, 2025
e2786f5
jhkj
SiyovushS Aug 15, 2025
1d7c4f3
wqe
SiyovushS Aug 15, 2025
27156ad
321
SiyovushS Aug 15, 2025
d84b867
e
SiyovushS Aug 16, 2025
a8856a5
vbn
SiyovushS Aug 16, 2025
519e06b
432
SiyovushS Aug 16, 2025
069b1a7
312
SiyovushS Aug 16, 2025
c1f4419
rfs
SiyovushS Sep 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
80 changes: 80 additions & 0 deletions Commands.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
Conda Set Up
$env:Path = "C:\Users\siyov\miniconda3\Scripts;C:\Users\siyov\miniconda3;C:\Users\siyov\miniconda3\Library\bin;" + $env:Path
conda --version
conda init

conda --version
conda activate brighter-llm
set OPENAI_API_KEY=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
cd C:\Users\caoca\Documents\GitHub\BRIGHTER
cd C:\Users\siyov\Documents\GitHub\BRIGHTER


Mock Run
python llms.py --model_name "openai/gpt-4" --task binary --reasoning_mode self_consistency --top_k 4 --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations --error_test Passed Mock and Error
python llms.py --model_name "openai/gpt-4" --task intensity --reasoning_mode self_consistency --top_k 4 --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations --error_test Passed Mock and Error

python llms.py --model_name "openai/gpt-4" --task binary --reasoning_mode tree_of_thoughts --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --prompt_variant tree_of_thoughts --skip_ablations --error_test Passed Mock and Error
python llms.py --model_name "openai/gpt-4" --task intensity --reasoning_mode tree_of_thoughts --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --prompt_variant tree_of_thoughts --skip_ablations --error_test Passed Mock and Error

python llms.py --model_name "openai/gpt-4" --task binary --reasoning_mode self_refine --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations --error_test Passed Mock and Error
python llms.py --model_name "openai/gpt-4" --task intensity --reasoning_mode self_refine --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations --error_test Passed Mock and Error

python llms.py --model_name "openai/gpt-4" --task binary --reasoning_mode default --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations --error_test Passed Mock and Error
python llms.py --model_name "openai/gpt-4" --task intensity --reasoning_mode default --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations --error_test Passed Mock and Error

python llms.py --model_name "openai/gpt-4" --task binary --reasoning_mode rasc --top_k 4 --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations --error_test Passed Mock and Error
python llms.py --model_name "openai/gpt-4" --task intensity --reasoning_mode rasc --top_k 4 --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations --error_test Passed Mock and Error

python llms.py --model_name "openai/gpt-4" --task binary --reasoning_mode complexity_based --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --skip_ablations --error_test Passed Mock and Error
python llms.py --model_name "openai/gpt-4" --task intensity --reasoning_mode complexity_based --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --skip_ablations --error_test Passed Mock and Error

python llms.py --model_name "openai/gpt-4" --task binary --reasoning_mode plan_and_solve --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations --error_test Passed Mock and Error
python llms.py --model_name "openai/gpt-4" --task intensity --reasoning_mode plan_and_solve --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations --error_test Passed Mock and Error

python llms.py --model_name "openai/gpt-4" --task binary --reasoning_mode rankcot --top_k 4 --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --skip_ablations --error_test Passed Mock and Error
python llms.py --model_name "openai/gpt-4" --task intensity --reasoning_mode rankcot --top_k 4 --n_shot 0 --language eng --sample_size 200 --balanced --balancing_strategy strict --skip_ablations --error_test Passed Mock and Error
v


Test Run For ChatGPT
python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode self_consistency --top_k 4 --n_shot 0 --language eng --sample_size 10 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode self_consistency --top_k 4 --n_shot 0 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode self_consistency --top_k 4 --n_shot 1 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode self_consistency --top_k 4 --n_shot 1 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations

python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode tree_of_thoughts --top_k 4 --n_shot 0 --language eng --sample_size 10 --balanced --balancing_strategy strict --prompt_variant tree_of_thoughts --skip_ablations --tot_steps 3 --tot_search bfs --tot_vth 0.6 --tot_value_trials 1
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode tree_of_thoughts --top_k 4 --n_shot 0 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant tree_of_thoughts --skip_ablations --tot_steps 3 --tot_search bfs --tot_vth 0.6 --tot_value_trials 1
python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode tree_of_thoughts --top_k 4 --n_shot 1 --language eng --sample_size 10 --balanced --balancing_strategy strict --prompt_variant tree_of_thoughts --skip_ablations --tot_steps 3 --tot_search bfs --tot_vth 0.6 --tot_value_trials 1
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode tree_of_thoughts --top_k 4 --n_shot 1 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant tree_of_thoughts --skip_ablations --tot_steps 3 --tot_search bfs --tot_vth 0.6 --tot_value_trials 1

python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode self_refine --n_shot 0 --language eng --sample_size 10 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode self_refine --n_shot 0 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode self_refine --n_shot 1 --language eng --sample_size 10 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode self_refine --n_shot 1 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations

python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode default --n_shot 0 --language eng --sample_size 10 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode default --n_shot 0 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode default --n_shot 1 --language eng --sample_size 10 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode default --n_shot 1 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations

python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode rasc --top_k 4 --n_shot 0 --language eng --sample_size 10 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode rasc --top_k 4 --n_shot 0 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode rasc --top_k 4 --n_shot 1 --language eng --sample_size 10 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode rasc --top_k 4 --n_shot 1 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations

python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode complexity_based --n_shot 0 --language eng --sample_size 10 --balanced --balancing_strategy strict --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode complexity_based --n_shot 0 --language eng --sample_size 20 --balanced --balancing_strategy strict --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode complexity_based --n_shot 1 --language eng --sample_size 10 --balanced --balancing_strategy strict --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode complexity_based --n_shot 1 --language eng --sample_size 20 --balanced --balancing_strategy strict --skip_ablations

python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode plan_and_solve --n_shot 0 --language eng --sample_size 10 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode plan_and_solve --n_shot 0 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode plan_and_solve --n_shot 1 --language eng --sample_size 10 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode plan_and_solve --n_shot 1 --language eng --sample_size 20 --balanced --balancing_strategy strict --prompt_variant v1 --skip_ablations

python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode rankcot --top_k 4 --n_shot 0 --language eng --sample_size 10 --balanced --balancing_strategy strict --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode rankcot --top_k 4 --n_shot 0 --language eng --sample_size 20 --balanced --balancing_strategy strict --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task binary --reasoning_mode rankcot --top_k 4 --n_shot 1 --language eng --sample_size 10 --balanced --balancing_strategy strict --skip_ablations
python llms.py --model_name "openai/gpt-4.1" --task intensity --reasoning_mode rankcot --top_k 4 --n_shot 1 --language eng --sample_size 20 --balanced --balancing_strategy strict --skip_ablations
v
197 changes: 197 additions & 0 deletions EmotionsAI.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
'''from pyplutchik import plutchik
import matplotlib.pyplot as plt

emotions = {
"joy": 1,

"fear": 0.2,
"surprise": 0.3,
"sadness": 0.7,
"disgust": 0.1,
"anger": 0.8,

}

plutchik(emotions)
plt.show() # <-- this line makes the window pop up!
'''
'''import pandas as pd

# Choose your language code (e.g., 'arq', 'hin', 'eng' — only 10 have intensities)
lang = 'eng'

# File paths
categories_base = "hf://datasets/brighter-dataset/BRIGHTER-emotion-categories/"
intensities_base = "hf://datasets/brighter-dataset/BRIGHTER-emotion-intensities/"

splits = {
'train': f"{lang}/train-00000-of-00001.parquet",
'dev': f"{lang}/dev-00000-of-00001.parquet",
'test': f"{lang}/test-00000-of-00001.parquet"
}

# Load both category and intensity splits
cat_df = pd.read_parquet(categories_base + splits["train"])
int_df = pd.read_parquet(intensities_base + splits["train"])

# Peek at both to check structure
print("Categories sample:\n", cat_df.head())
print("Intensities sample:\n", int_df.head())'''

# Required installations:
# pip install openai pandas scikit-learn scipy pyarrow fsspec huggingface_hub

import os
import openai
import pandas as pd
import json
from collections import Counter, defaultdict
from sklearn.metrics import f1_score
from scipy.stats import pearsonr

# Set your OpenAI API key
openai.api_key = "sk-..." # Replace with your GPT-4 key

EMOTIONS = ["anger", "disgust", "fear", "joy", "sadness", "surprise"]

# Few-shot examples with CoT-style reasoning
FEW_SHOT_EXAMPLES = """
Example 1:
Text: "I finally got the job I’ve been dreaming about!"
Reasoning: The speaker expresses excitement and satisfaction. This suggests joy and surprise.
Emotions: ["joy", "surprise"]
Intensity: {"joy": 3, "surprise": 2}

Example 2:
Text: "She betrayed me after everything we went through."
Reasoning: Betrayal often evokes anger and sadness.
Emotions: ["anger", "sadness"]
Intensity: {"anger": 2, "sadness": 3}

Example 3:
Text: "The room was silent. I could feel my heart pounding faster with each second."
Reasoning: This situation evokes tension and uncertainty, associated with fear.
Emotions: ["fear"]
Intensity: {"fear": 2}
"""

# Prompt with few-shot + step-by-step
PROMPT_TEMPLATE = FEW_SHOT_EXAMPLES + """

Now analyze the following:
Text: "{text}"
Think step by step and explain your reasoning. Then output your final answer in this format:
Emotions: ["emotion1", "emotion2", ...]
Intensity: {"emotion1": x, "emotion2": x, ...}
"""
'''
# Parse model response
def parse_response(response_text):
try:
lines = response_text.strip().splitlines()
emotions = json.loads(lines[-2].split(":", 1)[1].strip())
intensity = json.loads(lines[-1].split(":", 1)[1].strip())
return emotions, intensity
except Exception as e:
return None, None

# Run multiple prompts and aggregate (self-consistency)
def self_consistent_prediction(text, num_samples=5, model="gpt-4"):
results = []
for _ in range(num_samples):
prompt = PROMPT_TEMPLATE.format(text=text)
try:
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=0.7
)
content = response['choices'][0]['message']['content']
emotions, intensity = parse_response(content)
if emotions and intensity:
results.append((emotions, intensity))
except Exception as e:
print(f"OpenAI error: {e}")
return aggregate_predictions(results)

# Aggregate responses using majority vote (labels) and mean (intensity)
def aggregate_predictions(results):
emotion_votes = Counter()
intensity_scores = defaultdict(list)

for emotions, intensity in results:
for e in emotions:
emotion_votes[e] += 1
intensity_scores[e].append(intensity.get(e, 0))

total = len(results)
final_emotions = [e for e, count in emotion_votes.items() if count >= total / 2]
final_intensity = {e: round(sum(intensity_scores[e]) / len(intensity_scores[e]), 2)
for e in final_emotions}
return final_emotions, final_intensity

# Load BRIGHTER data from Hugging Face
def load_brighter_data(lang='arq', split='test'):
cat_path = f"hf://datasets/brighter-dataset/BRIGHTER-emotion-categories/{lang}/{split}-00000-of-00001.parquet"
int_path = f"hf://datasets/brighter-dataset/BRIGHTER-emotion-intensities/{lang}/{split}-00000-of-00001.parquet"
cat_df = pd.read_parquet(cat_path)
int_df = pd.read_parquet(int_path)
merged = pd.merge(cat_df, int_df, on="text", suffixes=("_cat", "_int"))
return merged

# Convert label list to binary vector
def labels_to_vec(label_list):
return [1 if e in label_list else 0 for e in EMOTIONS]

# Evaluation
def evaluate(predictions, golds, pred_intensities, gold_intensities):
pred_labels = [labels_to_vec(p) for p in predictions]
gold_labels = [labels_to_vec(g) for g in golds]

# Multi-label F1
f1 = f1_score(gold_labels, pred_labels, average="macro")

# Pearson per emotion
pearson_scores = {}
for e in EMOTIONS:
gold_vals = [gi.get(e, 0) for gi in gold_intensities]
pred_vals = [pi.get(e, 0) for pi in pred_intensities]
if any(gold_vals):
r, _ = pearsonr(gold_vals, pred_vals)
pearson_scores[e] = round(r, 3)
else:
pearson_scores[e] = "N/A"

return f1, pearson_scores

# Main pipeline
if __name__ == "__main__":
lang = "arq" # any of the 10 BRIGHTER languages with intensity labels
df = load_brighter_data(lang=lang, split="test")

sample_size = 10 # Small batch for quick testing — increase this
predictions = []
golds = []
pred_intensities = []
gold_intensities = []

for _, row in df.sample(sample_size, random_state=42).iterrows():
text = row["text"]
gold_labels = row["labels_cat"]
gold_scores = row["labels_int"]

pred_labels, pred_scores = self_consistent_prediction(text, num_samples=5)

predictions.append(pred_labels)
pred_intensities.append(pred_scores)
golds.append(gold_labels)
gold_intensities.append(gold_scores)

print(f"\n📝 Text: {text}")
print(f"✅ Gold: {gold_labels} — {gold_scores}")
print(f"🤖 Pred: {pred_labels} — {pred_scores}")

# Final evaluation
f1_macro, pearson = evaluate(predictions, golds, pred_intensities, gold_intensities)
print("\n📊 F1 (macro):", round(f1_macro, 4))
print("📈 Pearson per emotion:", pearson)'''
Loading