Developer's Development
[플레이데이터 SK네트웍스 Family AI 캠프 17기] 9주차 회고 본문
Hello World 👋🏻
8월의 마지막 주를 활기차게 열어보는 주간 회고입니다.
지난주에는 자연어 데이터 준비의 마지막 단계를 거쳐, 본격적인 자연어 딥러닝의 세계로 첫발을 내디뎠어요.
조금은 낯설고 어려웠지만, 그만큼 더 큰 성장을 느낄 수 있었던 한 주간의 기록을 시작해 볼게요!
📅 공부 기록
이번 주는 그야말로 자연어 처리의 핵심을 제대로 파고든 한 주였어요.
텍스트를 요리하기 좋게 손질하는 과정부터, 그 안에 숨은 의미를 찾아내는 방법, 그리고 마침내 문장을 이해하고 분류하는 모델을 만들기까지, 정말 알찬 여정이었습니다.
모든 데이터 분석이 그렇듯, 가장 중요하고 손이 많이 가는 건 역시 텍스트 전처리였어요.
모델이 잘 알아들을 수 있도록, 우리가 쓰는 말을 컴퓨터용 언어로 깔끔하게 다듬어주는 과정이죠.
좋은 요리가 좋은 재료 손질에서 시작되는 것처럼, 텍스트 전처리가 모델 성능에 얼마나 중요한지 온몸으로 느꼈습니다.
👉 토큰화(KoNLPY) 및 형태소 분석
👉 정제, 정규화, 어간/표제어 추출
👉 정수 인코딩, Padding, OOV 처리
👉 원핫인코딩, 워드 클라우드
한국어의 특성을 살려주는 KoLPY로 문장을 의미 단위로 쪼개는 토큰화 및 형태소 분석을 진행하고, 불필요한 단어나 기호를 없애는 정제와 정규화 작업을 거쳤어요. '공부했다', '공부하는' 등의 단어를 '공부하다'라는 기본형으로 통일하는 어간 추출까지 마치니, 비로소가 데이터가 깨끗해지는 기분이었습니다.
이후 단어들을 컴퓨터가 알아들을 수 있도록 고유 번호를 붙이는 정수 인코딩을 하고, 문장 길이를 통일하기 위해 Padding으로 빈 공간을 채워줬어요. 이 과정을 거쳐야 비로소 모델이 학습할 수 있는 네모반듯한 행렬 데이터가 된다는 걸 알았죠!

'사랑', '우정' 같은 단어들을 컴퓨터가 이해할 수 있는 숫자의 좌표(벡터)로 바꿔주는 마법 같은 기술이에요.
덕분에 컴퓨터는 단어의 의미뿐만 아니라 단어 사이의 관계까지 파악할 수 있게 되었어요.
👉 Word Embedding
👉 임베딩 시각화, FastText
단어를 0과 1로만 표현하는 원핫인코딩의 한계를 넘어, 단어의 의미를 다차원 공간의 좌표(벡터)로 표현하는 Word Embedding의 세계에 들어섰습니다. FastText 같은 모델을 사용하고, 임베딩된 단어들을 시각화해서 보니 비슷한 단어끼리 정말 옹기종기 모여있는 게 너무 신기했어요.

"나는 학교에 간다"처럼 단어의 순서가 중요한 문장을 처리하는 방법이에요.
모델이 앞에서 나온 단어를 기억했다가 다음 단어를 이해하는 데 활용하는 원리죠!
👉 RNN
👉 LSTM, GRU
단어의 순서가 중요한 문장을 처리하기 위한 시퀀스 모델링의 개념을 배웠습니다.
이전 단어를 기억하며 다음 언어를 처리하는 RNN의 기본 구조부터, 오래된 정보를 잊어버리는 '게이트'라는 멋진 장치로 해결한 LSTM과 GRU까지, 모델이 어떻게 '문맥'이라는 걸 학습하는지 이해할 수 있었어요.
앞에서 배운 기술들을 총동원해서 실제적인 결과물을 만들어보는 단계였어요.
👉 나이브 베이즈 텍스 분류기, RNN 분류기
👉 멀티 레이블 분류기, NER
👉 n-gram, Perplexity, NNLM
확률 기반의 간단한 나이브 베이즈 분류기부터 문맥을 이해하는 RNN 분류기까지 직접 구현하며 텍스트를 구현해 봤어요.
더 나아가 하나의 글이 여러 주제를 가질 수 있는 멀티 레이블 분류, 문장에서 이름이나 장소 같은 고유명사를 찾아내는 NER(개체명 인식)까지 실습하며 응용력을 길렀습니다.
마지막으로, 주어진 단어들 다음에 어떤 단어가 올지 예측하는 언어 모델링의 세계도 경험했어요.
통계 기반의 n-gram 모델부터 신경망을 활용하는 NNLM까지, 그리고 모델의 성능을 평가하는 Perplexity라는 지표까지 배우며 텍스트 생성의 기본 원리를 맛볼 수 있었습니다.
📝 실습 기록
머리로 이해한 개념들을 손으로 직접 구현해 보는 시간은 언제나 즐겁죠!
이번 주에는 두 가지 개인 미니 프로젝트를 진행하며, 이론과 실습의 간극을 줄여나갔어요.
- Wonderful-Word-Game (유사한 단어 찾기 게임)
https://github.com/mylee99125/Wonderful-Word-Game
GitHub - mylee99125/Wonderful-Word-Game
Contribute to mylee99125/Wonderful-Word-Game development by creating an account on GitHub.
github.com
단어 임베딩을 활용해서 A : B = C : D 같은 단어 유추 관계를 맞히는 게임을 만들어 봤어요.
예를 들면, '산 : 바다 = 나무 :?'라는 문제를 보고, 사용자가 정답인 '물'을 맞히는 식이죠!
단어를 수치적인 표현, 즉 벡터로 변환하는 워드 임베딩 모델(Facebook의 FastText)을 찾아와서 사용했어요.
사용한 데이터셋은 모델이 학습한 데이터로, 이 데이터를 통해 단어의 의미와 단어 간의 관계를 학습했습니다.

