mbti / app.py
seawolf2357's picture
Update app.py
24eb1e0 verified
import gradio as gr
def mbti_diagnosis(*answers):
dimension_scores = {'E': 0, 'I': 0, 'N': 0, 'S': 0, 'T': 0, 'F': 0, 'J': 0, 'P': 0}
# 각 문항에 따라 차원 점수λ₯Ό μ—…λ°μ΄νŠΈ (λ³΄μ •λœ 둜직)
for i, answer in enumerate(answers):
score = 1 if answer == "예" else 0
if i in [0, 1, 4, 5, 8, 9, 12, 13, 16, 17]: # E, N, T, J 차원에 ν•΄λ‹Ήν•˜λŠ” λ¬Έν•­ 인덱슀
if i % 2 == 0: # E, N
dimension_scores['E' if i < 8 else 'N'] += score
else: # I, S
dimension_scores['I' if i < 8 else 'S'] += score
else: # T, F, J, P 차원에 ν•΄λ‹Ήν•˜λŠ” λ¬Έν•­ 인덱슀
if i % 2 == 0: # T, J
dimension_scores['T' if i < 16 else 'J'] += score
else: # F, P
dimension_scores['F' if i < 16 else 'P'] += score
# MBTI μœ ν˜• κ²°μ •
mbti_type = ''
mbti_type += 'E' if dimension_scores['E'] > dimension_scores['I'] else 'I'
mbti_type += 'N' if dimension_scores['N'] > dimension_scores['S'] else 'S'
mbti_type += 'T' if dimension_scores['T'] > dimension_scores['F'] else 'F'
mbti_type += 'J' if dimension_scores['J'] > dimension_scores['P'] else 'P'
return mbti_type
questions = [
"μ‚¬λžŒλ“€κ³Ό μ–΄μšΈλ¦¬λŠ” 것을 μ’‹μ•„ν•˜λ‚˜μš”?",
"ꡬ체적인 μ‚¬μ‹€λ³΄λ‹€λŠ” 아이디어에 더 관심이 λ§Žλ‚˜μš”?",
"결정을 내릴 λ•Œ 논리와 이성을 μ€‘μš”μ‹œν•˜λ‚˜μš”?",
"κ³„νšμ„ μ„Έμš°κ³  그에 따라 ν–‰λ™ν•˜λŠ” 것을 μ„ ν˜Έν•˜λ‚˜μš”?",
"μ†Œκ·œλͺ¨ κ·Έλ£Ήμ΄λ‚˜ 혼자 μžˆλŠ” μ‹œκ°„μ„ μ„ ν˜Έν•˜λ‚˜μš”?",
"ν˜„μ‹€μ μΈ 해결책을 μ„ ν˜Έν•˜λ‚˜μš”?",
"κ°μ •λ³΄λ‹€λŠ” 사싀에 κΈ°λ°˜ν•˜μ—¬ μ˜μ‚¬κ²°μ •μ„ ν•˜λ‚˜μš”?",
"μœ΅ν†΅μ„± 있게 κ³„νšμ„ λ³€κ²½ν•˜λŠ” 것에 νŽΈμ•ˆν•¨μ„ λŠλΌλ‚˜μš”?",
"μƒˆλ‘œμš΄ μ‚¬λžŒλ“€μ„ λ§Œλ‚˜λŠ” 것에 ν₯λΆ„ν•˜λ‚˜μš”?",
"상상λ ₯을 자주 μ‚¬μš©ν•˜λ‚˜μš”?",
"μΉœκ΅¬λ‚˜ λ™λ£Œμ˜ 감정을 κ³ λ €ν•˜λŠ” νŽΈμΈκ°€μš”?",
"λͺ©ν‘œλ₯Ό μ„€μ •ν•˜κ³  그것을 λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ 일정을 κ΄€λ¦¬ν•˜λ‚˜μš”?",
"혼자만의 μ‹œκ°„μ„ μ€‘μš”ν•˜κ²Œ μƒκ°ν•˜λ‚˜μš”?",
"μ„ΈλΆ€ μ‚¬ν•­λ³΄λ‹€λŠ” 전체적인 그림을 λ³΄λŠ” 것을 μ„ ν˜Έν•˜λ‚˜μš”?",
"νƒ€μΈμ˜ μž…μž₯을 μ΄ν•΄ν•˜λ €κ³  λ…Έλ ₯ν•˜λ‚˜μš”?",
"κ°‘μž‘μŠ€λŸ¬μš΄ λ³€ν™”λ₯Ό 잘 λ°›μ•„λ“€μ΄λ‚˜μš”?",
"λŒ€ν™”λ³΄λ‹€λŠ” 관찰을 μ„ ν˜Έν•˜λ‚˜μš”?",
"μ‹€μ œ κ²½ν—˜μ„ 톡해 λ°°μš°λŠ” 것을 μ’‹μ•„ν•˜λ‚˜μš”?",
"곡정성과 μ •μ˜λ₯Ό μ€‘μš”μ‹œν•˜λ‚˜μš”?",
"κ³„νšμ— 따라 μΌν•˜λŠ” 것이 μ•ˆμ •κ°μ„ μ€λ‚˜μš”?"
]
# Gradio μΈν„°νŽ˜μ΄μŠ€ μ„€μ •
interface = gr.Interface(
fn=mbti_diagnosis,
inputs=[gr.Radio(["예", "μ•„λ‹ˆμ˜€"], label=question) for question in questions],
outputs="text",
title="MBTI μœ ν˜• 진단",
description="λ‹€μŒ 문항에 λŒ€ν•œ 닡변을 톡해 λ‹Ήμ‹ μ˜ MBTI μœ ν˜•μ„ μ•Œμ•„λ³΄μ„Έμš”."
)
# μΈν„°νŽ˜μ΄μŠ€ μ‹€ν–‰
interface.launch()