Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -0,0 +1,252 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# app.py
|
| 2 |
+
# Colab ์ ์ฉ ์ฝ๋ ์ ๊ฑฐ ์ต์ ์ ๋ฆฌํ (์๋ณธ ๋ก์ง ์ ์ง)
|
| 3 |
+
import os
|
| 4 |
+
import ast
|
| 5 |
+
import pandas as pd
|
| 6 |
+
import numpy as np
|
| 7 |
+
from openai import OpenAI
|
| 8 |
+
import torch
|
| 9 |
+
import torch.nn.functional as F
|
| 10 |
+
from sentence_transformers import SentenceTransformer, util
|
| 11 |
+
import gradio as gr
|
| 12 |
+
|
| 13 |
+
DATA_PATH = "data.csv"
|
| 14 |
+
|
| 15 |
+
# MBTI / ์คํ ์ฌ์ (์๋ณธ ๊ทธ๋๋ก)
|
| 16 |
+
mbti_dict = {
|
| 17 |
+
"ENFJ": "ENFJ๋ ์ฌ๋ ค ๊น๊ณ ์ด์์ฃผ์์ ์ธ ์ฑํฅ์ผ๋ก ๊ธ์ ์ ์ธ ์ํฅ๋ ฅ์ ๋ฐํํ๋ ค ์ต์ ์ ๋คํ๊ณ ๋ค๋ฅธ ์ฌ๋์ ๋๋ ์ผ์ ์ฆ๊ฑฐ์๊ณผ ๋ง์กฑ๊ฐ์ ๋๋๋๋ค. ์ธ์ฌํจ๊ณผ ํต์ฐฐ๋ ฅ์ผ๋ก ๋ค๋ฅธ ์ฌ๋์ ๊ณต๊ฐ์ ์ด๋์ด๋
๋๋ค. ํ์ ์ ์ธ ์ดํ์ฃผ์์์ด๋ฉฐ ๋ฆฌ๋์ญ ๊ธฐ์ ์ด ๊ฐํ์ฌ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ด๋๋ ๋ฅ๋ ฅ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด์ ์ ์ด๊ณ ํ์ ์ ์ผ๋ก ๋จ์ ๋ฐฐ๋ คํ๊ณ ๋๋ฃ์๊ฒ ์กฐ์ธ์ ์ฃผ๊ธฐ๋ ํฉ๋๋ค.",
|
| 18 |
+
"ENFP": "ENFP๋ ์์ ๋ก์ด ์ํผ์ผ๋ก ์ธํฅ์ ์ด๊ณ ์์งํ๋ฉฐ ๊ฐ๋ฐฉ์ ์ธ ์ฑ๊ฒฉ์
๋๋ค. ํ๊ธฐ์ฐจ๊ณ ๋๊ด์ ์ธ ํ๋๋ก ์ด์๊ฐ๋ฉฐ ๋ค๋ฅธ ์ฌ๋๊ณผ ๊ฐ์ ์ ์ผ๋ก ๊น๊ณ ์๋ฏธ ์๋ ๊ด๊ณ๋ฅผ ๋งบ๋ ๊ฒ์ ์ถ๊ตฌํฉ๋๋ค. ๋ํ ์์๋ ฅ๊ณผ ์ฐฝ์๋ ฅ์ด ํ๋ถํ๊ณ ํธ๊ธฐ์ฌ์ด ๋ง์ ์ฑ๊ฒฉ์
๋๋ค. ์๊ธฐ ์ฑ์ฐฐ์ ์ธ ๋ชจ์ต์ ๋ณด์ผ ๋๊ฐ ์์ผ๋ฉฐ ๊ธ์ ์ ์ธ ์๋์ง๋ก ๋ค๋ฅธ ์ฌ๋๋ค์ ์ด๋๋ ์ง๋์์ ์ญํ ์ ๋งก์ ๋๊ฐ ๋ง์ต๋๋ค.",
|
| 19 |
+
"ISTJ": "ISTJ๋ ์ง์คํ๊ฒ ํ๋ํ๊ณ ์๊ธฐ ์๊ฐ์ ์์งํ๊ฒ ์ด์ผ๊ธฐํฉ๋๋ค. ๋ํ ํ์ค ๊ฐ๊ฐ์ด ๋ฐ์ด๋ ์๊ธฐ ์ํฉ์์๋ ํ์ค์ ์ด๊ณ ๋
ผ๋ฆฌ์ ์ธ ํ๋๋ฅผ ์ ์งํฉ๋๋ค. ์ฒด๊ณ์ ์ ํต์ ์ค์ํ๊ณ ์๊ณ์ง์๊ฐ ๋ช
ํํ ํ๊ฒฝ์ ์ ํธํฉ๋๋ค. ์ด๋ ํ ์ผ์ด ์์ด๋ ์์ ์ ์๋ฌด๋ฅผ ์งํค๋ ค๋ ์ฑํฅ์ด ์๊ณ ์ฑ
์๊ฐ์ด ๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ์ค์ํ์ ๋ ์ด๋ฅผ ์ธ์ ํ๊ณ ๋น ๋ฅด๊ฒ ๋งํํ๊ธฐ ์ํด ๋
ธ๋ ฅํ๋ ํธ์
๋๋ค.",
|
| 20 |
+
"ISFJ": "ISFJ๋ ๊ทผ๋ฉดํ๊ณ ํ์ ์ ์ธ ์ฑ๊ฒฉ์ผ๋ก ๋ค๋ฅธ ์ฌ๋๋ค์ ๋ํด ์ฑ
์๊ฐ์ ๋๋๋๋ค. ๋ง๊ฐ ๊ธฐํ์ ์ฒ ์ ํ ์งํค๊ณ ์ง์๋ฅผ ์ ์งํ๋ฉฐ ๋ฌต๋ฌตํ ํ์ ํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ ๋ฅํ๊ณ ๊ธ์ ์ ์ธ ์ฑ๊ฒฉ์ด๋ฉฐ ์ธ์ฌํ๊ณ ๋ถ์๋ฅ๋ ฅ์ด ๋ฐ์ด๋ ์ธ๋ถ ์ฌํญ์ ํ์
ํ๋ ๋ฅ๋ ฅ์ด ์์ต๋๋ค. ๋ดํฅ์ ์ธ ์ฑ๊ฒฉ์ธ ๋์์ ๋์ธ ๊ด๊ณ ๋ฅ๋ ฅ๋ ๋ฐ์ด๋ ์ฌ๋ฌ ์ฌ๋๊ณผ ๊น์ ๊ด๊ณ๋ฅผ ๋งบ์ต๋๋ค. ์๋ฒฝ์ฃผ์์ ์ธ ์ฑํฅ์ด ์์ด ์ผ์ ์ต์ ์ ๋คํฉ๋๋ค.",
|
| 21 |
+
"ESTJ": "ESTJ๋ ์ ํต๊ณผ ์ง์๋ฅผ ์ค์ํ๋ ์ฑ๊ฒฉ์ผ๋ก ์ฌํ์ ๊ธฐ์ค์ ๋ฐ๋ผ ํํฉํ ์ ์๋๋ก ๋
ธ๋ ฅํฉ๋๋ค. ์ ์ง, ํ์ , ์กด์์ฑ์ ์ค์ํ๋ฉฐ ์ฃผ๋ณ์ ๊ด์ฐฐํ๋ ๋ฅ๋ ฅ์ด ๋ฐ์ด๋ฉ๋๋ค. ๊ณํ์ ๊ฐ์ ํ๊ณ ์ธ๋ถ ์ฌํญ์ ์ ๋ฆฌํ์ฌ ์ด๋ ค์ด ์์
๋ ์ฝ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฅ๋ ฅ์ด ์์ต๋๋ค. ๋ฒ์น์ฃผ์๋ฅผ ์ ๋ดํ๊ณ ๊ถ์๋ฅผ ์ป๊ธฐ ์ํด์๋ ๋
ธ๋ ฅ์ ํด์ผ ํ๋ค๊ณ ์๊ฐํ์ฌ ๋ชจ๋ฒ์ ๋ณด์ด๋ ์ง๋์์ ์ฑ๊ฒฉ์ด ์์ต๋๋ค.",
|
| 22 |
+
"ESFJ": "ESFJ๋ ์น์ ํ๊ณ ์์ ๋ฐ๋ฅธ ํ๋๋ก ๊ณต๋์ฒด์ ๊ธฐ๋ฐ์ด ๋๊ณ ์ฃผ๋ณ ์ฌ๋๋ค์ ๋ํ ๊ฐํ ์ฑ
์๊ฐ์ ๋๋๋๋ค. ๊ด์ต์ ์กด์คํ๋ ๋์์ ์์ ์ ์๊ฒฌ์ ๊ณ ์ํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ๋ฒ, ๊ท์จ, ๊ด์ต์ ์ค์ํฉ๋๋ค. ๋ฐฐ๋ ค์ฌ์ด ๋ง๊ณ ์ธํฅ์ ์ธ ์ฑ๊ฒฉ์ผ๋ก ์ฅ๊ธฐ์ ์ธ ๊ด๊ณ๋ฅผ ๊ตฌ์ถํฉ๋๋ค. ๊ณํ๋ ์ผ์ ์ ์ ํธํ๊ณ ์ผ์ด ์์กฐ๋กญ๊ฒ ์งํ๋๋๋ก ์ฑ
์์ ๋คํฉ๋๋ค.",
|
| 23 |
+
"ISTP": "ISTP๋ ํธ๊ธฐ์ฌ์ ํตํด ์ธ์์ ๋ฐ๋ผ๋ณด๊ณ ์ง์ ํ๊ตฌํ๋ ์ผ์ ์ฆ๊น๋๋ค. ์๊ธฐ์ ์ด ๋ฐ์ด๋๊ณ ๋ฌผ๊ฑด์ ๋ถํดํ๊ณ ์กฐ๋ฆฝํ๋ ์ผ์ ์ฆ๊น๋๋ค. ๋ฌผ๊ฑด์ ์ ์ํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉฐ ์ง์ ๊ฒฝํํจ์ผ๋ก์จ ์์ด๋์ด์ ๋ํด ํ๊ตฌํฉ๋๋ค. ๋จ์ ๋๊ณ ๊ฒฝํ์ ๊ณต์ ํ๋ ์ผ์ ์ข์ํฉ๋๋ค. ์น์ ํ์ง๋ง ๋ดํฅ์ ์ด๊ณ ์ฐจ๋ถํ์ง๋ง ์ฆํฅ์ ์ธ ์ฑ๊ฒฉ์
๋๋ค. ์ธ๊ฐ๊ด๊ณ์์ ํ๋์ ์ค์ํ๊ณ ์์ ๋ก์ด ์ฑ๊ฒฉ์
๋๋ค.",
|
| 24 |
+
"ISFP": "ISFP๋ ํธ๊ธฐ์ฌ์ด ๋ง๊ณ ์๋ก์ด ๊ฒ์ ์ถ๊ตฌํ๋ ์ฑ๊ฒฉ์ผ๋ก ์์ ์ ๊ฐ์ฑ์ ์ ๋๋ฌ๋
๋๋ค. ์ ์ฐํ ์ฑ๊ฒฉ์ผ๋ก ์ฆํฅ์ ์ธ ๋ฐฉ์์ผ๋ก ์ถ์ ์ด์๊ฐ๋๋ค. ๊ด์ฉ์ ์ด๊ณ ๊ฐ๋ฐฉ์ ์ด๋ฉฐ ๋ดํฅ์ ์ธ ์ฑ๊ฒฉ์ผ๋ก ํผ์๋ง์ ์๊ฐ์ด ํ์ํ๊ณ ์์ ์ ์ ์ฒด์ฑ์ ๋ํด ๊ณ ๋ฏผํฉ๋๋ค. ๋ฐ์ด๋ ์ฐฝ์๋ ฅ๊ณผ ํต์ฐฐ๋ ฅ์ผ๋ก ํ์ฌ์ ๊ฐ์ฅ ์ ์ ํ ๊ฒฐ์ ์ ๋ด๋ฆฝ๋๋ค.",
|
| 25 |
+
"ESTP": "ESTP๋ ์ง์ค์ ์ธ ์ ๋จธ ๊ฐ๊ฐ์ ์ง๋๊ณ ์์ผ๋ฉฐ ๊ด์ฌ์ ๋ฐ๋ ์ผ์ ์ฆ๊น๋๋ค. ํ์ค์ ์ธ ์ฃผ์ ๋ฅผ ์ ํธํ๊ณ ์ํ์ฐฉ์ค๋ฅผ ๊ฒช์ผ๋ฉฐ ํ๋ํ๋ ๋ฐฉ์์ ์ ํธํฉ๋๋ค. ์ํ์ ์ถ๊ตฌํ๋ ์ฑ๊ฒฉ์ด ๊ฐํ๋ฉฐ ํ์ฌ์ ์ง์คํ๊ณ ๊ด์ฐฐ๋ ฅ์ด ๋ฐ์ด๋ฉ๋๋ค. ์ด์ ๊ณผ ์๋์ง๊ฐ ๋์น๊ณ ๊ฐํ ์ ์ ๋ ฅ์ ๊ฐ์ง ์ฑ๊ฒฉ์
๋๋ค. ์ฌ๋๋ค์ ์ด๋๊ณ ์ฆ๊ฑฐ์์ ์ ์ฌํ๋ ์ง๋์์ ์ญํ ์ ํ ์ ์์ต๋๋ค.",
|
| 26 |
+
"ESFP": "ESFP๋ ์ฆํฅ์ ์ด๊ณ ์ฌ๊ต์ ์ผ๋ก ๋ค๋ฅธ ์ฌ๋๊ณผ ์๊ฐ์ ๋ณด๋ด๋ ์ผ์ ์ข์ํฉ๋๋ค. ๋ฏธ์ ๊ฐ๊ฐ๊ณผ ํจ์
๊ฐ๊ฐ์ด ๋ฐ์ด๋ ๊พธ๋ฏธ๋ ์ผ์ ์์ง์ด ์์ต๋๋ค. ์ฆํฅ์ ์ธ ์ฆ๊ฑฐ์์ ์ถ๊ตฌํ์ฌ ํ์ด์ด๋ ์ฐ์ฐํ ๊ธฐํ์ ์์กดํฉ๏ฟฝ๏ฟฝ๏ฟฝ๋ค. ๋ฌผ๊ฑด๊ณผ ๊ฐ์น์ ํ์ง์ ํ์
ํ๋ ๋ฐ ๋ฐ์ด๋ ์์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.",
|
| 27 |
+
"INTJ": "INTJ๋ ์ด์ฑ์ ์ด๊ณ ๋๋ ํ์ ์ด ๋น ๋ฅธ ์ฑ๊ฒฉ์ผ๋ก, ๋์์์ด ์๊ฐํ๊ณ ์ฃผ๋ณ์ ๋ชจ๋ ๊ฒ์ ๋ถ์ํ๋ ค ํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ ์๋ฌธ์ ์ ๊ธฐํ๊ณ ์ค์ ๋ก ํ์ฉํ ์ ์๋ ์์ด๋์ด๋ง์ด ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํ๋ฉฐ ๊ทธ ์์ด๋์ด๋ฅผ ์ด์ฉํด ์ฑ๊ณต์ ์์ทจํ๊ณ ์ ํฉ๋๋ค. ํต์ฐฐ๋ ฅ๊ณผ ๋
ผ๋ฆฌ๋ ฅ์ผ๋ก ์
๋ฌด๋ฅผ ํ๋ ค ํฉ๋๋ค. ๋
๋ฆฝ์ฑ์ด ๋งค์ฐ ๊ฐํ์ฌ ํผ์์ ํ๋ํ๋ ค๋ ์ฑํฅ์ด ์์ต๋๋ค. ์์๋ ฅ์ด ๋์น๋ฉฐ ๊ฒฐ๋จ๋ ฅ์ด ๊ฐํ๊ณ ์ผ๋ง์ด ๋์น๋ฉด์๋ ์ฐจ๋ถํ๊ณ ํธ๊ธฐ์ฌ์ด ๋ง์ต๋๋ค.",
|
| 28 |
+
"INTP": "INTP๋ ์ฐฝ์์ ์ด๊ณ ๋
์ฐฝ์ ์ด๋ฉฐ ๋
ผ๋ฆฌ์ ์
๋๋ค. ํญ์ ๋ฌด์์ ์๊ฐํ๊ณ ๋ค์ํ ์์ด๋์ด์ ์ง๋ฌธ์ ๋ ์ฌ๋ฆฝ๋๋ค. ์๊ฐ์ด ๊น๊ณ ๋ด์ฑ์ ์ธ ์ฑ๊ฒฉ์ผ๋ก ํผ์๋ง์ ์๊ฐ์ด ํ์ํฉ๋๋ค. ํ ๋ก ํ๊ณ ์์ด๋์ด๋ฅผ ๊ณต์ ํ๋ ์ผ๊ณผ ํจํด์ ๋ถ์ํ๋ ์ผ์ ์ฆ๊น๋๋ค.",
|
| 29 |
+
"ENTJ": "ENTJ๋ ์นด๋ฆฌ์ค๋ง์ ์์ ๊ฐ์ ์ง๋๊ณ ์์ผ๋ฉฐ ๋์ฒ ํ ์ด์ฑ์ผ๋ก ์ํ๋ ๊ฒ์ ์ฑ์ทจํ๋ ค ํฉ๋๋ค. ๋์ ์ ์ฆ๊ธฐ๋ ์ฑ๊ฒฉ์ผ๋ก, ์ ๋ต์ ์ฌ๊ณ ๋ฅ๋ ฅ๊ณผ ์ฅ๊ธฐ์ ๋ชฉํ์ ์ง์คํ๊ณ ์คํํฉ๋๋ค. ๋์ ๊ณผ์ ์ ์ง์ ๋๊ฒฐ์ ์ฆ๊ธฐ๊ณ ๋
ผ์์ ์ฆ๊ฑฐ์ํฉ๋๋ค. ๊ฐ์ ์ ์ผ๋ก ๋ฌด๊ด์ฌํ๋ฉฐ ๋นํจ์จ๊ณผ ๋ฌด๋ฅ๋ ฅ์ ์ซ์ดํฉ๋๋ค.",
|
| 30 |
+
"ENTP": "ENTP๋ ๋๋ ํ์ ์ด ๋น ๋ฅด๊ณ ๋๋ดํ ์ฑ๊ฒฉ์ผ๋ก ๊ฒฉ๋ ฌํ๊ฒ ๋
ผ์ํ๋ ์ผ์ ์ฆ๊น๋๋ค. ์ง์์ด ํ๋ถํ๊ณ ํธ๊ธฐ์ฌ์ด ๋์น๋ฉฐ ์ ๋จธ ๊ฐ๊ฐ์ผ๋ก ๋ค๋ฅธ ์ฌ๋์ ์ฆ๊ฒ๊ฒ ํด์ค ์ ์์ต๋๋ค. ๋ชจ๋ ์ ๋
์ ์๋ฌธ์ ์ ๊ธฐํ๊ณ ์์ด๋์ด๋ฅผ ์ธ์ฌํ ๊ฒํ ํฉ๋๋ค. ๊ท์น์ ์ฒ ์ ํ ๊ฒ์ฆํ๊ณ ๊ฐ๊ด์ ์ผ๋ก ๋ฐ๋ผ๋ณด๊ธฐ ์ํด ์์ ์ ์๊ฒฌ์ ๋ฐ๋ก ์ ์ ๊ธฐํ๊ธฐ๋ ํฉ๋๋ค. ์ด์ฑ๊ณผ ๋
ผ๋ฆฌ์๋ง ์ง์คํ์ฌ ์ธ๊ฐ๊ด๊ณ์์ ๊ฐ๋ฑ์ด ๋ฐ์ํ ๋๋ ์์ต๋๋ค.",
|
| 31 |
+
"INFJ": "INFJ๋ ์ด์์ฃผ์์ ์ด๊ณ ์์น์ฃผ์์ ์ธ ์ฑ๊ฒฉ์ผ๋ก, ๋ณํ๋ฅผ ๋ง๋ค์ด๋ด๊ณ ์ ํฉ๋๋ค. ์ฑ๊ณต์ ์์์คํ์ด๋ผ๊ณ ์๊ฐํ์ฌ ์ ์ ์ค์ฒํฉ๋๋ค. ์์น๊ณผ ์๋ฒฝํจ์ ์ค์ํ๋ฉฐ ์งํ์ ์ง๊ด์ ํตํด ์ค์ํ ๊ฐ์น๋ฅผ ์ฐพ์ผ๋ ค๋ ๋
ธ๋ ฅ์ ํฉ๋๋ค. ์ฐฝ์๋ ฅ, ์์๋ ฅ, ์ธ์ฌํจ์ ํ์ฉํ์ฌ ๋ค๋ฅธ ์ฌ๋์ ๋์ต๋๋ค. ๋ดํฅ์ ์ธ ์ฑ๊ฒฉ์ด๋ฉฐ ๊ณต๊ฐ ๋ฅ๋ ฅ์ด ๋ฐ์ด๋ ๋ค์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค ํฉ๋๋ค.",
|
| 32 |
+
"INFP": "INFP๋ ์ฐฝ์์ ์ด๊ณ ์์๋ ฅ์ด ๋ฐ์ด๋๋ฉฐ ๋ชฝ์์ ์ฆ๊ธฐ๋ ์ฑ๊ฒฉ์
๋๋ค. ์์ , ์์ฐ์ ๋ํ ๊ฐ์์ฑ์ด ๋ฐ์ด๋๋ฉฐ ๋ค๋ฅธ ์ฌ๋์ ๊ฐ์ ์ ๋น ๋ฅด๊ฒ ์์์ฐจ๋ฆฝ๋๋ค. ๊ณต๊ฐ๋ ฅ์ด ๋์ ๋ค๋ฅธ ์ฌ๋์ ๋์์ผ ํ๋ค๋ ์ฌ๋ช
๊ฐ์ ๊ฐ์ง๋๋ค. ์๊ธฐ ์ฑ์ฐฐ์ ์ธ ์ฑ๊ฒฉ์ผ๋ก ์๊ธฐ ์๊ฐ๊ณผ ๊ฐ์ ์ ์ง์คํฉ๋๋ค. ์์งํจ์ ์ค์ํ๊ณ ์์ ์ ํํํ๊ธฐ๋ฅผ ์ํฉ๋๋ค."
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
woe_dict = {
|
| 36 |
+
'๋ชฉ': ("๋ชฉ(ๆจ) ๊ธฐ์ด์ด ๊ฐํ๋ฉด ์๋ก์ด ์์ด๋์ด์ ์ฑ์ฅ์ ์ค์ํ๊ฒ ์ฌ๊ธด๋ค. ์๋ก์ด ์๋์ ๋ณํ๋ฅผ ์ ๋ฐ์๋ค์ด๋ ํธ์ด๋ค. ์ฒ์ ํด๋ณด๋ ์ผ์ด๋ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ๋ณด์ด๋ ๋ถ์ผ์ ๋๋ฆฌ๊ธฐ ์ฝ๋ค."),
|
| 37 |
+
'ํ': ("ํ(็ซ) ๊ธฐ์ด์ด ๊ฐํ๋ฉด ์ด์ ์ ์ผ๋ก ์์ง์ด๊ณ , ์ฃผ๋ณ ์ฌ๋๋ค์๊ฒ ์๋์ง๋ฅผ ์ฃผ๋ ์ญํ ์ ํ๊ธฐ ์ฝ๋ค. ํํ๋ ฅ์ด ํ๋ถํ๋ค. ์ฌ๋๋ค ์์์ ์์ ์ ์๊ฐ์ ๋๋ฌ๋ด๋ ์ผ์ ์ ์ด์ธ๋ฆฐ๋ค."),
|
| 38 |
+
'ํ ': ("ํ (ๅ) ๊ธฐ์ด์ด ๊ฐํ๋ฉด ์์ ๊ฐ๊ณผ ์ฑ
์๊ฐ์ ์ค์ํ๊ฒ ์ฌ๊ธด๋ค. ์ฌ๋๋ค ์ฌ์ด์์ ์ค์ฌ์ ์ก์์ฃผ๊ณ ์ผ์ ๊พธ์คํ ์ด์ด๊ฐ๋ ๋ฐ ๊ฐ์ ์ ๋ณด์ธ๋ค. ์ฒด๊ณ์ ์ด๊ณ ๋ฏฟ์ ์ ์๋ ์ญํ ์ ๋งก๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค."),
|
| 39 |
+
'๊ธ': ("๊ธ(้) ๊ธฐ์ด์ด ๊ฐํ๋ฉด ๋
ผ๋ฆฌ์ ์ด๊ณ ๋ถ์์ ์ธ ์ฑํฅ์ด ๋๋๋ฌ๋๋ค. ๊ท์น๊ณผ ์์น์ ์งํค๊ณ ํจ์จ์ ์ผ๋ก ์ผํ๋ ๊ฒ์ ์ค์ํ๊ฒ ์๊ฐํ๋ค. ์ ํํ๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋ ์ผ์์ ๊ฐ์ ์ ๋ฐํํ๋ค."),
|
| 40 |
+
'์': ("์(ๆฐด) ๊ธฐ์ด์ด ๊ฐํ๋ฉด ์ํฉ์ ํ๋ฆ๊ณผ ์ฌ๋๋ค์ ๊ฐ์ ์ ์ ์ฝ๋๋ค. ๊น์ด ์๊ฒ ๊ณ ๋ฏผํ๊ณ ํ๊ตฌํ๋ ์ฑํฅ์ด ์๋ค. ์กฐ์ฉํ ๊ด์ฐฐํ๊ณ ๋ถ์ํ๊ฑฐ๋, ์ฌ๋๋ค์ ๋ง์์ ์ดํดํ๋ ์ญํ ์ ์ ์ด์ธ๋ฆฐ๋ค.")
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
if not os.path.exists(DATA_PATH):
|
| 45 |
+
raise FileNotFoundError(f"๋ฐ์ดํฐ ํ์ผ์ด ์์ต๋๋ค: {DATA_PATH} (Space ๋ฃจํธ์ ์
๋ก๋ํ์ธ์)")
|
| 46 |
+
|
| 47 |
+
df = pd.read_csv(DATA_PATH)
|
| 48 |
+
|
| 49 |
+
def to_list(x):
|
| 50 |
+
if isinstance(x, str):
|
| 51 |
+
return ast.literal_eval(x)
|
| 52 |
+
return []
|
| 53 |
+
|
| 54 |
+
df["๊ด๋ จํ๊ณผ"] = df["๊ด๋ จํ๊ณผ"].apply(to_list)
|
| 55 |
+
|
| 56 |
+
def filter_by_major(df, user_major, major_col = "๊ด๋ จํ๊ณผ"):
|
| 57 |
+
def to_list(x):
|
| 58 |
+
if isinstance(x, str):
|
| 59 |
+
return ast.literal_eval(x)
|
| 60 |
+
return []
|
| 61 |
+
|
| 62 |
+
df[major_col] = df[major_col].apply(to_list)
|
| 63 |
+
|
| 64 |
+
def is_major_in_list(majors):
|
| 65 |
+
found = any(user_major in major for major in majors)
|
| 66 |
+
return found
|
| 67 |
+
|
| 68 |
+
filtered_df = df[df[major_col].apply(is_major_in_list)]
|
| 69 |
+
|
| 70 |
+
if filtered_df.empty:
|
| 71 |
+
print(f"โป ํํฐ๋ง๋ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค.")
|
| 72 |
+
return filtered_df
|
| 73 |
+
|
| 74 |
+
def recommend_jobs(mbti_key,
|
| 75 |
+
woe_key,
|
| 76 |
+
jobs_df,
|
| 77 |
+
top_n = 3,
|
| 78 |
+
model_name = "jhgan/ko-sbert-multitask",
|
| 79 |
+
job_name_col = "์ง์
๋ช
",
|
| 80 |
+
job_sent_col = "ํฅ๋ฏธ์ ์ฑ",
|
| 81 |
+
job_duty_col = "์ฃผ์์
๋ฌด",
|
| 82 |
+
weight_mbti = 0.5,
|
| 83 |
+
weight_woe = 0.5,
|
| 84 |
+
batch_size = 64):
|
| 85 |
+
|
| 86 |
+
mbti_text = mbti_dict.get(mbti_key.upper(), mbti_key)
|
| 87 |
+
woe_text = woe_dict.get(woe_key, woe_key)
|
| 88 |
+
|
| 89 |
+
model = SentenceTransformer(model_name)
|
| 90 |
+
|
| 91 |
+
# mbti, ์คํ ํ
์คํธ ์๋ฒ ๋ฉ
|
| 92 |
+
mbti_emb = model.encode(str(mbti_text), convert_to_tensor = True)
|
| 93 |
+
woe_emb = model.encode(str(woe_text), convert_to_tensor = True)
|
| 94 |
+
|
| 95 |
+
# ์ฌ์ฉ์์ ์ต์ข
๋ฒกํฐ(0.5*mbti๋ฒกํฐ + 0.5*์คํ๋ฒกํฐ)
|
| 96 |
+
mbti_emb = F.normalize(mbti_emb, p=2, dim=0)
|
| 97 |
+
woe_emb = F.normalize(woe_emb, p=2, dim=0)
|
| 98 |
+
combined = weight_mbti * mbti_emb + weight_woe * woe_emb
|
| 99 |
+
user_vec = F.normalize(combined, p=2, dim=0).unsqueeze(0)
|
| 100 |
+
|
| 101 |
+
# ์ง์
ํ
์คํธ ์๋ฒ ๋ฉ + ์ ๊ทํ
|
| 102 |
+
job_sents = jobs_df[job_sent_col].astype(str).tolist()
|
| 103 |
+
job_embs = model.encode(job_sents,
|
| 104 |
+
convert_to_tensor = True,
|
| 105 |
+
batch_size = batch_size,
|
| 106 |
+
show_progress_bar = False)
|
| 107 |
+
job_embs = F.normalize(job_embs, p=2, dim=1)
|
| 108 |
+
|
| 109 |
+
#######-------- ์ฝ์ฌ์ธ์ ์ฌ๋ ๊ณ์ฐ --------#######
|
| 110 |
+
sims = util.cos_sim(user_vec, job_embs)[0]
|
| 111 |
+
|
| 112 |
+
# top3 ์ถ์ถ
|
| 113 |
+
k = min(top_n, job_embs.shape[0])
|
| 114 |
+
topk = torch.topk(sims, k=k)
|
| 115 |
+
top_vals = topk.values.cpu().numpy().tolist()
|
| 116 |
+
top_idxs = topk.indices.cpu().numpy().tolist()
|
| 117 |
+
|
| 118 |
+
results = []
|
| 119 |
+
for idx, score in zip(top_idxs, top_vals):
|
| 120 |
+
name = str(jobs_df.iloc[idx][job_name_col])
|
| 121 |
+
if job_duty_col in jobs_df.columns and pd.notna(jobs_df.iloc[idx][job_duty_col]):
|
| 122 |
+
duty = str(jobs_df.iloc[idx][job_duty_col])
|
| 123 |
+
else:
|
| 124 |
+
duty = str(jobs_df.iloc[idx][job_sent_col])
|
| 125 |
+
results.append((name, float(score), duty))
|
| 126 |
+
|
| 127 |
+
formatted = f"=== ์์ {len(results)}๊ฐ ์ง์
์ถ์ฒ ===\n"
|
| 128 |
+
for i, (name, score, duty) in enumerate(results, start=1):
|
| 129 |
+
formatted += f"{i}. {name}\n"
|
| 130 |
+
formatted += f"์ฃผ์์
๋ฌด: {duty}\n\n"
|
| 131 |
+
|
| 132 |
+
return results
|
| 133 |
+
|
| 134 |
+
def generate_recommendation_reason(job_name, job_duty, mbti_key, woe_key, similarity_score):
|
| 135 |
+
"""
|
| 136 |
+
OpenAI GPT๋ฅผ ์ฌ์ฉํ์ฌ ์ง์
์ถ์ฒ ์ด์ ๋ฅผ ์์ฑํฉ๋๋ค.
|
| 137 |
+
"""
|
| 138 |
+
api_key = os.environ.get("OPENAI_API_KEY")
|
| 139 |
+
if not api_key:
|
| 140 |
+
return "(OPENAI_API_KEY๊ฐ ์ค์ ๋์ด ์์ง ์์ต๋๋ค. Space Settings โ Secrets์ ํค๋ฅผ ๋ฑ๋กํ์ธ์.)"
|
| 141 |
+
|
| 142 |
+
# OpenAI ํด๋ผ์ด์ธํธ ์์ฑ (์๋ณธ์์ ์ฌ์ฉํ ๋ฐฉ์ ์ ์ง)
|
| 143 |
+
client = OpenAI(api_key=api_key)
|
| 144 |
+
|
| 145 |
+
# ์ฌ์ฉ์ ์ฑ๊ฒฉ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
|
| 146 |
+
mbti_desc = mbti_dict.get(mbti_key.upper(), "")
|
| 147 |
+
woe_desc = woe_dict.get(woe_key, "")
|
| 148 |
+
|
| 149 |
+
# ํ๋กฌํํธ ์์ฑ (์๋ณธ ๋ด์ฉ ์ ์ง)
|
| 150 |
+
prompt = f"""๋น์ ์ ์ง๋ก ์๋ด ์ ๋ฌธ๊ฐ์
๋๋ค. ์๋ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ด ์ง์
์ ์ถ์ฒํ๋ ์ด์ ๋ฅผ 2-3๋ฌธ์ฅ์ผ๋ก ๊ฐ๋จ๋ช
๋ฃํ๊ฒ ์ค๋ช
ํด์ฃผ์ธ์.
|
| 151 |
+
|
| 152 |
+
**์ฌ์ฉ์ ์ ๋ณด:**
|
| 153 |
+
- MBTI: {mbti_key}
|
| 154 |
+
- MBTI ํน์ฑ: {mbti_desc}
|
| 155 |
+
- ์ฐ์ธ์คํ: {woe_key}
|
| 156 |
+
- ์คํ ํน์ฑ: {woe_desc}
|
| 157 |
+
|
| 158 |
+
**์ถ์ฒ ์ง์
:**
|
| 159 |
+
- ์ง์
๋ช
: {job_name}
|
| 160 |
+
- ์ฃผ์์
๋ฌด: {job_duty}
|
| 161 |
+
- ์ ์ฌ๋: {similarity_score:.2f}
|
| 162 |
+
|
| 163 |
+
์ฌ์ฉ์์ MBTI ์ฑํฅ๊ณผ ์คํ ๊ธฐ์ง์ด ์ด ์ง์
์ ํน์ฑ๊ณผ ์ด๋ป๊ฒ ์ ๋ง๋์ง ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช
ํด์ฃผ์ธ์.
|
| 164 |
+
์น๊ทผํ๊ณ ๊ฒฉ๋ คํ๋ ํค์ผ๋ก ์์ฑํด์ฃผ์ธ์."""
|
| 165 |
+
|
| 166 |
+
try:
|
| 167 |
+
# GPT API ํธ์ถ (์๋ณธ์์ ์ฌ์ฉํ ํ์ ์ ์ง)
|
| 168 |
+
response = client.chat.completions.create(
|
| 169 |
+
model="gpt-4o-mini", # ๋๋ "gpt-4o", "gpt-3.5-turbo"
|
| 170 |
+
messages=[
|
| 171 |
+
{"role": "user", "content": prompt}
|
| 172 |
+
],
|
| 173 |
+
max_tokens=300,
|
| 174 |
+
temperature=0.7
|
| 175 |
+
)
|
| 176 |
+
|
| 177 |
+
# ์๋ต ํ
์คํธ ์ถ์ถ
|
| 178 |
+
# (์๋ณธ๊ณผ ๋์ผํ ์ ๊ทผ๋ฐฉ์ ์ ์งํ๋ SDK ๋ฐํํํ์ ๋ฐ๋ผ ์์ธ ๋ฐ์ ๊ฐ๋ฅ)
|
| 179 |
+
try:
|
| 180 |
+
reason = response.choices[0].message.content
|
| 181 |
+
except Exception:
|
| 182 |
+
reason = str(response)
|
| 183 |
+
return reason
|
| 184 |
+
|
| 185 |
+
except Exception as e:
|
| 186 |
+
return f"(์ถ์ฒ ์ด์ ์์ฑ ์ค ์ค๋ฅ ๋ฐ์: {str(e)})"
|
| 187 |
+
|
| 188 |
+
def resulting(user_major, mbti_key, woe_key, top_n = 3):
|
| 189 |
+
# ์ ๊ณต ํํฐ
|
| 190 |
+
filtered = filter_by_major(df.copy(), user_major)
|
| 191 |
+
if filtered is None or (hasattr(filtered, "empty") and filtered.empty):
|
| 192 |
+
return "โป ํํฐ๋ง๋ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค."
|
| 193 |
+
|
| 194 |
+
# ์ถ์ฒ (top_n ์ ๋ฌ)
|
| 195 |
+
try:
|
| 196 |
+
recs = recommend_jobs(mbti_key, woe_key, filtered, top_n=top_n)
|
| 197 |
+
except Exception as e:
|
| 198 |
+
return f"recommend_jobs ์คํ ์ค ์ค๋ฅ: {type(e).__name__}: {e}"
|
| 199 |
+
|
| 200 |
+
# ๊ฒฐ๊ณผ๊ฐ ๋น ๊ฒฝ์ฐ ์ฒ๋ฆฌ
|
| 201 |
+
if not recs:
|
| 202 |
+
return "์ถ์ฒ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค."
|
| 203 |
+
|
| 204 |
+
# ๊ฒฐ๊ณผ ์ถ๋ ฅ (์ถ์ฒ ์ด์ ํฌํจ)
|
| 205 |
+
output = f"=== ์์ {len(recs)}๊ฐ ์ง์
์ถ์ฒ ===\n\n"
|
| 206 |
+
|
| 207 |
+
for i, (name, score, duty) in enumerate(recs, start=1):
|
| 208 |
+
output += f"{i}. {name}\n"
|
| 209 |
+
output += f" ์ ์ฌ๋: {score:.4f}\n"
|
| 210 |
+
output += f" ์ฃผ์์
๋ฌด: {duty}\n\n"
|
| 211 |
+
|
| 212 |
+
# LLM์ ์ฌ์ฉํ์ฌ ์ถ์ฒ ์ด์ ์์ฑ
|
| 213 |
+
reason = generate_recommendation_reason(name, duty, mbti_key, woe_key, score)
|
| 214 |
+
output += f" ๐ก ์ถ์ฒ ์ด์ :\n {reason}\n"
|
| 215 |
+
output += "-" * 80 + "\n\n"
|
| 216 |
+
|
| 217 |
+
return output
|
| 218 |
+
|
| 219 |
+
user_major = gr.Dropdown(choices = ['๊ด๋ จ์์', 'IT์ตํฉํ๊ณผ','๊ฐํธํ๊ณผ','๊ฑด๊ฐ๊ด๋ฆฌํ๊ณผ',
|
| 220 |
+
'๊ฑด์ถ๊ณตํ๊ณผ','๊ฒ์๊ณตํ๊ณผ','๊ฒฝ์/ํ๊ณํ๊ณผ','๊ฒฝ์ ํ๊ณผ','๊ฒฝ์ฐฐํ์ ํ๊ณผ','๊ฒฝํธํ๊ณผ','๊ณ ๊ณ ํ๊ณผ','๊ณ ๋ถ์๊ณตํ๊ณผ','๊ณต์
๋์์ธํ๊ณผ','๊ณต์ํ๊ณผ','๊ณผํ๊ต์ก๊ณผ',
|
| 221 |
+
'๊ด๊ดํต์ญ๊ณผ','๊ดํ์
๊ณผ','๊ด๊ณ ๋์์ธํ๊ณผ','๊ด๊ณ ํ๋ณดํ๊ณผ','๊ต์๊ณตํ๋ถ','๊ต์กํ๊ณผ','๊ตํต๊ณตํ๊ณผ','๊ตญ๋ฐฉ๊ธฐ์ ํ๊ณผ','๊ตญ์
ํ๊ณผ','๊ตญ์ด๊ต์ก๊ณผ','๊ตญ์ด๊ตญ๋ฌธํ๊ณผ','๊ตญ์ ํต์ํ๊ณผ',
|
| 222 |
+
'๊ตญ์ ํ๊ณผ','๊ตฐ์ฌํ๊ณผ','๊ทธ๋ํฝ๋์์ธ๊ณผ','๊ธ์๊ณต์ํ๊ณผ','๊ธ์๊ณตํ๊ณผ','๊ธ์ต๋ณดํํ๊ณผ','๊ธํ์ค๊ณ๊ณผ','๊ธฐ๊ณ๊ณตํ๊ณผ','๊ธฐ๋
๊ตํ๊ณผ','๊ธฐ์
๊ณผ','๋๋
ธ๊ณตํ๊ณผ','๋๋๊ณต์กฐ๊ณตํ๊ณผ',
|
| 223 |
+
'๋
ธ์ธ๋ณต์งํ๊ณผ','๋์
ํ๊ณผ','๋๊ธฐ๊ณผํ๊ณผ','๋์๊ณตํ๊ณผ','๋
์ด๋
๋ฌธํ๊ณผ','๋๋ฌผ์์ํ๊ณผ','๋์ํ๊ณผ','๋์งํธ๋์์ธํ๊ณผ','๋์งํธ๋ฏธ๋์ด๊ณผ','๋ ์ ์คํฌ์ธ ํ๊ณผ','๋ ํฌ๋ฆฌ์์ด์
๊ณผ',
|
| 224 |
+
'๋ก๋ด๊ณตํ๊ณผ','๋ง์ผํ
๊ฒฝ์๊ณผ','๋งํ์ ๋๋ฉ์ด์
ํ๊ณผ','๋ฉ์ดํฌ์
์ํฐ์คํธ๊ณผ','๋ฉ์นดํธ๋ก๋์ค๊ณตํ๊ณผ','๋ชจ๋ธ๊ณผ','๋ชจ๋ฐ์ผ์์คํ
๊ณตํ๊ณผ','๋ฌด๋ํ๊ณผ','๋ฌด์ญํ๊ณผ','๋ฌด์ฉํ๊ณผ','๋ฌด์ธํญ๊ณตํ๊ณผ',
|
| 225 |
+
'๋ฌธ์์ฐฝ์๊ณผ','๋ฌธํ์ ๋ณดํ๊ณผ','๋ฌธํ์ฌ๋ณด์กดํ๊ณผ','๋ฌธํ์ฌํ๊ณผ','๋ฌธํ์ฝํ
์ธ ํ๊ณผ','๋ฌผ๋ฅํ๊ณผ','๋ฌผ๋ฆฌ์น๋ฃํ๊ณผ','๋ฌผ๋ฆฌํ๊ณผ','๋ฏธ์ ๊ต์ก๊ณผ','๋ฏธ์ ํ๊ณผ','๋ฏธ์ฉ๊ณผ','๋ฐ์ด์ค์๋ช
ํ๊ณผ','๋ฐ๋์ฒดํ๊ณผ','๋ฐ๋ ค๋๋ฌผ๊ณผ',
|
| 226 |
+
'๋ฐฉ์ฌ์ ๊ณผ','๋ฐฉ์ก์ฐ์๊ณผ','๋ฐฉ์ก์์๊ณผ','๋ฒํ๊ณผ','๋ฒค์ฒ์ฐฝ์
ํ๊ณผ','๋ณด๊ฑด๊ด๋ฆฌํ๊ณผ','๋ณด์๊ฐ์ ๊ณผ','๋ถ๋์ฐํ๊ณผ','๋ถ๊ตํ๊ณผ','๋ถ์ด๋ถ๋ฌธํ๊ณผ','๋น์ํ์ ํ๊ณผ','์ฌ์ง์์ํ๊ณผ',
|
| 227 |
+
'์ฌํ๊ณผ','์ฌํ๊ต์ก๊ณผ','์ฌํ๋ณต์งํ๊ณผ','์ฌํํ๊ณผ','์ฐ๋ฆผ์์ํ๊ณผ','์ฐ์
/์ ํ๋์์ธํ๊ณผ','์ฐ์
๊ณตํ๊ณผ','์ฐ์
๋์์ธํ๊ณผ',
|
| 228 |
+
'์ฐ์
์ค๋น์๋ํ๊ณผ','์ฐ์
์์ ๊ณผ','์ฐ์
์ ์๊ณผ','์๋ช
๊ณตํ๊ณผ','์๋ฌผ๊ต์ก๊ณผ','์์ํ๊ณผ','์ฌ์ ๊ณตํ๊ณผ','์ฌ์ ๋์์ธํ๊ณผ','์ฑ์
๊ณผ','์ธ๋ผ๋ฏน๊ณตํ๊ณผ','์๋ฐฉ์์ ํ๊ณผ',
|
| 229 |
+
'์ํํธ์จ์ด๊ณตํ๊ณผ','์์ฐํ๊ณผ','์์ํ๊ณผ','์ํ๊ณผ','์ํ๊ต์ก๊ณผ','์ค๋งํธ์ ๋ณด๊ณผ','์คํ์ธ์ดํ๊ณผ','์๊ฐ๋์์ธํ๊ณผ','์์คํ
๊ณตํ๊ณผ','์๋ฌผ์์ํ๊ณผ','์ํ์์ํ๊ณผ','์ ๋ฌธ๋ฐฉ์กํ๊ณผ','์ ์์ฌ๊ณตํ๊ณผ','์ ํ๊ณผ',
|
| 230 |
+
'์ค๋ด๋์์ธํ๊ณผ','์ฌ๋ฆฌํ๊ณผ','์๋ํ๊ณผ','์๊ฒฝ๊ดํ๊ณผ','์ฝํ๋ถ','์ธ๋ก ํ๋ณดํ๊ณผ','์ธ์ด๊ณผํ๊ณผ','์ธ์ด์น๋ฃํ๊ณผ','์๋์ง์์๊ณตํ๊ณผ',
|
| 231 |
+
'์ญ์ฌ๊ต์ก๊ณผ','์ฐ๊ทน์ํ๊ณผ','์ฐ์๋งค๋์ง๋จผํธ๊ณผ','์์/๋ฏธ๋์ดํ๊ณผ','์์ด๊ต์ก๊ณผ','์์ด์๋ฌธํ๊ณผ','์์ ํ๊ณผ','์ธ๊ตญ์ด๊ต์ก๊ณผ','์ธ์์ฐ์
ํ๊ณผ','์ฐ์ฃผ๊ณผํ๊ณผ',
|
| 232 |
+
'์์ํ๊ณผ','์์๋ ฅ๊ณตํ๊ณผ','์ ์๊ต์กํ๊ณผ','์ ์ ๊ณตํ๊ณผ','์ ํตํ๊ณผ','์ค๋ฆฌํ๊ณผ','์์
๊ต์ก๊ณผ','์์
ํ๊ณผ','์๊ธ๊ตฌ์กฐํ๊ณผ','์๋ฃ์ ๋ณด๊ณตํ๊ณผ','์๋ฅ/์์ํ๊ณผ',
|
| 233 |
+
'์์๊ณผ','์์ฉ๊ณตํ๊ณผ','์ด๋ฒคํธ์ฐ์ถ๊ณผ','์ผ์ด์ผ๋ฌธํ๊ณผ','์์๋ณ๋ฆฌํ๊ณผ','์๋์ฐจ๊ณตํ๊ณผ','์๊ณก๊ณผ','์์
์น๋ฃํ๊ณผ','์ฅ๋ก์ง๋๊ณผ','์ฌ๋ฃ๊ณตํ๊ณผ',
|
| 234 |
+
'์ฌํํ๊ณผ','์ ๊ธฐ์ ์๊ณตํ๊ณผ','์ ๋ณด๋ณดํธํ๊ณผ','์ ๋ณดํต์ ํ๊ณผ','์ ์น์ธ๊ตํ๊ณผ','์ ๊ณผ์ ๋นต๊ณผ','์ ์ด๊ณ์ธก๊ณตํ๊ณผ','์ ์ฒ ๊ธ์๊ณผ','์กฐ๊ฒฝํ๊ณผ',
|
| 235 |
+
'์กฐ๋ฆฌํ๊ณผ','์กฐ์ ๊ณตํ๊ณผ','์กฐํ๋์์ธํ๊ณผ','์ข
๊ต๊ต์ก๊ณผ','์ค์ด์ค๋ฌธํ๊ณผ','์ง๊ตฌ๊ณผํ๊ณผ','์ง๋ฆฌํ๊ณผ','์ง์งํ๊ณผ','์ฒ๋ฌธํ๊ณผ','์ฒ ๋๊ตํต๊ณผ','์ฒ ํ๊ณผ',
|
| 236 |
+
'์ฒญ์๋
์ง๋ํ๊ณผ','์ฒด์ก/์คํฌ์ธ ํ๊ณผ','์ฒด์ก๊ต์ก๊ณผ','์ด๋ฑ๊ต์ก๊ณผ','์ถ์ฐํ๊ณผ','์น์์๊ณผ','์ปจ๋ฒค์
์ฐ์
๊ณผ','์ปดํจํฐ๊ณตํ๊ณผ','์ปดํจํฐ๊ต์ก๊ณผ','ํ๊ถ๋๊ณผ','ํ ๋ชฉ๊ณตํ๊ณผ','ํต๊ณํ๊ณผ','ํน์๊ต์กํ๊ณผ','ํน์์ธ์ด๊ณผ','ํธ๋์คํ์ผ๋ง๊ณผ',
|
| 237 |
+
'ํ๋ฌธ๊ต์ก๊ณผ','ํ์์๊ณผ','ํญ๊ณต์๋น์คํ๊ณผ','ํญ๊ณต์ดํญ/์ ๋นํ๊ณผ','ํญ๊ณต์ดํญํ๊ณผ','ํญํดํ๊ณผ','ํด์๊ฒฝ์ฐฐํ๊ณผ','ํด์๊ณตํ๊ณผ','ํ์ ํ๊ณผ','ํธํ
๊ฒฝ์๊ณผ','ํํ๊ณตํ๊ณผ','ํ๊ฒฝ๊ณตํ๊ณผ','ํ๊ฒฝ๋์์ธํ๊ณผ'],
|
| 238 |
+
label = "ํ๊ณผ ์ ํ")
|
| 239 |
+
|
| 240 |
+
# mbti ์ ํ
|
| 241 |
+
mbti_key = gr.Dropdown(choices = ['INTJ', 'INTP', 'ENTJ', 'ENTP', 'INFJ', 'INFP', 'ENFJ', 'ENFP', 'ISTJ', 'ISFJ', 'ESTJ', 'ESFJ', 'ISTP', 'ISFP', 'ESTP', 'ESFP'],
|
| 242 |
+
label = "MBTI ์ ํ")
|
| 243 |
+
|
| 244 |
+
# ์ฐ์ธ์คํ ์ ํ
|
| 245 |
+
woe_key = gr.Radio(choices = ['๋ชฉ', 'ํ', 'ํ ', '๊ธ', '์'], label = "์ฐ์ธ์คํ ์ ํ")
|
| 246 |
+
|
| 247 |
+
demo = gr.Interface(
|
| 248 |
+
fn = resulting,
|
| 249 |
+
inputs = [user_major, mbti_key, woe_key],
|
| 250 |
+
outputs = gr.Textbox(label = "์ถ์ฒ๊ฒฐ๊ณผ", lines = 20)
|
| 251 |
+
)
|
| 252 |
+
demo.launch()
|