해당 게시물은 '박조은'강사님의 인프런 강의, [NLP] IMDB 영화리뷰 감정 분석을 통한 파이썬 텍스트 분석과 자연어 처리를 정리한 게시글입니다.
Depth 에따라 언더피팅, 오버피팅이 갈림
파트 1
NLP는? NLP(자연어처리)는 텍스트 문제에 접근하기 위한 기술집합이다.
이 튜토리얼에서는 IMDB 영화 리뷰를 로딩하고 정제하고 간단한 BOW(Bag of Words) 모델을 적용하여 리뷰가 추천인지 아닌지에 대한 정확도를 예측한다.
이번 파트에선 정제한 데이터를 바탕으로 지도학습을 진행할 것이다.
데이터를 정제하면서 제출 점수를 높여본다.
- uni-gram 사용 시 캐글 점수
- tri-gram 사용 시 캐글 점수
- 어간추출 후 캐글 점수
- 랜덤포레스트의 max_depth = 5 로 지정하고
- CountVectorizer의 tokenizer=nltk.word_tokenize 를 지정 후 캐글 점수
- 랜덤포레스트의 max_depth = 5 는 다시 None으로 변경
- CountVectorizer max_features = 10000개로 변경 후 캐글 점수
- CountVectorizer의 tokenizer=nltk.word_tokenize 를 지정 후 캐글 점수
- CountVectorizer max_features = 10000개로 변경 후 캐글 점수
n-gram 개념
이때 임의의 개수를 정하기 위한 기준을 위해 사용하는 것이 n-gram
n-gram은 n개의 연속적인 단어 나열을 의미
갖고 있는 코퍼스에서 n개의 단어 뭉치 단위로 끊어서 이를 하나의 토큰으로 간주
예를 들어서 문장 An adorable little boy is spreading smiles이 있을 때, 각 n에 대해서 n-gram을 전부 구해보면 다음과 같습니다.
unigrams : an, adorable, little, boy, is, spreading, smiles
bigrams : an adorable, adorable little, little boy, boy is, is spreading, spreading smiles
trigrams : an adorable little, adorable little boy, little boy is, boy is spreading, is spreading smiles
4-grams : an adorable little boy, adorable little boy is, little boy is spreading, boy is spreading smiles
1. 데이터 불러오기
import pandas as pd
"""
header = 0 은 파일의 첫 번째 줄에 열 이름이 있음을 나타내며
delimiter = \t 는 필드가 탭으로 구분되는 것을 의미한다.
quoting = 3은 쌍따옴표를 무시하도록 한다.
"""
# QUOTE_MINIMAL (0), QUOTE_ALL (1),
# QUOTE_NONNUMERIC (2) or QUOTE_NONE (3).
# 레이블인 sentiment 가 있는 학습 데이터
train = pd.read_csv('https://github.com/corazzon/KaggleStruggle/raw/master/word2vec-nlp-tutorial/data/labeledTrainData.tsv', delimiter='\t', quoting=3)
# 레이블이 없는 테스트 데이터
test = pd.read_csv('https://github.com/corazzon/KaggleStruggle/raw/master/word2vec-nlp-tutorial/data/testData.tsv', delimiter='\t', quoting=3)
train.shape
종속 변수 (예측 할 값 확인하기)
학습데이터의 정보를 확인한다.
학습 데이터 셋에는 각각 긍정리뷰와 부정리뷰가 5:5 비율로 있다는 것을 알 수 있음
리뷰 내용을 분석해본다.
출력 값을 보면 해당 리뷰에 글자를 제외한 여러 기호나 태그들이 있는것을 알 수 있다. 우리는 이러한 데이터를 정제해주어야한다.
'공부정리 > NLP' 카테고리의 다른 글
[NLP] 캐글 영화 리뷰 분석 튜토리얼 2 - (1) 딥러닝 기법 Word2Vec 소개 - 강의 정리 (0) | 2022.08.29 |
---|---|
[NLP] 캐글 영화 리뷰 분석 튜토리얼 (4) 랜덤 포레스트로 영화 감성 예측 평가 ROC / AUC - 강의 정리 (0) | 2022.08.29 |
[NLP] 캐글 영화 리뷰 분석 튜토리얼 (3) CountVectorizer 로 텍스트 데이터 벡터화 - 강의 정리 (0) | 2022.08.29 |
[NLP] 캐글 영화 리뷰 분석 튜토리얼 (2) 데이터 정제하기 (BeautifulSoup, re, NLTK) - 강의 정리 (0) | 2022.08.18 |
[NLP] 캐글 머신러닝 자연어처리 NLP 튜토리얼 - 강의 정리 (0) | 2022.08.18 |