티스토리 뷰
55일차) 내일배움캠프 데이터 분석 TIL - Tableau(3), AI 활용 텍스트 데이터 분석(3)
heeso0908 2026. 3. 16. 20:45Tableau
SQL처럼 생각했을 때,
groupby 뒤에 올 수 있는 것: 차원
SELECT뒤에 오는 집계 함수: 집계 수준 함수
groupby 뒤에 못 쓰는 것: 행 수준 → 행 하나하나에 대해서 값을 얻어야 하기 때문에 groupby X
매개변수: 입력값 넣어주기, 기준값을 두고 색상 차이나도록 해주기
딥러닝 기반 텍스트 분류 실습 정리
오늘은 텍스트 분석 중에서도 BERT 계열 모델을 활용한 감성 분류를 실습했다.
이전에는 TF-IDF처럼 단어 빈도를 기반으로 텍스트를 분석하는 방법을 배웠다면, 오늘은 한 단계 더 나아가 문장의 문맥을 이해하는 딥러닝 모델을 직접 다뤄본 시간이었다.
이번 실습을 통해 BERT가 왜 텍스트 분류에서 강력한지, Hugging Face의 pipeline으로 어떻게 쉽게 감성 분류를 수행할 수 있는지, 또 모델의 성능을 어떻게 평가하고 비교하는지까지 전체 흐름을 경험할 수 있었다.
1. 왜 BERT를 사용할까?
기존의 TF-IDF 방식은 단어가 얼마나 자주 등장했는지를 중심으로 텍스트를 숫자로 바꾸는 방법이다.
이 방식은 빠르고 직관적이라는 장점이 있지만, 문맥을 이해하지 못한다는 한계가 있다.
예를 들어
- “이 영화 재미있다”
- “이 영화 재미없다”
두 문장은 비슷한 단어를 포함하고 있지만 실제 의미는 완전히 다르다.
TF-IDF는 이런 차이를 충분히 반영하기 어렵지만, BERT는 문장 안에서 단어가 어떤 맥락으로 쓰였는지를 함께 본다.
즉, 단순히 단어를 세는 것이 아니라 앞뒤 문맥을 함께 고려해 의미를 파악하는 모델(Self Attention)이라는 점이 핵심이다.
2. BERT와 사전학습, 파인튜닝
오늘 실습에서 가장 중요한 개념 중 하나는 사전학습(Pre-training) 과 파인튜닝(Fine-tuning) 이었다.
BERT는 먼저 대량의 텍스트를 이용해 언어의 일반적인 패턴을 학습한다.
이 과정이 사전학습이다.
그 다음, 우리가 해결하고 싶은 특정 작업 예를 들어 감성 분류 같은 문제에 맞게 추가 학습을 시키는데, 이 과정을 파인튜닝이라고 한다.
쉽게 말하면,
- 사전학습: 언어 자체를 폭넓게 배우는 단계
- 파인튜닝: 특정 문제를 잘 풀도록 다듬는 단계
이 구조 덕분에 적은 양의 데이터만 있어도 비교적 좋은 성능을 낼 수 있다.
오늘 실습에서도 이 점이 결과로 분명하게 드러났다.
3. Hugging Face로 감성 분류 체험하기
실습에서는 Hugging Face pipeline을 사용해 감성 분류를 수행했다.
pipeline은 복잡한 모델 로드, 토크나이징, 추론 과정을 한 번에 묶어서 처리해주기 때문에, 초보자도 비교적 쉽게 BERT 기반 모델을 사용할 수 있다.
먼저 영어 감성 분류를 체험하면서 pipeline 사용법을 익혔다.
기본 모델은 영어에 특화된 DistilBERT 기반 감성 분류 모델이었고, 몇 개의 영어 문장을 넣어 긍정과 부정 예측 결과를 확인했다.
이후에는 한국어 감성 분류로 확장했다.
영어 모델은 한국어를 제대로 이해하지 못하기 때문에, 한국어 데이터로 학습된 모델이 필요하다.
이번 실습에서는 KoELECTRA 기반의 한국어 감성 분류 모델을 사용했다.
직접 한국어 리뷰 문장을 넣어보니 긍정/부정을 꽤 자연스럽게 분류하는 모습을 확인할 수 있었다.
이 과정을 통해 “사전학습된 모델을 가져와 바로 활용할 수 있다”는 것이 얼마나 강력한지 실감할 수 있었다.
- Hugging Face pipeline() 함수의 수행 작업 순서: 모델 로드 → 토큰화 → 모델 추론 → 결과 후처리
4. TF-IDF 때와 BERT 때 전처리가 왜 다를까?
이전 텍스트 분석 실습에서는 텍스트를 정제하고, 형태소 분석을 하고, 불용어를 제거하는 등 전처리 작업이 굉장히 중요했다.
그런데 이번 BERT 실습에서는 그런 전처리를 거의 하지 않았다.
이 차이가 인상적이었다.
TF-IDF는 사람이 직접 단어를 잘 정리해서 모델이 볼 수 있게 만들어줘야 하지만,
BERT는 자체 토크나이저를 통해 텍스트를 분절하고 문맥을 반영해 처리할 수 있다.
그래서 복잡한 형태소 분석이나 불용어 제거 없이도 원문에 가까운 텍스트를 활용할 수 있다.
즉,
- 전통적인 NLP는 사람이 규칙 기반으로 많이 정리해야 하고
- 딥러닝 기반 NLP는 모델이 문맥을 반영해 직접 학습한다는 차이가 있다.
이 부분을 비교해보면서, 텍스트 분석에서도 모델에 따라 전처리 전략이 달라진다는 점을 확실히 이해하게 됐다.
5. 실제 데이터로 모델 평가하기
실습에서는 한국어 감성 분류 모델을 실제 리뷰 데이터에 적용하고 성능을 평가했다.
사용한 데이터는 NSMC(Naver Sentiment Movie Corpus) 였고, 이 중 일부 샘플을 이용해 모델이 얼마나 잘 예측하는지 확인했다.
단순히 예측 결과만 보는 것이 아니라,
다음과 같은 지표를 활용해 모델을 평가했다.
- Accuracy: 전체 중 맞힌 비율
- Precision: 긍정이라고 예측한 것 중 실제 긍정 비율
- Recall: 실제 긍정 중 긍정이라고 맞힌 비율
- F1-score: Precision과 Recall의 균형 지표
실습 결과는 전반적으로 높은 수준이었고,
특히 정확도와 F1-score가 모두 준수하게 나와 감성 분류 모델이 실제로 꽤 잘 작동한다는 점을 확인할 수 있었다.
또한 혼동행렬을 통해
- 부정을 부정으로 잘 맞힌 경우
- 긍정을 긍정으로 잘 맞힌 경우
- 부정을 긍정으로 잘못 예측한 경우
- 긍정을 부정으로 잘못 예측한 경우
를 구분해서 볼 수 있었다.
이런 방식은 단순히 “정확도가 몇 %다”에서 끝나는 것이 아니라, 어떤 실수를 하는 모델인지까지 이해하게 해준다는 점에서 유용했다.
6. 모델 크기와 성능 비교
이번 실습에서는 서로 다른 한국어 감성 분류 모델도 비교해보았다.
큰 모델과 작은 모델을 비교했을 때, 일반적으로는 파라미터 수가 많은 모델이 더 좋은 성능을 보였지만, 그만큼 메모리 사용량과 계산량도 커진다.
즉, 모델 선택에서는 무조건 큰 모델이 좋은 것이 아니라
성능과 자원 사용량 사이의 균형도 중요하다는 점을 알 수 있었다.
실무에서는 서비스 환경, 응답 속도, 서버 자원 등을 함께 고려해야 하기 때문에
이런 비교가 단순한 실습을 넘어 실제 적용 관점에서도 의미가 있다고 느꼈다.
7. 직접 학습해보기: 랜덤 초기화 vs 파인튜닝 vs 동결
오늘 실습에서 가장 흥미로웠던 부분은
이미 학습된 모델을 가져와 바로 쓰는 것에서 끝나지 않고, 직접 학습 방식까지 비교해본 것이었다.
비교한 방식은 크게 세 가지였다.
1) 랜덤 초기화 학습
모델 구조만 가져오고, 가중치는 랜덤한 상태에서 처음부터 학습하는 방식이다.
말 그대로 백지 상태에서 시작하는 셈이다.
적은 데이터만으로는 성능이 좋지 않다는 점을 확인할 수 있었다.
2) 파인튜닝
사전학습된 모델을 가져와 추가 학습하는 방식이다.
이미 언어에 대한 기본 이해가 있는 상태에서 시작하기 때문에(사전학습 과정에서 이미 언어의 일반적인 패턴을 학습했기 때문에), 적은 데이터에서도 랜덤 초기화보다 훨씬 나은 성능을 보였다.
3) Encoder 동결 학습: 데이터 양이 적고, 기존의 사전학습 능력을 그대로 유지하고 싶을 때
사전학습된 Encoder는 그대로 두고, 마지막 분류 헤드만 학습하는 방식이다.
이 방법은 전체를 학습하는 것보다 계산량이 적고 빠르게 학습할 수 있다는 장점이 있다.
특히 자원이 부족한 환경에서 유용할 수 있다.
실습 결과를 보면,
역시 사전학습된 모델을 활용하는 방식이 랜덤 초기화보다 훨씬 유리했다.
이 결과를 통해 왜 자연어 처리에서 사전학습 모델이 중요한지 직접 체감할 수 있었다.
- Encoder 동결(Freeze): 본체의 능력을 고정하고 분류 헤드만 학습함으로써 적은 데이터로 인한 과적합을 방지하고 빠르게 학습할 수 있다.
8. 토크나이징도 직접 확인해보기
직접 학습 파트에서는 문장이 실제로 모델에 들어갈 때 어떤 형태로 바뀌는지도 확인했다.
원래의 문장은 모델이 바로 이해하는 것이 아니라, 토큰 ID라는 숫자 형태로 변환되어 입력된다.
예를 들어 문장 앞뒤에 [CLS], [SEP] 같은 특수 토큰이 붙고,
문장은 일정 길이에 맞게 잘리거나 패딩이 추가된다.
또 attention mask를 통해 어떤 부분이 실제 텍스트이고 어떤 부분이 패딩인지 구분한다.
이 과정을 보면서,
우리가 평소 자연어라고 생각하는 문장이 모델 내부에서는 결국 숫자 시퀀스로 처리된다는 점을 더 분명히 이해할 수 있었다.
BERT와 GPT의 Tokenizer는 서로 다르다. (어느 기준으로 텍스트르 자를건지=토큰화 할건지? Tokenizer의 주된 역할)
9. 학습한 모델 저장과 재사용
실습 후반부에서는 학습한 모델을 저장하고, 다시 불러와 새로운 텍스트에 대해 예측하는 과정도 다뤘다.
이 부분은 실무 활용 측면에서 특히 중요하다고 느꼈다.
모델은 한 번 학습하고 끝나는 것이 아니라,
저장해두었다가 필요할 때 다시 불러와 예측에 사용할 수 있어야 한다.
그래야 실제 서비스나 프로젝트 환경에서 재사용이 가능하다.
즉, 오늘 실습은 단순히 “모델이 돌아간다” 수준이 아니라
모델 학습 → 평가 → 저장 → 재활용까지 전체 파이프라인을 경험해본 셈이다.
10. 오늘 실습을 통해 느낀 점
오늘 실습을 통해 가장 크게 느낀 점은,
텍스트 분석이 더 이상 단순한 단어 빈도 분석에 머무르지 않는다는 것이다.
물론 TF-IDF 같은 전통적인 방법도 여전히 유용하다.
하지만 문맥을 이해해야 하는 문제, 예를 들어 감성 분류나 문장 분류 같은 작업에서는
BERT 계열 모델이 훨씬 강력한 접근 방식이라는 점을 확인할 수 있었다.
또한 이번 실습을 통해 단순히 모델을 사용하는 것뿐 아니라
- 사전학습 모델이 왜 중요한지
- 파인튜닝이 왜 효과적인지
- 모델 성능을 어떤 기준으로 평가해야 하는지
- 자원이 제한될 때 어떤 학습 전략을 선택할 수 있는지
까지 함께 생각해볼 수 있었다.
결국 오늘 배운 핵심은
텍스트를 숫자로 바꾸는 방법을 넘어서, 문맥까지 이해하는 모델을 활용하는 방법이었다고 정리할 수 있을 것 같다.
- BERT (Encoder Only): 문맥을 양방향으로 읽어 들여 '의미를 파악'하는 데 특화되어 있다. 문장 속 단어들 사이의 관계를 추출하는 추출기(Extractor) 역할을 한다.
- GPT (Decoder Only): 이전 단어들을 바탕으로 '다음 단어를 생성'하는 데 최적화되어 있다. 문장을 이어 쓰는 생성기(Generator) 역할을 한다.
- ELECTRA vs BERT: 사전 학습 방식이 다르다!
- 한 문장의 모든 토큰을 진짜/가짜 판별 대상으로 활용하기 때문
- ELECTRA는 '틀린 그림 찾기' 방식인 Replaced Token Detection을 통해 문장 전체의 토큰을 학습에 참여시킨다.
- Epoch 개념: 전체 학습 데이터를 훈련하는 횟수
- Batch Size: 한번에 처리하는 데이터 사이즈(훈련 or 추론할 때)
- Batch Size가 크면 좋은 점
- 학습 속도가 빠르다
- 학습 안정화(Batch가 크다 → 다양한 샘플들의 나온 결과로 Loss(손실값) → 안정적이고 일반화된 파라미터 업데이트가 가능하다!)
'내일배움캠프 데이터 분석' 카테고리의 다른 글
| 57일차) 내일배움캠프 데이터 분석 TIL - Tableau(5), AI 활용 텍스트 데이터 분석(5) (0) | 2026.03.18 |
|---|---|
| 56일차) 내일배움캠프 데이터 분석 TIL - Tableau(4), AI 활용 텍스트 데이터 분석(4) (0) | 2026.03.17 |
| 54일차) 내일배움캠프 데이터 분석 TIL - Tableau(2), QCC(2), AI 활용 텍스트 데이터 분석(2) (0) | 2026.03.13 |
| 심화 프로젝트) 다이캐스팅 공정 불량 탐지 모델 개발 프로젝트 (1) | 2026.03.12 |
| 53일차) 내일배움캠프 데이터 분석 TIL - Tableau(1), AI 활용 텍스트 데이터 분석(1) (0) | 2026.03.12 |
- Total
- Today
- Yesterday
- Python
- git
- 데이터시각화
- 판다스
- 데이터분석
- 코딩기초
- 데이터분석입문
- SQL
- 코딩처음
- 비전공자코딩
- 머신러닝
- 통계
- github
- 내일배움캠프
- 텍스트분석
- Tableau
- 중학생코딩
- 파이썬
- 태블로
- Til
- 코드카타
- 프로그래밍입문
- GoogleColab
- 구글코랩
- 파이썬입문
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
