Python으로 딥러닝하기|자연어 처리 1. 토크나이징
요즘 관심을 가지고 있는 분야인 "NLP(Natural Language Processing), 자연어 처리 분야"에 대해 포스팅을 시작합니다!
우선 오늘은 그 기본 중에 기본인 '토크나이징'에 대해 알아보겠습니다.
1. 토크나이징(Tokenizing)이란?
궁극적으로, 텍스트를 자연어 처리를 위한 모델에 적용할 수 있게 '언어적인 특성을 반영해 단어를 수치화'하는 것입니다.
현재 머신러닝, 딥러닝을 하기 위해서는
비정형 데이터인 이미지, 텍스트 등의 데이터는 모두 수치화하여 훈련해야 합니다.
2. 자연어 토크나이징 도구의 종류는 '영어'와 '한글' 토크나이징 라이브러리로 나눠서 알아보겠습니다!
1. 영어 토크나이징 라이브러리
- NLTK: 파이썬에서 영어 텍스트 전처리 작업을 하는 데 많이 쓰이는 라이브러리이다.
- Spacy: 현재 영어를 포함한 8개 국어에 대한 자연어 전처리 모듈을 제공, 빠른 속도로 전처리할 수 있다.
2. 한글 토크나이징 라이브러리
- KoNLPy: 한글 자연어 처리를 쉽고 간결하게 처리할 수 있도록 만들어진 오픈소스 라이브러리이다.
* Hannanum: 한나눔. KAIST Semantic Web Research Center 개발.
* Kkma: 꼬꼬마. 서울대학교 IDS(Intelligent Data Systems) 연구실 개발. ( 오래 걸림 )
* Komoran: 코모란. Shineware에서 개발.
* Mecab: 메카브. 일본어용 형태소 분석기를 한국어를 사용할 수 있도록 수정. (Window에서 설치 복잡)
* Okt: 오픈 소스 한국어 분석기. 과거 트위터 형태소 분석기.
3. 한글의 경우 형태소 토크나이징을 하는 이유는 ?
음절: 문자 단위 / 어절: 단어 단위 (쉽게 띄어쓰기 단위) / 형태소: 의미를 가진 가장 작은 단위
예) "한글 자연어 처리 공부는 어렵다"
음절: 한, 글, 자, 연, 어, 처, 리, 공, 부, 는, 어, 렵, 다
어절: 한글, 자연어, 처리, 공부는, 어렵다
형태소: 한글, 자연어, 처리, 공부, 는, 어렵, 다
1. 영어와는 달리 한국어에는 조사라는 것이 존재합니다.
따라서 형태소 토큰화를 지향하며, 영어와 달리 어절 토큰화는 한국어 NLP에서 지양되고 있습니다.
2. 한국어는 영어권 언어와 비교하여 띄어쓰기가 어렵고, 또 잘 지켜지지 않는 경향이 있습니다.
추가) 품사태깅을 하는 이유
: 단어의 의미를 제대로 파악하기 위해서는 해당 단어가 어떤 품사로 쓰였는지 보는 것이 주요 지표가 될 수도 있습니다.
4. Word Embedding에는 크게 두 가지 방식으로 나눌 수 있습니다.
: 토큰화한 단어 벡터라이징(Vectorizing, 수치화)하는 방법!
Frequency based Embedding : CountVectorizer, TF-IDF, bag-of-words
Prediction based Vector: Word2vec, CBOW, skip-gram
(각각의 방법은 다음 포스팅에서 다루도록 하겠습니다.)
책 '텐서플로와 머신러닝으로 시작하는 자연어처리'를 참고하였습니다.