Update app.py
Browse files
app.py
CHANGED
@@ -1,77 +1,58 @@
|
|
1 |
import gradio as gr
|
2 |
import numpy as np
|
3 |
|
4 |
-
#
|
5 |
questions = [
|
6 |
-
"
|
7 |
-
"
|
8 |
-
"
|
9 |
-
|
10 |
-
"나는 새로운 아이디어를 탐구하는 것을 즐긴다.",
|
11 |
-
# 아래와 같이 20개 이상 질문을 추가해 주세요.
|
12 |
-
# "나는 어떤 일을 할 때 전체적인 큰 그림을 우선적으로 본다.",
|
13 |
-
# "감정보다는 사실과 데이터를 우선적으로 생각한다.",
|
14 |
-
# ...
|
15 |
]
|
16 |
|
17 |
-
# MBTI
|
18 |
-
|
19 |
-
"INTJ": {
|
20 |
-
|
21 |
-
|
22 |
-
"궁합": {
|
23 |
-
"좋은": ("ENTP", "혁신적이고 유연한 사고가 잘 맞음."),
|
24 |
-
"나쁜": ("ISFP", "감정과 논리의 차이가 충돌할 가능성.")
|
25 |
-
}
|
26 |
-
},
|
27 |
-
"ENTP": {
|
28 |
-
"성격": "토론을 즐기고, 새 아이디어에 호기심이 많은 성향.",
|
29 |
-
"추천 직업": ["기업가", "마케팅 전략가", "콘셉트 디자이너"],
|
30 |
-
"궁합": {
|
31 |
-
"좋은": ("INTJ", "논리와 창의성이 균형을 이룸."),
|
32 |
-
"나쁜": ("ISFJ", "세부 사항과 감정적 배려에서 갈등 가능.")
|
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 |
-
|
|
|
1 |
import gradio as gr
|
2 |
import numpy as np
|
3 |
|
4 |
+
# 질문 리스트 (예시)
|
5 |
questions = [
|
6 |
+
"당신은 혼자 있을 때 에너지를 얻나요?",
|
7 |
+
"당신은 계획을 세우는 것을 좋아하나요?",
|
8 |
+
"당신은 새로운 상황에 쉽게 적응하나요?",
|
9 |
+
# 더 많은 질문을 추가하세요.
|
|
|
|
|
|
|
|
|
|
|
10 |
]
|
11 |
|
12 |
+
# MBTI 유형 예시 데이터
|
13 |
+
mbti_types = {
|
14 |
+
"INTJ": {"성격": "독창적이고 전략적인 사고를 가진 조용한 리더", "직업": "과학자, 엔지니어", "궁합": ["ENFP", "ENTP"], "나쁜 궁합": ["ESFP"]},
|
15 |
+
"ENFP": {"성격": "열정적이고 창의적인 사고를 가진 사람", "직업": "예술가, 작가", "궁합": ["INTJ", "INFJ"], "나쁜 궁합": ["ISTJ"]},
|
16 |
+
# 다른 유형도 추가
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
}
|
18 |
|
19 |
+
# 질문에 따른 점수 계산 함수
|
20 |
+
def calculate_mbti_responses(responses):
|
21 |
+
scores = np.zeros(16) # 16가지 MBTI 유형에 대한 점수
|
22 |
+
for i, response in enumerate(responses):
|
23 |
+
# 점수 계산 로직 (예: 특정 질문이 특정 유형에 어떤 영향을 미치는지)
|
24 |
+
# 각 유형별 점수 계산 (간단히 가정)
|
25 |
+
if response == "매우 그렇다":
|
26 |
+
scores += np.random.randint(5, 10, size=16)
|
27 |
+
elif response == "그렇다":
|
28 |
+
scores += np.random.randint(2, 5, size=16)
|
29 |
+
elif response == "보통이다":
|
30 |
+
scores += np.random.randint(0, 2, size=16)
|
31 |
+
elif response == "아니다":
|
32 |
+
scores -= np.random.randint(2, 5, size=16)
|
33 |
+
elif response == "매우 아니다":
|
34 |
+
scores -= np.random.randint(5, 10, size=16)
|
35 |
+
|
36 |
+
best_match_index = np.argmax(scores)
|
37 |
+
best_match_type = list(mbti_types.keys())[best_match_index]
|
38 |
+
percentage = (scores[best_match_index] / sum(scores)) * 100
|
39 |
+
return best_match_type, percentage
|
40 |
+
|
41 |
+
# Gradio UI 구성
|
42 |
+
def mbti_quiz(*responses):
|
43 |
+
mbti_type, percentage = calculate_mbti_responses(responses)
|
44 |
+
result = f"당신의 MBTI 유형은 {mbti_type}입니다. 신뢰도: {percentage:.2f}%"
|
45 |
+
details = mbti_types[mbti_type]
|
46 |
+
result += f"\n\n성격 설명: {details['성격']}"
|
47 |
+
result += f"\n추��� 직업: {details['직업']}"
|
48 |
+
result += f"\n\n좋은 궁합: {', '.join(details['궁합'])}"
|
49 |
+
result += f"\n나쁜 궁합: {', '.join(details['나쁜 궁합'])}"
|
50 |
+
return result
|
51 |
+
|
52 |
+
# Gradio 입력 필드 구성
|
53 |
+
inputs = [gr.inputs.Radio(["매우 그렇다", "그렇다", "보통이다", "아니다", "매우 아니다"], label=question) for question in questions]
|
54 |
+
output = gr.outputs.Textbox(label="MBTI 결과")
|
55 |
+
|
56 |
+
# Gradio 인터페이스 생성
|
57 |
+
iface = gr.Interface(fn=mbti_quiz, inputs=inputs, outputs=output, title="MBTI 성격 유형 테스트", description="20개 이상의 질문을 통해 MBTI 성격 유형을 분석하세요.")
|
58 |
+
iface.launch()
|