Word2Vec 임베딩을 활용하여 K-POP 가사에서 특정 키워드의 의미가 시대별로 어떻게 변화했는지 분석하는 프로젝트입니다.
멜론 차트 데이터(1996-2025)를 기반으로 3개 시대(Era)로 나누어 각 시대별 Word2Vec 모델을 학습하고, 키워드의 유사 단어 변화를 추적합니다.
| 시대 | 기간 | 특징 |
|---|---|---|
| Era1 | 1996-2005 | 1세대 아이돌, 발라드 전성기 |
| Era2 | 2006-2015 | 2세대 아이돌, K-POP 글로벌화 |
| Era3 | 2016-2025 | 3-4세대 아이돌, 다양한 장르 |
이별, 사랑, 연락, 새벽, 친구, 거울, 약속, 눈물
pip install pandas gensim scikit-learn matplotlib openpyxlKPOP_LYRICS_ANALYSIS/
├── processed_lyrics/ # 전처리된 가사 데이터 (입력)
│ ├── Processed_1996.xlsx
│ ├── Processed_1997.xlsx
│ └── ...
├── output/ # 분석 결과 (출력)
│ ├── analysis_report.txt # 시대별 유사 단어 요약
│ ├── word_sources_report.txt # 유사 단어 출처 곡 상세
│ └── tsne_*.png # t-SNE 시각화
├── lyrics_semantic_analysis.py # 메인 분석 코드
└── README.md
processed_lyrics/ 폴더의 Excel 파일에는 다음 컬럼이 필요합니다:
| 컬럼 | 설명 |
|---|---|
| Year | 연도 |
| Month | 월 |
| Rank | 차트 순위 |
| Title | 곡 제목 |
| Artist | 아티스트 |
| Song_ID | 곡 고유 ID (중복 제거용) |
| Lyrics | 원본 가사 |
| Processed_Tokens | 형태소 분석된 토큰 리스트 (문자열) |
python lyrics_semantic_analysis.py시대별 키워드 유사 단어 요약:
■ '이별'의 시대별 의미 변화
--------------------------------------------------
[Era1 (1996-2005)]
기약, 예고, 서글프다, 울먹이다, 충분히, ...
[Era2 (2006-2015)]
아프다, 헤어지다, 버려지다, 후유증, ...
[Era3 (2016-2025)]
결코, 뒤돌아서다, 베이다, 잠수, 찢어지다, ...
각 유사 단어가 등장한 곡 목록과 원문 가사 문맥:
■ 졸리다 (유사도: 0.732) - 총 8곡
-------------------------------------------------------
[2018] 벤, 김원주 (2F) - 첫날밤 #94
→ "...12시가 지나면 넌 항상 졸리다 하며 전화를 걸었는데..."
[2021] TWICE (트와이스) - Alcohol-Free #20
→ (토큰 매칭, 원문 문맥 미발견)
각 키워드별 시대별 의미장(semantic field) 시각화:
- 중심: 타겟 키워드 (빨간색)
- 주변: 유사 단어들 (거리 = 의미적 유사도)
| 파라미터 | 기본값 | 설명 |
|---|---|---|
| vector_size | 100 | Word2Vec 임베딩 차원 |
| window | 4 | 문맥 윈도우 크기 |
| min_count | 5 | 최소 등장 횟수 |
| min_doc_count | 5 | 최소 등장 곡 수 |
- 단어의 분포적 의미(distributional semantics)를 학습
- "비슷한 문맥에서 등장하는 단어는 비슷한 의미를 가진다"
- 빈도가 아닌 문맥 패턴의 유사성을 측정
- min_doc_count: 특정 곡에만 등장하는 단어(과적합) 제거
- 불용어: 의미 없는 기능어 제거 (하다, 되다, 나, 너 등)
- 의성어: 반복 어구 제거 (라라라, 둠칫둠칫 등)
- 중복 제거: 시대별로 Song_ID 기준 동일 곡 제거 (같은 곡이 여러 시대에 차트인했으면 각 시대에서 유지)
Processed_Tokens에서 원형(lemma) 매칭 → 형태소 분석기가 복원한 모든 활용형 포함Lyrics에서 어간 검색 → 원문 문맥 추출- 단어 경계 확인 → '수군대'가 '군대'로 잘못 매칭되는 것 방지
'연락'의 시대별 변화:
- Era1 (1996-2005):
버릇, 화내다, 귀찮다→ 연인 간 갈등/짜증의 맥락 - Era2 (2006-2015):
부재중, 배터리, 일주일→ 휴대폰/일상의 맥락 - Era3 (2016-2025):
답장, 문자, 졸리다→ 메신저/밤늦은 대화의 맥락
MIT