[요약정리]딥 러닝을 이용한 자연어 처리 입문(Ch2.텍스트 전처리)
텍스트 전처리에 대해서 3분안에 읽을수 있게끔 요약 정리를 해본다!!
참고 사이트 : 딥 러닝을 이용한 자연어 처리 입문 에 대한 글을 요약하였다.
Ch02. 텍스트 전처리(Text Preprocessing)
1) 토큰화
- 단어/문장을 하나의 단어 토큰을 만드는 것
- 구두점, 특수 문자를 단순 제외해서는 안된다! 고려 필요(예를들어 숫자에 컴마들어가는거 100,000원)
2) 정제(Cleaning) and 정규화(Normalization)
- 대소문자, 불필요 단어(등장빈도적음, 길이짧은단어(<=2))
- 정규표현식 ex)뉴스기사 크롤링했을때 게재시간 다 제거하고 싶을때
3) 표제어 추출(Lemmatization) and 어간 추출(Stemming)
- 표제어 추출 : 뿌리 단어를 찾기 (ex. has -> have)
- 어간 추출 : (어간:단어핵심, 접사:추가의미, cat(어간), s(접사)) (ex. having -> hav)
- 예시
Stemming
am → am
the going → the go
having → hav
Lemmatization
am → be
the going → the going
having → have
4) 불용어(Stopword)
- 의미 없는 단어, 큰 도움 안되는 단어 ex)I, my, over
- NLTK에서 미리 정의한 불용어로 제거
5) 정규표현식(Regular Expression)
- 정규 표현식 모듈 re로 내가 끌어오고 싶은 단어의 유형을 표현식으로 만든다.
6) 정수 인코딩(Integer Encoding)
- 단어별 갯수 만드는것
- Counter나 NLTK, Keras 쓰면 편함
7) 원-핫 인코딩(One-hot Encoding)
- 단어 나온거를 0,1로 표현
- Keras 사용하면 편함
- 한계점 : (1)차원이 크다 (2)sparse matrix라 비효율적이고 (3)단어들마다 간격이 같아서 유사도 못구함
8) 단어 분리하기(Byte Pair Encoding, BPE)
- 새로운 단어 나오면 어쩔껀데?
- OOV(Out-Of-Vocabulary) : 단어 집합에 없는 단어
- 원래 BPE : aaabdaaabac를 XdXac로 치환하는 알고리즘
- 자연어에서의 BPE : 단어 집합에서 단어들을 다 조각내서 많이 나온 연속단어들을 뭉쳐서 뭉친애들과 조합해서 OOC를 만드는 것
- WPM(Wordpiece Model) : 구글이 사용했었다, (BPM:빈도수 vs WPM:우도)
- 센텐스피스(Sentencepiece) : 구글이 깃허브에 공개했다. BPE보다 빠르다. 미리 단어 토큰화 필요X
9) 데이터의 분리(Splitting Data)
- X, Y도 분리해줘야하고
- Train, Test도 분리해야하고~ (사이킷런 이용)