일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- LSTM
- 태블로기초
- 신입일기
- NLP
- 파워BI
- pl300
- 태블로입문
- 태블로
- 구글애널리틱스
- pl-300
- 파워비아이
- microsoft power bi
- RNN
- 모두의구글애널리틱스4
- GA4챌린지
- data
- 티스토리챌린지
- ga4
- PowerBI
- 길벗출판사
- POWER BI
- 데이터분석
- 오블완
- gru
- microsoft pl-300
- 인턴일기
- Today
- Total
수영장의 수영_데이터 분석 블로그
[NLP] 08. Preprocessing(전처리) 본문
언어를 AI 모델로 분석하는 것에 앞서, input 텍스트를 모델이 학습할 수 있는 형태로 전처리하는 것이 중요하다
raw data => preprocessed data => tokenized data하여 모델에 입력한다.
Preprocessing이 분석의 80% 시간을 잡아먹는다고 하던데, 그만큼 시간과 에너지가 많이 드는 작업인듯하다
Normalization 정규화
raw 상태의 데이터를 덜 무작위적으로, 더 깨끗하게 만드는 작업이다
1) Cleaning
- 코퍼스에서 노이즈가 너무 심한 문장(단어 등)을 제거한다
- 예를 들어 특수문자가 너무 많으면 적절히 remove 한다
2) Stemming 어간 추출, Lemmatization 표제어 추출
- ex) 먹는다 -> '먹다', studies -> 'study'
- 다양한 변형으로 쓰인 단어들을 원형으로 변환해 저장하는 것이다
-> 다만, 특별한 이유가 있지 않으면 잘 하지 않는 작업이라고 한다
-> 최대한 input 그대로를 받아들여야 모델의 신뢰성이 높기 때문에
3) cased/uncased 대소문자 구분
- cased의 경우 대소문자를 구분하여 입력 데이터셋을 만들고, uncased는 대소문자를 통칭해서 저장한다
- uncased가 더 많이 쓰이는 추세이다
-> 이유는 1) 모델을 최대한 경량화하기 위해, 2) 대소문자를 구분한 것과 구분하지 않은 것의 차이가 눈에 띄게 나지 않는다고 한다 (물론 케바케)
4) removing unnecessary words 불필요한 단어 제거
- 마찬가지로 단어를 제거하는 경우는 거의 없지만, 정말 불필요한 경우엔 제거해준다
5) Regular Expression 정규표현식
- 문자열에서 특정한 규칙을 갖고 있는 문자열 집합을 뽑아내기 위한 검색 패턴이다
- 파이썬의 re package, NLTK를 사용한다
정규표현식 문법
re package
re.complile() : 정규표현식을 컴파일한다. 찾으려는 패턴이 빈번하면 미리 컴파일해놓고 반복해 사용하면 편리함.
re.search() : 문자열 전체에 대해 정규표현식과 매치하는지 검색
re.split() : 정규표현식 기준으로 문자열을 split해 리스트로 반환
re.findall() : 정규표현식과 매치되는 모든 부분을 찾아서 리스트로 반환
re.finditer() : 정규표현식과 매치되는 모든 부분에 대한 이터레이터 객체 반환
re.sub() : 정규표현식과 매치되는 모든 부분을 다른 문자열로 대체
RegexpTokenizer in NLTK
import nltk
from nltk.tokenize import RegexpTokenizer
tok = RegexpTokenizer("정규표현식")
tok.tokenize("입력할 문자열")
Pre-tokenization
- 문장, 문헌 단위의 문자열을 더 작은 'word'단위로 쪼개는 과정
- 토큰화 이전 단계
[영어]
1) 특수문자를 제거한다
2) whitespace 기준으로 분리한다
-> 특수상황에 대한 예외처리가 필요할 수 있다 (aren't, don't 등)
[한국어]
- 주로 형태소(morpheme) 분석으로 문자열을 쪼갠다
- 한국어의 경우 띄어쓰기가 잘 지켜지지도 않고, 딱딱 나누어떨어지지도 않기 때문
- 지도학습기반 : KoNLPy, Khaiii
- 비지도학습기반 : soynlp
KoNLPy
- Korean NLP in Python
- Hannanum, Kkma, Komoran, Mecab, Okt 다섯가지가 지원된다
# Parse phrase to morphemes
tokenizer.morphs(text)
# Noun extractors
tokenizer.nouns(text)
# POS tagger
tokenizer.pos(text)
(힘들다.... 수업)
어텐션은 주말에 더 공부해서 완벽 이해하고 올려야지..
'Goorm 자연어처리 전문가 양성 과정 2기 > NLP' 카테고리의 다른 글
[NLP] 09. Transformer 트랜스포머 (0) | 2022.01.19 |
---|---|
[NLP] 07. Attention Mechanism (0) | 2022.01.16 |
[NLP] 06. LSTM & GRU (0) | 2022.01.11 |
[NLP] 05. RNN (0) | 2022.01.07 |
[NLP] 04. Word Embedding - Word2Vec, GloVe, Doc2Vec (0) | 2022.01.06 |