1. 코퍼스수집
- 공개 데이터 사용(Kaggle 등 각종 대회용, 논문용 데이터)
- 데이터 구매
- 데이터 크롤링
2. 정제
업무와 문제, 응용 분야 등 각 경우에 따라 필요한 정제의 수준이나 깊이가 다를 수 있다. 필요한 형태를 얻어낼 수 있는 정제 방법을 사용해야 한다.
- 전각 문자 제거: 전각 문서를 일반적으로 사용되는 반각 문자로 전환
- 대소문자 통일: 다양한 표현의 일원화는 하나의 의미를 지니는 여러 단어를 하나의 형태로 통일해 희소성을 줄일 수 있음. 그러나 단어 임베딩을 통한 효율적인 표현이 가능해지면서 대소문자 통일과 같은 문제를 해결할 필요성이 줄어들었음
- 정규 표현식: 특수 문자 등의 노이즈 감지 및 제거
3. 분절
from nltk.tokenize import LineTokenizer, SpaceTokenizer, TweetToeknizer
from nltk import word_tokenize
# 1. 줄 단위로 나누기
line_tokenizer = LineTokenizer()
print('Line tokenizer result:', line_tokenizer.tokenize(sample_text))
# 2. 공백 단위로 나누기
space_tokenizer = SpaceTokenizer()
print('Space tokenizer result:', space_tokenizer.tokenize(sample_text))
# 3. 단어와 문장부호 단위로 나누기
word_tokenizer = WordTokenizer()
print('Word tokenizer result:', word_tokenizer.tokenize(sample_text))
# 4. 특수 문자열 나누기
tweet_tokenizer = TweetTokenizer()
print('Tweet tokenizer result:', tweet_tokenizer.tokenize(sample_text))
Tokenize를 하는 이유는 언어 처리 작업에서 처리할 수 있는 최소 단위가 토큰이기 때문이다. 일종의 분할 정복 알고리즘과 비슷하게, 가장 작은 단위를 이해하고 수준을 점점 높여나가 문장, 단락, 문서의 의미를 이해해 나가기 때문이다.
4. 한국어 분절
한국어 자연어 처리에 자주 사용되는 라이브러리에는 Mecab, KoNLPy가 있다. Mecab은 C++로 제작되어 속도가 빠르다. KoNLPy는 Python Wrapping으로 제작되었고, 일부 모듈의 경우에는 속도가 느리다는 단점이 있다.
Mecab을 정상적으로 설치했을 경우 KoNLPy에서 불러와 사용할 수 있으므로, 이 방법을 선택하는 것이 좋다.
$ sudo apt-get install curl
$ bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)
KoNLPy는 다양한 한국어 형태소 분석기를 모아 랩핑 라이브러리를 제공한다. 파이썬으로 구성된 라이브러리를 제공해 시스템 연동 및 구성이 용이하지만, 내부 라이브러리들은 각기 다른 언어로 이루어져있어 호환성에 문제가 생기기도 한다.
'Data' 카테고리의 다른 글
빅데이터의 정의와 데이터 수집, 저장 (0) | 2021.04.11 |
---|---|
이미지 데이터가 부족할 때 생기는 문제(과적합; Over-fitting) 완화 방안 (0) | 2021.04.04 |
[피처엔지니어링]Word2Vec (0) | 2021.03.28 |
[피처 엔지니어링/텍스트 마이닝]텍스트 표현 모델 (0) | 2021.03.27 |
[피처 엔지니어링]피처 정규화 (0) | 2021.03.26 |