✅ 자동 컬럼 감지 시스템 (utils/column_detector.py)
- 60개 이상의 컬럼명 패턴 인식
- 값 범위 기반 지능형 감지
- 휴리스틱 분석 (모음, 화자, 시간 등)
✅ 데이터 처리 통합 (utils/data_processor.py)
process_csv_xlsx()함수에 자동 감지 기능 통합- 기존 코드와 호환성 유지
✅ 웹 인터페이스 업데이트 (app.py, templates/index.html)
- 감지 결과 표시 UI
- 자동 감지 정보 안내
✅ 스타일링 (static/style.css)
- 감지 정보 하이라이트
- 사용자 친화적 디자인
✅ 다양한 형식의 테스트 파일 (300행 × 5개 파일)
test/
├── test_format1.csv # F1, F2, vowel, speaker, L1
├── test_format2.csv # f1_frequency, f2_frequency, phone, participant
├── test_format3.csv # first_formant, second_formant, phoneme, subject_id
├── test_format4.csv # f1, f2, v, spk
└── test_multi_speaker.csv # 6명 화자 × 5개 모음 × 10 시점
✅ 자동 테스트 스크립트
utils/test_data.py- 테스트 데이터 생성기test_column_detection.py- 컬럼 감지 단위 테스트test_web_upload.py- 웹 업로드 통합 테스트
✅ 사용자 가이드
AUTO_COLUMN_DETECTION_GUIDE.md- 상세 사용 가이드README.md- 메인 문서 업데이트
✅ 코드 문서화
- 모든 함수에 docstring 추가
- 타입 힌트 및 설명 포함
총 5개 테스트 파일 - 100% 성공 ✅
감지된 컬럼 예시:
f1_frequency→F1✅second_formant→F2✅phone→vowel✅participant→speaker✅L1→native_language✅
3개 다른 형식 업로드 - 모두 성공 ✅
시각화 생성 - 정상 작동 ✅
f1, F1, first_formant, formant_1, F1_Hz, F1 (Hz), f1_frequency, formant1, f1_hz
f2, F2, second_formant, formant_2, F2_Hz, F2 (Hz), f2_frequency, formant2, f2_hz
vowel, phone, phoneme, label, segment, vowel_label, phone_label, ipa, sound, v, vow, symbol
speaker, participant, subject, informant, talker, speaker_id, subject_id, spk, id, spkr, participant_id
native_language, l1, L1, first_language, mother_tongue, language, lang, native_lang, L1_language, l1lang
time, t, timestamp, time_point, time (s), time (ms), midpoint, duration_time, sec, seconds, time_s
- duration: 8개 패턴
- gender: 5개 패턴
- age: 4개 패턴
-
패턴 매칭 (정규표현식)
- 컬럼명이 정의된 패턴과 일치하는지 확인
- 대소문자 무시, 공백/언더스코어 유연하게 처리
-
값 범위 분석 (숫자 컬럼)
- F1: 200-1000 Hz 범위
- F2: 800-3000 Hz 범위
- F3: 1500-4000 Hz 범위
- 평균값과 최소/최대값 검증
-
휴리스틱 분석 (카테고리 컬럼)
- 모음: 짧은 문자열 + IPA 기호 검사
- 화자: 적정 고유값 개수 (2-50개)
- 시간: 순차적 증가 패턴
vowelspace/
├── utils/
│ ├── column_detector.py # 🆕 자동 감지 엔진
│ ├── test_data.py # 🆕 테스트 데이터 생성기
│ └── data_processor.py # ✏️ 자동 감지 통합
├── test/ # 🆕 테스트 디렉토리
│ ├── test_format1.csv
│ ├── test_format2.csv
│ ├── test_format3.csv
│ ├── test_format4.csv
│ └── test_multi_speaker.csv
├── test_column_detection.py # 🆕 단위 테스트
├── test_web_upload.py # 🆕 통합 테스트
├── AUTO_COLUMN_DETECTION_GUIDE.md # 🆕 사용자 가이드
├── app.py # ✏️ 감지 정보 응답 추가
├── templates/index.html # ✏️ UI 업데이트
├── static/style.css # ✏️ 스타일 추가
└── README.md # ✏️ 문서 업데이트
# 1. 서버 실행 (이미 실행 중)
cd /var/www/html/vowelspace
python3 app.py
# 2. 브라우저 접속
http://localhost:5000
# 3. 파일 업로드
- 어떤 컬럼명이든 OK!
- 자동으로 감지됨from utils.data_processor import process_csv_xlsx
# 자동 감지 활성화 (기본값)
df, info = process_csv_xlsx('data.csv', auto_detect=True)
print("감지된 컬럼:", info['detected'])
print("데이터:", df.head())# 컬럼 감지 테스트
python3 test_column_detection.py
# 웹 업로드 테스트
python3 test_web_upload.py- 유연성: 60개 이상의 패턴 인식
- 지능성: 값 기반 자동 추론
- 투명성: 감지 결과 상세 표시
- 확장성: 쉽게 새 패턴 추가 가능
- 호환성: 기존 코드와 완벽 호환
현재 구현된 기능만으로도 충분히 사용 가능하지만, 추가 개선 가능한 사항:
- ✨ 다중 화자 비교 시각화 - 여러 화자를 동시에 플롯
- ✨ 모국어별 그룹화 - L1에 따른 색상 구분
- ✨ 포먼트 정규화 - Lobanov, Nearey 등 정규화 방법
- ✨ 모음 공간 면적 계산 - Convex hull 면적 측정
- ✨ 통계 분석 - 평균, 표준편차, 타원 표시
이러한 기능들은 제안드린 원래 계획에 포함되어 있으니, 필요 시 계속 구현할 수 있습니다!
- 자동 컬럼 감지 엔진 구현
- 데이터 처리 파이프라인 통합
- 웹 인터페이스 업데이트
- 테스트 데이터 생성
- 단위 테스트 작성
- 통합 테스트 작성
- 사용자 가이드 작성
- README 업데이트
- 모든 테스트 통과 확인
구현 완료! 🎉
Vowel Space Visualizer는 이제 연구자들이 데이터 형식 걱정 없이 바로 사용할 수 있는 지능형 시각화 도구가 되었습니다!