aliceblue11 commited on
Commit
6d5e2f0
·
verified ·
1 Parent(s): 5750935

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +54 -89
app.py CHANGED
@@ -1,116 +1,81 @@
1
  import gradio as gr
2
 
3
- # 질문 설정 (총 80개)
4
  questions = [
5
  # 외향형(Extraversion) vs 내향형(Introversion)
6
- "나는 여러 사람들과 함께 있을 때 에너지가 난다.",
7
- "나는 조용한 시간보다 사람들과 대화하는 시간이 더 소중하다.",
8
- "나는 사람들과의 교류를 통해서 아이디어를 얻는 편이다.",
9
  "나는 새로운 사람들과 쉽게 친해지는 편이다.",
10
  "나는 대규모 모임을 즐긴다.",
11
- "나는 스스로를 활발하고 외향적인 사람이라고 생각한다.",
12
- "나는 주변에서 일어나는 일들에 자연스럽게 관심이 간다.",
13
- "나는 친구들과 만나서 시간을 보내는 것을 선호한다.",
14
- "나는 내가 생각하는 것을 쉽게 표현한다.",
15
- "나는 외부에서 받은 자극에 빠르게 반응한다.",
16
- "나는 혼자서 보내는 시간이 긴장되거나 불편하게 느껴진다.",
17
- "나는 친구나 가족과 시간을 많이 보내야 충전이 된다.",
18
- "나는 새로운 환경에서 적응이 빠르다.",
19
- "나는 갑작스러운 변화에도 쉽게 대응할 수 있다.",
20
- "나는 혼자보다는 다른 사람과 함께 있을 때 더 생산적이다.",
21
- "나는 다른 사람들의 관심을 즐긴다.",
22
- "나는 항상 새로운 사람들과 대화하는 것을 좋아한다.",
23
- "나는 생각보다는 행동으로 먼저 나서는 편이다.",
24
- "나는 처음 만난 사람에게 먼저 말을 걸기도 한다.",
25
- "나는 많은 사람들 사이에서 편안함을 느낀다.",
26
 
27
  # 감각형(Sensing) vs 직관형(Intuition)
28
- "나는 구체적이고 현실적인 정보를 선호한다.",
29
- "나는 문제를 해결할 실용적인 접근 방식을 선호한다.",
30
- "나는 새로운 아이디어보다는 현재의 사실에 집중한다.",
31
- "나는 과거 경험을 바탕으로 결정을 내리는 편이다.",
32
- "나는 세부 사항에 관심이 많고 꼼꼼하다.",
33
- "나는 매일의 일상과 규칙을 중시한다.",
34
- "나는 기존의 것을 따르는 것이 편안하다.",
35
- "나는 눈앞에 있는 현실을 중요하게 생각한다.",
36
- "나는 직관보다는 데이터를 더 신뢰한다.",
37
- "나는 구체적인 경험에서 배운다.",
38
- "나는 규칙적이고 예측 가능한 환경을 좋아한다.",
39
- "나는 실험적인 방법보다는 검증된 방법을 따른다.",
40
- "나는 변화보다는 안정된 상태를 유지하는 것을 선호한다.",
41
- "나는 장기적인 비전보다는 지금 당장 중요한 것에 집중한다.",
42
- "나는 실용적인 계획을 세우는 것을 좋아한다.",
43
- "나는 아이디어보다는 실행에 더 집중한다.",
44
- "나는 새로운 접근보다는 기존의 방식을 개선하는 것이 좋다.",
45
- "나는 본능보다는 논리에 의해 더 많이 움직인다.",
46
- "나는 일상 속에서 미세한 변화를 쉽게 알아차린다.",
47
- "나는 상상력보다는 현실 세계의 경험이 더 중요하다고 생각한다.",
48
 
49
  # 사고형(Thinking) vs 감정형(Feeling)
50
- "나는 문제 해결에 있어 논리와 분석을 중시한다.",
51
- "나는 감정보다는 사실에 근거해 결정을 내린다.",
52
- "나는 의견을 제시할 때 감정보다는 진실을 우선시한다.",
53
- "나는 논리적이고 객관적인 결정을 선호한다.",
54
- "나는 갈등이 있을 감정보다는 해결책을 찾는 데 집중한다.",
55
- "나는 논리적으로 생각하고 결론을 내린다.",
56
- "나는 감정적으로 영향을 받기보다는 객관적으로 판단하려 한다.",
57
- "나는 논쟁을 할 때 개인적인 감정을 배제하고 논리를 따진다.",
58
- "나는 결정할 때 항상 장단점을 따져본다.",
59
- "나는 어려운 결정을 내릴 때 다른 사람의 의견보다는 나의 분석을 따른다.",
60
- "나는 개인적인 감정보다는 공정함을 더 중요시한다.",
61
- "나는 사실에 근거한 논의가 감정적인 대화보다 더 의미 있다고 생각한다.",
62
- "나는 감정보다는 데이터를 기반으로 계획을 세운다.",
63
- "나는 감정이 앞서기보다는 상황을 객관적으로 바라보려 한다.",
64
- "나는 결정을 내릴 때 개인적인 관계보다는 결과를 우선시한다.",
65
- "나는 비판을 받을 때 감정적으로 반응하기보다는 논리적으로 접근한다.",
66
- "나는 감정적으로 흥분하기보다는 차분하게 대처하려 한다.",
67
- "나는 상황을 분석하고 원인과 결과를 따지는 것을 좋아한다.",
68
- "나는 사람들의 기분보다 문제 해결에 더 집중하는 편이다.",
69
- "나는 공감보다는 진실과 논리를 추구한다.",
70
 
71
  # 판단형(Judging) vs 인식형(Perceiving)
72
- "나는 미리 계획하고 일정에 따라 움직이는 것을 좋아한다.",
73
- "나는 목표를 달성하기 위해 구체적인 계획을 세우는 편이다.",
74
- "나는 일을 마감 기한 전에 끝내는 것을 중요하게 생각한다.",
75
- "나는 예측 가능한 상황에서 일하는 것을 선호한다.",
76
- "나는 무언가를 결정하고 나면 쉽게 바꾸지 않는다.",
77
- "나는 계획을 세우는 것이 일의 반이라고 생각한다.",
78
- "나는 모든 일을 체계적으로 처리하려고 노력한다.",
79
- "나는 갑작스러운 변화를 좋아하지 않는다.",
80
- "나는 계획에 맞춰 일을 마무리하는 것을 중요시한다.",
81
- "나는 미리 준비된 상태에서 일을 시작해야 편안하다.",
82
- "나는 결정을 내릴 때 확신을 가지고 행동한다.",
83
- "나는 하루의 일정을 미리 계획하고 따르는 것을 좋아한다.",
84
- "나는 일어날 상황을 미리 예측하고 준비하는 편이다.",
85
- "나는 변동성보다는 안정감을 추구한다.",
86
- "나는 계획대로 일이 진행되는 것을 선호한다.",
87
- "나는 계획에 따라 움직이지 않으면 불안함을 느낀다.",
88
- "나는 일을 끝내기 전까지는 다른 일을 시작하지 않는다.",
89
- "나는 일과 계획을 미리 세워야 마음이 편하다.",
90
- "나는 상황이 불확실하면 스트레스를 받는다.",
91
- "나는 언제나 계획대로 일이 진행되길 바란다."
92
  ]
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  # 결과 계산 함수
95
  def calculate_mbti(responses):
