<Bag-of-Words>
Step 1. Constructing the vocabulary containing unique words
Example sentences: “John really really loves this movie“, “Jane really likes this song”
Vocabulary: {“John“, “really“, “loves“, “this“, “movie“, “Jane“, “likes“, “song”}
-중복 단어 제거
- 8개의 단어이므로 8차원 벡터 공간을 설정하여 해당 차원의 값만을 1, 나머지는 0으로 설정하여 나타낼 수 있음
- 단어 의미에 상관 없이 동일 관계를 가진 벡터로 설정
- 이러한 one-hot vector들을 더한 것으로 문장/문서를 표현할 수 있음. 이를 Bag-of-Words라고 부름
- 단어장 속에서 존재하는 word별로 가방을 준비하고, 문장에서 나타난 단어들을 순차적으로 그에 해당하는 가방에 넣어준 후, 최종적으로 가방에 들어간 단어의 수를 세어 최종 벡터로 나타낸다고 생각할 수 있기 때문
<NaiveBayes Classifier>
ex) 정해진 문서 d를 정치, 경제, 문화, 스포츠 4개 중 하나로 분류하는 경우 c=4
가장 높은 확률을 가지는 c를 택하는 방식
- 문서 d는 word 1~n까지의 동시 사건으로 볼 수 있음
- 클래스 c가 고정되어 있는 경우 각 단어가 등장할 확률은 독립으로써 곱한 형태로 나타낼 수 있음
- 문서가 주어지기 이전 각 클래스가 나타날 확률과 특정 클래스가 고정되어 있을 때 각 단어가 나타날 확률을 추정함으로써 NaiveBayes Classifier가 필요로 하는 parameter를 추정할 수 있음
- 가장 확률값이 큰 class로 분류 예측값을 내어주게 됨
- Test 문장에서 특정 단어가 학습 데이터에 없다면 다른 단어가 아무리 밀접한 관련이 있다 하더라도 0을 곱하게 됨으로써 그 클래스로 분류하는 것이 불가능해짐
<실습>
<NaiveBayes Classifier>
1. 주어진 데이터 전처리
2. NaiveBayes 분류기 모델을 구현, 학습 데이터로 이를 학습
3. 간단한 test case로 결과를 확인
- 긍정( 1 ), 부정( 0 ) 2가지 class로 구성
- KoNLPy 패키지에서 제공하는 Twitter(Okt) 토큰화기를 사용하여 토큰화
- 토큰화된 단어들을 숫자로 변환할 수 있도록 학습 자료의 모든 단어들을 vocaburary에 추가하고, 단어를 숫자로, 숫자를 단어로 바꾸는 객체 만들기
- 모델 구현
- 모델 학습
- 테스트
<말뭉치 정돈 및 텍스트 전처리>
한국어 말뭉치 전처리 모듈
- 한나눔(Hannanum), 크마(Kkma) 모듈을 이용하여 한국어 문장의 품사 분석 진행
- 카카오에서 만든 CNN (Convolutional Neural Network) 기반 오픈소스 한국어 형태소 분석기, Khaiii 사용
- 부적절한 띄어쓰기가 포함된 문장을 전처리하기 위한 심층학습을 이용한 전처리기들이 두각을 드러내고 있음
- 그 중 하나인 PyKoSpacing 사용! RNN (Recurrent Neural Network) 중 하나인 Gated Recurrent Unit (GRU)와 CNN을 사용하여 모델을 구성 및 학습한 전처리기임
- 네이버 한국어 맞춤법 검사기를 기반으로 하여 제작된 Py-Hanspell을 사용
정규 표현식 (Regular Expression)
'부스트캠프 AI Tech' 카테고리의 다른 글
Word Embedding: Word2Vec, GloVe (0) | 2022.10.11 |
---|---|
22-10-11 깃헙특강 (0) | 2022.10.11 |
Transformer (0) | 2022.10.09 |
Custom Dataset 및 Custom DataLoader 생성 과제 정리 (0) | 2022.10.02 |
Custom Model 제작 과제 정리 (0) | 2022.10.01 |
댓글