Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -2,28 +2,21 @@ import gradio as gr
|
|
2 |
|
3 |
# 질문 설정 (총 20개로 축소)
|
4 |
questions = [
|
5 |
-
# 외향형(Extraversion) vs 내향형(Introversion)
|
6 |
"나는 다른 사람들과 함께 있을 때 에너지를 얻는다.",
|
7 |
"나는 새로운 사람들과 쉽게 친해지는 편이다.",
|
8 |
"나는 대규모 모임을 즐긴다.",
|
9 |
"나는 혼자 보내는 시간이 편하다.",
|
10 |
"나는 친구들과 대화하는 시간이 즐겁다.",
|
11 |
-
|
12 |
-
# 감각형(Sensing) vs 직관형(Intuition)
|
13 |
"나는 현실적이고 구체적인 정보를 선호한다.",
|
14 |
"나는 과거의 경험을 바탕으로 결정을 내린다.",
|
15 |
"나는 큰 그림보다는 세부사항에 집중한다.",
|
16 |
"나는 새로운 아이디어보다는 실질적인 것을 선호한다.",
|
17 |
"나는 직관보다는 자료에 의존하는 편이다.",
|
18 |
-
|
19 |
-
# 사고형(Thinking) vs 감정형(Feeling)
|
20 |
"나는 감정보다는 논리적으로 판단하려 한다.",
|
21 |
"나는 갈등 상황에서 공정함을 중시한다.",
|
22 |
"나는 결정을 내릴 때 사람들의 감정보다는 사실에 집중한다.",
|
23 |
"나는 문제 해결에 있어 논리적 접근을 선호한다.",
|
24 |
"나는 비판을 받더라도 감정적으로 반응하지 않으려 한다.",
|
25 |
-
|
26 |
-
# 판단형(Judging) vs 인식형(Perceiving)
|
27 |
"나는 계획에 따라 일하는 것을 선호한다.",
|
28 |
"나는 마감 기한 전에 일을 마무리하려 노력한다.",
|
29 |
"나는 일의 세부 계획을 미리 세워놓는다.",
|
@@ -31,52 +24,84 @@ questions = [
|
|
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 |
def calculate_mbti(responses):
|
58 |
# 각 성향 점수 계산
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
63 |
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
mbti_type = ""
|
66 |
mbti_type += "E" if e_score > 15 else "I"
|
67 |
mbti_type += "S" if s_score > 15 else "N"
|
68 |
mbti_type += "T" if t_score > 15 else "F"
|
69 |
mbti_type += "J" if j_score > 15 else "P"
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
|
71 |
-
|
72 |
-
description = get_mbti_description(mbti_type)
|
73 |
-
|
74 |
-
return f"당신의 MBTI 유형은 {mbti_type}입니다.\n\n{description}"
|
75 |
|
76 |
# Gradio 인터페이스 생성
|
77 |
def create_interface():
|
78 |
-
# 라디오 버튼을
|
79 |
-
|
|
|
80 |
|
81 |
# Gradio 인터페이스 설정
|
82 |
interface = gr.Interface(fn=calculate_mbti, inputs=inputs, outputs="text", title="MBTI 분석기", description="20개의 질문에 답하고 당신의 MBTI 유형과 그 설명을 확인하세요!")
|
@@ -85,4 +110,3 @@ def create_interface():
|
|
85 |
# 인터페이스 실행
|
86 |
interface = create_interface()
|
87 |
interface.launch()
|
88 |
-
|
|
|
2 |
|
3 |
# 질문 설정 (총 20개로 축소)
|
4 |
questions = [
|
|
|
5 |
"나는 다른 사람들과 함께 있을 때 에너지를 얻는다.",
|
6 |
"나는 새로운 사람들과 쉽게 친해지는 편이다.",
|
7 |
"나는 대규모 모임을 즐긴다.",
|
8 |
"나는 혼자 보내는 시간이 편하다.",
|
9 |
"나는 친구들과 대화하는 시간이 즐겁다.",
|
|
|
|
|
10 |
"나는 현실적이고 구체적인 정보를 선호한다.",
|
11 |
"나는 과거의 경험을 바탕으로 결정을 내린다.",
|
12 |
"나는 큰 그림보다는 세부사항에 집중한다.",
|
13 |
"나는 새로운 아이디어보다는 실질적인 것을 선호한다.",
|
14 |
"나는 직관보다는 자료에 의존하는 편이다.",
|
|
|
|
|
15 |
"나는 감정보다는 논리적으로 판단하려 한다.",
|
16 |
"나는 갈등 상황에서 공정함을 중시한다.",
|
17 |
"나는 결정을 내릴 때 사람들의 감정보다는 사실에 집중한다.",
|
18 |
"나는 문제 해결에 있어 논리적 접근을 선호한다.",
|
19 |
"나는 비판을 받더라도 감정적으로 반응하지 않으려 한다.",
|
|
|
|
|
20 |
"나는 계획에 따라 일하는 것을 선호한다.",
|
21 |
"나는 마감 기한 전에 일을 마무리하려 노력한다.",
|
22 |
"나는 일의 세부 계획을 미리 세워놓는다.",
|
|
|
24 |
"나는 변화보다는 안정된 상태를 선호한다."
|
25 |
]
|
26 |
|
27 |
+
# MBTI 성격 유형 설명 데이터
|
28 |
+
mbti_details = {
|
29 |
+
"ESTJ": {
|
30 |
+
"성격 성향": "실용적이고 조직적, 리더십 강함",
|
31 |
+
"기질 설명": "현실적이며 체계적인 접근을 좋아함",
|
32 |
+
"추천 직업": ["경영자", "프로젝트 매니저", "군인"],
|
33 |
+
"좋은 궁합": ["ISFJ", "ISTJ"],
|
34 |
+
"나쁜 궁합": ["INFP", "ENFP"],
|
35 |
+
"궁합 이유": {
|
36 |
+
"좋은": "비슷한 현실주의 성향과 체계적인 사고를 공유하기 때문에 잘 어울림.",
|
37 |
+
"나쁜": "감정적으로 충돌할 가능성이 높고, 자유로운 성향이 충돌할 수 있음."
|
38 |
+
}
|
39 |
+
},
|
40 |
+
"ENTJ": {
|
41 |
+
"성격 성향": "전략적이고 결단력 있음",
|
42 |
+
"기질 설명": "리더십을 중시하고 목표 지향적임",
|
43 |
+
"추천 직업": ["CEO", "변호사", "컨설턴트"],
|
44 |
+
"좋은 궁합": ["INTP", "ENFP"],
|
45 |
+
"나쁜 궁합": ["ISFP", "INFP"],
|
46 |
+
"궁합 이유": {
|
47 |
+
"좋은": "자유로운 사고를 존중하며, 문제 해결 능력이 잘 어우러짐.",
|
48 |
+
"나쁜": "감정적으로 충돌하고, 세부 사항을 무시하는 경향이 문제를 일으킬 수 있음."
|
49 |
+
}
|
50 |
+
},
|
51 |
+
# 다른 MBTI 유형 설명 추가
|
52 |
+
}
|
53 |
+
|
54 |
+
# MBTI 결과에 따른 설명 제공 함수
|
55 |
+
def get_mbti_details(mbti_type):
|
56 |
+
details = mbti_details.get(mbti_type, None)
|
57 |
+
if details:
|
58 |
+
description = f"성격 성향: {details['성격 성향']}\n"
|
59 |
+
description += f"기질 설명: {details['기질 설명']}\n"
|
60 |
+
description += f"추천 직업: {', '.join(details['추천 직업'])}\n"
|
61 |
+
description += f"좋은 궁합: {', '.join(details['좋은 궁합'])}\n"
|
62 |
+
description += f"나쁜 궁합: {', '.join(details['나쁜 궁합'])}\n"
|
63 |
+
description += f"좋은 궁합 이유: {details['궁합 이유']['좋은']}\n"
|
64 |
+
description += f"나쁜 궁합 이유: {details['궁합 이유']['나쁜']}\n"
|
65 |
+
return description
|
66 |
+
return "알 수 없는 MBTI 유형입니다."
|
67 |
|
68 |
# 결과 계산 함수
|
69 |
def calculate_mbti(responses):
|
70 |
# 각 성향 점수 계산
|
71 |
+
score_mapping = {
|
72 |
+
"매우 아니다": 1,
|
73 |
+
"아니다": 2,
|
74 |
+
"보통이다": 3,
|
75 |
+
"그렇다": 4,
|
76 |
+
"매우 그렇다": 5
|
77 |
+
}
|
78 |
|
79 |
+
scores = [score_mapping[response] for response in responses]
|
80 |
+
|
81 |
+
e_score = sum([scores[i] for i in range(5)]) # Extraversion/Introversion 관련 점수
|
82 |
+
s_score = sum([scores[i + 5] for i in range(5)]) # Sensing/Intuition 관련 점수
|
83 |
+
t_score = sum([scores[i + 10] for i in range(5)]) # Thinking/Feeling 관련 점수
|
84 |
+
j_score = sum([scores[i + 15] for i in range(5)]) # Judging/Perceiving 관련 점수
|
85 |
+
|
86 |
mbti_type = ""
|
87 |
mbti_type += "E" if e_score > 15 else "I"
|
88 |
mbti_type += "S" if s_score > 15 else "N"
|
89 |
mbti_type += "T" if t_score > 15 else "F"
|
90 |
mbti_type += "J" if j_score > 15 else "P"
|
91 |
+
|
92 |
+
# 유형이 얼마나 맞는지 계산 (%)
|
93 |
+
total_score = e_score + s_score + t_score + j_score
|
94 |
+
percentage = round(total_score / 100 * 100, 2)
|
95 |
+
|
96 |
+
description = get_mbti_details(mbti_type)
|
97 |
|
98 |
+
return f"당신의 MBTI 유형은 {mbti_type}입니다. 이 유형이 맞을 확률은 {percentage}%입니다.\n\n{description}"
|
|
|
|
|
|
|
99 |
|
100 |
# Gradio 인터페이스 생성
|
101 |
def create_interface():
|
102 |
+
# 라디오 버튼을 "매우 아니다" ~ "매우 그렇다" 값으로 설정
|
103 |
+
choices = ["매우 아니다", "아니다", "보통이다", "그렇다", "매우 그렇다"]
|
104 |
+
inputs = [gr.Radio(choices=choices, label=questions[i]) for i in range(len(questions))]
|
105 |
|
106 |
# Gradio 인터페이스 설정
|
107 |
interface = gr.Interface(fn=calculate_mbti, inputs=inputs, outputs="text", title="MBTI 분석기", description="20개의 질문에 답하고 당신의 MBTI 유형과 그 설명을 확인하세요!")
|
|
|
110 |
# 인터페이스 실행
|
111 |
interface = create_interface()
|
112 |
interface.launch()
|
|