96
- e_score = sum([responses[i] for i in range(20)]) # Extraversion/Introversion 관련 점수
97
- s_score = sum([responses[i + 20] for i in range(20)]) # Sensing/Intuition 관련 점수
98
- t_score = sum([responses[i + 40] for i in range(20)]) # Thinking/Feeling 관련 점수
99
- j_score = sum([responses[i + 60] for i in range(20)]) # Judging/Perceiving 관련 점수
100
 
101
  # 각 성향에 따른 MBTI 유형 결정
102
  mbti_type = ""
103
- mbti_type += "E" if e_score > 50 else "I"
104
- mbti_type += "S" if s_score > 50 else "N"
105
- mbti_type += "T" if t_score > 50 else "F"
106
- mbti_type += "J" if j_score > 50 else "P"
 
 
 
107
 
108
- return mbti_type
109
 
110
  # Gradio 인터페이스 생성
111
  def create_interface():
112
  inputs = [gr.Radio(choices=["매우 아니다", "아니다", "보통이다", "그렇다", "매우 그렇다"], label=questions[i]) for i in range(len(questions))]
113
- interface = gr.Interface(fn=calculate_mbti, inputs=inputs, outputs="text", title="MBTI 분석기", description="80개 이상의 질문에 답하고 당신의 MBTI 유형을 확인하세요!")
114
  return interface
115
 
116
  # 인터페이스 실행
 
1
  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
+ "나는 일의 세부 계획을 미리 세워놓는다.",
30
+ "나는 예측 가능한 일정을 선호한다.",
31
+ "나는 변화보다는 안정된 상태를 선호한다."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  ]
33
 
