Natural Language Processing with PyTorch
  • 소개글
  • 서문
  • Index
  • 딥러닝을 활용한 자연어 처리 개요
    • 자연어 처리란 무엇일까?
    • 딥러닝 소개
    • 왜 자연어 처리는 어려울까?
    • 무엇이 한국어 자연어 처리를 더욱 어렵게 만들까?
    • 자연어 처리의 최근 추세
  • 기초 수학
    • 서문
    • 랜덤 변수와 확률 분포
    • 쉬어가기: 몬티 홀 문제
    • 기대값과 샘플링
    • Maximum Likelihood Estimation
    • 정보 이론
    • 쉬어가기: MSE 손실 함수와 확률 분포 함수
    • 마치며
  • Hello 파이토치
    • 딥러닝을 시작하기 전에
    • 설치 방법
    • 짧은 튜토리얼
    • 쉬어가기: 윈도우즈 개발 환경 구축
  • 전처리
    • 전처리란
    • 코퍼스 수집
    • 코퍼스 정제
    • 분절
    • 병렬 코퍼스 정렬
    • 서브워드 분절
    • 분절 복원
    • 토치텍스트
  • 유사성과 모호성
    • 단어의 의미
    • One-hot 인코딩
    • 시소러스를 활용한 단어 의미 파악
    • 특징
    • 특징 추출하기: TF-IDF
    • 특징 벡터 만들기
    • 특징 유사도 구하기
    • 단어 중의성 해소
    • Selectional Preference
    • 마치며
  • 단어 임베딩
    • 들어가며
    • 차원 축소
    • 흔한 오해 1
    • Word2Vec
    • GloVe
    • Word2Vec 예제
    • 마치며
  • 시퀀스 모델링
    • 들어가며
    • Recurrent Neural Network
    • Long Short Term Memory
    • Gated Recurrent Unit
    • 그래디언트 클리핑
    • 마치며
  • 텍스트 분류
    • 들어가기
    • 나이브 베이즈를 활용하기
    • 흔한 오해 2
    • RNN을 활용하기
    • CNN을 활용하기
    • 쉬어가기: 멀티 레이블 분류
    • 마치며
  • 언어 모델링
    • 들어가며
    • n-gram
    • 언어 모델의 평가 방법
    • SRILM을 활용한 n-gram 실습
    • NNLM
    • 언어 모델의 활용
    • 마치며
  • 신경망 기계번역
    • 들어가며
    • Sequence-to-Sequence
    • Attention
    • Input Feeding
    • 자기회귀 속성과 Teacher Forcing 훈련 방법
    • 탐색(추론)
    • 성능 평가
    • 마치며
  • 신경망 기계번역 심화 주제
    • 다국어 신경망 번역
    • 단일 언어 코퍼스를 활용하기
    • 트랜스포머
    • 마치며
  • 강화학습을 활용한 자연어 생성
    • 들어가며
    • 강화학습 기초
    • 정책 기반 강화학습
    • 자연어 생성에 강화학습 적용하기
    • 강화학습을 활용한 지도학습
    • 강화학습을 활용한 비지도학습
    • 마치며
  • 듀얼리티 활용
    • 들어가며
    • 듀얼리티를 활용한 지도학습
    • 듀얼리티를 활용한 비지도학습
    • 쉬어가기: Back-translation을 재해석하기
    • 마치며
  • NMT 시스템 구축
    • 파이프라인
    • 구글의 NMT
    • 에딘버러 대학의 NMT
    • MS의 NMT
  • 전이학습
    • 전이학습이란?
    • 기존의 사전 훈련 방식
    • ELMo
    • BERT
    • GPT-2
    • XLNet
    • 마치며
  • 이 책을 마치며
  • 참고문헌
Powered by GitBook
On this page
  1. 텍스트 분류

마치며

이번 장에서는 텍스트 분류에 대해 다루었습니다. 텍스트 분류는 모델 구조의 복잡도나 코드 작성의 난도에 비해 활용도가 매우 높은 분야입니다. 하지만 신경망을 사용하기 이전에는 여전히 불연속적인 값을 희소성 문제를 해결하지 못한 채, 대부분 나이브 베이즈와 같은 방법으로 텍스트 또는 문장을 분류하곤 했습니다. 물론 나이브 베이즈 역시 매우 간단하고 직관적이며 의외로 높은 성능을 보여줄 때도 있지만, 나이브 베이즈에 사용된 '각 특징feature은 독립'이라는 강력한 가정으로 인해 분류의 정확도가 떨어질 수밖에 없었습니다.

하지만 이제는 신경망을 통해서 매우 효율적이고 정확하게 문장 분류를 수행할 수 있습니다. RNN을 통해 단어들을 순차적으로 받아 가장 마지막 time-step에서 분류를 예측하기도 하고, CNN을 통해 분류에 중요한 단어들의 조합에 대한 패턴을 감지하기도 했습니다. 여기서 알 수 있듯이, RNN은 대체로 문장 전체의 맥락과 의미에 더 집중하여 분류를 수행하며, CNN의 경우에는 해당 클래스를 나타내는 단어 조합에 대한 패턴의 유무를 가장 중요하게 여깁니다. 따라서 두 방법을 서로 보완하기 위해 조합하여 앙상블ensemble 모델로 구현한다면 훨씬 더 좋은 결과를 얻을수도 있습니다. 이는 저자의 깃허브에서 제공하는 소스 코드에도 구현되어 있습니다. RNN과 CNN을 활용한 분류 모델들은 가장 간단한 구조들이므로, 이를 기반으로 발전한 다른 모델들을 참고한다면 긴 문장이나 어려운 텍스트에 대해서도 더 높은 성능을 얻을 수 있을 것입니다. 다만 신경망을 사용하는 방법이니만큼, 데이터가 매우 적은 상황에서는 한계가 있다는 점도 잊지 말아야 합니다.

Previous쉬어가기: 멀티 레이블 분류Next언어 모델링

Last updated 5 years ago