본문 바로가기
자연어처리/개념 정리

NLP Preprocessing(전처리) 간단 개념 정리 1

by 아인슈페너먹고싶다 2022. 9. 9.

 

구름 AI 자연어처리 과정 수업 내용에서는

 

Normalization와 Pre-Tokenization 과정을

 

Preprocessing이라고 정의 했다. 

 

 

 

여기서 Normalization은 여백을 제거하고 대,소문자 통일하는 등의 표현을 깨끗하게 통일하는 과정,

 

Pre-Tokenization은 문장을 단어 단위로 나누는 과정을 의미한다.

 

 

 

조금 더 Nomalization을 자세하게 살펴보자면 

 

Cleaning Nomalization으로 나눌 수 있고 

 

 

 

이를 더 세부적으로 보면

 

1) Stemming, Lemmatization와 같은 어간 추출

2) Cased / Uncased 대,소문자 통일

3) Removing unncessary words
분석/학습에 있어 도움이 되지 않는 특수문자나 아주 짧은 길이의 단어 혹은 빈도 수가 매우 적은 단어들을 제거

4) Regular Expression 규칙적이고 반복적으로 등장하는 단어를 정규 표현식으로 패턴화하여 noise data를 제거

 

와 같이 다양하게 볼 수 있다. 

 

 

 

 

이 중 Regular Expression과 같은 경우

 

 

파이썬의 re package 혹은 NLTK로 제거 가능하다. 

 

Regilar Expression(정규표현식) 은 다음과 같이 사용할 수 있다.

 

출처 : 구름 AI 자연어처리 과정

 

 

 

re 패키지의 함수 종류와 용도는 다음과 같다.

 

 

출처 : 구름 AI 자연어처리 과정

 

 

 

 

이제 Pre-tokenization 과정을 살펴보자

 

 

Pre tokenization의 제일 기본적인 접근은 

 

1) 특수문자 제거, 2) 띄어쓰기 단위로 나눔인데

 

 

이렇게 한다면 의미적인 부분을 놓칠 수 있다. 

 

(ex. 교착어나 apostrophe)

 

 

 

따라서 형태소 단위로 나누는게 일반적이다.

 

이에 여러 패키지들이 있는데

 

 

 

 

먼저 제일 대표적인 규칙기반 한국어 전처리 패키지인 KoNLPy에서

 

Hannanum, Kkma, Komoran, Mecab, Okt 등의 클래스를 활용할 수 있다. 

 

또한 다음과 같은 함수들을 사용 가능하다.

 

 

tokenizer.morphs(text) > 형태소 단위로
tokenizer.nouns(text) > 명사 추출
tokenizer.pos(text) > 품사 태깅

 

 

https://konlpy.org/en/latest/

 

KoNLPy: Korean NLP in Python — KoNLPy 0.6.0 documentation

KoNLPy: Korean NLP in Python KoNLPy (pronounced “ko en el PIE”) is a Python package for natural language processing (NLP) of the Korean language. For installation directions, see here. For users new to NLP, go to Getting started. For step-by-step instr

konlpy.org

 

 

 

카카오에서 배포하는 데이터 기반, CNN모델을 활용하는 khaiii 또한 존재한다.

 

 

https://tech.kakao.com/2018/12/13/khaiii/

 

kakao의 오픈소스 Ep9 - Khaiii : 카카오의 딥러닝 기반 형태소 분석기

“카카오의 오픈소스를 소개합니다” 아홉 번째는 jamie.lim과 자연어 처리 파트 동료들이 함께 개발한 khaiii(Kakao Hangul Analyzer III)입니다. khaiii는 세종 코퍼스를 이용하여 CNN(Convolutional Neural Network,

tech.kakao.com

 

 

 

이 밖에도 띄어쓰기를 해주는 PyKoSpacing도 존재하고

 

 

 

https://github.com/haven-jeon/PyKoSpacing

 

GitHub - haven-jeon/PyKoSpacing: Automatic Korean word spacing with Python

Automatic Korean word spacing with Python . Contribute to haven-jeon/PyKoSpacing development by creating an account on GitHub.

github.com

 

 

 

 

네이버 한글 맞춤법 검사기를 바탕으로 맞춤법 교정 패키지인 Py-Hanspell 또한 존재한다.

 

 

 

https://github.com/ssut/py-hanspell

 

GitHub - ssut/py-hanspell: 파이썬 한글 맞춤법 검사 라이브러리. (네이버 맞춤법 검사기 사용)

파이썬 한글 맞춤법 검사 라이브러리. (네이버 맞춤법 검사기 사용). Contribute to ssut/py-hanspell development by creating an account on GitHub.

github.com

 

 

 

마지막으로 통계적 수치를 기반으로 띄어쓰기, 토크나이징 둘다 가능한 soynlp 라이브러리도 있다.

 

 

https://github.com/lovit/soynlp

 

GitHub - lovit/soynlp: 한국어 자연어처리를 위한 파이썬 라이브러리입니다. 단어 추출/ 토크나이저 /

한국어 자연어처리를 위한 파이썬 라이브러리입니다. 단어 추출/ 토크나이저 / 품사판별/ 전처리의 기능을 제공합니다. - GitHub - lovit/soynlp: 한국어 자연어처리를 위한 파이썬 라이브러리입니다.

github.com

 

 

 

 

 

다음 포스팅엔

 

다음 전처리 과정인 Tokenization과 Post-Processing에 대해 포스팅해보겠다.

 

 

꿑!

댓글