feat: AI Discovery 랭킹 시트 TOP20 → TOP50 확장
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0155BJMHJyhqqAPGYjGKYhPS
This commit is contained in:
parent
9a271cacb0
commit
c2a02ce514
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Question Bank 120문항 + 2엔진 실측 결과를 엑셀(xlsx)로 내보낸다.
|
||||
|
||||
시트: 요약 / 통합결과 / 병원빈도 / TOP20 / GPT상세 / PPLX상세
|
||||
시트: 요약 / 통합결과 / 병원빈도 / TOP50 / GPT상세 / PPLX상세
|
||||
"""
|
||||
import json
|
||||
import os
|
||||
@ -146,8 +146,8 @@ def main():
|
||||
ws.column_dimensions[col].width = w
|
||||
|
||||
# ── TOP20 (논브랜드 84문항 · 2엔진 합산 랭킹) ─────────
|
||||
ws = wb.create_sheet("TOP20")
|
||||
ws["A1"] = "성형외과 AI Discovery TOP 20 (논브랜드 84문항 · ChatGPT+Perplexity 합산)"
|
||||
ws = wb.create_sheet("TOP50")
|
||||
ws["A1"] = "성형외과 AI Discovery TOP 50 (논브랜드 84문항 · ChatGPT+Perplexity 합산)"
|
||||
ws["A1"].font = Font(bold=True, size=14, color=INK)
|
||||
ws["A2"] = "점수 = 답변 내 등장 순위 가중치(1위 5점 ~ 5위 1점)를 질문·엔진 단위로 합산. 브랜드 직접 질문 36문항은 제외."
|
||||
ws["A2"].font = Font(size=10, color="666B7A")
|
||||
@ -179,11 +179,11 @@ def main():
|
||||
|
||||
ranked = sorted(agg.values(), key=lambda a: (-a["score"], -a["first"], -(a["gpt"] + a["pplx"])))
|
||||
view_rank = next((i + 1 for i, a in enumerate(ranked) if canon(a["label"]) == "뷰성형외과"), None)
|
||||
shown = ranked[:20]
|
||||
if view_rank and view_rank > 20:
|
||||
shown = ranked[:20] + [ranked[view_rank - 1]]
|
||||
shown = ranked[:50]
|
||||
if view_rank and view_rank > 50:
|
||||
shown = ranked[:50] + [ranked[view_rank - 1]]
|
||||
for idx, a in enumerate(shown):
|
||||
rank = idx + 1 if idx < 20 else view_rank
|
||||
rank = idx + 1 if idx < 50 else view_rank
|
||||
cats = " · ".join(k for k, _ in sorted(a["cats"].items(), key=lambda x: -x[1])[:3])
|
||||
ws.append([rank, a["label"], a["score"], a["gpt"] + a["pplx"], a["gpt"], a["pplx"], a["first"], cats])
|
||||
if canon(a["label"]) == "뷰성형외과":
|
||||
|
||||
Loading…
Reference in New Issue
Block a user