File size: 9,455 Bytes
114e351
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3c25171
114e351
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3c25171
114e351
3c25171
114e351
3c25171
114e351
 
 
3c25171
114e351
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3c25171
114e351
 
 
 
3c25171
114e351
 
 
 
3c25171
114e351
3c25171
114e351
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
# 놈팽쓰(NomPangS) 기술 명세서

## 1. 시스템 개요

### 1.1 핵심 기능
- **성격 생성**: 4개 입력값(온기, 능력, 외향성, 시간) → 151개 세부 성격 변수 자동 생성
- **유머 매트릭스**: 3차원 좌표계 기반 유머 스타일 정의 및 실시간 조정
- **매력적 결함**: AI 기반 오브젝트 분석 + 성격 조합으로 개성적 단점 생성
- **대화 추적**: 키워드 자동 추출, 관계 발전 단계 계산, 맥락 유지

### 1.2 실제 테스트 데이터 성능
```
test1 (뭉이씨): 3회 대화, 8.67자 평균, "첫_만남" 단계, 키워드 5개
test0 (커피포트): 30회 대화, 37.03자 평균, "친밀한_관계" 단계, 키워드 207개
```

### 1.3 구현 구조
```
nompang_test/
├── app.py                          # 메인 애플리케이션
├── modules/
│   ├── persona_generator.py        # 성격 생성 + 유머 매트릭스
│   ├── image_analyzer.py          # 이미지 분석
│   └── conversation_manager.py    # 대화 관리
├── 뭉이씨_20250528_053729.json    # 생성된 페르소나 데이터  
└── conversation_history_*.json    # 대화 기록 및 분석
```

### 1.4 데이터 플로우
1. **입력**: 사용자 설정(온기75, 능력68, 외향성82) + 이미지 업로드 + 시간선택
2. **처리**: 151개 변수 계산 + 3D 유머좌표 + 매력적결함 AI생성
3. **출력**: JSON 페르소나 + 실시간 대화 + 관계발전 추적
4. **학습**: 대화패턴 분석 → 유머스타일 조정 → 성격 미세조정

---

## 2. 주요 기능 상세

### 2.1 성격 생성 시스템

#### A. 사용자 입력 (4개 조정값)
```
온기: 0-100 (따뜻함 ↔ 차가움)
능력: 0-100 (유능함 ↔ 순수함)
외향성: 0-100 (활발함 ↔ 내성적)
함께한 시간: 새것/몇 개월/1년 이상
```

#### B. 시스템 자동 생성 (151개 세부 변수)
```python
# 예시: 온기 80 설정 시 자동 계산
"W01_친절함": 82,        # 온기 기반 계산
"W02_친근함": 78,        # 온기 + 개성 변동
"C15_배려심": 65,        # 연관 효과
"E01_사교성": 88,        # 외향성 연동

# 151개 변수 카테고리 분포:
# - 기본 온기-능력 차원: 26개 (W10+C16)
# - 빅5 성격 특성: 30개 (E6+A6+N6+O6+성실성6)
# - 매력적 결함: 15개 (F01~F15)  
# - 모순적 특성: 16개 (P01~P16)
# - 소통 스타일: 20개 (S10+H10)
# - 관계 형성: 20개 (R10+D10)
# - 사물 특성: 24개 (OBJ8+FORM8+INT8)
```

### 2.2 유머 매트릭스

#### 3차원 좌표계
```
warmth_vs_wit: 따뜻한 유머 ↔ 지적 위트
self_vs_observational: 자기참조 ↔ 관찰형
subtle_vs_expressive: 미묘함 ↔ 과장됨
```

#### 파생 속성 자동 계산
```
풍자 수준 = (100 - 자기참조) × 0.7 + (100 - 따뜻함) × 0.3
부조리 수준 = 과장됨 × 0.8
말장난 빈도 = 지적위트 × 0.6 + 과장됨 × 0.4
```

