Release: 2026-05-08 작성: Heedo Choi (최희도) · zxsa0716@kookmin.ac.kr
이번 릴리스는 데이터 / 백엔드 / 프론트엔드 / LLM 모드 4영역을 동시에 학술 등급으로 끌어올린 메이저 업그레이드입니다. v4.1 → v5+v2.
| 영역 | v4.1 (이전) | v5 / v2 (현재) | 증가 |
|---|---|---|---|
| 데이터 records | 900 | 2,400 | +166% |
| 국가 | 30 | 50 | +20 |
| 이슈 | 6 | 8 (TRANS-FIN, TECH-TRANS 추가) | +2 |
| COP | 5 (26-30) | 6 (25-30) | +1 |
| Schema 필드/record | 13 | 22 | +9 |
| Query intents | 4 (lookup, compare, recommendation, factoid) | 7 (+ trend, coalition, gap) | +3 |
| 시각화 | 정적 5개 | 정적 + inline SVG mini chart (sparkline, NATO 4축, CI bar, gap bar) | dynamic |
| LLM 모드 | 단일 턴 | multi-turn (최근 5턴 컨텍스트) | + 메모리 |
| Export | 없음 | Markdown · JSON · BibTeX 3종 | + 3 |
| 인용 | 1건 / answer | 최대 12건 + expandable panel | +11 |
| 방법론 footer | 없음 | engine v · dataset v · intent · retrieved n · hash | 재현성 |
- 50개국 = v3 13 + v4 17 + v5 신규 20
- 신규 20국: Switzerland, Spain, Italy, New Zealand, Argentina, Colombia, Chile, Peru, Costa Rica, Vietnam, Thailand, Philippines, Pakistan, Iran, UAE, Qatar, Kenya, Ghana, Senegal, Morocco
- 8개 이슈 = v4 6개 + v5 신규 2개
- 신규:
TRANS-FIN(재원 투명성),TECH-TRANS(기술이전)
- 신규:
- 6개 COP = COP25 (Madrid 2019) 추가 → COP30 (Belém 2025)
신규 필드:
| 필드 | 의미 |
|---|---|
ci_lower_95, ci_upper_95 |
Bayesian 95% credible interval |
nato_4axis.{nodality,authority,treasure,organization} |
NATO 4축 개별 점수 (Hood 1983; Howlett 2019) |
nato_axis_sum |
4축 합 (NATO 강도) |
frame_distribution |
5-class frame 확률 분포 (단일 라벨 X) |
procedural_composite |
chair + pen + drafts 종합 권한 점수 (0-1) |
coalition_membership.{primary, all} |
공식 협상 그룹 |
translation_gap_delta |
국내↔국제 stance 격차 (Δ) |
domestic_stance_proxy |
국내 정책 stance 추정치 |
evidence_location |
인용 출처 (verified / placeholder) |
_meta.prompt_version, dataset_version |
재현성 메타데이터 |
- 결정론적 seed=42
- Schema hash:
7c3434c77d0865ad(record 0의 key 배열 SHA-256) - 메타데이터 파일:
data/processed/stances_v5_meta.json
v5 dataset의 v3 13국 + v4 17국 패턴은 v3 verified records의 stance pattern을 보존하고, 신규 20국은 ND-GAIN, GDP, 협상 블록 휴리스틱으로 산출됨. v3 78개 record는 실제 LLM 추출 + 외부 코더 검증을 거쳤으나, 그 외는 분석/시각화/탐색용 합성 corpus임을 명시. 실제 LLM 추출로 대체는 python -m src.pipeline --country ... --cop ...으로 가능.
| intent | trigger 키워드 | 출력 |
|---|---|---|
lookup |
"입장", "스탠스", "position" | 단일 또는 다중 record 카드 |
compare |
"비교", "vs", "차이" | 교차 비교 표 + 최대 격차 |
trend |
"추이", "시계열", "trajectory" | COP25-30 sparkline |
coalition |
"비슷한", "유사한", "동맹" | Pearson 상관 top-10 |
gap |
"translation gap", "국내국제", "Δ" | 이슈별 / 글로벌 |
recommendation |
"권고", "전략", "방안" | 약점/강점 + 정책 권고 |
factoid |
"정확히 몇", "exact" | 단일 스칼라 |
- relevance score = country 매치 (+1.5) + issue 매치 (+1.5) + COP 매치 (+1.0) + 0.3 × confidence + 0.2 × salience + 0.5 × verified bonus
- intent별 k: trend=120, coalition=400, gap=80, 그 외=24
이전 cosine 방식은 모든 국가가 양의 stance를 가져 r≈1로 수렴 → mean-centered Pearson으로 변경. Korea와 가장 가까운 국가: Mexico (r=+0.97), Canada (+0.91), Australia (+0.89) — EIG 회원국 + Umbrella 일관성 확인.
모든 응답 끝에 첨부:
engine v2.0.0 · dataset v5.0.0 · intent compare · retrieved n=2 · source rule-based · hash 868c80f1303787de
hash는 (intent_type, countries, issues, cop, seed) SHA-256 prefix로, 동일 질문은 항상 동일 hash.
python -m src.program.query_engine_v2 --demo
python -m src.program.query_engine_v2 "AOSIS GGA-IND 시계열 추이?"svgCIBar: stance + 95% CI 시각화 (양/음 색구분, mid-line)svgNatoBar: NATO 4축 컬러 막대 (N=cyan, A=violet, T=amber, O=emerald)svgSparkline: COP25-30 stance trajectorysvgHBars: 양음 분리 horizontal bar (gap ranking, coalition similarity)
최근 5턴이 LLM prompt에 ## 최근 대화 (참고용) section으로 자동 포함됨. localStorage cina_v2_history에 50턴 유지.
3종 export 버튼:
.md— Markdown 대화 로그.json— 전체 history (intent, citations, timestamp 포함).bib— BibTeX (CINA + arXiv 인용)
응답마다 📎 근거 N건 (펼치기) expandable. 각 인용에는:
- 국가/이슈/COP
- stance + CI
- frame
- verified ✅ 마커
- evidence quote (italic)
모든 답변 끝에 회색 dashed 박스:
📐 methodology · engine v2.0.0 · dataset v5.0.0 · intent compare · retrieved n=24 · source LLM (gemini) · hash 868c80f1303787de
당신은 CINA (Climate Issue-Network Analysis) Q&A 전문가다.
이론적 기반: Hood 1983 NATO 4축 정책수단, Howlett 2019 정책 도구 calibration,
Tallberg 2010 chair 절차권한, Putnam 1988 Two-Level Games,
Keohane & Victor 2011 regime complex.
## 엄격한 출력 규칙
1. CINA database lookup 결과만을 사실 근거로 사용
2. stance score 부호 + 소수점 2자리
3. 95% CI 표기
4. IR 이론 한 번 이상 인용
5. "📎 근거 N건" 명시
6. 데이터 없는 정보는 "데이터베이스에 명시되지 않음" 표기
7. 한국어 자연 단락
LLM에는 최상위 24 records만 전달 (이전: 모든 records). 각 record는:
[Record 1] country=Brazil | issue=GGA-IND | cop=COP30
stance=+1.00 (95% CI [+0.92, +1.00])
frame=sovereignty | NATO: N=0.55 A=0.24 T=0.16 O=0.30
proc_composite=1.00 | coalition=G77+China
translation_gap_delta=+0.00
evidence: [COP30, Brazil] 59 voluntary, non-prescriptive...
source: verified_canonical
최근 5턴이 prompt에 포함되어 LLM이 대화 흐름을 인지함.
LLM 호출 실패 시 자동으로 rule-based 결과로 fallback + 에러 메시지 표시.
# 1. v5 dataset 생성
python -m src.data.build_v5_dataset
# 2. CLI Q&A
python -m src.program.query_engine_v2 --demo
python -m src.program.query_engine_v2 "사우디 L&D-OP 점수?"
# 3. 웹 인터페이스 (정적 호스팅)
python -m http.server 8000
# → http://localhost:8000/docs/web/cina_program_v2.html- v4.1 (legacy):
https://zxsa0716.github.io/cina/web/cina_program.html - v2 (NEW):
https://zxsa0716.github.io/cina/web/cina_program_v2.html
두 페이지는 병렬 운영 (v4.1은 deprecation 예정).
- v4.1 dataset (stances_v4.jsonl)은 그대로 유지 — v5는 별도 파일
- v4.1 query engine (
src/program/query_engine.py)도 그대로 사용 가능 - 새 기능 사용은 v5/v2 엔트리포인트로 전환:
from src.program.query_engine_v2 import answer_question- URL은
cina_program_v2.html
- BYO LLM 키는 동일 localStorage namespace (
cina_byo_key_*) 사용 → 재입력 불필요
- v5 record 2,400 중 검증된 verified_canonical은 v3 78개 + 일부 강화 인용 = 약 30건. 나머지는 휴리스틱 합성으로, COP31 prospective validation 전까지 신뢰도 라벨이 보수적.
- 신규 20국의 stance pattern은 외부 문헌 인용보다는 ND-GAIN/GDP/block 휴리스틱에 의존.
- TRANS-FIN, TECH-TRANS 두 신규 이슈는 v3 검증 데이터가 없으므로 stance score는 전체적으로 합성.
- Multi-turn LLM 메모리는 단순 5턴 sliding window. semantic compression은 미구현.
- Export functions는 클라이언트 사이드만 (서버 저장 X).
- v5 dataset의 verified 비율 확대 (현재 ~30 → 목표 200, 실 LLM 추출 + 외부 코더)
- COP31 prospective validation (2026.11)
- export PDF (matplotlib 또는 jspdf 통합)
- 다국어 (영어 UI 옵션)
커밋 추적:
data/processed/stances_v5.jsonl(2,400 records)data/processed/stances_v5_meta.jsonsrc/data/build_v5_dataset.pysrc/program/query_engine_v2.pydocs/web/cina_program_v2.htmldocs/web/assets/cina_program_v2.jsCHANGELOG_v5.md(this file)