- Sentiment-Analysis (감성 분석 모델 학습 및 추론)
https://github.com/mylee99125/Sentiment-Analysis
GitHub - mylee99125/Sentiment-Analysis
Contribute to mylee99125/Sentiment-Analysis development by creating an account on GitHub.
github.com
'한국어 혐오 발언 데이터'를 이용해 모델을 학습시켜, 최종적으로 야구 경기 예측 댓글의 긍정/부정 감성을 예측했어요.
모델로는 LightGBM을 선택했는데, 그 이유는 TF-IDF로 벡터화된 고차원의 희소 행렬 데이터에 대해 학습 속도가 빠르고 일반적으로 우수한 성능을 내기 때문이었어요.
강력한 베이스라인 모델로 성능을 확인해보고 싶었습니다 👀
❌ 발견했던 오류와 해결 과정
처음엔 단순하게 단어 빈도만 세는 CountVectorizer를 썼더니 모델 성능이 생각보다 너무 안 좋아서 당황했어요.
원인을 곰곰이 생각해 보니, 중요한 단어와 그렇지 않은 단어를 구분하지 못하는 게 문제더라고요.
그래서 단어마다 중요도를 계산해 가중치를 두는 TF-IDF Vectorizer로 방식을 바꿨더니, 모델 성능이 눈에 띄게 좋아지는 걸 확인할 수 있었습니다!
이 과정을 통해 어떤 피처 엔지니어링 방식을 선택하느냐가 모델의 성능에 얼마나 큰 영향을 미치는지 직접 깨달을 수 있었어요.

평소에 야구를 정말 좋아해서, 팬들의 생생한 반응이 담긴 댓글을 분석해보고 싶다는 생각을 늘 가지고 있었어요.
실제로 제 관심사를 주제로 데이터를 다루고 모델을 만들어보니, 그냥 공부할 때보다 훨씬 재미있고 결과에 대한 애착도 생기더라고요.
앞으로도 이렇게 제 흥미와 연결되는 실습 프로젝트를 자주 해보면서, 즐겁게 성장하고 싶어요 ⚾
💭 KPT
Keep
이론 공부에서 멈추지 않고, 두 가지 실습 프로젝트에 적용하며 지식을 체화하려고 노력한 점이 가장 좋았어요.
특히 오류가 발생했을 때 포기하지 않고 원인을 분석하며 해결하는 과정에서, 디버깅 능력뿐만 아니라 문제의 본질을 파고드는 힘을 기를 수 있었던 것도 큰 수확입니다.
앞으로도 이렇게 '학습'과 '적용'의 선순환을 계속 이어나가고 싶어요.
Problem
단어 유추 게임의 문제들을 만들 때, 벡터 공간에서는 가깝지만 사람이 보기엔 어색한 단어 관계들이 많아서 좋은 문제를 자동으로 만드는 데 꽤 애를 먹었어요.
또, 모델의 성능을 높이기 위해 여러 파라미터를 조정할 때, 명확한 이론적 근거보다는 여러 번 시도해 보는 방식으로 접근한 점이 조금 아쉬움으로 남아요.
Try
다음 실습에서는 텍스트 데이터를 다룰 때 단순히 기존의 방법을 따르기보다, 좀 더 다양한 기법(형태소 분석기 성능 비교, n-gram 범위 조정 등)으로 시도하며 최적의 조합을 찾아봐야겠어요.
그리고 모델의 하이퍼 파라미터를 튜닝할 때도 체계적으로 최적의 값을 찾아주는 기법들을 공부해서, 감이 아닌 데이터에 근거해서 결정할 수 있는 능력을 키우고 싶어요.
이론을 코드로 옮기는 과정이 생각처럼 쉽지만은 않았지만, 그래도 오류를 해결하고 원하는 결과가 나왔을 때의 기쁨은 정말 크더라고요.
이런 맛에 다들 코딩하고 공부하는 게 아닌가 하는 생각도 들었답니다.
아직은 알아가는 단계라 부족한 점이 많지만, 이렇게 하나씩 기록을 남기다 보면 언젠가는 꽤 성장한 모습이 되어 있겠죠?
그럼 다음 주에도 또 새로운 학습 이야기로 돌아올게요🫡
'회고' 카테고리의 다른 글
| [플레이데이터 SK네트웍스 Family AI 캠프 17기] 11주차 회고 (0) | 2025.09.14 |
|---|---|
| [플레이데이터 SK네트웍스 Family AI 캠프 17기] 10주차 회고 (3) | 2025.09.01 |
| [플레이데이터 SK네트웍스 Family AI 캠프 17기] 8주차 회고 (1) | 2025.08.21 |
| [플레이데이터 SK네트웍스 Family AI 캠프 17기] 7주차 회고 (10) | 2025.08.12 |
| [플레이데이터 SK네트웍스 Family AI 캠프 17기] 6주차 회고 (8) | 2025.08.03 |