Skip to content

Latest commit

 

History

History
208 lines (160 loc) · 6.57 KB

File metadata and controls

208 lines (160 loc) · 6.57 KB

자동 컬럼 감지 기능 구현 완료 ✅

📝 구현 내용

1. 핵심 기능

자동 컬럼 감지 시스템 (utils/column_detector.py)

  • 60개 이상의 컬럼명 패턴 인식
  • 값 범위 기반 지능형 감지
  • 휴리스틱 분석 (모음, 화자, 시간 등)

데이터 처리 통합 (utils/data_processor.py)

  • process_csv_xlsx() 함수에 자동 감지 기능 통합
  • 기존 코드와 호환성 유지

웹 인터페이스 업데이트 (app.py, templates/index.html)

  • 감지 결과 표시 UI
  • 자동 감지 정보 안내

스타일링 (static/style.css)

  • 감지 정보 하이라이트
  • 사용자 친화적 디자인

2. 테스트 데이터

다양한 형식의 테스트 파일 (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 - 웹 업로드 통합 테스트

3. 문서화

사용자 가이드

  • AUTO_COLUMN_DETECTION_GUIDE.md - 상세 사용 가이드
  • README.md - 메인 문서 업데이트

코드 문서화

  • 모든 함수에 docstring 추가
  • 타입 힌트 및 설명 포함

🧪 테스트 결과

컬럼 감지 테스트

총 5개 테스트 파일 - 100% 성공 ✅

감지된 컬럼 예시:

  • f1_frequencyF1
  • second_formantF2
  • phonevowel
  • participantspeaker
  • L1native_language

웹 업로드 테스트

3개 다른 형식 업로드 - 모두 성공 ✅
시각화 생성 - 정상 작동 ✅

📊 지원하는 컬럼 패턴

F1 포먼트 (10개 패턴)

f1, F1, first_formant, formant_1, F1_Hz, F1 (Hz), f1_frequency, formant1, f1_hz

F2 포먼트 (10개 패턴)

f2, F2, second_formant, formant_2, F2_Hz, F2 (Hz), f2_frequency, formant2, f2_hz

모음 (12개 패턴)

vowel, phone, phoneme, label, segment, vowel_label, phone_label, ipa, sound, v, vow, symbol

화자 (12개 패턴)

speaker, participant, subject, informant, talker, speaker_id, subject_id, spk, id, spkr, participant_id

모국어 (9개 패턴)

native_language, l1, L1, first_language, mother_tongue, language, lang, native_lang, L1_language, l1lang

시간 (10개 패턴)

time, t, timestamp, time_point, time (s), time (ms), midpoint, duration_time, sec, seconds, time_s

기타

  • duration: 8개 패턴
  • gender: 5개 패턴
  • age: 4개 패턴

🔍 감지 알고리즘

3단계 감지 프로세스

  1. 패턴 매칭 (정규표현식)

    • 컬럼명이 정의된 패턴과 일치하는지 확인
    • 대소문자 무시, 공백/언더스코어 유연하게 처리
  2. 값 범위 분석 (숫자 컬럼)

    • F1: 200-1000 Hz 범위
    • F2: 800-3000 Hz 범위
    • F3: 1500-4000 Hz 범위
    • 평균값과 최소/최대값 검증
  3. 휴리스틱 분석 (카테고리 컬럼)

    • 모음: 짧은 문자열 + 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!
- 자동으로 감지됨

Python 코드

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

💡 주요 특징

  1. 유연성: 60개 이상의 패턴 인식
  2. 지능성: 값 기반 자동 추론
  3. 투명성: 감지 결과 상세 표시
  4. 확장성: 쉽게 새 패턴 추가 가능
  5. 호환성: 기존 코드와 완벽 호환

🎯 다음 단계 제안

현재 구현된 기능만으로도 충분히 사용 가능하지만, 추가 개선 가능한 사항:

  1. 다중 화자 비교 시각화 - 여러 화자를 동시에 플롯
  2. 모국어별 그룹화 - L1에 따른 색상 구분
  3. 포먼트 정규화 - Lobanov, Nearey 등 정규화 방법
  4. 모음 공간 면적 계산 - Convex hull 면적 측정
  5. 통계 분석 - 평균, 표준편차, 타원 표시

이러한 기능들은 제안드린 원래 계획에 포함되어 있으니, 필요 시 계속 구현할 수 있습니다!

✅ 완료 체크리스트

  • 자동 컬럼 감지 엔진 구현
  • 데이터 처리 파이프라인 통합
  • 웹 인터페이스 업데이트
  • 테스트 데이터 생성
  • 단위 테스트 작성
  • 통합 테스트 작성
  • 사용자 가이드 작성
  • README 업데이트
  • 모든 테스트 통과 확인

구현 완료! 🎉

Vowel Space Visualizer는 이제 연구자들이 데이터 형식 걱정 없이 바로 사용할 수 있는 지능형 시각화 도구가 되었습니다!