34
+ # 결과에 따른 성격 설명
35
+ def get_mbti_description(mbti_type):
36
+ descriptions = {
37
+ "ESTJ": "ESTJ는 실용적이고 현실적이며, 조직적입니다. 리더십 역할을 자주 맡으며 체계적인 계획을 선호합니다.",
38
+ "ESFJ": "ESFJ는 사회적이고 따뜻한 사람입니다. 다른 사람을 돕고 조화를 유지하는 것을 중요하게 여깁니다.",
39
+ "ISTJ": "ISTJ는 신뢰할 수 있고 책임감이 강하며, 현실적입니다. 규칙과 절차를 따르는 것을 선호합니다.",
40
+ "ISFJ": "ISFJ는 조용하고 헌신적인 사람입니다. 타인의 필요를 잘 이해하고 배려합니다.",
41
+ "ENTJ": "ENTJ는 전략적이고 결단력이 있으며, 리더십을 발휘합니다. 효율성과 성과를 중요하게 생각합니다.",
42
+ "ENTP": "ENTP는 창의적이고 독창적이며, 새로운 아이디어를 탐구하는 것을 좋아합니다. 토론을 즐기고 문제를 해결하는 데 능합니다.",
43
+ "INTJ": "INTJ는 분석적이고 독립적이며, 장기적인 계획을 세우는 것을 선호합니다. 목표 지향적이고 효율적입니다.",
44
+ "INTP": "INTP는 이론적이고 분석적인 사고를 합니다. 논리적이고 문제 해결에 능하며, 독립적인 경향이 있습니다.",
45
+ "ENFJ": "ENFJ는 따뜻하고 외향적이며, 타인의 감정을 잘 이해합니다. 타인을 돕고 이끄는 데 재능이 있습니다.",
46
+ "ENFP": "ENFP는 열정적이고 창의적이며, 타인과 쉽게 공감하는 성향이 있습니다. 자유롭고 독립적인 삶을 추구합니다.",
47
+ "INFJ": "INFJ는 통찰력 있고 깊은 사고를 합니다. 타인의 필요를 잘 이해하고, 그들에게 영감을 주는 것을 좋아합니다.",
48
+ "INFP": "INFP는 이상적이고 감정이 깊으며, 가치와 신념을 중시합니다. 창의적이고 내면이 풍부합니다.",
49
+ "ESTP": "ESTP는 행동적이고 실용적입니다. 문제를 해결하고 새로운 도전을 즐깁니다.",
50
+ "ESFP": "ESFP는 사교적이고 외향적입니다. 다른 사람들과 즐겁게 시간을 보내며 순간을 즐깁니다.",
51
+ "ISTP": "ISTP는 실용적이고 분석적입니다. 기술적인 문제 해결에 능하며 독립적인 성향을 가지고 있습니다.",
52
+ "ISFP": "ISFP는 조용하고 감성적입니다. 창의적이고 예술적인 면이 있으며, 사람들과 따뜻하게 교��합니다."
53
+ }
54
+ return descriptions.get(mbti_type, "알 수 없는 MBTI 유형입니다.")
55
+
56
  # 결과 계산 함수
57
  def calculate_mbti(responses):
58
+ e_score = sum([responses[i] for i in range(5)]) # Extraversion/Introversion 관련 점수
59
+ s_score = sum([responses[i + 5] for i in range(5)]) # Sensing/Intuition 관련 점수
60
+ t_score = sum([responses[i + 10] for i in range(5)]) # Thinking/Feeling 관련 점수
61
+ j_score = sum([responses[i + 15] for i in range(5)]) # Judging/Perceiving 관련 점수
62
 
63
  # 각 성향에 따른 MBTI 유형 결정
64
  mbti_type = ""
65
+ mbti_type += "E" if e_score > 15 else "I"
66
+ mbti_type += "S" if s_score > 15 else "N"
67
+ mbti_type += "T" if t_score > 15 else "F"
68
+ mbti_type += "J" if j_score > 15 else "P"
69
+
70
+ # MBTI 유형에 따른 설명 추가
71
+ description = get_mbti_description(mbti_type)
72
 
73
+ return f"당신의 MBTI 유형은 {mbti_type}입니다.\n\n{description}"
74
 
75
  # Gradio 인터페이스 생성
76
  def create_interface():
77
  inputs = [gr.Radio(choices=["매우 아니다", "아니다", "보통이다", "그렇다", "매우 그렇다"], label=questions[i]) for i in range(len(questions))]
78
+ interface = gr.Interface(fn=calculate_mbti, inputs=inputs, outputs="text", title="MBTI 분석기", description="20개의 질문에 답하고 당신의 MBTI 유형과 그 설명을 확인하세요!")
79
  return interface
80
 
81
  # 인터페이스 실행