vector / app.py
Chanjeans's picture
ํ˜„์ง„_app.py ์šฐ์šธ๋ชจ๋ธ ์ถ”๊ฐ€
c30f6b9 verified
raw
history blame
63.6 kB
import os
import re
import time
import requests
import numpy as np
import torch
import joblib
import xgboost as xgb
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from sentence_transformers import SentenceTransformer
from typing import Optional, List,Dict
from transformers import BertTokenizer, BertForSequenceClassification
#####################################
# 1) ์•ฑ ๋ฐ ๋ชจ๋ธ ์ดˆ๊ธฐํ™”
#####################################
app = FastAPI()
import os
os.environ["HF_HOME"] = "/workspace/huggingface_cache"
os.environ["HF_HUB_CACHE"] = "/workspace/huggingface_cache"
os.environ["TRANSFORMERS_CACHE"] = "/workspace/huggingface_cache"
# ๐ŸŸข (A) ๋ชจ๋ธ ๋กœ๋”ฉ
print("Loading SentenceTransformer model...)")
model_bert = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
print("Model loaded.")
# ๐ŸŸข (B) ์˜ˆ์‹œ ์•„์ดํ…œ ๋ชฉ๋ก
items = [
# ========= 1~12: ์šด๋™ (ํ—ฌ์Šค, ์š”๊ฐ€, ํ•„๋ผํ…Œ์Šค, ์ˆ˜์˜, ํ…Œ๋‹ˆ์Šค, ๊ณจํ”„, ํด๋ผ์ด๋ฐ, ์ถ•๊ตฌ, ๋†๊ตฌ, ๋ณผ๋ง, ๋ฐฐ๋“œ๋ฏผํ„ด, ๋Ÿฌ๋‹) =========
{
"item_id": 1,
"title": "ํ—ฌ์Šค ํผ์Šค๋„ ํ”„๋กœ์ ํŠธ",
"desc": "PT ์ „๋ฌธ ์ฝ”์น˜์™€ ํ•จ๊ป˜ ๊ทผ๋ ฅยท์œ ์‚ฐ์†Œ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌ (์šด๋™, ํ—ฌ์Šค)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 2,
"title": "๋นˆ์•ผ์‚ฌ ์š”๊ฐ€ in ๊ฐ•๋ฆ‰",
"desc": "๊ฐ•๋ฆ‰ ๋ฐ”๋‹ค ํ’๊ฒฝ ์†์—์„œ ํ˜ธํกยท๋™์ž‘์„ ์ตํžˆ๋Š” ๋นˆ์•ผ์‚ฌ ์š”๊ฐ€ ํด๋ž˜์Šค (์šด๋™, ์š”๊ฐ€)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 3,
"title": "๋งคํŠธ ํ•„๋ผํ…Œ์Šค ์ง‘์ค‘ ์›Œํฌ์ˆ",
"desc": "๋งคํŠธ ๋™์ž‘ ์œ„์ฃผ๋กœ ๊ธฐ์ดˆ ์ฝ”์–ด ํž˜์„ ๊ธฐ๋ฅด๋Š” ์†Œ๊ทธ๋ฃน ํ›ˆ๋ จ (์šด๋™, ํ•„๋ผํ…Œ์Šค)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 4,
"title": "์˜คํ”ˆ์›Œํ„ฐ ์Šค์œ„๋ฐ ์ฒดํ—˜",
"desc": "๋ฐ”๋‹ค๋‚˜ ํ˜ธ์ˆ˜์—์„œ ์ˆ˜์˜ ์‹ค๋ ฅ์„ ์‹œํ—˜ํ•˜๋Š” ์ž์—ฐ ์นœํ™”ํ˜• ์ด๋ฒคํŠธ (์šด๋™, ์ˆ˜์˜)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 5,
"title": "ํ…Œ๋‹ˆ์Šค ํฌํ•ธ๋“œ ๋งˆ์Šคํ„ฐํด๋ž˜์Šค",
"desc": "ํฌํ•ธ๋“œ ์Šค์œ™ยทํ’‹์›Œํฌ๋ฅผ ์ง‘์ค‘ ํ›ˆ๋ จํ•˜๊ณ  ๋ฏธ๋‹ˆ ๊ฒŒ์ž„์œผ๋กœ ์‹ค์Šต (์šด๋™, ํ…Œ๋‹ˆ์Šค)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 6,
"title": "๊ณจํ”„ ์ˆ๊ฒŒ์ž„ ํŠนํ™” ๋ ˆ์Šจ",
"desc": "์–ดํ”„๋กœ์น˜ยทํผํŒ… ๋“ฑ ์ˆ๊ฒŒ์ž„ ๊ตฌ๊ฐ„์„ ์ง‘์ค‘์ ์œผ๋กœ ์—ฐ์Šตํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ (์šด๋™, ๊ณจํ”„)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 7,
"title": "์•„์›ƒ๋„์–ด ํด๋ผ์ด๋ฐ ๊ต์‹ค",
"desc": "์‹ค์™ธ ๋ฐ”์œ„ ์ง€ํ˜•์—์„œ ์•”๋ฒฝ๋“ฑ๋ฐ˜ ๊ธฐ์ดˆ์™€ ์•ˆ์ „ ์ˆ˜์น™์„ ๋ฐฐ์šฐ๋Š” ์ฑŒ๋ฆฐ์ง€ (์šด๋™, ํด๋ผ์ด๋ฐ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 8,
"title": "ํ’‹์‚ด ๋“œ๋ฆฌ๋ธ”&ํŒจ์Šค ์ด๋ฒคํŠธ",
"desc": "์ถ•๊ตฌ ์†Œ๊ทœ๋ชจ ๋ฒ„์ „ ํ’‹์‚ด์—์„œ ์ „์ˆ ยทํŒ€์›Œํฌ๋ฅผ ์ฆ๊ธฐ๋Š” ์ฃผ๋ง ํด๋ž˜์Šค (์šด๋™, ์ถ•๊ตฌ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 9,
"title": "์ŠคํŠธ๋ฆฌํŠธ ๋†๊ตฌ ๋Œ€๊ฒฐ์ „",
"desc": "๋„์‹ฌ ์ฝ”ํŠธ์—์„œ ๋†๊ตฌ ํ† ๋„ˆ๋จผํŠธ๋ฅผ ์—ด์–ด ์‹ค๋ ฅ์„ ๊ฒจ๋ฃจ๋Š” ์•ก์…˜ (์šด๋™, ๋†๊ตฌ)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 10,
"title": "๋ณผ๋ง ์Šคํ•€&๋ฆด๋ฆฌ์Šค ํ…Œํฌ๋‹‰",
"desc": "๋ณผ๋ง์žฅ ์ „๋ฌธ ๊ฐ•์‚ฌ์™€ ํ•จ๊ป˜ ๋ณผ ์Šคํ•€, ๋ฆด๋ฆฌ์Šค ์ž์„ธ๋ฅผ ๊ต์ • (์šด๋™, ๋ณผ๋ง)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 11,
"title": "๋ฐฐ๋“œ๋ฏผํ„ด ๊ธฐ์ˆ  ์—… ์›Œํฌ์ˆ",
"desc": "์Šค๋งค์‹œยท๋“œ๋กญ์ƒทยทํ‘ธํŠธ์›Œํฌ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๋ฐฐ๋“œ๋ฏผํ„ด ๊ต์‹ค (์šด๋™, ๋ฐฐ๋“œ๋ฏผํ„ด)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 12,
"title": "10K ๋Ÿฌ๋‹ ํฌ๋ฃจ ๋ ˆ์ด์Šค",
"desc": "๋„์‹ฌ 10km ๋‹ฌ๋ฆฌ๊ธฐ์— ํ•จ๊ป˜ ๋„์ „ํ•˜๋ฉฐ ๊ธฐ๋ก ํ–ฅ์ƒ์„ ๋ชฉํ‘œ (์šด๋™, ๋Ÿฌ๋‹)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
# ========= 13~20: ์—ฌํ–‰ (๊ตญ๋‚ด์—ฌํ–‰, ํ•ด์™ธ์—ฌํ–‰, ๋ฐฑํŒจํ‚น, ์บ ํ•‘, ๋„์‹œ์—ฌํ–‰, ๋ง›์ง‘ํƒ๋ฐฉ, ๋ฌธํ™”ํƒ๋ฐฉ, ํž๋ง์—ฌํ–‰) =========
{
"item_id": 13,
"title": "๋ถ€์‚ฐ ํ•ด์•ˆ ๋กœ๋“œํŠธ๋ฆฝ",
"desc": "์ฐจ๋กœ ๋ถ€์‚ฐ ํ•ด์•ˆ ๋„๋กœ๋ฅผ ๋‹ฌ๋ฆฌ๋ฉฐ ํ•ด์‚ฐ๋ฌผ๊ณผ ํ•ด๋ณ€ ํ’๊ฒฝ ๋งŒ๋ฝ (์—ฌํ–‰, ๊ตญ๋‚ด์—ฌํ–‰)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 14,
"title": "๋ฏธ๊ตญ ์„œ๋ถ€ ๋ฐฐ๋‚ญํˆฌ์–ด",
"desc": "LAยท์ƒŒํ”„๋ž€์‹œ์Šค์ฝ”ยท๋ผ์Šค๋ฒ ์ด๊ฑฐ์Šค ๋“ฑ ๋ฏธ๊ตญ ์„œ๋ถ€ ๋„์‹œ์— ๋– ๋‚˜๋Š” ์ž์œ ์—ฌํ–‰ (์—ฌํ–‰, ํ•ด์™ธ์—ฌํ–‰)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 15,
"title": "์„ค์•…์‚ฐ ๋ฐฑํŒจํ‚น ํŠธ๋ ˆํ‚น",
"desc": "์„ค์•…์‚ฐ ๊ตญ๋ฆฝ๊ณต์›์—์„œ ๋ฐฐ๋‚ญ ์•ผ์˜ํ•˜๋ฉฐ ์‚ฐ์„ธ์™€ ๊ณ„๊ณก์„ ์ฒดํ—˜ (์—ฌํ–‰, ๋ฐฑํŒจํ‚น)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 16,
"title": "๋ชจ๋‹ฅ๋ถˆ ์บ ํ•‘ ๋‚˜์ดํŠธ",
"desc": "ํ…ํŠธ ํ”ผ์นญ๊ณผ ๋ชจ๋‹ฅ๋ถˆ ์š”๋ฆฌ๋กœ ์บ ํ•‘ ๋ฌธํ™”๋ฅผ ๋А๋ผ๋Š” ํ•˜๋ฃป๋ฐค (์—ฌํ–‰, ์บ ํ•‘)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 17,
"title": "ํ™์ฝฉ ์‹œํ‹ฐ ๊ณจ๋ชฉํƒ๋ฐฉ",
"desc": "ํ™์ฝฉ ์†Œํ˜ธยท๋ชฝ์ฝ• ๋“ฑ ๊ณจ๋ชฉ ์‹œ์žฅ๊ณผ ๊ธธ๊ฑฐ๋ฆฌ ์Œ์‹์„ ์ฆ๊ธฐ๋Š” ๋„์‹œ์—ฌํ–‰ (์—ฌํ–‰, ๋„์‹œ์—ฌํ–‰)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 18,
"title": "์ „๊ตญ ๋ง›์ง‘ ๋กœ๋“œ์‡ผ",
"desc": "๋ธ”๋กœ๊ทธยทSNS ์ถ”์ฒœ ๋ง›์ง‘์„ ์ง์ ‘ ์ฐพ์•„๋‹ค๋‹ˆ๋ฉฐ ์‹๋„๋ฝ์„ ์ฆ๊ธฐ๋Š” ํˆฌ์–ด (์—ฌํ–‰, ๋ง›์ง‘ํƒ๋ฐฉ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 19,
"title": "๊ฒฝ์ฃผ ์—ญ์‚ฌ ๋ฌธํ™”ํƒ๋ฐฉ",
"desc": "์‹ ๋ผ์‹œ๋Œ€ ์œ ์ ยท๋ฐ•๋ฌผ๊ด€ยท์ „ํ†ต ๊ณต์—ฐ์„ ๋‘˜๋Ÿฌ๋ณด๋ฉฐ ๋ฌธํ™”์œ ์‚ฐ์„ ํ•™์Šต (์—ฌํ–‰, ๋ฌธํ™”ํƒ๋ฐฉ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 20,
"title": "์ง€์ค‘ํ•ด ์š”๊ฐ€ ํž๋ง ํˆฌ์–ด",
"desc": "์ง€์ค‘ํ•ด ์—ฐ์•ˆ ์†Œ๋„์‹œ์—์„œ ์š”๊ฐ€ยท๋ช…์ƒ์œผ๋กœ ๋ชธ๊ณผ ๋งˆ์Œ์„ ์žฌ์ถฉ์ „ (์—ฌํ–‰, ํž๋ง์—ฌํ–‰)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
# ========= 21~30: ๋…์„œ (์†Œ์„ค, ์‹œ, ์—์„ธ์ด, ์ž๊ธฐ๊ณ„๋ฐœ, ์ธ๋ฌธ, ์—ญ์‚ฌ, ๊ณผํ•™, ๊ฒฝ์ œ/๊ฒฝ์˜, ์ฒ ํ•™, ์˜ˆ์ˆ ) =========
{
"item_id": 21,
"title": "์ด๋ฌธ์—ด '์šฐ๋ฆฌ๋“ค์˜ ์ผ๊ทธ๋Ÿฌ์ง„ ์˜์›…' ๋…์„œํ† ๋ก ",
"desc": "ํ•œ๊ตญ ํ˜„๋Œ€์†Œ์„ค์˜ ํ•™๊ต ํญ๋ ฅยท๊ถŒ๋ ฅ ๊ด€๊ณ„๋ฅผ ํ† ๋ก ํ•˜๋ฉฐ ์ƒ๊ฐ ํ™•์žฅ (๋…์„œ, ์†Œ์„ค)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 22,
"title": "๊น€์†Œ์›” ์‹œ ๋‚ญ๋… ์‚ด๋กฑ",
"desc": "'์ง„๋‹ฌ๋ž˜๊ฝƒ' ๋“ฑ ํ•œ๊ตญ์  ์ •์„œ๊ฐ€ ๊นƒ๋“  ์‹œ๋ฅผ ๋‚ญ์†กํ•˜๊ณ  ๊ฐ์ƒ์„ ๊ต๋ฅ˜ (๋…์„œ, ์‹œ)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 23,
"title": "๊ณต์ง€์˜ '์ฆ๊ฑฐ์šด ๋‚˜์˜ ์ง‘' ์—์„ธ์ด ํ†ก",
"desc": "๊ฐ€์กฑ๊ณผ ์ผ์ƒ ์ด์•ผ๊ธฐ๋ฅผ ๋‹ด์€ ์—์„ธ์ด๋ฅผ ํ•จ๊ป˜ ์ฝ๊ณ  ๊ณต๊ฐ (๋…์„œ, ์—์„ธ์ด)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 24,
"title": "ํ•˜์ด ํผํฌ๋จผ์Šค ์Šต๊ด€ ๋งŒ๋“ค๊ธฐ",
"desc": "๋ธŒ๋ Œ๋“  ๋ฒ„์ฒ˜๋“œ ๋“ฑ ์ž๊ธฐ๊ณ„๋ฐœ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•„์นจ ๋ฃจํ‹ด์„ ์‹ค์ฒœ (๋…์„œ, ์ž๊ธฐ๊ณ„๋ฐœ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 25,
"title": "์žฅํ•˜์„ '์˜จ๋„๊ณ„์˜ ์ฒ ํ•™' ์ธ๋ฌธ ์Šคํ„ฐ๋””",
"desc": "์˜จ๋„ยท์ธก์ •์˜ ์ฒ ํ•™์  ์˜๋ฏธ๋ฅผ ๋‹ค๋ฃฌ ์ฑ…์„ ํ†ตํ•ด ์‚ฌ๊ณ  ํ™•์žฅ (๋…์„œ, ์ธ๋ฌธ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 26,
"title": "์œ ํ™์ค€ '๋‚˜์˜ ๋ฌธํ™”์œ ์‚ฐ๋‹ต์‚ฌ๊ธฐ' ์—ญ์‚ฌ ๋…ํ•ด",
"desc": "ํ•œ๊ตญ ๋ฌธํ™”์œ ์‚ฐ ๋‹ต์‚ฌ๊ธฐ๋ฅผ ์ฝ๊ณ  ํ˜„์žฅ ๋‹ต์‚ฌ ์š•๊ตฌ๋ฅผ ๋†’์ด๋Š” ํ† ๋ก  (๋…์„œ, ์—ญ์‚ฌ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 27,
"title": "๋ฆฌ์ฒ˜๋“œ ๋„ํ‚จ์Šค '์ด๊ธฐ์  ์œ ์ „์ž' ๊ณผํ•™ ์„ธ์…˜",
"desc": "์œ ์ „ํ•™ ์ด๋ก ์„ ๋Œ€์ค‘์ ์œผ๋กœ ํ’€์–ด๋‚ธ ๋„์„œ๋ฅผ ํ•จ๊ป˜ ์ฝ๊ณ  ํ† ๋ก  (๋…์„œ, ๊ณผํ•™)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 28,
"title": "์ง ์ฝœ๋ฆฐ์Šค '์ข‹์€ ๊ธฐ์—…์„ ๋„˜์–ด ์œ„๋Œ€ํ•œ ๊ธฐ์—…์œผ๋กœ' ์„ธ๋ฏธ๋‚˜",
"desc": "๊ธฐ์—… ์„ฑ๊ณต ์‚ฌ๋ก€๋ฅผ ๋ถ„์„ํ•˜๋ฉฐ ๊ฒฝ์ œยท๊ฒฝ์˜ ํ†ต์ฐฐ์„ ์–ป๋Š” ๊ณผ์ • (๋…์„œ, ๊ฒฝ์ œ/๊ฒฝ์˜)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 29,
"title": "์žฅ์ž '์†Œ์š”์œ ' ์ฒ ํ•™ ์‚ด๋กฑ",
"desc": "๋„๊ฐ€ ์‚ฌ์ƒ์„ ๋‹ด์€ ์žฅ์ž์˜ ๊ธ€์„ ์ฝ๊ณ  ์ž์œ ๋กœ์šด ์‚ถ์˜ ๊ฐ€์น˜ ๋…ผ์˜ (๋…์„œ, ์ฒ ํ•™)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 30,
"title": "์—๋“œ๊ฐ€ ๋“œ๊ฐ€ '๋ฐœ๋ ˆ ์ˆ˜์—…' ์˜ˆ์ˆ ์ฑ… ํ† ํฌ",
"desc": "์ธ์ƒ์ฃผ์˜ ํ™”๊ฐ€ ๋“œ๊ฐ€์˜ ๋ฐœ๋ ˆ ์‹œ๋ฆฌ์ฆˆ์™€ ์˜ˆ์ˆ ์„œ๋ฅผ ๊ฐ™์ด ํƒ๋… (๋…์„œ, ์˜ˆ์ˆ )",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
# ========= 31~40: ์˜ํ™” (๋กœ๋งจ์Šค, ์ฝ”๋ฏธ๋””, ์•ก์…˜, ์Šค๋ฆด๋Ÿฌ, ๊ณตํฌ, SF, ํŒํƒ€์ง€, ๋“œ๋ผ๋งˆ, ์• ๋‹ˆ๋ฉ”์ด์…˜, ๋‹คํ๋ฉ˜ํ„ฐ๋ฆฌ) =========
{
"item_id": 31,
"title": "'์‹œ๊ฐ„ ์—ฌํ–‰์ž์˜ ์•„๋‚ด' ๋กœ๋งจ์Šค ์Šคํฌ๋ฆฌ๋‹",
"desc": "์‹œ๊ฐ„์—ฌํ–‰์„ ์†Œ์žฌ๋กœ ํ•œ ์‚ฌ๋ž‘ ์ด์•ผ๊ธฐ๋ฅผ ํ•จ๊ป˜ ๋ณด๊ณ  ์šธ๊ณ  ์›ƒ๋Š” ์ž๋ฆฌ (์˜ํ™”, ๋กœ๋งจ์Šค)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 32,
"title": "์ฝ”๋ฏธ๋”” '์Šˆํผ๋ฐฐ๋“œ' ์›ƒ์Œ ํŒŒํ‹ฐ",
"desc": "'์Šˆํผ๋ฐฐ๋“œ' ์‹œ๋ฆฌ์ฆˆ๋ฅผ ๊ฐ์ƒํ•˜๋ฉฐ ์œ ๋จธ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๋– ๋“ค์ฉํ•œ ์›ƒ์Œ์„ ๊ณต์œ  (์˜ํ™”, ์ฝ”๋ฏธ๋””)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 33,
"title": "'ํ‚น์Šค๋งจ' ์•ก์…˜์”ฌ ๊ด€์ „",
"desc": "'ํ‚น์Šค๋งจ' ์‹œ๋ฆฌ์ฆˆ์˜ ์•ก์…˜ ์—ฐ์ถœยท์ŠคํŒŒ์ด ์ฝ”๋“œ๋ฅผ ์งš์–ด๋ณด๋Š” ์ƒ์˜ํšŒ (์˜ํ™”, ์•ก์…˜)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 34,
"title": "'์„œ์ŠคํŽ™ํŠธ' ์Šค๋ฆด๋Ÿฌ ๋ฏธ์Šคํ„ฐ๋ฆฌ",
"desc": "๊ธด์žฅ๊ฐ ๋„˜์น˜๋Š” ํ•œ๊ตญ ์Šค๋ฆด๋Ÿฌ ์˜ํ™”๋ฅผ ํ•จ๊ป˜ ๊ฐ์ƒํ•˜๊ณ  ๋ฐ˜์ „ ์š”์†Œ ํ•ด์„ (์˜ํ™”, ์Šค๋ฆด๋Ÿฌ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 35,
"title": "'์—์ผ๋ฆฌ์–ธ' ๊ณตํฌ SF ๋ฐค์ƒ˜",
"desc": "'์—์ผ๋ฆฌ์–ธ' ์‹œ๋ฆฌ์ฆˆ๋ฅผ ๋ชฐ์•„๋ณด๋ฉฐ ์™ธ๊ณ„ ์ƒ๋ช…์ฒด ๊ณตํฌ์™€ SF ์„ค์ •์„ ํ† ๋ก  (์˜ํ™”, ๊ณตํฌ)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 36,
"title": "'๊ทธ๋ž˜๋น„ํ‹ฐ' SF ํ† ํฌ",
"desc": "์šฐ์ฃผ ๊ณต๊ฐ„ ์กฐ๋‚œ ์Šคํ† ๋ฆฌ๋ฅผ ๊ทธ๋ฆฐ '๊ทธ๋ž˜๋น„ํ‹ฐ'์˜ ๊ณผํ•™ยท์—ฐ์ถœ์„ ๋ถ„์„ (์˜ํ™”, SF)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 37,
"title": "'ํ•ด๋ฆฌ ํฌํ„ฐ' ํŒํƒ€์ง€ ์•ค๋”ฉ",
"desc": "ํ˜ธ๊ทธ์™€ํŠธ ๋งˆ๋ฒ• ์„ธ๊ณ„๊ด€์„ ์—ฐ์† ์ƒ์˜ํ•˜๊ณ  ํŒฌ์‹ฌ์„ ๋‚˜๋ˆ„๋Š” ์ŠคํŒŸ (์˜ํ™”, ํŒํƒ€์ง€)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 38,
"title": "'์ธ์ƒ์€ ์•„๋ฆ„๋‹ค์›Œ' ๋“œ๋ผ๋งˆ ๊ฐ๋™",
"desc": "์ „์Ÿ ์† ๊ฐ€์กฑ์‚ฌ๋ž‘์„ ๊ทธ๋ฆฐ ์ดํƒˆ๋ฆฌ์•„ ๋ช…์ž‘์œผ๋กœ ํฌ๋ง ๋ฉ”์‹œ์ง€ ๋‚˜๋ˆ” (์˜ํ™”, ๋“œ๋ผ๋งˆ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 39,
"title": "'๋„ˆ์˜ ์ด๋ฆ„์€' ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ŠคํŽ˜์…œ",
"desc": "์‹ ์นด์ด ๋งˆ์ฝ”ํ†  ๊ฐ๋…์˜ ๋น›๋‚˜๋Š” ์ž‘ํ™”ยท์ฒญ์ถ˜ ํŒํƒ€์ง€๋ฅผ ๊ฐ์ƒ (์˜ํ™”, ์• ๋‹ˆ๋ฉ”์ด์…˜)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 40,
"title": "'๋งˆ์ดํด ๋ฌด์–ด' ๋‹คํ ํฌ๋Ÿผ",
"desc": "'ํ™”์”จ 9/11' ๋“ฑ ์‚ฌํšŒยท์ •์น˜์  ๋ฉ”์‹œ์ง€๊ฐ€ ๋‹ด๊ธด ๋‹คํ๋ฅผ ๋ณด๊ณ  ํ† ๋ก  (์˜ํ™”, ๋‹คํ๋ฉ˜ํ„ฐ๋ฆฌ)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
# ========= 41~50: ๊ฒŒ์ž„ (RPG, FPS, ์•ก์…˜, ์ „๋žต, ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์Šคํฌ์ธ , ํผ์ฆ, ์Œ์•…/๋ฆฌ๋“ฌ, ์นด๋“œ, MMORPG) =========
{
"item_id": 41,
"title": "'์ ค๋‹ค์˜ ์ „์„ค: ์•ผ์ƒ์˜ ์ˆจ๊ฒฐ' RPG ํƒํ—˜",
"desc": "์˜คํ”ˆ์›”๋“œ ๋ช…์ž‘ '์ ค๋‹ค' ์‹œ๋ฆฌ์ฆˆ๋ฅผ ํƒํ—˜ํ•˜๋ฉฐ ํผ์ฆยท์ „ํˆฌ ๋ฐฉ์‹์„ ๊ณต์œ  (๊ฒŒ์ž„, RPG)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 42,
"title": "'์ฝœ ์˜ค๋ธŒ ๋“€ํ‹ฐ' FPS ์›Œ์กด ๋ฐฐํ‹€",
"desc": "๋ฐ€๋ฆฌํ„ฐ๋ฆฌ FPS์—์„œ ํŒ€ ๋‹จ์œ„ ์ „์ˆ ์„ ์‹คํ–‰ํ•˜๊ณ  ์Šน๋ฆฌ๋ฅผ ๋…ธ๋ฆฌ๋Š” ๋Œ€์ „ (๊ฒŒ์ž„, FPS)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 43,
"title": "'๊ฐ“ ์˜ค๋ธŒ ์›Œ' ์•ก์…˜ ์•ค ๋ ˆ์ด์ง€",
"desc": "ํฌ๋ ˆํ† ์Šค์˜ ์—ฌ์ •ยท์Šคํ‚ฌ ์ฝค๋ณด๋ฅผ ํŒŒ๊ณ ๋“ค๋ฉฐ ์•ก์…˜๊ฒŒ์ž„์˜ ์žฌ๋ฏธ ์ฒดํ—˜ (๊ฒŒ์ž„, ์•ก์…˜)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 44,
"title": "'๋ฌธ๋ช…6' ์ „๋žต ๋นŒ๋“œ ์„ธ์…˜",
"desc": "ํ„ด์ œ ์ „๋žต '๋ฌธ๋ช…6'์—์„œ ๋ฌธ๋ช…๋ณ„ ํŠน์„ฑ๊ณผ ์Šน๋ฆฌ ์กฐ๊ฑด์„ ๋ถ„์„ (๊ฒŒ์ž„, ์ „๋žต)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 45,
"title": "'ํ”Œ๋ž˜๋‹› ์ฝ”์Šคํ„ฐ' ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ œ์ž‘์†Œ",
"desc": "๋†€์ด๊ณต์› ๊ฒฝ์˜ ๊ฒŒ์ž„์—์„œ ๋†€์ด๊ธฐ๊ตฌ ๋ฐฐ์น˜ยท๊ฒฝ์˜์„ ๋””์ž์ธ (๊ฒŒ์ž„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 46,
"title": "'NBA 2K' ์Šคํฌ์ธ  ๋งค์น˜",
"desc": "๋†๊ตฌ๊ฒŒ์ž„ 'NBA 2K'๋กœ ์˜จ๋ผ์ธยท์˜คํ”„๋ผ์ธ ํ† ๋„ˆ๋จผํŠธ๋ฅผ ๊ฐœ์ตœ (๊ฒŒ์ž„, ์Šคํฌ์ธ )",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 47,
"title": "'ํด๊ฐ€์ด์ฆˆ' ํผ์ฆ ์•ก์…˜ ๋ฐฐํ‹€",
"desc": "๊ท€์—ฝ๊ณ  ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์žฅ์• ๋ฌผ ์ฝ”์Šค๋กœ ๋‹ค์ˆ˜ ์ธ์›์ด ๊ฒฝ์Ÿ (๊ฒŒ์ž„, ํผ์ฆ)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 48,
"title": "'๋น„ํŠธ์„ธ์ด๋ฒ„' ๋ฆฌ๋“ฌ VR ์ฒดํ—˜",
"desc": "VR ๊ธฐ๊ธฐ๋ฅผ ์ฐฉ์šฉํ•ด ๋ฐ•์ž์— ๋งž์ถฐ ๋ธ”๋ก์„ ๋ฒ ๋Š” ๋ฆฌ๋“ฌ ๋Œ€๊ฒฐ (๊ฒŒ์ž„, ์Œ์•…/๋ฆฌ๋“ฌ)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 49,
"title": "'๋งค์ง: ๋” ๊ฐœ๋”๋ง' ์นด๋“œ ๋ฑ์‹คํ—˜",
"desc": "TCG์˜ ์›์กฐ๊ฒฉ์ธ โ€˜๋งค์งโ€™์—์„œ ๋ฑ ๋นŒ๋“œ์™€ ๋Œ€์ „ ์ „๋žต์„ ์—ฐ๊ตฌ (๊ฒŒ์ž„, ์นด๋“œ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 50,
"title": "'์›”๋“œ ์˜ค๋ธŒ ์›Œํฌ๋ž˜ํ”„ํŠธ' MMORPG ๊ธธ๋“œ๋ ˆ์ด๋“œ",
"desc": "์•„์ œ๋กœ์Šค์—์„œ ๊ธธ๋“œ์›์ด ํž˜์„ ํ•ฉ์ณ ๋ ˆ์ด๋“œ๋ฅผ ์ง„ํ–‰ (๊ฒŒ์ž„, MMORPG)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
# ========= 51~60: ๊ณต์˜ˆ (๋œจ๊ฐœ์งˆ, ์ž์ˆ˜, ๋„์ž๊ธฐ, ๊ฐ€์ฃฝ๊ณต์˜ˆ, ๋ชฉ๊ณต์˜ˆ, ๋น„์ฆˆ๊ณต์˜ˆ, ์บ”๋“ค/๋””ํ“จ์ €, ํŽ˜์ดํผํฌ๋ž˜ํ”„ํŠธ, ๋งˆํฌ๋ผ๋ฉ”, ๋ ˆ์ง„์•„ํŠธ) =========
{
"item_id": 51,
"title": "์ฝ”๋ฐ”๋Š˜ ๋œจ๊ฐœ์งˆ ์• ์ฐฉ์ธํ˜• DIY",
"desc": "์ฝ”๋ฐ”๋Š˜ ๊ธฐ๋ฒ•์œผ๋กœ ์ธํ˜•์ด๋‚˜ ์†Œํ’ˆ์„ ๋งŒ๋“œ๋Š” ์ดˆ๊ธ‰์ž ๋Œ€์ƒ ์›Œํฌ์ˆ (๊ณต์˜ˆ, ๋œจ๊ฐœ์งˆ)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 52,
"title": "์ผ๋ณธ ์ž์ˆ˜ '์‚ฌ์‹œ์ฝ”' ๊ต์‹ค",
"desc": "์‚ฌ์‹œ์ฝ” ๊ธฐ๋ฒ•์œผ๋กœ ์•ž์น˜๋งˆยทํ‹ฐ๋งคํŠธ๋ฅผ ์žฅ์‹ํ•˜๋Š” ๋ ˆ์Šจ (๊ณต์˜ˆ, ์ž์ˆ˜)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 53,
"title": "๋„์ž๊ธฐ ํ•ธ๋“œํŽ˜์ธํŒ… ์ฒดํ—˜",
"desc": "๋นš์€ ๋„์ž๊ธฐ์— ์ง์ ‘ ๊ทธ๋ฆผยท๋ฌธ์–‘์„ ๊ทธ๋ ค ์†Œ์„ฑ๊นŒ์ง€ ๊ฒฝํ—˜ (๊ณต์˜ˆ, ๋„์ž๊ธฐ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 54,
"title": "๊ฐ€์ฃฝ ํŒŒ์šฐ์น˜ ์ œ์ž‘ ์ŠคํŠœ๋””์˜ค",
"desc": "๊ฐ€์ฃฝ ์žฌ๋‹จยท๋ฐ”๋А์งˆยท๋งˆ๊ฐ๊นŒ์ง€ ์†Œํ˜• ํŒŒ์šฐ์น˜๋ฅผ ๋งŒ๋“œ๋Š” ์‹ค์Šต (๊ณต์˜ˆ, ๊ฐ€์ฃฝ๊ณต์˜ˆ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 55,
"title": "๋ชฉ๊ณต์˜ˆ ์ˆŸ๊ฐ€๋ฝ ๋งŒ๋“ค๊ธฐ ์›Œํฌ์ˆ",
"desc": "๋‚˜๋ฌด๋ฅผ ๊นŽ๊ณ  ๋‹ค๋“ฌ์–ด ์ฃผ๋ฐฉ์šฉ ์ˆŸ๊ฐ€๋ฝ์„ ๋งŒ๋“œ๋Š” ๊ธฐ์ดˆ ์ฒดํ—˜ (๊ณต์˜ˆ, ๋ชฉ๊ณต์˜ˆ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 56,
"title": "๋น„์ฆˆ๊ณต์˜ˆ ์•ก์„ธ์„œ๋ฆฌ ๋””์ž์ธ",
"desc": "๋น„์ฆˆ ๊ตฌ์Šฌ๋กœ ํŒ”์ฐŒยท๋ชฉ๊ฑธ์ด๋ฅผ ๋งŒ๋“ค๊ณ  ์ƒ‰๊ฐ ํŒจํ„ด์„ ์ตํžˆ๋Š” ํด๋ž˜์Šค (๊ณต์˜ˆ, ๋น„์ฆˆ๊ณต์˜ˆ)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 57,
"title": "์ ค ์บ”๋“ค & ๋””ํ“จ์ € ์•„ํ‹€๋ฆฌ์—",
"desc": "ํˆฌ๋ช… ์ ค ์™์Šค๋กœ ์บ”๋“ค๊ณผ ๋””ํ“จ์ €๋ฅผ ์ฐฝ์ž‘ํ•˜๋ฉฐ ํ–ฅ๊ธฐ๋ฅผ ๋””์ž์ธ (๊ณต์˜ˆ, ์บ”๋“ค/๋””ํ“จ์ €)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 58,
"title": "ํŽ˜์ดํผํฌ๋ž˜ํ”„ํŠธ ๋™๋ฌผ ํ”ผ๊ทœ์–ด",
"desc": "์ข…์ด๋กœ ์ž…์ฒด ๋™๋ฌผ ๋ชจํ˜•์„ ๋งŒ๋“ค๊ณ  ์ฑ„์ƒ‰ยท๋””ํ…Œ์ผ ์ž‘์—… (๊ณต์˜ˆ, ํŽ˜์ดํผํฌ๋ž˜ํ”„ํŠธ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 59,
"title": "๋งˆํฌ๋ผ๋ฉ” ํ•ด๋จน ์˜์ž ๋งŒ๋“ค๊ธฐ",
"desc": "๋งค๋“ญ ๊ธฐ๋ฒ•์„ ์ด์šฉํ•ด ํ•ด๋จน ์˜์žยท์›”ํ–‰์ž‰ ๋“ฑ ์ธํ…Œ๋ฆฌ์–ด ์†Œํ’ˆ ์ œ์ž‘ (๊ณต์˜ˆ, ๋งˆํฌ๋ผ๋ฉ”)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 60,
"title": "๋ ˆ์ง„์•„ํŠธ ํŠธ๋ ˆ์ด ๊ณต๋ฐฉ",
"desc": "๋ ˆ์ง„๊ณผ ์ƒ‰์†Œยท๊ธ€๋ฆฌํ„ฐ๋กœ ์ปต๋ฐ›์นจ์ด๋‚˜ ์ž‘์€ ํŠธ๋ ˆ์ด๋ฅผ ๋งŒ๋“œ๋Š” ์ž‘์—… (๊ณต์˜ˆ, ๋ ˆ์ง„์•„ํŠธ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
# ========== 61~71: ์ถ”๊ฐ€ 11๊ฐœ ์ž์œ  ํ•ญ๋ชฉ (์ž„์˜ ๋ถ„์•ผ) ==========
{
"item_id": 61,
"title": "๋ณด๋“œ๊ฒŒ์ž„ '์นดํƒ„' ์ฑŒ๋ฆฐ์ง€",
"desc": "์ „๋žต ๋ณด๋“œ๊ฒŒ์ž„ '์นดํƒ„' ๋Œ€ํšŒ๋กœ ๋ฌด์—ญยท๊ฐœ์ฒ™ ์ „์ˆ ์„ ๊ฒจ๋ฃจ๋Š” ์ด๋ฒคํŠธ (๊ธฐํƒ€, ๋ณด๋“œ๊ฒŒ์ž„)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 62,
"title": "์ŠคํŽ˜์ธ์–ด ๊ธฐ์ดˆ ํšŒํ™” ๊ต์‹ค",
"desc": "hola! ๊ฐ„๋‹จํ•œ ๋ฌธ์žฅยทํšŒํ™”๋ฅผ ๋ฐฐ์›Œ ์—ฌํ–‰ยท์ผ์ƒ์—์„œ ํ™œ์šฉ (๊ธฐํƒ€, ์–ธ์–ดํ•™์Šต)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 63,
"title": "ํ™ˆ๋ธŒ๋ฃจ์ž‰ ์ปคํ”ผ ์‹ค์Šต",
"desc": "์›๋‘ ๊ณ ๋ฅด๊ธฐ๋ถ€ํ„ฐ ํ•ธ๋“œ๋“œ๋ฆฝยท์—์Šคํ”„๋ ˆ์†Œ ์ถ”์ถœ๊นŒ์ง€ ์ปคํ”ผ ์ œ์ž‘ ์ „๊ณผ์ • ์ฒดํ—˜ (๊ธฐํƒ€, ์š”๋ฆฌ/์Œ๋ฃŒ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 64,
"title": "K-POP ๋Œ„์Šค ์ปค๋ฒ„ ์ŠคํŠœ๋””์˜ค",
"desc": "์ตœ์‹  ์•„์ด๋Œ ์•ˆ๋ฌด๋ฅผ ํ•จ๊ป˜ ์—ฐ์Šตยท์ดฌ์˜ํ•ด๋ณด๋Š” ํผํฌ๋จผ์Šค ํ”„๋กœ์ ํŠธ (๊ธฐํƒ€, ๋Œ„์Šค)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 65,
"title": "ํ”Œ๋ผ์›Œ ๋ ˆ์Šจ & ๊ฝƒ๋‹ค๋ฐœ ๋””์ž์ธ",
"desc": "์ƒํ™”๋ฅผ ํ™œ์šฉํ•ด ๋ถ€์ผ€ยท๊ฝƒ๋‹ค๋ฐœ์„ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๊ต์‹ค (๊ธฐํƒ€, ํ”Œ๋ผ์›Œ)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 66,
"title": "๋“œ๋ก  ํ•ญ๊ณต์ดฌ์˜ ์›Œํฌ์ˆ",
"desc": "๋“œ๋ก  ์กฐ์ข…๋ฒ•ยท์ดฌ์˜ ๊ธฐ๋ฒ•ยท์˜์ƒ ํŽธ์ง‘์„ ๋ฐฐ์šฐ๊ณ  ์‹ค์Šต (๊ธฐํƒ€, ๋“œ๋ก )",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 67,
"title": "๋น„๊ฑด ๋ฒ ์ด์ปค๋ฆฌ ํด๋ž˜์Šค",
"desc": "๋‹ฌ๊ฑ€ยท๋ฒ„ํ„ฐ ์—†์ด ์ฟ ํ‚คยท๋นต์„ ๋งŒ๋“œ๋Š” ๋ ˆ์‹œํ”ผ์™€ ๋…ธํ•˜์šฐ ํ•™์Šต (๊ธฐํƒ€, ์š”๋ฆฌ/๋ฒ ์ดํ‚น)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 68,
"title": "์• ๊ฒฌ ํ–‰๋™๊ต์ • & ํŠธ๋ฆญ ํด๋ž˜์Šค",
"desc": "๋ฐ˜๋ ค๊ฒฌ ๊ธฐ๋ณธ ํ–‰๋™๊ต์ •ยท์‚ฐ์ฑ… ์š”๋ นยท๊ฐ„๋‹จํ•œ ์žฌ์ฃผ๋ฅผ ํ›ˆ๋ จ (๊ธฐํƒ€, ๋ฐ˜๋ ค๋™๋ฌผ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 69,
"title": "์˜ํ™” ์‹œ๋‚˜๋ฆฌ์˜ค ์ž‘๋ฒ• ์›Œํฌ์ˆ",
"desc": "์‹œ๋†‰์‹œ์Šคยท์บ๋ฆญํ„ฐ ๊ตฌ์„ฑ์„ ๋ฐฐ์šฐ๊ณ  ๋‹จํŽธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์จ๋ณด๋Š” ํ™œ๋™ (๊ธฐํƒ€, ๊ธ€์“ฐ๊ธฐ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 70,
"title": "ํ™ˆ์นตํ…Œ์ผ ๋ฏน์†”๋กœ์ง€ ์ด๋ฒคํŠธ",
"desc": "์นตํ…Œ์ผ ์žฌ๋ฃŒยท๋น„์œจ์„ ์ตํ˜€ ์ง‘์—์„œ ๊ฐ„๋‹จํžˆ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ ˆ์‹œํ”ผ ์‹ค์Šต (๊ธฐํƒ€, ์š”๋ฆฌ/์Œ๋ฃŒ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 71,
"title": "์œ ํŠœ๋ธŒ ๋ธŒ์ด๋กœ๊ทธ ํฌ๋ฆฌ์—์ดํŒ…",
"desc": "์˜์ƒ ๊ธฐํšยท์ดฌ์˜ยทํŽธ์ง‘ ๋…ธํ•˜์šฐ๋ฅผ ๋ฐฐ์šฐ๊ณ  ๋ธŒ์ด๋กœ๊ทธ๋ฅผ ์™„์„ฑ (๊ธฐํƒ€, ์˜์ƒ์ฝ˜ํ…์ธ )",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
# ==== (์šด๋™ - 12๊ฐœ ๋Œ€์‘, item_id 73~84) ====================================
{"item_id": 73, "title": "ํฌ๋กœ์Šคํ• ์—ด์ •๋‹จ", "desc": "๊ณ ๊ฐ•๋„ ํฌ๋กœ์Šคํ• ์šด๋™์œผ๋กœ ์ฒด๋ ฅ์„ ๋‹จ๋ จํ•˜๋Š” ์—ด์ •์  ๋ชจ์ž„ (์˜จ๋™, ํ—ฌ์Šค์žฅ)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 74, "title": "๋ช…์ƒ ์š”๊ฐ€ ์„œํด", "desc": "๋ชธ์˜ ์ด์™„๊ณผ ๋งˆ์Œ์˜ ํ‰ํ™”๋ฅผ ํ•จ๊ป˜ ์ถ”๊ตฌํ•˜๋Š” ๋ช…์ƒ ์š”๊ฐ€ ๋ชจ์ž„ (์šด๋™, ์š”๊ฐ€)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 75, "title": "์ฝ”์–ด ํŠธ๋ ˆ์ด๋‹ ํŒธ", "desc": "ํ•„๋ผํ…Œ์Šค๋กœ ์ฝ”์–ด ๊ทผ๋ ฅ๊ณผ ์œ ์—ฐ์„ฑ์„ ํ‚ค์šฐ๋Š” ๊ทธ๋ฃน (์šด๋™, ํ•„๋ผํ…Œ์Šค)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 76, "title": "ํŒŒ๋„ํƒ€๊ธฐ ์›Œํ„ฐํŒ€", "desc": "์ˆ˜์˜๊ณผ ์›Œํ„ฐ ์Šคํฌ์ธ ๋ฅผ ํ•จ๊ป˜ ์ฆ๊ธฐ๋ฉฐ ์ฒด๋ ฅ์„ ํ‚ค์šฐ๋Š” ๋ชจ์ž„ (์šด๋™, ์ˆ˜์˜)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 77, "title": "๋ผ์ผ“ ๋“œ๋ฆผํด๋Ÿฝ", "desc": "ํ…Œ๋‹ˆ์Šค๋ฅผ ๋น„๋กฏํ•œ ๋ผ์ผ“ ์Šคํฌ์ธ ๋ฅผ ๊ฐ™์ด ๋ฐฐ์šฐ๊ณ  ์ฆ๊ธฐ๋Š” ๋™ํ˜ธํšŒ (์šด๋™, ํ…Œ๋‹ˆ์Šค)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 78, "title": "ํ•„๋“œ ๊ณจํ”„ ๋ฆฌ๋”์Šค", "desc": "๊ณจํ”„ ์Šค์œ™ ๊ธฐ์ˆ ๊ณผ ํ•„๋“œ ๋งค๋„ˆ๋ฅผ ํ•จ๊ป˜ ์ตํžˆ๋Š” ๋ผ์šด๋”ฉ ํŒ€ (์šด๋™, ๊ณจํ”„)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 79, "title": "์Šฌ๋ง ํ…€๋ธ”๋Ÿฌ์ฆˆ", "desc": "์•”๋ฒฝ๋“ฑ๋ฐ˜๊ณผ ์Šฌ๋ง ํŠธ๋ ˆ์ด๋‹์œผ๋กœ ์ƒ‰๋‹ค๋ฅธ ์šด๋™์„ ์ฒดํ—˜ํ•˜๋Š” ๊ทธ๋ฃน (์šด๋™, ํด๋ผ์ด๋ฐ)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 80, "title": "์Šคํฌ์ธ  ๊ณจ๋“ ๋ฆฌ๊ทธ", "desc": "์ฃผ์ค‘ยท์ฃผ๋ง์— ์ถ•๊ตฌ ๊ฒฝ๊ธฐ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์—ฌ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ (์šด๋™, ์ถ•๊ตฌ)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 81, "title": "ํ•˜ํ”„์ฝ”ํŠธ ์Šˆํ„ฐ์Šค", "desc": "๋†๊ตฌ ์ฝ”ํŠธ์—์„œ ํ•จ๊ป˜ ๋›ฐ๊ณ  ์‹ค๋ ฅ์„ ๋ฐฐ์–‘ํ•˜๋Š” ํŒ€ (์šด๋™, ๋†๊ตฌ)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 82, "title": "์ŠคํŠธ๋ผ์ดํฌ ๋Ÿฌ๋ฒ„์Šค", "desc": "๋ณผ๋ง ์ ์ˆ˜๋ฅผ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด ํ•จ๊ป˜ ์—ฐ๊ตฌํ•˜๊ณ  ์ฆ๊ธฐ๋Š” ๋™์•„๋ฆฌ (์šด๋™, ๋ณผ๋ง)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 83, "title": "์Šค๋งค์‹ฑ ๋ฐฐ๋“œ๋ฏผํ„ด", "desc": "๋ฐฐ๋“œ๋ฏผํ„ด ์Šค๋งค์‹œ ๊ธฐ์ˆ ๊ณผ ๊ฒฝ๊ธฐ๋ฅผ ํ•จ๊ป˜ ์—ฐ์Šตํ•˜๋Š” ํ•™์Šต ๋ชจ์ž„ (์šด๋™, ๋ฐฐ๋“œ๋ฏผํ„ด)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 84, "title": "๋‚˜์ดํŠธ ๋Ÿฌ๋„ˆ์Šค", "desc": "์•ผ๊ฐ„ ๋Ÿฌ๋‹์„ ํ†ตํ•ด ๋„์‹œ๋ฅผ ๋ˆ„๋น„๋ฉฐ ์ฒด๋ ฅ์„ ๊ธฐ๋ฅด๋Š” ํฌ๋ฃจ (์šด๋™, ๋Ÿฌ๋‹)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
# ==== (์—ฌํ–‰ - 8๊ฐœ ๋Œ€์‘, item_id 85~92) =====================================
{"item_id": 85, "title": "์˜ค์ง€์—ฌํ–‰ ํƒํ—˜๋Œ€", "desc": "๊ตญ๋‚ด ์ˆจ๊ฒจ์ง„ ์˜ค์ง€๋ฅผ ์ฐพ์•„ ๋– ๋‚˜๋ฉฐ ๋ชจํ—˜์‹ฌ์„ ๊ธฐ๋ฅด๋Š” ๋ชจ์ž„ (์—ฌํ–‰, ๊ตญ๋‚ด์—ฌํ–‰)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 86, "title": "๊ธ€๋กœ๋ฒŒ ๋ฐฑํŒฉ ํŠธ๋ฆฝ", "desc": "ํ•ด์™ธ ๋ฐฐ๋‚ญ์—ฌํ–‰ ๋ฃจํŠธ๋ฅผ ํ•จ๊ป˜ ๊ณ„ํšํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋™ํ˜ธํšŒ (์—ฌํ–‰, ํ•ด์™ธ์—ฌํ–‰)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 87, "title": "ํ•„๋“œ ์บ ํ•‘ ์–ด๋“œ๋ฒค์ฒ˜", "desc": "๋ฐฑํŒจํ‚น๊ณผ ์บ ํ•‘์„ ๊ฒฐํ•ฉํ•ด ์ž์—ฐ์—์„œ ์‚ด์•„๋ณด๋Š” ์ฒดํ—˜ ๋ชจ์ž„ (์—ฌํ–‰, ๋ฐฑํŒจํ‚น)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 88, "title": "ํŒจ๋ฐ€๋ฆฌ ์บ ํ•‘ ์žผ", "desc": "๊ฐ€์กฑ ๋‹จ์œ„๋กœ ์บ ํ•‘ํ•˜๋ฉฐ ์ž์—ฐ ์† ์†Œํ†ต์„ ์ฆ๊ธฐ๋Š” ๊ทธ๋ฃน (์—ฌํ–‰, ์บ ํ•‘)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 89, "title": "๊ณจ๋ชฉ๊ธธ ํˆฌ์–ด ํด๋Ÿฝ", "desc": "๋„์‹œ ๊ณจ๋ชฉ๊ธธ๊ณผ ์—ญ์‚ฌ์  ๊ณต๊ฐ„์„ ํ•จ๊ป˜ ํƒ๋ฐฉํ•˜๋Š” ์—ฌํ–‰ ์„œํด (์—ฌํ–‰, ๋„์‹œ์—ฌํ–‰)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 90, "title": "๋ฏธ์‹ํ—Œํ„ฐ ํฌ๋ฃจ", "desc": "์ „๊ตญ ๋ง›์ง‘์„ ์กฐ์‚ฌํ•˜๊ณ  ์ง์ ‘ ์‹œ์‹ ํˆฌ์–ด๋ฅผ ๋– ๋‚˜๋Š” ๋ชจ์ž„ (์—ฌํ–‰, ๋ง›์ง‘ํƒ๋ฐฉ)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 91, "title": "๋ฌธํ™”์œ ์‚ฐ ํƒ๋ฐฉ๊ธฐํš์‚ฌ", "desc": "์ „ํ†ต ๋ฌธํ™”์œ ์‚ฐ๊ณผ ์ถ•์ œ๋ฅผ ๊ธฐํšยทํƒ๋ฐฉํ•˜๋Š” ์—ฌํ–‰ ๋™์•„๋ฆฌ (์—ฌํ–‰, ๋ฌธํ™”ํƒ๋ฐฉ)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 92, "title": "์ˆฒ์† ํž๋ง ํŠธ๋ž˜๋ธ”", "desc": "์ž์—ฐ ์†์—์„œ ์น˜์œ ์™€ ์žฌ์ถฉ์ „์„ ๋ชฉ์ ์œผ๋กœ ์—ฌํ–‰ํ•˜๋Š” ๊ทธ๋ฃน (์—ฌํ–‰, ํž๋ง์—ฌํ–‰)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
# ==== (๋…์„œ - 10๊ฐœ ๋Œ€์‘, item_id 93~102) ==================================
{"item_id": 93, "title": "๋ฌธํ•™ ๋ฆฌ๋ทฐ ์„œํด", "desc": "์†Œ์„ค๊ณผ ๋ฌธํ•™์ž‘ํ’ˆ์„ ์ฝ๊ณ  ๋น„ํ‰ํ•˜๋Š” ์ฑ…๋™์•„๋ฆฌ (๋…์„œ, ์†Œ์„ค)", "personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 94, "title": "์‹œ์ธ ๊ฟˆ๋‚˜๋ฌด ๋ชจ์ž„", "desc": "์„œ๋กœ์˜ ์‹œ๋ฅผ ๋‚ญ๋…ํ•˜๊ณ  ๊ณต์œ ํ•˜๋Š” ์ฐฝ์ž‘ ์‹œํด๋Ÿฝ (๋…์„œ, ์‹œ)", "personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 95, "title": "๋งˆ์Œ๊ธ€์“ฐ๊ธฐ ์—์„ธ์ดํšŒ", "desc": "์—์„ธ์ด๋กœ ์ผ์ƒ๊ณผ ๊ฐ์ •์„ ํ‘œํ˜„ํ•˜๋ฉฐ ์†Œํ†ตํ•˜๋Š” ๊ธ€๋ชจ์ž„ (๋…์„œ, ์—์„ธ์ด)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 96, "title": "์‹ค์ฒœํ˜• ์ž๊ธฐ๊ณ„๋ฐœ๋‹จ", "desc": "์ž๊ธฐ๊ณ„๋ฐœ์„œ๋ฅผ ์ฝ๊ณ  ์ฆ‰์‹œ ์‹ค์ฒœ ๊ณ„ํš์„ ์„ธ์šฐ๋Š” ์Šคํ„ฐ๋”” (๋…์„œ, ์ž๊ธฐ๊ณ„๋ฐœ)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 97, "title": "๊นŠ์ด์ฝ๊ธฐ ์ธ๋ฌธ์†Œ์‚ฌ์ด์–ดํ‹ฐ", "desc": "์ธ๋ฌธํ•™ ํ…์ŠคํŠธ๋ฅผ ์‹ฌ์ธต ํ† ๋ก ํ•˜๋ฉฐ ์‚ฌ๊ณ ๋ ฅ์„ ํ™•์žฅํ•˜๋Š” ๊ทธ๋ฃน (๋…์„œ, ์ธ๋ฌธ)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 98, "title": "์—ญ์‚ฌ๊ณต๋ถ€ ๋””์Šค์ปค์…˜", "desc": "์‹œ๋Œ€๋ณ„ ์—ญ์‚ฌ์  ์‚ฌ๊ฑด์„ ๊ณต๋ถ€ํ•˜๊ณ  ์ž์œ ๋กญ๊ฒŒ ๋…ผ์˜ํ•˜๋Š” ๋ชจ์ž„ (๋…์„œ, ์—ญ์‚ฌ)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 99, "title": "๊ณผํ•™ํƒ๊ตฌ ๋ถํด๋Ÿฝ", "desc": "์ตœ์‹  ๊ณผํ•™ ์„œ์ ์„ ์ค‘์‹ฌ์œผ๋กœ ์•„์ด๋””์–ด๋ฅผ ๋‚˜๋ˆ„๋Š” ๋…์„œํšŒ (๋…์„œ, ๊ณผํ•™)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 100, "title": "๊ฒฝ์˜์ „๋žต ๋…ํ•ดํŒ€", "desc": "๊ฒฝ์ œ/๊ฒฝ์˜ ๊ด€๋ จ ์„œ์ ์„ ํ•จ๊ป˜ ๋ถ„์„ํ•˜๊ณ  ์‚ฌ๋ก€๋ฅผ ์—ฐ๊ตฌํ•˜๋Š” ๊ทธ๋ฃน (๋…์„œ, ๊ฒฝ์ œ/๊ฒฝ์˜)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 101, "title": "์ฒ ํ•™๊ฐ•๋… ์„ธ๋ฏธ๋‚˜", "desc": "์ฒ ํ•™ ์›์ „์„ ์ฝ๊ณ  ํ•ต์‹ฌ ๊ฐœ๋…์„ ํ† ๋ก ํ•˜๋Š” ํ•™์ˆ  ๋ชจ์ž„ (๋…์„œ, ์ฒ ํ•™)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 102, "title": "์•„ํŠธ๋ถ ์ธ์‚ฌ์ดํŠธํšŒ", "desc": "์˜ˆ์ˆ  ๊ด€๋ จ ์„œ์ ์„ ํ†ตํ•ด ์˜ˆ์ˆ ์‚ฌ์™€ ์ž‘ํ’ˆ ์„ธ๊ณ„๋ฅผ ํƒ๊ตฌํ•˜๋Š” ๋ชจ์ž„ (๋…์„œ, ์˜ˆ์ˆ )", "personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
# ==== (์˜ํ™” - 10๊ฐœ ๋Œ€์‘, item_id 103~112) =================================
{"item_id": 103, "title": "๋‚ญ๋งŒ ์˜ํ™” ์• ํ˜ธ๊ฐ€๋“ค", "desc": "๊ฐ์„ฑ์ ์ธ ๋กœ๋งจ์Šค ์˜ํ™”๋ฅผ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๋ชจ์ž„ (์˜ํ™”, ๋กœ๋งจ์Šค)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 104, "title": "ํญ์†Œ ์ฝ”๋ฏธ๋”” ํŽ˜์Šคํ‹ฐ๋ฒŒ", "desc": "์›ƒ์Œ์„ ์ฃผ์ œ๋กœ ์ฝ”๋ฏธ๋”” ์˜ํ™”๋ฅผ ํ•จ๊ป˜ ๋ณด๋Š” ์†Œ๋ชจ์ž„ (์˜ํ™”, ์ฝ”๋ฏธ๋””)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 105, "title": "์•ก์…˜๋งค๋‹ˆ์•„์ฆˆ", "desc": "๋ฐ•์ง„๊ฐ ๋„˜์น˜๋Š” ์•ก์…˜ ์˜ํ™”์˜ ๋งค๋ ฅ์„ ํ•ด๋ถ€ํ•˜๋Š” ๊ทธ๋ฃน (์˜ํ™”, ์•ก์…˜)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 106, "title": "์„œ์ŠคํŽœ์Šค ์‹œ๋„ค๋งˆ๋ถ„์„๋‹จ", "desc": "์Šค๋ฆด๋Ÿฌ ์˜ํ™” ์† ๊ธด์žฅ๊ฐ๊ณผ ์Šคํ† ๋ฆฌ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ชจ์ž„ (์˜ํ™”, ์Šค๋ฆด๋Ÿฌ)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 107, "title": "ํ˜ธ๋Ÿฌ๋งคํ‹ฑ ์Šคํ„ฐ๋””", "desc": "๊ณตํฌ์˜ํ™”์˜ ๋ถ„์œ„๊ธฐ์™€ ์—ฐ์ถœ์„ ์ง‘์ค‘ ํƒ๊ตฌํ•˜๋Š” ํŒ€ (์˜ํ™”, ๊ณตํฌ)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 108, "title": "SF ์›”๋“œ ๋””์Šค์ปค๋ฒ„๋ฆฌ", "desc": "๊ณต์ƒ๊ณผํ•™ ์˜ํ™”๋ฅผ ๋ณด๊ณ  ๋ฏธ๋ž˜ ๊ธฐ์ˆ ๊ณผ ์„ธ๊ณ„๊ด€์„ ํ† ๋ก ํ•˜๋Š” ๋ชจ์ž„ (์˜ํ™”, SF)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 109, "title": "ํŒํƒ€์ง€ ์ด๋งค์ง€๋„ค์ด์…˜", "desc": "ํ™˜์ƒ์ ์ธ ํŒํƒ€์ง€ ์˜ํ™”๋ฅผ ๊ฐ์ƒํ•˜๋ฉฐ ์•„์ด๋””์–ด๋ฅผ ๊ณต์œ ํ•˜๋Š” ์„œํด (์˜ํ™”, ํŒํƒ€์ง€)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 110, "title": "ํœด๋จผ๋“œ๋ผ๋งˆ ์ธ์‚ฌ์ดํŠธ", "desc": "๊ฐ๋™์ ์ธ ๋“œ๋ผ๋งˆ ์žฅ๋ฅด ์˜ํ™”๋ฅผ ํ•จ๊ป˜ ๋ณด๊ณ  ๊ตํ›ˆ์„ ์ฐพ๋Š” ๋ชจ์ž„ (์˜ํ™”, ๋“œ๋ผ๋งˆ)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 111, "title": "์• ๋‹ˆ ์• ํ˜ธํšŒ", "desc": "๋‹ค์–‘ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์˜ํ™”๋ฅผ ์ •๊ธฐ ์ƒ์˜ํ•˜๋ฉฐ ๊ฐ์ƒํ•˜๋Š” ํŒฌํด๋Ÿฝ (์˜ํ™”, ์• ๋‹ˆ๋ฉ”์ด์…˜)", "personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 112, "title": "๋‹คํ ๋ฆฌ๋ทฐ ํฌ๋Ÿผ", "desc": "๋‹คํ๋ฉ˜ํ„ฐ๋ฆฌ ์˜ํ™”๋ฅผ ๋ณด๊ณ  ์‚ฌํšŒยทํ™˜๊ฒฝ ๋ฌธ์ œ๋ฅผ ๋…ผ์˜ํ•˜๋Š” ๋ชจ์ž„ (์˜ํ™”, ๋‹คํ๋ฉ˜ํ„ฐ๋ฆฌ)", "personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"},
# ==== (๊ฒŒ์ž„ - 10๊ฐœ ๋Œ€์‘, item_id 113~122) =================================
{"item_id": 113, "title": "RPG ๋ชจํ—˜๋‹จ", "desc": "ํŒํƒ€์ง€ ์„ธ๊ณ„์—์„œ ํ•จ๊ป˜ ํŒŒํ‹ฐ๋ฅผ ์ด๋ค„ ๋ชจํ—˜ํ•˜๋Š” RPG ํŒ€ (๊ฒŒ์ž„, RPG)", "personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 114, "title": "FPS ๊ณ ์ธ๋ฌผ ํด๋žœ", "desc": "๊ณ ๋‚œ๋„ ์ŠˆํŒ… ๊ธฐ์ˆ ์„ ์—ฐ์Šตํ•˜๋ฉฐ ๋Œ€ํšŒ์—๋„ ๋‚˜๊ฐ€๋Š” FPS ๋™ํ˜ธํšŒ (๊ฒŒ์ž„, FPS)", "personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 115, "title": "์•ก์…˜์ฝ”์–ด ์ „๋žตํŒ€", "desc": "์•ก์…˜ ๊ฒŒ์ž„์˜ ์ˆจ๊ฒจ์ง„ ํ…Œํฌ๋‹‰๊ณผ ์ฝค๋ณด๋ฅผ ์—ฐ๊ตฌํ•˜๋Š” ๊ทธ๋ฃน (๊ฒŒ์ž„, ์•ก์…˜)", "personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 116, "title": "์ „๋žต๋ชจ๋“œ ์‹œ๋ฎฌํด๋Ÿฝ", "desc": "์ „๋žต ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์žฅ๋ฅด๋ฅผ ์‹ฌ๋„ ์žˆ๊ฒŒ ํ”Œ๋ ˆ์ดยท๋ถ„์„ํ•˜๋Š” ๋™ํ˜ธํšŒ (๊ฒŒ์ž„, ์ „๋žต)", "personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 117, "title": "์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋งˆ๋‹ˆ์•„๋“ค", "desc": "๋„์‹œ๊ฑด์„ค, ๊ฒฝ์˜ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋“ฑ ๋‹ค์–‘ํ•œ ์‹œ๋ฎฌ ๊ฒŒ์ž„์„ ์ฆ๊ธฐ๋Š” ๋ชจ์ž„ (๊ฒŒ์ž„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜)", "personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•, ๊ฐ์ •ํ˜•"},
{"item_id": 118, "title": "์Šคํฌ์ธ ๊ฒŒ์ด๋จธ ์ฑŒ๋ฆฐ์ง€", "desc": "์ถ•๊ตฌยท๋†๊ตฌ ๋“ฑ ์Šคํฌ์ธ ๊ฒŒ์ž„ ๋ฆฌ๊ทธ๋ฅผ ์šด์˜ํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ (๊ฒŒ์ž„, ์Šคํฌ์ธ )", "personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 119, "title": "ํผ์ฆ ๋ธŒ๋ ˆ์ธํ™€๋ฆญ", "desc": "ํผ์ฆยท๋‘๋‡Œ๊ฒŒ์ž„์„ ํ•จ๊ป˜ ํ’€๋ฉฐ ์•„์ด๋””์–ด๋ฅผ ๊ณต์œ ํ•˜๋Š” ํŒ€ (๊ฒŒ์ž„, ํผ์ฆ)", "personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 120, "title": "๋ฆฌ๋“ฌ๊ฒŒ์ž„ ์˜ค์ผ€์ŠคํŠธ๋ผ", "desc": "์Œ์•…/๋ฆฌ๋“ฌ๊ฒŒ์ž„์—์„œ ํ•ฉ์ฃผํ•˜๋Š” ๋А๋‚Œ์œผ๋กœ ํ˜‘๋ ฅ ํ”Œ๋ ˆ์ดํ•˜๋Š” ๋ชจ์ž„ (๊ฒŒ์ž„, ์Œ์•…/๋ฆฌ๋“ฌ)", "personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 121, "title": "์นด๋“œํ”Œ๋ ˆ์ด ๋งค๋‹ˆ์•„", "desc": "ํฌ์ปคยทTCG ๋“ฑ ์นด๋“œ ๊ธฐ๋ฐ˜ ๊ฒŒ์ž„์„ ์‹ฌ๋„ ์žˆ๊ฒŒ ์ฆ๊ธฐ๋Š” ๋™์•„๋ฆฌ (๊ฒŒ์ž„, ์นด๋“œ)", "personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 122, "title": "MMORPG ์—ฐํ•ฉ๊ธธ๋“œ", "desc": "๋Œ€๊ทœ๋ชจ ์˜จ๋ผ์ธ RPG์—์„œ ๊ธธ๋“œ์›๋“ค๊ณผ ํ•จ๊ป˜ ๋„์ „ํ•˜๋Š” ํŒ€ (๊ฒŒ์ž„, MMORPG)", "personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"},
# ==== (๊ณต์˜ˆ - 10๊ฐœ ๋Œ€์‘, item_id 123~132) =================================
{"item_id": 123, "title": "๋‹ˆํŠธ๋””์ž์ธ ์Šคํ„ฐ๋””์˜ค", "desc": "๋œจ๊ฐœ์งˆ๋กœ ํŒจ์…˜ ์†Œํ’ˆ๊ณผ ์˜๋ฅ˜๋ฅผ ์ฐฝ์ž‘ํ•˜๋Š” ์›Œํฌ์ˆ (๊ณต์˜ˆ, ๋œจ๊ฐœ์งˆ)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 124, "title": "์ž์ˆ˜ ๋””ํ…Œ์ผ์—ฐ๊ตฌํšŒ", "desc": "์„ฌ์„ธํ•œ ์ž์ˆ˜ ๊ธฐ๋ฒ•์„ ์—ฐ๊ตฌํ•˜๋ฉฐ ์ž‘ํ’ˆ์„ ์™„์„ฑํ•˜๋Š” ๋ชจ์ž„ (๊ณต์˜ˆ, ์ž์ˆ˜)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 125, "title": "๋„์˜ˆ ๊ณต์˜ˆ๋‹จ", "desc": "๋„์ž๊ธฐ ๊ณต์˜ˆ๋กœ ์‹๊ธฐยท์ธํ…Œ๋ฆฌ์–ด ์†Œํ’ˆ์„ ์ œ์ž‘ํ•ด๋ณด๋Š” ๊ทธ๋ฃน (๊ณต์˜ˆ, ๋„์ž๊ธฐ)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 126, "title": "๊ฐ€์ฃฝ๊ณต์˜ˆ ์Šคํ‚ฌ๋žฉ", "desc": "๊ฐ€์ฃฝ ์žฌ๋‹จ๋ถ€ํ„ฐ ๋ฐ”๋А์งˆ๊นŒ์ง€ ์‹ค์Šตํ•˜๊ณ  ๋””์ž์ธ์„ ๊ณต์œ ํ•˜๋Š” ๋ชจ์ž„ (๊ณต์˜ˆ, ๊ฐ€์ฃฝ๊ณต์˜ˆ)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 127, "title": "๋ชฉ๊ณต ๋งˆ์Šคํ„ฐ์Šค", "desc": "๋ชฉ์žฌ๋ฅผ ํ™œ์šฉํ•ด ๊ฐ€๊ตฌยท์žฅ์‹ํ’ˆ์„ ์ œ์ž‘ํ•˜๋ฉฐ ๊ธฐ์ˆ ์„ ๋ฐฐ์šฐ๋Š” ๋ชจ์ž„ (๊ณต์˜ˆ, ๋ชฉ๊ณต์˜ˆ)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 128, "title": "๋น„์ฆˆ ๋””์ž์ธ ํŒฉํ† ๋ฆฌ", "desc": "๋น„์ฆˆ๊ณต์˜ˆ๋กœ ์•ก์„ธ์„œ๋ฆฌยท์žฅ์‹ ๊ตฌ๋ฅผ ์ฐฝ์ž‘ํ•˜๋Š” ๊ต์‹ค (๊ณต์˜ˆ, ๋น„์ฆˆ๊ณต์˜ˆ)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 129, "title": "์บ”๋“ค/๋””ํ“จ์ € ํฌ๋ฆฌ์—์ดํ‹ฐ๋ธŒ", "desc": "ํ–ฅ์ดˆ์™€ ๋””ํ“จ์ €๋ฅผ ์˜ˆ์ˆ ์ ์œผ๋กœ ํ‘œํ˜„ํ•ด๋ณด๋Š” ์ฐฝ์ž‘ ์ŠคํŠœ๋””์˜ค (๊ณต์˜ˆ, ์บ”๋“ค/๋””ํ“จ์ €)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 130, "title": "ํŽ˜์ดํผ์•„ํŠธ ๋””์ž์ธ๋žฉ", "desc": "์ข…์ด ๊ณต์˜ˆ๋กœ ๋…ํŠนํ•œ ์ž‘ํ’ˆ๊ณผ ๋ฏธ๋‹ˆ์–ด์ฒ˜๋ฅผ ๋งŒ๋“œ๋Š” ์—ฐ๊ตฌํšŒ (๊ณต์˜ˆ, ํŽ˜์ดํผํฌ๋ž˜ํ”„ํŠธ)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 131, "title": "๋งˆํฌ๋ผ๋ฉ” ๊ณต์˜ˆ์‹ค", "desc": "๋งˆํฌ๋ผ๋ฉ” ๋งค๋“ญ ๊ธฐ๋ฒ•์„ ๋‹ค์–‘ํ•˜๊ฒŒ ์‹œ๋„ํ•ด๋ณด๋Š” ์ž‘์—…์‹ค (๊ณต์˜ˆ, ๋งˆํฌ๋ผ๋ฉ”)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
{"item_id": 132, "title": "๋ ˆ์ง„์•„ํŠธ ํฌ๋ฆฌ์—์ดํ„ฐ์ฆˆ", "desc": "๋ ˆ์ง„์„ ํ™œ์šฉํ•ด ์žฅ์‹ํ’ˆยท์†Œํ’ˆ์„ ๋””์ž์ธํ•˜๊ณ  ๊ณต์œ ํ•˜๋Š” ๋ชจ์ž„ (๊ณต์˜ˆ, ๋ ˆ์ง„์•„ํŠธ)", "personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"},
# ===== [133~144] ์šด๋™ (12๊ฐœ)
{
"item_id": 133,
"title": "๋‚˜์ดํ‚ค ํ—ฌ์Šค ํ”ผํŠธ๋‹ˆ์Šค ์ฑŒ๋ฆฐ์ง€",
"desc": "ํ—ฌ์Šค์žฅ์—์„œ ๋‚˜์ดํ‚ค ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ์›จ์ดํŠธ ๋ฐ ์œ ์‚ฐ์†Œ๋ฅผ ๋งˆ์Šคํ„ฐ (์šด๋™, ํ—ฌ์Šค)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 134,
"title": "์•„์‰ฌํƒ•๊ฐ€ ์š”๊ฐ€ ํด๋ž˜์Šค in ๋ฐœ๋ฆฌ",
"desc": "๋ฐœ๋ฆฌ ์ž์—ฐ ์†์—์„œ ๋ช…์ƒยท์•„์‚ฌ๋‚˜ ์š”๊ฐ€๋ฅผ ์‹ฌ๋„ ์žˆ๊ฒŒ ์ฒดํ—˜ (์šด๋™, ์š”๊ฐ€)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 135,
"title": "๋ฆฌํฌ๋จธ ํ•„๋ผํ…Œ์Šค ์ŠคํŠœ๋””์˜ค",
"desc": "๊ธฐ๊ตฌ ํ•„๋ผํ…Œ์Šค๋กœ ์ž์„ธ ๊ต์ •๊ณผ ์ฝ”์–ด ๊ฐ•ํ™”์— ์ง‘์ค‘ (์šด๋™, ํ•„๋ผํ…Œ์Šค)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 136,
"title": "์•„์ฟ ์•„ ์Šค์œ„๋ฐ ํ”„๋กœ์ ํŠธ",
"desc": "์‹ค๋‚ด ์ˆ˜์˜์žฅ์—์„œ ์˜๋ฒ•ยทํ˜ธํก๋ฒ•์„ ์ตํžˆ๊ณ  ์˜คํ”ˆ์›Œํ„ฐ ๋„์ „ (์šด๋™, ์ˆ˜์˜)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 137,
"title": "์œ”๋ธ”๋˜ ํ…Œ๋‹ˆ์Šค ๋ ˆ์Šจ",
"desc": "ํ”„๋กœ ์ฝ”์น˜์™€ ํ•จ๊ป˜ ๋ž ๋ฆฌยท๋ฐœ๋ฆฌ๋ฅผ ์ง‘์ค‘ ํ›ˆ๋ จ, ๋ฏธ๋‹ˆ ๋งค์น˜ ์ง„ํ–‰ (์šด๋™, ํ…Œ๋‹ˆ์Šค)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 138,
"title": "์Šคํฌ๋ฆฐ ๊ณจํ”„ ๋ผ์šด๋”ฉ",
"desc": "ํ•„๋“œ ๋Œ€์‹  ์Šคํฌ๋ฆฐ ๊ณจํ”„๋กœ ์Šค์œ™ ๊ต์ •ํ•˜๊ณ  ํผํŒ… ์‹ค๋ ฅ์„ ํ‚ค์›€ (์šด๋™, ๊ณจํ”„)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 139,
"title": "์‹ค๋‚ด ํด๋ผ์ด๋ฐ ์ฑŒ๋ฆฐ์ง€",
"desc": "์•”๋ฒฝ๋“ฑ๋ฐ˜ ์„ผํ„ฐ์—์„œ ๋‹ค์–‘ํ•œ ์ฝ”์Šค๋ฅผ ๊ณต๋žตํ•˜๋ฉฐ ๊ทผ์ง€๊ตฌ๋ ฅ ํ–ฅ์ƒ (์šด๋™, ํด๋ผ์ด๋ฐ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 140,
"title": "ํ’‹๋ณผ ๋งค์น˜๋ฐ์ด ์ด๋ฒคํŠธ",
"desc": "์ถ•๊ตฌ ํŒฌ๋“ค์ด ๋ชจ์—ฌ ํฌ๋ฉ”์ด์…˜ ์งœ๊ณ  ๋ฏธ๋‹ˆ ๊ฒฝ๊ธฐ๋ฅผ ์ฆ๊ธฐ๋Š” ์ผ์ • (์šด๋™, ์ถ•๊ตฌ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 141,
"title": "NBA ๋†๊ตฌ ์•ก์…˜ํƒ€์ž„",
"desc": "์ฝ”ํŠธ์—์„œ ๋“œ๋ฆฌ๋ธ”ยท์Š›์„ ์—ฐ์Šตํ•˜๊ณ  3:3 ์Šคํฌ๋ฆฌ๋ฏธ์ง€๋ฅผ ์ง„ํ–‰ (์šด๋™, ๋†๊ตฌ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 142,
"title": "๋ฝ๋ณผ๋ง ์ŠคํŠธ๋ผ์ดํฌ ํŒŒํ‹ฐ",
"desc": "๋ณผ๋ง์žฅ์—์„œ ์Œ์•…๊ณผ ํ•จ๊ป˜ ์ŠคํŠธ๋ผ์ดํฌ ํ™•๋ฅ ์„ ๋†’์ด๋Š” ๊ต๋ฅ˜์ „ (์šด๋™, ๋ณผ๋ง)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 143,
"title": "์…”ํ‹€์ฝ• ๋ฐฐ๋“œ๋ฏผํ„ด ๊ต์‹ค",
"desc": "๋ฐฐ๋“œ๋ฏผํ„ด ์Šค๋งค์‹œยทํ‘ธํŠธ์›Œํฌ ์ง‘์ค‘ ์—ฐ์Šต ํ›„ ๋ฏธ๋‹ˆ ํ† ๋„ˆ๋จผํŠธ (์šด๋™, ๋ฐฐ๋“œ๋ฏผํ„ด)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 144,
"title": "ํ•˜ํ”„๋งˆ๋ผํ†ค ๋Ÿฌ๋‹ ๋ ˆ์ด์Šค",
"desc": "๋„์‹ฌ 10kmยท21km ๋ ˆ์ด์Šค์— ๋„์ „ํ•˜๋ฉฐ ๊ธฐ๋ก ํ–ฅ์ƒ์„ ๋ชฉํ‘œ (์šด๋™, ๋Ÿฌ๋‹)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
# ===== [145~152] ์—ฌํ–‰ (8๊ฐœ)
{
"item_id": 145,
"title": "๊ฐ•์›๋„ ๋กœ๋“œํŠธ๋ฆฝ",
"desc": "์ฐจ๋กœ ๊ฐ•์›๋„ ํ•ด์•ˆยท์‚ฐ๊ณจ ๋ช…์†Œ๋ฅผ ๋Œ์•„๋ณด๋ฉฐ ์ž์—ฐ์„ ๋งŒ๋ฝ (์—ฌํ–‰, ๊ตญ๋‚ด์—ฌํ–‰)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 146,
"title": "์œ ๋Ÿฝ ๋ฐฐ๋‚ญ ์ž์œ ์—ฌํ–‰",
"desc": "ํŒŒ๋ฆฌยท๋กœ๋งˆยท๋ฐ”๋ฅด์…€๋กœ๋‚˜๋ฅผ ํฌํ•จํ•ด ์œ ๋Ÿฝ ๋„์‹œ๋“ค์„ ์—ฌํ–‰ (์—ฌํ–‰, ํ•ด์™ธ์—ฌํ–‰)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 147,
"title": "์ง€๋ฆฌ์‚ฐ ๋ฐฑํŒจํ‚น ํŠธ๋ ˆ์ผ",
"desc": "๋ฐฐ๋‚ญ ํ•˜๋‚˜๋กœ ์ง€๋ฆฌ์‚ฐ ๋‘˜๋ ˆ๊ธธ์„ ๊ฑธ์œผ๋ฉฐ ์ž์—ฐ ์† ์•ผ์˜ (์—ฌํ–‰, ๋ฐฑํŒจํ‚น)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 148,
"title": "์บ ํ•‘ ํŒŒ์ด์–ด๋‚˜์ดํŠธ",
"desc": "ํ…ํŠธ ์น˜๊ณ  ๋ชจ๋‹ฅ๋ถˆ์„ ์ฆ๊ธฐ๋ฉฐ ๊ฐ€์กฑยท์นœ๊ตฌ์™€ ์†Œํ†ตํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ (์—ฌํ–‰, ์บ ํ•‘)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 149,
"title": "์„œ์šธ ๊ณจ๋ชฉํˆฌ์–ด",
"desc": "์ต์„ ๋™ยท์„์ง€๋กœ ๋“ฑ ์˜ค๋ž˜๋œ ๊ณจ๋ชฉ๊ธธ ์นดํŽ˜ยท๋ง›์ง‘์„ ํƒ๋ฐฉ (์—ฌํ–‰, ๋„์‹œ์—ฌํ–‰)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 150,
"title": "์ „์ฃผ ํ•œ์˜ฅ๋งˆ์„ ๋ฏธ์‹ ํƒ๋ฐฉ",
"desc": "์ „์ฃผ์˜ ๋น„๋น”๋ฐฅยท๋ง‰๊ฑธ๋ฆฌยทํ•œ์ •์‹์„ ๋‘˜๋Ÿฌ๋ณด๋Š” ์‹๋„๋ฝ ์—ฌํ–‰ (์—ฌํ–‰, ๋ง›์ง‘ํƒ๋ฐฉ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 151,
"title": "๊ฒฝ๋ณต๊ถ ๋ฌธํ™”ํƒ๋ฐฉ",
"desc": "์™•๊ถยท์ „ํ†ต ๊ณต์—ฐยท๋ฐ•๋ฌผ๊ด€์„ ๋Œ๋ฉฐ ํ•œ๊ตญ ์—ญ์‚ฌ๋ฅผ ๋ฐฐ์šฐ๋Š” ์ฝ”์Šค (์—ฌํ–‰, ๋ฌธํ™”ํƒ๋ฐฉ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 152,
"title": "์ œ์ฃผ ์˜ค๋ฆ„ ํž๋งํˆฌ์–ด",
"desc": "์ œ์ฃผ ์˜ค๋ฆ„ยท์šฉ์•”๋™๊ตด์„ ๊ฑธ์œผ๋ฉฐ ์ž์—ฐ ์†์—์„œ ์žฌ์ถฉ์ „ (์—ฌํ–‰, ํž๋ง์—ฌํ–‰)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
# ===== [153~162] ๋…์„œ (10๊ฐœ)
{
"item_id": 153,
"title": "๋ฌด๋ผ์นด๋ฏธ '1Q84' ๋ถํด๋Ÿฝ",
"desc": "ํ•˜๋ฃจํ‚ค ์žฅํŽธ์†Œ์„ค์„ ํ•จ๊ป˜ ์ฝ๊ณ  ์ƒ์ง•ยท๋ฉ”ํƒ€ํฌ๋ฅผ ํ† ๋ก  (๋…์„œ, ์†Œ์„ค)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 154,
"title": "์œค๋™์ฃผ ์‹œ ๋‚ญ๋…ํšŒ",
"desc": "โ€˜ํ•˜๋Š˜๊ณผ ๋ฐ”๋žŒ๊ณผ ๋ณ„๊ณผ ์‹œโ€™ ๋“ฑ ์œค๋™์ฃผ ์‹œ๋ฅผ ๋‚ญ์†กํ•˜๋ฉฐ ๋ฌธํ•™์  ๊ฐ์„ฑ์„ ๊ณต์œ  (๋…์„œ, ์‹œ)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 155,
"title": "๊น€์˜ํ•˜ '์—ฌํ–‰์˜ ์ด์œ ' ์—์„ธ์ด ์‚ด๋กฑ",
"desc": "์—ฌํ–‰๊ณผ ์‚ถ์˜ ๊ด€๊ณ„๋ฅผ ์—์„ธ์ด๋กœ ํƒ๊ตฌํ•˜๊ณ  ๋А๋‚€ ์ ์„ ๋‚˜๋ˆ„๋Š” ์‹œ๊ฐ„ (๋…์„œ, ์—์„ธ์ด)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 156,
"title": "์Šคํ‹ฐ๋ธ ์ฝ”๋น„ '์„ฑ๊ณตํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ 7๊ฐ€์ง€ ์Šต๊ด€'",
"desc": "์ž๊ธฐ๊ณ„๋ฐœ์„œ๋ฅผ ํ•จ๊ป˜ ์ฝ๊ณ  ์‹ค์ฒœ ์ „๋žต์„ ์„ธ์šฐ๋Š” ์„ฑ์žฅ ํ”„๋กœ์ ํŠธ (๋…์„œ, ์ž๊ธฐ๊ณ„๋ฐœ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 157,
"title": "์ธ๋ฌธํ•™ ํ† ํฌ: '์ด, ๊ท , ์‡ ' & '์‚ฌํ”ผ์—”์Šค'",
"desc": "๋ฌธ๋ช…์˜ ๋ฐœ์ „ ๊ณผ์ •์„ ๋‹ค๋ฃฌ ๋ช…์ €๋ฅผ ๋น„๊ตยท๋ถ„์„ํ•˜๋Š” ์‹ฌ์ธต ๋…์„œ (๋…์„œ, ์ธ๋ฌธ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 158,
"title": "์œ ๋ฐœ ํ•˜๋ผ๋ฆฌ '์‚ฌํ”ผ์—”์Šค' ์—ญ์‚ฌ ์„ธ์…˜",
"desc": "์ธ๋ฅ˜ ์—ญ์‚ฌ๋ฅผ ์กฐ๋งํ•˜๋Š” '์‚ฌํ”ผ์—”์Šค'๋ฅผ ์ฝ๊ณ  ํ˜„์žฌ ์‚ฌํšŒ์™€ ์—ฐ๊ฒฐ (๋…์„œ, ์—ญ์‚ฌ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 159,
"title": "์นผ ์„ธ์ด๊ฑด '์ฝ”์Šค๋ชจ์Šค' ๊ณผํ•™ ๋…์„œ๋ชจ์ž„",
"desc": "์šฐ์ฃผ์™€ ๊ณผํ•™์  ์‚ฌ๊ณ ๋ฅผ ํ™•์žฅํ•ด๋ณด๋Š” '์ฝ”์Šค๋ชจ์Šค' ํ•จ๊ป˜ ์ฝ๊ธฐ (๋…์„œ, ๊ณผํ•™)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 160,
"title": "์• ๋ค ์Šค๋ฏธ์Šค '๊ตญ๋ถ€๋ก ' ๊ฒฝ์ œํฌ๋Ÿผ",
"desc": "๊ณ ์ „ ๊ฒฝ์ œํ•™์„ ํ† ๋Œ€๋กœ ์‹œ์žฅ๊ฒฝ์ œ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๋Š” ์„ธ๋ฏธ๋‚˜ (๋…์„œ, ๊ฒฝ์ œ/๊ฒฝ์˜)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 161,
"title": "๋‹ˆ์ฒด '์ฐจ๋ผํˆฌ์ŠคํŠธ๋ผ๋Š” ์ด๋ ‡๊ฒŒ ๋งํ–ˆ๋‹ค' ์ฒ ํ•™ ํ† ๋ก ",
"desc": "๋‹ˆ์ฒด ์ฒ ํ•™์„ ๊นŠ์ด ์žˆ๊ฒŒ ํƒ๋…ํ•˜๊ณ  ํ˜„๋Œ€์  ์˜๋ฏธ๋ฅผ ํ•ด์„ (๋…์„œ, ์ฒ ํ•™)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 162,
"title": "๋นˆ์„ผํŠธ ๋ฐ˜ ๊ณ ํ ์˜ˆ์ˆ ์ฑ… ๋ฆฌ๋ทฐ",
"desc": "ํ™”๊ฐ€ ๋ฐ˜ ๊ณ ํ์˜ ์ž‘ํ’ˆ ์„ธ๊ณ„๋ฅผ ๋ฏธ์ˆ ์„œ์ ์œผ๋กœ ์ ‘ํ•˜๊ณ  ๊ต๊ฐ (๋…์„œ, ์˜ˆ์ˆ )",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
# ===== [163~172] ์˜ํ™” (10๊ฐœ)
{
"item_id": 163,
"title": "'๋Ÿฌ๋ธŒ ์•ก์ธ„์–ผ๋ฆฌ' ๋กœ๋งจ์Šค ์ƒ์˜ํšŒ",
"desc": "์—ฌ๋Ÿฌ ์ปคํ”Œ์˜ ์‚ฌ๋ž‘ ์ด์•ผ๊ธฐ๋ฅผ ๋‹ด์€ '๋Ÿฌ๋ธŒ ์•ก์ธ„์–ผ๋ฆฌ'๋ฅผ ๊ฐ์ƒ ํ›„ ํ† ๋ก  (์˜ํ™”, ๋กœ๋งจ์Šค)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 164,
"title": "์ฝ”๋ฏธ๋”” '๋ฏธ์Šคํ„ฐ ๋นˆ' ํŠน๋ณ„์ „",
"desc": "๋กœ์™„ ์•ณํ‚จ์Šจ์˜ ๋ฐ”๋”” ์ฝ”๋ฏธ๋””๋ฅผ ๊ฐ์ƒํ•˜๋ฉฐ ์›ƒ์Œ ํฌ์ธํŠธ๋ฅผ ๋ถ„์„ (์˜ํ™”, ์ฝ”๋ฏธ๋””)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 165,
"title": "'๋งค๋“œ ๋งฅ์Šค: ๋ถ„๋…ธ์˜ ๋„๋กœ' ์•ก์…˜ ํ† ํฌ",
"desc": "ํฌ์ŠคํŠธ ์•„ํฌ์นผ๋ฆฝ์Šค ๋ฐฐ๊ฒฝ์˜ ์งˆ์ฃผ ์•ก์…˜์„ ํ•ด๋ถ€ํ•˜๋Š” ์ƒ์˜ํšŒ (์˜ํ™”, ์•ก์…˜)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 166,
"title": "์Šค๋ฆด๋Ÿฌ '๊ฒŸ ์•„์›ƒ' ์‹ฌ๋ฆฌ๋ถ„์„",
"desc": "์กฐ๋˜ ํ•„์˜ '๊ฒŸ ์•„์›ƒ'์„ ํ†ตํ•ด ๊ณตํฌ์™€ ์‚ฌํšŒ์  ๋ฉ”์‹œ์ง€๋ฅผ ์‚ดํ”ผ๋Š” ์ด๋ฒคํŠธ (์˜ํ™”, ์Šค๋ฆด๋Ÿฌ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 167,
"title": "๊ณตํฌ '์ปจ์ €๋ง' ์˜ค์‹น ์ฒดํ—˜",
"desc": "์‹ฌ๋ นํ˜„์ƒ์„ ๋‹ค๋ฃฌ ๊ณตํฌ์˜ํ™” '์ปจ์ €๋ง'์œผ๋กœ ์‚ฌ์šด๋“œยท๋ถ„์œ„๊ธฐ ์—ฐ์ถœ์„ ํƒ๊ตฌ (์˜ํ™”, ๊ณตํฌ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 168,
"title": "'์ธํ„ฐ์Šคํ…”๋ผ' SF ๋””์Šค์ปค์…˜",
"desc": "ํฌ๋ฆฌ์Šคํ† ํผ ๋†€๋ž€์˜ ์šฐ์ฃผยท์ค‘๋ ฅ ์ด๋ก ์„ ๋‹ด์€ ์˜ํ™”๋ฅผ ๋ณด๊ณ  ๊ณผํ•™์  ์„ค์ • ํ† ๋ก  (์˜ํ™”, SF)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 169,
"title": "'๋ฐ˜์ง€์˜ ์ œ์™•' ํŒํƒ€์ง€ ๋ฐ์ด",
"desc": "ํ†จํ‚จ ์„ธ๊ณ„๊ด€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋Œ€์„œ์‚ฌ์‹œ๋ฅผ ์—ฐ์† ์ƒ์˜ยท๋ถ„์„ (์˜ํ™”, ํŒํƒ€์ง€)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 170,
"title": "'์‡ผ์ƒํฌ ํƒˆ์ถœ' ๋“œ๋ผ๋งˆ ๊ฐ๋™",
"desc": "์ธ์ƒ์˜ํ™” '์‡ผ์ƒํฌ ํƒˆ์ถœ'์„ ๋ณด๊ณ  ํฌ๋งยท์ธ๋‚ด์˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ† ๋ก  (์˜ํ™”, ๋“œ๋ผ๋งˆ)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 171,
"title": "์ง€๋ธŒ๋ฆฌ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ŠคํŽ˜์…œ",
"desc": "'์„ผ๊ณผ ์น˜ํžˆ๋กœ' ๋“ฑ ์ง€๋ธŒ๋ฆฌ ์ž‘ํ’ˆ์„ ์ƒ์˜ํ•˜๋ฉฐ ํŒํƒ€์ง€ยท๋™์‹ฌ์„ ๋А๋ผ๋Š” ๊ฐ์ƒํšŒ (์˜ํ™”, ์• ๋‹ˆ๋ฉ”์ด์…˜)",
"personality": "์™ธํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 172,
"title": "๋‹คํ '์ง€๊ตฌ(Earth)' ํ™˜๊ฒฝ ํฌ๋Ÿผ",
"desc": "BBC ์ œ์ž‘ ๋‹คํ๋ฉ˜ํ„ฐ๋ฆฌ '์ง€๊ตฌ'๋ฅผ ๋ณด๊ณ  ์ž์—ฐยทํ™˜๊ฒฝ ์ด์Šˆ๋ฅผ ๋…ผ์˜ (์˜ํ™”, ๋‹คํ๋ฉ˜ํ„ฐ๋ฆฌ)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
# ===== [173~182] ๊ฒŒ์ž„ (10๊ฐœ)
{
"item_id": 173,
"title": "'์—˜๋“  ๋ง' RPG ๋„์ „",
"desc": "ํ”„๋กฌ์†Œํ”„ํŠธ์›จ์–ด์˜ โ€˜์—˜๋“  ๋งโ€™์—์„œ ๋‚œ์ด๋„ ๊ทน๋ณต ์ „๋žต๊ณผ ๋นŒ๋“œ ์—ฐ๊ตฌ (๊ฒŒ์ž„, RPG)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 174,
"title": "'์˜ค๋ฒ„์›Œ์น˜2' FPS ํŒ€ํ”Œ",
"desc": "โ€˜์˜ค๋ฒ„์›Œ์น˜2โ€™์—์„œ ์—ญํ•  ๋ถ„๋‹ดยท์ „์ˆ  ํ”Œ๋ ˆ์ด๋ฅผ ํ˜‘๋ ฅํ•˜๋Š” ๋Œ€์ „ (๊ฒŒ์ž„, FPS)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 175,
"title": "'๋ฐ๋นŒ ๋ฉ”์ด ํฌ๋ผ์ด' ์•ก์…˜ ์ฝค๋ณด ์—ฐ๊ตฌ",
"desc": "์ฝค๋ณด ์•ก์…˜์˜ ์ •์ˆ˜ โ€˜๋ฐ๋ฉ”ํฌโ€™ ์‹œ๋ฆฌ์ฆˆ๋ฅผ ํ”Œ๋ ˆ์ดํ•˜๋ฉฐ ๊ธฐ์ˆ ์„ ์ตํž˜ (๊ฒŒ์ž„, ์•ก์…˜)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 176,
"title": "'์Šคํƒ€ํฌ๋ž˜ํ”„ํŠธ' ์ „๋žต ๋นŒ๋“œํ† ๋ก ",
"desc": "ํ…Œ๋ž€ยท์ €๊ทธยทํ”„๋กœํ† ์Šค ์ข…์กฑ๋ณ„ ๋นŒ๋“œ ์˜ค๋”ยท๋ฆฌํ”Œ๋ ˆ์ด ๋ถ„์„ (๊ฒŒ์ž„, ์ „๋žต)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 177,
"title": "'์‹ฌ์‹œํ‹ฐ' ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฑด์„ค",
"desc": "๋„์‹œ๊ฑด์„ค ๊ฒŒ์ž„ โ€˜์‹ฌ์‹œํ‹ฐโ€™๋กœ ์ž์‹ ๋งŒ์˜ ๋„์‹œ๋ฅผ ๋””์ž์ธํ•˜๊ณ  ์šด์˜ (๊ฒŒ์ž„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 178,
"title": "'ํ”ผํŒŒ23' ์Šคํฌ์ธ  ๋Œ€์ „",
"desc": "์ถ•๊ตฌ๊ฒŒ์ž„ โ€˜ํ”ผํŒŒ23โ€™์—์„œ ์˜คํ”„๋ผ์ธ ๋ฆฌ๊ทธ์ „์„ ์—ด๊ณ  ์ˆœ์œ„๋ฅผ ์ง‘๊ณ„ (๊ฒŒ์ž„, ์Šคํฌ์ธ )",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 179,
"title": "'ํ…ŒํŠธ๋ฆฌ์Šค99' ํผ์ฆ ๋ฐฐํ‹€๋กœ์–„",
"desc": "๋‹Œํ…๋„ ์Šค์œ„์น˜ โ€˜ํ…ŒํŠธ๋ฆฌ์Šค99โ€™๋กœ ๋‹ค์ˆ˜ ์ธ์›์ด ๋™์‹œ์— ๊ฒฝ์Ÿ (๊ฒŒ์ž„, ํผ์ฆ)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 180,
"title": "'DJMAX ๋ฆฌ์ŠคํŽ™ํŠธ V' ๋ฆฌ๋“ฌ ํŽ˜์Šคํ‹ฐ๋ฒŒ",
"desc": "๊ตญ์‚ฐ ๋ฆฌ๋“ฌ๊ฒŒ์ž„ DJMAX๋กœ ์ฝค๋ณด์™€ ๋…ธํŠธ ํŒจํ„ด์— ๋„์ „ (๊ฒŒ์ž„, ์Œ์•…/๋ฆฌ๋“ฌ)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 181,
"title": "'ํ•˜์Šค์Šคํ†ค' ์นด๋“œ ๋ฑ์‹คํ—˜์‹ค",
"desc": "๋ธ”๋ฆฌ์ž๋“œ TCG โ€˜ํ•˜์Šค์Šคํ†คโ€™์—์„œ ์ „๋žต์  ๋ฑ ๊ตฌ์„ฑ๊ณผ ํ† ๋„ˆ๋จผํŠธ ํ”Œ๋ ˆ์ด (๊ฒŒ์ž„, ์นด๋“œ)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 182,
"title": "'๋กœ์ŠคํŠธ์•„ํฌ' MMORPG ๋ ˆ์ด๋“œ",
"desc": "๋Œ€๊ทœ๋ชจ ์˜จ๋ผ์ธ RPG โ€˜๋กœ์ŠคํŠธ์•„ํฌโ€™์—์„œ ๊ธธ๋“œ์›๊ณผ ํ˜‘๋™ํ•ด ๋ ˆ์ด๋“œ๋ฅผ ๊ณต๋žต (๊ฒŒ์ž„, MMORPG)",
"personality": "์™ธํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
# ===== [183~192] ๊ณต์˜ˆ (10๊ฐœ)
{
"item_id": 183,
"title": "๋‹ˆํŠธ ์ฝ”๋ฐ”๋Š˜ ์ธํ˜• ๋งŒ๋“ค๊ธฐ",
"desc": "๋œจ๊ฐœ์งˆ ๊ธฐ๋ฒ•์œผ๋กœ ๊ท€์—ฌ์šด ์ธํ˜•์ด๋‚˜ ์†Œํ’ˆ์„ ์ œ์ž‘ํ•˜๋Š” ์›Œํฌ์ˆ (๊ณต์˜ˆ, ๋œจ๊ฐœ์งˆ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 184,
"title": "ํ”„๋ž‘์Šค์ž์ˆ˜ ๋ธŒ๋กœ์น˜ ๊ต์‹ค",
"desc": "์„ธ์‹ฌํ•œ ์ž์ˆ˜๋กœ ๋ธŒ๋กœ์น˜ยท๋ฏธ๋‹ˆ ํŒŒ์šฐ์น˜๋ฅผ ์žฅ์‹ํ•˜๋Š” ๊ณต์˜ˆ ํด๋ž˜์Šค (๊ณต์˜ˆ, ์ž์ˆ˜)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 185,
"title": "๋„์˜ˆ ํ•ธ๋“œ๋นŒ๋”ฉ ์ฒดํ—˜",
"desc": "ํ™์„ ์†์œผ๋กœ ๋นš์–ด ๋จธ๊ทธยท์ ‘์‹œ๋ฅผ ๋งŒ๋“œ๋Š” ๋„์ž๊ธฐ ๊ณต์˜ˆ (๊ณต์˜ˆ, ๋„์ž๊ธฐ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 186,
"title": "๊ฐ€์ฃฝ๊ณต์˜ˆ ์นด๋“œ์ง€๊ฐ‘ ์ œ์ž‘",
"desc": "๊ฐ€์ฃฝ ์žฌ๋‹จยท๋ฐ”๋А์งˆยท์—ฃ์ง€ ๋งˆ๊ฐ ์‹ค์Šต์œผ๋กœ ์นด๋“œ์ง€๊ฐ‘์„ ์™„์„ฑ (๊ณต์˜ˆ, ๊ฐ€์ฃฝ๊ณต์˜ˆ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 187,
"title": "๋‚˜๋ฌด๋„๋งˆ ๋ชฉ๊ณต ๊ต์‹ค",
"desc": "์›๋ชฉ์„ ๊ฐ€๊ณตยท์ƒŒ๋”ฉํ•˜์—ฌ ์ฃผ๋ฐฉ์šฉ ๋‚˜๋ฌด๋„๋งˆ๋ฅผ ์ œ์ž‘ํ•˜๋Š” ๊ธฐ์ดˆ ์ฒดํ—˜ (๊ณต์˜ˆ, ๋ชฉ๊ณต์˜ˆ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 188,
"title": "๋น„์ฆˆ๊ณต์˜ˆ ์•ก์„ธ์„œ๋ฆฌ ๋””์ž์ธ",
"desc": "๋น„์ฆˆ ๊ตฌ์Šฌ๋กœ ํŒ”์ฐŒยท๋ชฉ๊ฑธ์ด๋ฅผ ๋งŒ๋“ค๊ณ  ์ƒ‰์ฑ„ ๊ฐ๊ฐ์„ ์ตํžˆ๋Š” ํด๋ž˜์Šค (๊ณต์˜ˆ, ๋น„์ฆˆ๊ณต์˜ˆ)",
"personality": "๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•"
},
{
"item_id": 189,
"title": "์†Œ์ด ์บ”๋“ค & ๋””ํ“จ์ € ๋งŒ๋“ค๊ธฐ",
"desc": "์ฒœ์—ฐ ์†Œ์ด์™์Šค๋กœ ํ–ฅ์ดˆ, ๋””ํ“จ์ €๋ฅผ ์ œ์ž‘ํ•ด ๊ฐ์„ฑ ๋ถ„์œ„๊ธฐ๋ฅผ ์กฐ์„ฑ (๊ณต์˜ˆ, ์บ”๋“ค/๋””ํ“จ์ €)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 190,
"title": "ํŽ˜์ดํผํฌ๋ž˜ํ”„ํŠธ 3D ๋ฏธ๋‹ˆ์–ด์ฒ˜",
"desc": "์ข…์ด ๊ณต์˜ˆ๋กœ ์ž…์ฒด ๊ตฌ์กฐ๋ฌผ์„ ์ œ์ž‘ํ•˜๊ณ  ์ฑ„์ƒ‰ยท๋””ํ…Œ์ผ์„ ์‚ด๋ฆฌ๋Š” ๊ต์‹ค (๊ณต์˜ˆ, ํŽ˜์ดํผํฌ๋ž˜ํ”„ํŠธ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 191,
"title": "๋งˆํฌ๋ผ๋ฉ” ์ธํ…Œ๋ฆฌ์–ด ์›”ํ–‰์ž‰",
"desc": "๋งค๋“ญ ๊ธฐ๋ฒ•์„ ์‘์šฉํ•ด ๋ฒฝ๊ฑธ์ดยทํ™”๋ถ„ํ™€๋” ๋“ฑ ์ธํ…Œ๋ฆฌ์–ด ์†Œํ’ˆ์„ ๋งŒ๋“œ๋Š” ์‹ค์Šต (๊ณต์˜ˆ, ๋งˆํฌ๋ผ๋ฉ”)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
},
{
"item_id": 192,
"title": "๋ ˆ์ง„์•„ํŠธ ํ‚ค๋ง & ์•ก์„ธ์„œ๋ฆฌ",
"desc": "ํˆฌ๋ช… ๋ ˆ์ง„์— ์ƒ‰์†Œยท๊ธ€๋ฆฌํ„ฐ๋ฅผ ํ™œ์šฉํ•ด ํ‚ค๋งยท๋ฐ˜์ง€๋ฅผ ๋งŒ๋“œ๋Š” ์ฐฝ์ž‘ (๊ณต์˜ˆ, ๋ ˆ์ง„์•„ํŠธ)",
"personality": "๋‚ดํ–ฅํ˜•, ์ด์„ฑํ˜•"
}
]
#####################################
# 2) ์•„์ดํ…œ ์ž„๋ฒ ๋”ฉ ๋กœ์ง
#####################################
def make_item_embedding_dict(items, model):
item_embedding_dict = {}
for item in items:
text = f"{item['title']} {item['desc']}"
emb = model.encode(text, convert_to_numpy=True)
item_embedding_dict[item['item_id']] = emb
return item_embedding_dict
item_embedding_dict = make_item_embedding_dict(items, model_bert)
#####################################
# 3) ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ -> ๋ฌธ์žฅํ™”
#####################################
def make_user_profile_text(user_profile: dict) -> str:
ext = user_profile.get("extroversion", "")
ft = user_profile.get("feeling_thinking", "")
hobby = user_profile.get("hobby", "")
detail = user_profile.get("detail_hobby", "")
if hobby == "์—ฌํ–‰":
return (f"์ €๋Š” {ext}์ด๋ฉฐ {ft}ํ•œ ์„ฑํ–ฅ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. "
f"์—ฌํ–‰์„ ์ •๋ง ์ข‹์•„ํ•˜๋ฉฐ, ํŠนํžˆ {detail}์„ ์ฆ๊น๋‹ˆ๋‹ค. "
"๋‹ค์–‘ํ•œ ๋ฌธํ™”์™€ ๋ง›์ง‘์„ ์ง์ ‘ ์ฒดํ—˜ํ•˜๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค.")
elif hobby == "์šด๋™":
return (f"์ €๋Š” {ext}์ด๋ฉฐ {ft}ํ•œ ์„ฑํ–ฅ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. "
f"์šด๋™์— ์—ด์ •์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํŠนํžˆ {detail}์„ ์ฆ๊น๋‹ˆ๋‹ค. "
"๊ฑด๊ฐ•๊ณผ ์ฒด๋ ฅ์„ ์ฆ์ง„์‹œํ‚ค๊ณ ์ž ๊พธ์ค€ํžˆ ํ™œ๋™ํ•ฉ๋‹ˆ๋‹ค.")
elif hobby == "๋…์„œ":
return (f"์ €๋Š” {ext}์ด๋ฉฐ {ft}ํ•œ ์„ฑํ–ฅ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. "
f"๋…์„œ๋ฅผ ์‚ฌ๋ž‘ํ•˜๋ฉฐ, ํŠนํžˆ {detail}์— ๊นŠ์€ ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. "
"์ƒˆ๋กœ์šด ์ง€์‹๊ณผ ๋‹ค์–‘ํ•œ ๊ด€์ ์„ ๋ฐฐ์šฐ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.")
elif hobby == "์˜ํ™”":
return (f"์ €๋Š” {ext}์ด๋ฉฐ {ft}ํ•œ ์„ฑํ–ฅ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. "
f"์˜ํ™”๋ฅผ ๊ฐ์ƒํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๋ฉฐ, ํŠนํžˆ {detail} ์žฅ๋ฅด์— ํฐ ํฅ๋ฏธ๋ฅผ ๋А๋‚๋‹ˆ๋‹ค. "
"๊ฐ๋™๊ณผ ์žฌ๋ฏธ๋ฅผ ๋™์‹œ์— ๊ฒฝํ—˜ํ•˜๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค.")
elif hobby == "๊ฒŒ์ž„":
return (f"์ €๋Š” {ext}์ด๋ฉฐ {ft}ํ•œ ์„ฑํ–ฅ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. "
f"๊ฒŒ์ž„์„ ์ฆ๊ธฐ๋ฉฐ, ํŠนํžˆ {detail} ๊ฒŒ์ž„์— ๋งŽ์€ ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. "
"์ „๋žต์  ์‚ฌ๊ณ ์™€ ๋„์ „์„ ํ†ตํ•ด ์„ฑ์ทจ๊ฐ์„ ๋А๋ผ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.")
elif hobby == "๊ณต์˜ˆ":
return (f"์ €๋Š” {ext}์ด๋ฉฐ {ft}ํ•œ ์„ฑํ–ฅ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. "
f"๊ณต์˜ˆ ํ™œ๋™์— ์—ด์ •์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํŠนํžˆ {detail}์„ ์ฆ๊น๋‹ˆ๋‹ค. "
"์ฐฝ์˜์ ์ธ ์•„์ด๋””์–ด๋ฅผ ์‹คํ˜„ํ•˜๋ฉฐ ์„ฌ์„ธํ•œ ์ž‘์—…์„ ์ฆ๊น๋‹ˆ๋‹ค.")
else:
return f"์ €๋Š” {ext}์ด๋ฉฐ {ft}ํ•œ ์„ฑํ–ฅ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ทจ๋ฏธ๋ฅผ ์ฆ๊ธฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค."
#####################################
# 2) ์•„์ดํ…œ ์ž„๋ฒ ๋”ฉ ๋กœ์ง
#####################################
def make_item_embedding_dict(items, model):
item_embedding_dict = {}
for item in items:
text = f"{item['title']} {item['desc']}"
emb = model.encode(text, convert_to_numpy=True)
item_embedding_dict[item['item_id']] = emb
return item_embedding_dict
item_embedding_dict = make_item_embedding_dict(items, model_bert)
#####################################
# 3) ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ -> ๋ฌธ์žฅํ™” (๋‹ค์ค‘ ์ทจ๋ฏธ ๋Œ€์‘)
#####################################
def make_user_profile_text(user_profile: dict) -> str:
ext = user_profile.get("extroversion", "")
ft = user_profile.get("feeling_thinking", "")
# ๐ŸŸข hobby, detail_hobby๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ›๋Š”๋‹ค๊ณ  ๊ฐ€์ •
hobby_list = user_profile.get("hobby", [])
detail_list = user_profile.get("detail_hobby", [])
# ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฌธ์ž์—ด๋กœ ํ•ฉ์น˜๊ธฐ
# ์˜ˆ: hobby_list=["์šด๋™","๋…์„œ"] โ†’ "์šด๋™, ๋…์„œ"
hobby_str = ", ".join(hobby_list) if hobby_list else ""
detail_str = ", ".join(detail_list) if detail_list else ""
# ๊ฐ„๋‹จํžˆ ํ•˜๋‚˜์˜ ๋ฌธ์žฅ์œผ๋กœ ๊ตฌ์„ฑ
# ํ•„์š”ํ•˜๋‹ค๋ฉด ์ทจ๋ฏธ๋งˆ๋‹ค ๋ณ„๋„ ๋ฌธ์žฅ ๋“ฑ์„ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
text = (
f"์ €๋Š” {ext}์ด๋ฉฐ {ft}ํ•œ ์„ฑํ–ฅ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. "
f"์ฃผ์š” ์ทจ๋ฏธ๋กœ๋Š” {hobby_str}๋ฅผ ์ฆ๊ธฐ๊ณ , "
f"ํŠนํžˆ {detail_str} ๋ถ„์•ผ์— ๊ด€์‹ฌ์ด ๋งŽ์Šต๋‹ˆ๋‹ค."
)
return text
#####################################
# 4) ์‚ฌ์šฉ์ž ์ž„๋ฒ ๋”ฉ + ์ถ”์ฒœ ๋กœ์ง (๋‹ค์ค‘ ์ทจ๋ฏธ ๋Œ€์‘)
#####################################
def get_user_embedding(user_profile: dict):
user_text = make_user_profile_text(user_profile)
return model_bert.encode(user_text, convert_to_numpy=True)
def extract_hobby(desc):
""" ์˜ˆ: "PT ์ „๋ฌธ ์ฝ”์น˜... (์šด๋™, ํ—ฌ์Šค)" -> "์šด๋™, ํ—ฌ์Šค" """
match = re.search(r"\((.*?)\)", desc)
return match.group(1) if match else ""
def cosine_similarity(vec1, vec2):
norm1 = np.linalg.norm(vec1)
norm2 = np.linalg.norm(vec2)
if norm1 == 0 or norm2 == 0:
return 0.0
return float(np.dot(vec1, vec2) / (norm1 * norm2))
def recommend_content_based(user_profile: dict, top_n=5):
user_emb = get_user_embedding(user_profile)
scored = []
seen_items = set() # ์ค‘๋ณต ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ์ง‘ํ•ฉ
# ๐ŸŸข ๋‹ค์ค‘ ์ทจ๋ฏธ/์„ธ๋ถ€์ทจ๋ฏธ ์ง€์›
user_hobbies = user_profile.get("hobby", []) or []
user_details = user_profile.get("detail_hobby", []) or []
user_extroversion = user_profile.get("extroversion", "")
user_feeling_thinking = user_profile.get("feeling_thinking", "")
for item in items:
item_id = item["item_id"]
if item_id in seen_items: # ์ค‘๋ณต ๋ฐฉ์ง€
continue
item_emb = item_embedding_dict[item_id]
sim = cosine_similarity(user_emb, item_emb)
# ๊ธฐ๋ณธ ๊ฐ€์ค‘์น˜
weight = 1.0
# (1) ์ทจ๋ฏธ ๊ฐ€์ค‘์น˜
desc_hobby = extract_hobby(item["desc"]) # ์˜ˆ: "(์šด๋™, ํ—ฌ์Šค)"
for h in user_hobbies:
if h in desc_hobby:
weight *= 1.15
# (2) ์„ธ๋ถ€ ์ทจ๋ฏธ ๊ฐ€์ค‘์น˜
for dh in user_details:
if dh in desc_hobby:
weight *= 1.3
# (3) ์„ฑํ–ฅ ๊ฐ€์ค‘์น˜ (์™ธํ–ฅํ˜•/๋‚ดํ–ฅํ˜•, ๊ฐ์ •ํ˜•/์ด์„ฑํ˜•)
personality_match_count = sum(
trait in item["personality"]
for trait in [user_extroversion, user_feeling_thinking]
)
if personality_match_count == 1:
weight *= 1.2
elif personality_match_count == 2:
weight *= 1.3
final_score = sim * weight
scored.append((item, final_score))
# ๐ŸŸข ์ ์ˆ˜๊ฐ€ ๋†’์€ ์ˆœ์œผ๋กœ ์ •๋ ฌ
scored.sort(key=lambda x: x[1], reverse=True)
# ๐ŸŸข ์ƒ์œ„ 5๊ฐœ๋ฅผ ํ™•๋ณด (์ค‘๋ณต ์—†์ด)
selected_items = []
for (item, score) in scored:
if len(selected_items) >= top_n:
break
if item["item_id"] not in seen_items:
seen_items.add(item["item_id"])
selected_items.append((item, score))
return selected_items
# ์ถ”์ฒœ ๊ฐœ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋ฉด, ๋‚˜๋จธ์ง€ ์ถ”์ฒœ์„ ์ถ”๊ฐ€
if len(balanced_recommendations) < top_n:
for item, score in scored:
if len(balanced_recommendations) < top_n:
balanced_recommendations.append((item, score))
else:
break
return balanced_recommendations
#####################################
# 5) ์ฑ—๋ด‡ ๋กœ์ง
#####################################
HF_API_KEY = os.environ.get("HF_API_KEY", "YOUR_HF_API_KEY")
API_URL = "https://api-inference.huggingface.co/models/Chanjeans/tfchatbot_2"
HEADERS = {"Authorization": f"Bearer {HF_API_KEY}"}
def chat_response(user_input, mode="emotion", max_retries=5):
if mode not in ["emotion", "rational"]:
raise HTTPException(status_code=400, detail="mode๋Š” 'emotion' ๋˜๋Š” 'rational'์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.")
prompt = f"<{mode}><usr>{user_input}</usr><sys>"
payload = {
"inputs": prompt,
"parameters": {
"max_new_tokens": 128,
"temperature": 0.7,
"top_p": 0.9,
"top_k": 50,
"repetition_penalty": 1.2,
"do_sample": True
},
"options": {"wait_for_model": True}
}
for attempt in range(max_retries):
response = requests.post(API_URL, headers=HEADERS, json=payload)
if response.status_code == 200:
try:
result = response.json()
if isinstance(result, list) and "generated_text" in result[0]:
generated_text = result[0]["generated_text"]
return generated_text.replace(prompt, "").strip()
else:
return "์‘๋‹ต ํ˜•์‹์ด ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค."
except Exception as e:
return f"JSON ํŒŒ์‹ฑ ์˜ค๋ฅ˜: {e}"
elif response.status_code == 503:
# ๋ชจ๋ธ ๋กœ๋”ฉ ์ค‘
error_info = response.json()
estimated_time = error_info.get("estimated_time", 15)
time.sleep(min(estimated_time, 15))
else:
return f"API Error: {response.status_code}, {response.text}"
return "๐Ÿšจ ๋ชจ๋ธ ๋กœ๋”ฉ์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์ž ์‹œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”."
#์šฐ์šธ๋ถ„๋ฅ˜ ๋ชจ๋ธ ์ถ”๊ฐ€
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
tokenizer = BertTokenizer.from_pretrained("monologg/kobert")
bert_model = BertForSequenceClassification.from_pretrained("monologg/kobert", num_labels=2)
bert_model.load_state_dict(torch.load("emotion_bert_model.pth", map_location=device))
bert_model.to(device)
bert_model.eval()
xgb_model = joblib.load("xgboost_model.pkl")
vectorizer = joblib.load("tfidf_vectorizer.pkl")
def predict_depression(text: str):
encoding = tokenizer(text, truncation=True, padding="max_length", max_length=64, return_tensors="pt")
input_ids = encoding["input_ids"].to(device)
attention_mask = encoding["attention_mask"].to(device)
with torch.no_grad():
outputs = bert_model(input_ids, attention_mask=attention_mask)
probabilities = torch.nn.functional.softmax(outputs.logits, dim=1)
kobert_score = probabilities[0][1].item()
text_vec = vectorizer.transform([text])
xgb_proba = xgb_model.predict_proba(text_vec)[0][1]
kobert_score = max(0.35, min(kobert_score, 0.88))
xgb_proba = max(0.3, min(xgb_proba, 0.83))
combined_score = (kobert_score * 0.55) + (xgb_proba * 0.45)
if combined_score > 0.78:
label = "์ƒ๋‹ด ๊ถŒ์žฅ"
elif combined_score > 0.65:
label = "๊ด€์‹ฌ ํ•„์š”"
else:
label = "์ •์ƒ"
return combined_score, label
#####################################
# 6) FastAPI Endpoint
#####################################
# (1) ๋ฉ”์ธ ํŽ˜์ด์ง€
@app.get("/")
def home():
return {"message": "์•ˆ๋…•ํ•˜์„ธ์š”! ์ถ”์ฒœ & ์ฑ—๋ด‡ FastAPI ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค."}
# (2) ์ถ”์ฒœ์šฉ ๋ชจ๋ธ (๋‹จ์ผ hobby / detail_hobby) - ๊ธฐ์กด ํ˜ธํ™˜์šฉ
class UserProfile(BaseModel):
extroversion: str
feeling_thinking: str
hobby: str
detail_hobby: str
@app.post("/recommend")
def recommend_api(profile: UserProfile):
top_items = recommend_content_based(profile.dict(), top_n=5)
results = []
for (item, score) in top_items:
results.append({
"item_id": item["item_id"],
"title": item["title"],
"desc": item["desc"],
"personality": item["personality"],
"score": round(score, 4)
})
return {"recommendations": results}
# (3) ์ฑ—๋ด‡์šฉ ๋ชจ๋ธ + ๋‹ค์ค‘ ์ทจ๋ฏธ/์„ธ๋ถ€์ทจ๋ฏธ ๋Œ€์‘
class ChatRequest(BaseModel):
user_input: str
mode: str # "emotion" or "rational"
RECOMMEND_KEYWORDS = ["์ถ”์ฒœ", "์ถ”์ฒœํ•ด์ค˜", "์ทจ๋ฏธ ์ถ”์ฒœ"]
# (4) ์ฑ—๋ด‡ + ์ถ”์ฒœ ์ž๋™ ๋ถ„๊ธฐ์šฉ ๋ชจ๋ธ
class ChatOrRecommendRequest(BaseModel):
user_input: str # ์‚ฌ์šฉ์ž์˜ ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€
mode: str # "emotion" ๋˜๋Š” "rational"
# ๐ŸŸข ๋‹ค์ค‘ ์„ ํƒ ๊ฐ€๋Šฅํ•˜๋„๋ก List[str]๋กœ ๋ณ€๊ฒฝ
extroversion: Optional[str] = None
feeling_thinking: Optional[str] = None
hobby: Optional[List[str]] = None
detail_hobby: Optional[List[str]] = None
# (5) ์ž๋™ ๋ถ„๊ธฐ ์—”๋“œํฌ์ธํŠธ
@app.post("/chat_or_recommend")
def chat_or_recommend(req: ChatOrRecommendRequest):
depression_score, depression_label = predict_depression(req.user_input)
if depression_label == "์ƒ๋‹ด ๊ถŒ์žฅ":
counseling_response = (
"์ž…๋ ฅํ•˜์‹  ๋ฉ”์‹œ์ง€์—์„œ ์‹ฌ๊ฐํ•œ ์šฐ์šธ ์‹ ํ˜ธ๊ฐ€ ๊ฐ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.\n"
"์ „๋ฌธ ์ƒ๋‹ด์„ ๋ฐ›์œผ์‹ค ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค.\n"
"๋น ๋ฅธ ์‹œ์ผ ๋‚ด์— ์ „๋ฌธ๊ฐ€์™€ ์ƒ๋‹ดํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค."
)
return {
"mode": "counseling",
"response": counseling_response,
"depression_score": round(depression_score, 4),
"depression_label": depression_label
}
user_text = req.user_input
mode = req.mode.lower()
# โ–ถ 1) "์ถ”์ฒœ" ํ‚ค์›Œ๋“œ ํฌํ•จ ์‹œ โ†’ ์ถ”์ฒœ
if any(keyword in user_text for keyword in RECOMMEND_KEYWORDS):
# ํ”„๋กœํ•„ ๋ฏธ์ž…๋ ฅ ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
# (์—ฌ๊ธฐ์„œ๋Š” hobby / detail_hobby๊ฐ€ ์ตœ์†Œํ•œ 1๊ฐœ ์ด์ƒ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •)
if not req.hobby:
raise HTTPException(
status_code=400,
detail="์ถ”์ฒœ์„ ์œ„ํ•ด [hobby, detail_hobby, extroversion, feeling_thinking] ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค."
)
# (A) ์ถ”์ฒœ ๋กœ์ง
user_profile = {
"extroversion": req.extroversion or "",
"feeling_thinking": req.feeling_thinking or "",
"hobby": req.hobby, # list
"detail_hobby": req.detail_hobby or [],
}
top_items = recommend_content_based(user_profile, top_n=5)
results = []
for (item, score) in top_items:
results.append({
"item_id": item["item_id"],
"title": item["title"],
"desc": item["desc"],
"personality": item["personality"],
"score": round(score, 4)
})
# โ‘  ๋ถ€๋“œ๋Ÿฌ์šด ๋Œ€ํ™”์ฒด๋กœ ๊ฐ€๊ณต
response_text = "๋‹น์‹ ์„ ์œ„ํ•œ ๋งž์ถค ์ถ”์ฒœ์„ ๊ฐ€์ ธ์™”์–ด์š”! โ˜บ๏ธ"
for i, (item, score) in enumerate(top_items, start=1):
clean_desc = re.sub(r"\(.*?\)", "", item["desc"]).strip()
response_text += (
f"{i}. **{item['title']}**"
f" - {clean_desc} "
)
response_text += "์ด ์ค‘์—์„œ ์–ด๋–ค ํ™œ๋™์ด ๊ฐ€์žฅ ๋Œ๋ฆฌ์‹œ๋‚˜์š”? ๐ŸŒŸ"
return {
"mode": "recommend",
"recommendations": results,
"response": response_text # ๐Ÿ”น ์—ฌ๊ธฐ์— ํ‚ค๋ฅผ ์ถ”๊ฐ€
}
else:
# โ–ถ 2) ์ฑ—๋ด‡ ๋กœ์ง
if mode not in ["emotion", "rational"]:
raise HTTPException(
status_code=400,
detail="mode๋Š” 'emotion' ๋˜๋Š” 'rational'์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."
)
reply = chat_response(user_text, mode=mode)
return {"mode": "chat", "response": reply}