-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathvalidate_debates.py
More file actions
89 lines (74 loc) · 2.91 KB
/
validate_debates.py
File metadata and controls
89 lines (74 loc) · 2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
"""Validate debates - check if they're genuine oppositions or false positives."""
import json
with open('insights_first/data/debates_20260120_024600.json', 'r', encoding='utf-8') as f:
data = json.load(f)
debates = data.get('debates', [])
print("=" * 70)
print("DEBATE VALIDATION - Manual Review")
print("=" * 70)
print(f"Total debates to review: {len(debates)}\n")
# Categorize debates by quick inspection
genuine_oppositions = []
same_position = []
different_aspects = []
unclear = []
for i, d in enumerate(debates):
insight_a = d.get('insight_a', '')
insight_b = d.get('insight_b', '')
side_a = d.get('side_a', '')
side_b = d.get('side_b', '')
question = d.get('debate_question', '')
# Quick heuristic checks
# Check 1: Are the sides essentially the same?
side_a_lower = side_a.lower()
side_b_lower = side_b.lower()
# Check for obvious same-side indicators
both_positive = ('should' in side_a_lower and 'should' in side_b_lower and
'not' not in side_a_lower and 'not' not in side_b_lower and
"don't" not in side_a_lower and "don't" not in side_b_lower)
both_negative = ('not' in side_a_lower or "don't" in side_a_lower) and \
('not' in side_b_lower or "don't" in side_b_lower)
# Check 2: Do the insights actually contradict?
# Look for clear opposition markers
has_opposition_markers = False
opposition_pairs = [
('more', 'less'), ('increase', 'decrease'), ('do', "don't"),
('should', "shouldn't"), ('always', 'never'), ('yes', 'no'),
('prioritize', 'deprioritize'), ('focus on', 'ignore')
]
for pos, neg in opposition_pairs:
if (pos in insight_a.lower() and neg in insight_b.lower()) or \
(neg in insight_a.lower() and pos in insight_b.lower()):
has_opposition_markers = True
break
# Analyze
print(f"\n{'='*70}")
print(f"DEBATE {i+1}")
print(f"Question: {question}")
print(f"Side A: {side_a}")
print(f"Side B: {side_b}")
print(f"-" * 70)
print(f"Insight A: {insight_a[:150]}...")
print(f"Insight B: {insight_b[:150]}...")
# Flag potential issues
issues = []
if both_positive:
issues.append("BOTH SIDES POSITIVE")
if both_negative:
issues.append("BOTH SIDES NEGATIVE")
if side_a_lower == side_b_lower:
issues.append("IDENTICAL SIDES")
if not has_opposition_markers:
issues.append("NO CLEAR OPPOSITION MARKERS")
if issues:
print(f"⚠️ ISSUES: {', '.join(issues)}")
else:
print(f"✓ Looks like genuine opposition")
# Summary
print(f"\n{'='*70}")
print("SUMMARY")
print('='*70)
print("Review each debate above and look for:")
print("1. Sides that are essentially the SAME position")
print("2. Insights that are COMPLEMENTARY, not opposing")
print("3. Different ASPECTS of same topic, not opposition")