### 2.3 매력적 결함 생성

#### 생성 과정
1. **이미지 분석**: 재질, 형태, 용도 파악
2. **성격 연계**: 151개 변수와 사물 특성 조합
3. **AI 생성**: Gemini API로 4개 결함 생성
4. **모순 추가**: 물리적 특성과 성격의 대조

#### 실제 예시 (전기 주전자 "뭉이씨")
```
매력적 결함:
- "물을 너무 빨리 끓여서 가끔 '벌컥'대는 모습이 창피해"
- "석회질 자국은 어쩔 수 없나 봐. 내 늙어감의 증거 같아"

모순적 특성:
- "차가운 금속 몸체로 뜨거운 물을 끓이는 아이러니"
```

### 2.4 대화 분석 시스템

#### 자동 추출 정보
```python
keywords = {
    "word": {
        "category": "음식/관계/취미/감정/기타",
        "frequency": 언급 횟수,
        "last_mentioned": "날짜"
    }
}

user_profile = {
    "message_count": 총 대화 횟수,
    "avg_message_length": 평균 문자수,
    "relationship_level": "첫_만남/알아가는_중/친숙함/친밀함",
    "emotional_tendency": "중립적/긍정적/부정적"
}
```

---

## 3. 샘플 대화 분석

### 3.1 test1 - 뭉이씨 (초기 단계)

#### 대화 내용
```
사용자: "ㄴ"
뭉이씨: "ㄴ? ㅋㅋㅋ 무슨 'ㄴ'이야! 혹시 나 지금 글씨 연습시키는 거야?"

사용자: "에휴 너 좀 시끄럽구나?"
뭉이씨: "에헤이! 😅 시끄럽다니, 섭섭한걸?",

사용자: "너는 뭐야 소개해줘"
뭉이씨: "와! 😄 내가 누군지 궁금해? 뭉이라고 해! 전기 주전자인데, 좀 특별한 영혼이 깃든?"
```

#### 자동 생성된 분석 결과
```json
{
  "message_count": 3,
  "avg_message_length": 8.67,
  "relationship_level": "첫_만남",
  "keywords": ["에휴", "시끄럽구나", "너는", "뭐야", "소개해줘"],
  "emotional_tendency": "중립적"
}
```

### 3.2 test0 - 커피포트 (발전된 단계)

#### 30회 대화 후 결과
```json
{
  "message_count": 30,
  "avg_message_length": 37.03,
  "relationship_level": "친밀한_관계",
  "keywords_count": 207개,
  "주요_키워드": {
    "커피": 5회,
    "차": 3회,
    "친구": 2회,
    "사회화": 2회
  }
}
```

#### 관계 발전 과정
```
1-10회: 기본 기능 중심 ("커피 타왔음", "청소꿀팁")
11-20회: 개인 가치관 공유 ("사회화되기 싫어서 노력했는데")
21-30회: 깊은 고민 토로 ("밍밍하게 사려고 노력하는데 영 재미가 없네")
```

### 3.3 유머 스타일 적응 사례

#### 실시간 조정 과정
```
대화 7회차:
사용자: "쿨시크를 좋아하지"
→ 시스템: 과장된 유머 → 쿨한 스타일로 즉시 조정

대화 9회차:
사용자: "솔직한게 좋아"
→ 시스템: 필터링된 표현 → 직설적 스타일로 전환
```

---

## 4. JSON 데이터 확인 방법

### 4.1 페르소나 정보 확인
```json
// 뭉이씨_20250528_053729.json
{
  "성격특성": {
    "온기": 75,      // 사용자 설정값
    "능력": 68,
    "외향성": 82
  },
  "성격변수151": {
    "W01_친절함": 78,  // 자동 계산된 세부 성격
    "H01_유머감각": 75,
    // ... 총 151개
  },
  "유머매트릭스": {
    "warmth_vs_wit": 45.925,    // 유머 스타일 좌표
    "sarcasm_level": 45.9725    // 풍자 수준
  }
}
```

