nps_test / info.md
haepada's picture
docs: 성격 변수 개수 127개→151개로 수정 (README.md, info.md)
114e351
# 놈팽쓰(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