SK네트웍스 Family AI캠프 16기

[플레이데이터 SK네트웍스 Family AI캠프 16기] 10주차 회고

minorii 2025. 8. 26. 10:11

✅ 일주일 동안 한 일과 느낀 점

10주차는 자연어 처리(NLP) 심화 주차였다.
이전 주차에서는 이미지·시계열·구조화 데이터 등 다양한 입력 데이터를 다뤘다면, 이번 주는 텍스트 데이터에 집중해 학습을 진행했다.
문장을 생성하거나 요약하고, 감정을 분류하고, 개체명을 인식하고, 번역까지 하는 등 NLP의 대표적인 태스크를 직접 실습했다.

특히 18일~19일에는 KoGPT2와 GPT2 모델을 중심으로 생성·요약·파인튜닝을 다뤘고, 20일에는 자동차 매뉴얼 PDF 분석과 소설 이어쓰기 같은 창작형 NLP를 경험했다. 21일은 기업 AI 서비스 사례와 문서 전처리(청킹)를 학습했고, 마지막 날인 22일은 프롬프트 엔지니어링과 API 챗봇 구현으로 한 주를 마무리했다.


✅ 주요 학습 내용 및 기술 회고

📌 8월 18일 — NLP

  • KoGPT2 문장 생성 (KoGPT2_문장생성.ipynb, Greedy_vs_Top_k_vs_Nucleus.ipynb)
    HuggingFace 라이브러리로 KoGPT2 모델을 불러와 문장을 자동 생성했다.
    Greedy Search(가장 확률 높은 단어만 선택), Top-k(상위 k개 중 무작위 선택), Nucleus Sampling(누적 확률 p 이하 단어 선택)을 비교하면서, 같은 모델이라도 생성 전략에 따라 결과 문체가 전혀 달라진다는 점을 체감했다.
    예를 들어 Greedy는 문장이 단조롭고 반복적인 경향이 강했고, Top-k는 다양하지만 때때로 비문이 섞였다. Nucleus는 두 가지의 균형을 맞추며 가장 자연스러운 결과를 내는 경우가 많았다.
  • 텍스트 요약 (텍스트_요약.ipynb)
    긴 문단을 핵심으로 줄이는 추출적 요약과 새로운 문장을 만들어내는 생성적 요약을 모두 실습했다.
    키워드 중심 요약에서는 TF-IDF 기반으로 핵심 단어를 뽑았고, Transformer 기반 모델은 문맥을 고려해 더 자연스러운 요약문을 생성했다.
    → 단순히 글을 줄이는 게 아니라, “무엇을 빼고 무엇을 남길지"가 중요
  • 기계 번역 (기계번역.ipynb)
    영어 ↔ 한국어 번역을 수행하며 Seq2Seq RNN 구조와 Transformer 기반 모델의 차이를 확인했다.
    RNN 기반 번역은 장문에서 맥락을 잃는 경우가 많았지만, Attention 메커니즘을 쓴 Transformer는 문맥을 유지하며 자연스러운 번역을 수행했다.
    → 번역 모델에서 Attention이 “단어 간 연결 다리” 역할을 한다는 사실을 직관적으로 이해할 수 있었다.
  • 감정 분석 (감정분석_어텐션.ipynb, 감정_분석_토큰.ipynb)
    리뷰 데이터를 활용해 긍정/부정을 분류했다. Attention을 적용한 모델은 단순 RNN보다 높은 정확도를 보였고, 토큰 단위 감정 분석은 특정 단어(예: “최고”, “별로”)가 감정 결과에 어떻게 기여하는지를 보여주었다.
    → 감정 분석이 단순 분류를 넘어서 해석 가능한 AI(Explainable AI)와도 연결될 수 있음을 배웠다.
  • 품사 태깅 (품사_태깅.ipynb, 품사_태깅_추가.ipynb)
    형태소 단위로 명사, 동사, 조사 등을 구분하는 태깅 실습을 진행했다.
    한국어는 조사와 어미 변화가 많아 영어보다 품사 태깅 난도가 높았다. 특히 복합어 처리에서 분석기마다 결과가 달라지는 모습을 보고, 전처리 단계가 NLP 전체 성능에 큰 영향을 미친다는 점을 알게 됐다.
  • 개체명 인식 (NER) (개체명_인식.ipynb, NER.ipynb)
    BIOES 태깅 스킴을 사용해 문장에서 인물, 장소, 기관명 등을 추출했다. 뉴스 기사 데이터를 넣어봤을 때, 모델이 문맥 속에서 단어 경계를 제대로 구분하는 게 중요하다는 걸 배웠다.
  • 텍스트 분류 (가사·리뷰·뉴스) (한국가요_분류.ipynb, 쇼핑몰_분석.ipynb, 네이버쇼핑_분석_과제.ipynb, 한국뉴스_데이터셋_분류.ipynb)
    실제 데이터를 분류하는 과정에서, 데이터셋 특성에 맞춘 전처리가 성능에 직결된다는 점을 확인했다.
    예를 들어 가사 데이터는 은유적인 표현이 많아 감정 분류가 까다로웠고, 리뷰 데이터는 특정 단어 빈도만으로도 비교적 쉽게 긍/부정을 예측할 수 있었다.
  • 챗봇 대화 (챗봇_대화.ipynb)
    Intent 분류와 Slot Filling을 기초적으로 경험했다. 단순히 “대답을 내놓는 것”이 아니라, 사용자의 의도를 파악해 적절한 응답을 생성하는 구조라는 점이 흥미로웠다.