### 4.2 대화 기록 확인
```json
// conversation_history_20250528_053814.json
{
  "conversations": [
    {
      "user_message": "에휴 너 좀 시끄럽구나?",
      "ai_response": "에헤이! 😅 시끄럽다니, 섭섭한걸?",
      "keywords": ["에휴", "시끄럽구나"],
      "sentiment": "중립적"
    }
  ],
  "user_profile": {
    "relationship_level": "첫_만남",  // 자동 계산된 관계 단계
    "message_count": 3
  }
}
```

---

## 5. 추후 활용 방향

### 5.1 현재 시스템의 한계
```
단순 지표:
- 대화 횟수만으로 관계 판단
- 키워드 단순 매칭
- 고정된 성격 변수

기능 한계:
- 유머 매트릭스 값이 실시간 변경되지 않음
- 시간 요소가 151개 변수에 직접 반영되지 않음
```

### 5.2 발전 방향

#### A. 다차원 관계 점수 시스템
```python
관계_점수 = {
    "물리적_상호작용": {
        "QR_스캔_횟수": 0,
        "앱_사용_시간": 0,
        "연속_접속_일수": 0
    },
    "대화_품질": {
        "깊은_대화_점수": AI_분석_기반,
        "감정_공유_빈도": 감정_키워드_빈도,
        "개인정보_공유": 사적_정보_수준
    },
    "지속성": {
        "주간_접속_빈도": 0,
        "월간_활동_점수": 0
    }
}
```

#### B. 키워드 분석 고도화
```python
# 현재: 단순 매칭
"커피" → "음식" 카테고리

# 목표: 의미 단위 분석
"스트레스 받을 때 커피 마셔" → {
    "상황": "스트레스",
    "행동": "커피",
    "의미": "스트레스_해소_방법",
    "감정": "부정적_상황_대처"
}
```

#### C. 게이미피케이션 확장
```python
관계_레벨링 = {
    1: "첫_만남" (0-100점),
    5: "친근한_사이" (500점),
    10: "절친" (2000점),
    20: "가족_같은_사이" (10000점)
}

점수_획득_방법 = {
    "QR_스캔": 50점,
    "깊은_대화": 100점,
    "연속_접속": 20점/일,
    "감정_공유": 80점
}
```

### 5.3 실제 서비스 확장

#### IoT 연동
```
스마트홈: 조명 + AI 페르소나
자동차: 운전 패턴 + 대화 동반자
웨어러블: 생체 신호 + 감정 상태 반영
```

#### B2B 활용
```
의료: 복약 관리 + 정서적 지지
교육: 학습 동기 + 개인화 교육
마케팅: 브랜드 스토리텔링
```

---

## 6. 구현 우선순위

### 단기 (3개월)
1. **시간 변수 통합**: 함께한 시간을 151개 변수에 직접 반영
2. **실시간 유머 조정**: 대화 피드백으로 매트릭스 값 업데이트
3. **키워드 significance**: 빈도+카테고리+맥락 종합 점수

### 중기 (6개월)
1. **다차원 관계 시스템**: 물리적+대화+지속성 종합 점수
2. **AI 의미 분석**: 문장 임베딩 기반 키워드 추출
3. **동적 성격 진화**: 대화 패턴 기반 성격 미세 조정

### 장기 (12개월)
1. **IoT 연동**: 실제 기기와 페르소나 융합
2. **멀티모달**: 음성, 이미지 입력 처리
3. **B2B 확장**: 의료, 교육, 마케팅 솔루션

---

**현재 허깅페이스 앱**: [nompang_test](https://huggingface.co/spaces/username/nompang_test)  
**테스트 데이터**: test0 (30회 대화), test1 (3회 대화)  
**핵심 파일**: app.py, modules/persona_generator.py