📌 8월 19일 — 요약·분류·파인튜닝의 확장

  • 뉴스 요약 (키워드_뉴스요약.ipynb, 뉴스_본문_요약챗봇.ipynb)
    키워드 추출 기반 요약과, 대화형으로 기사 요약을 반환하는 챗봇을 구현했다. 단순 요약을 넘어, 사용자와 인터랙션하는 형태로 확장할 수 있음을 배웠다.
  • 뉴스 감정 분류 (뉴스_긍정_부정_GPT2.ipynb)
    GPT2 모델을 감정 분류에 적용해보니, 생성형 모델도 분류에서 충분히 경쟁력 있다는 걸 확인했다. 특히 미세 조정된 GPT2는 감정 레이블 분류 성능이 안정적이었다.
  • 챗봇 파인튜닝 (챗봇_파인튜닝_GPT2.ipynb)
    대화 데이터를 GPT2에 파인튜닝해 챗봇을 개선했다. 학습 전후 모델을 비교했을 때, 파인튜닝 후 응답이 훨씬 맥락에 맞고 자연스러워졌다.
  • 문장 생성 (GPT2) (문장생성(GPT2).ipynb)
    같은 시드 문장으로도 sampling 전략(Top-k, Nucleus)에 따라 전혀 다른 분위기의 텍스트가 나왔다.
    생성형 모델의 “창의성”은 파라미터 설정에서 비롯된다는 점을 배웠다.
  • 품사 태깅 확장 (품사_태깅 (1).ipynb)
    전날보다 더 큰 데이터셋을 적용해, 희귀 단어나 복합어에서 오분류되는 경우를 분석했다.

📌 8월 20일 — 데이터와 창작의 교차점

  • 자동차 매뉴얼 PDF 분석 (LX3_2026_ko_KR.pdf)
    현대자동차 차량 취급설명서를 살펴보며, 방대한 문서 데이터도 NLP 모델의 입력으로 다룰 수 있음을 확인했다. 매뉴얼은 QA 시스템, 검색 엔진, 챗봇 같은 서비스로 확장할 수 있는 잠재력이 크다.
  • 화면 챗봇 구현 (화면_챗봇.ipynb)
    Streamlit으로 UI까지 제작한 챗봇을 실습했다. 단순 모델링이 아닌 사용자 경험(UX)까지 고려하는 훈련이었다.
  • 소설 이어쓰기 (소나기.ipynb, 소설.ipynb)
    『소나기』 원문을 이어 쓰는 방식으로 문학적 텍스트 생성을 시도했다. 모델이 원작 분위기를 어느 정도 재현했지만, 긴 맥락이 유지되지 못했다.
  • 문장 생성 심화 (문장_생성_길게.ipynb, 문장_생성.ipynb)
    짧은 문장은 비교적 자연스러웠지만, 긴 문장은 coherence가 깨지는 경우가 많았다. Sampling 전략과 temperature 조절로 이를 보완하는 방법을 실험했다.

📌 8월 21일 — 현업 AI 사례와 데이터 전처리

  • CJ 올리브네트웍스 AI 서비스 사례 (CJ OliveNetworks_AI서비스.pdf)
    Vision AI, Language AI, Generative AI 등 실제 기업이 어떻게 AI를 활용하는지 사례를 학습했다. 보험 사고 사진 인식, 영화 CGV 무비필터, 온라인몰 키워드 검출, 방송 심의 자동화 등 구체적 예시가 흥미로웠다.
  • 다국어 번역기 (다국어번역기.ipynb)
    한국어 ↔ 영어/중국어/일본어 번역 실습. 직역과 의역의 차이를 비교하며, 단순 언어 치환이 아닌 문맥 이해가 필요함을 배웠다.
  • 데이터 청킹 및 증분 처리 (데이터수집_청킹_증분.ipynb, Chunks.ipynb, chunking_gradio.ipynb)
    긴 문서를 문단·문장 단위로 잘라 QA와 요약에 활용하는 방법을 실습했다.
    Gradio를 활용한 시각화 덕분에 청킹 과정이 직관적으로 보였다.

📌 8월 22일 — 프롬프트·창작·서비스 연결

  • 가사 분석 (가사분석.ipynb)
    가사 속 반복되는 키워드와 감정을 분석, 음악 데이터의 특수성을 경험했다.
  • 뉴스 비서 (뉴스_비서.ipynb)
    뉴스 기사 기반 Q&A 챗봇 구현. 단순 요약이 아닌, 사용자 맞춤형 답변을 제공하는 실습이었다.
  • 소설 이어쓰기 (소나기_gpt.ipynb)
    『소나기』 원문을 GPT가 이어서 쓰도록 시도. 원작 스타일은 모방했으나 맥락 유지에는 어려움이 있었다.
  • 날씨 설명 (서울날씨_GPT.ipynb)
    단순 기상 정보를 스토리텔링 방식으로 바꾸어 생성했다. 같은 데이터를 다양한 톤으로 바꿀 수 있음을 알게 됐다.
  • 프롬프트 엔지니어링 (Chain-of-Thought) (프롬프팅_cot.ipynb)
    모델이 중간 추론 과정을 단계별로 출력하도록 유도해, 수학/논리 문제에서 성능 향상을 확인했다.
  • API 기반 챗봇 (API_chat.ipynb)
    OpenAI API를 활용한 대화형 챗봇을 제작. 파라미터 조절만으로 챗봇의 성격을 바꿀 수 있었다.

✅ 아쉬웠던 점 & 개선 포인트

  • KoGPT2, GPT2 모델은 미세조정을 해보았으나, 더 깊은 파인튜닝과 데이터 증강 실험까지는 시도하지 못했다.
  • 긴 문장 생성과 소설 이어쓰기에서는 여전히 coherence 문제가 드러났다.
  • 기업 사례는 인사이트는 많았지만, 직접 구현과 연결되는 활동은 부족했다.

✅ 마무리

10주차는 “언어를 이해하고, 생성하고, 분류하고, 대화하는 AI”를 전방위적으로 배우는 주차
18일부터 22일까지 이어진 실습을 통해 NLP의 거의 모든 핵심 태스크를 직접 체험했고, 단순히 모델 성능을 확인하는 것을 넘어 데이터 전처리 전략·프롬프트 설계·서비스화 가능성까지 고민할 수 있었다.

앞으로 프로젝트에서는 이번 주에 다진 NLP 경험을 적극적으로 활용해, 모델 성능뿐 아니라 실제 서비스로 연결되는 완성도까지 높여보고 싶다.