-
TOKENIZER란 무엇인가?
자연어처리(NLP)를 하면서 많이 듣게 되는 용어 중 하나가 바로 '토큰화'이다. 딥러닝에 자연어처리를 하기 위해서는 우선 언어 RAWDATA 즉 CORPUS(코퍼스)를 데이터에 사용하고자 하는 용도에 맞게 토큰화, 정제, 정규화하는 작업을 거치게 된다. 여기서 토큰화란 토큰(token : 의미있는 단위)을 쪼개는 과정이다. 보통 영어에서는 NLTK 패키지를 이용하면 쉽게 사용할 수 있다.
그러나 문제점은 한국말 데이터를 이용하는 경우이다. 한국어의 경우 일반적으로 영어보다 토큰화하기 어렵다. 그 이유는 링크를 따라가면 확인할 수 있다. 한국어 토큰화할 때는 주로 KoNLPY를 사용해야하는데 이 KoNLPY가 jdk도 설치해야하고, 여러모로 까다로운 점이 많다. 그런데 이번에 프로젝트를 하면서 soynlp라는 것을 알게되었는데 KoNLPY보다 설치하기도 쉽고, 사용하기도 좋은 것 같아 소개하고자 한다.
-
soynlp란?
" 한국어 분석을 위한 pure python code 입니다. 학습데이터를 이용하지 않으면서 데이터에 존재하는 단어를 찾거나, 문장을 단어열로 분해, 혹은 품사 판별을 할 수 있는 비지도학습 접근법을 지향합니다."
-
github markdown에서 소개하는 soynlp 내용이다. 설치는 pip을 통해 쉽게 할 수 있다.
pip install soynlp
-
soynlp의 특징 및 기술
-
Noun Extractor
-
비지도 학습을 지향하기 때문에 '복합명사'를 추출하는데 뛰어난 성능을 보인다.
-
v1, news, v2 세 가지 버전이 있는데 v2가 가장 성능이 좋다
-
-
Word Extraction
-
말뭉치를 기반으로 학습된 품사 판별기 / 형태소 분석기는 새로운 단어를 본 적 없기 때문에 OOV(out of vocabulry)가 발생한다. 그러나 soynlp는 WordExtracor을 통해 새로운 단어를 추출할 수 있다.
-
-
Tokenizer
-
wordextractor로 단어 점수를 학습하였다면 이를 이용하여 단어의 경계를 따라 문장을 단어열로 분해한다.
-
LTokenizer : 띄어쓰기가 잘 되어있는 경우 L + R의 조합 (L : 명사, 형용사, 동사, 부사)
-
MaxScoreTokenizer : 띄어쓰기가 잘 안도어 있는 경우. scores를 만들거나 단어 사전을 사용하여 적용함
-
RegexTokenizer : 규칙기반 단어열 형성. 언어나 숫자 등 바뀌는 부분을 경계로 인식
-
-
- 아쉬운 점
- 아무래도 비지도 학습을 이용하거나, 단어 사전을 직접 만들어서 주어야 하기 때문에 기존 mecab보다 시간이 배로 걸린다ㅠㅠ
참고자료
'개발 > IBM C:LOUDERs' 카테고리의 다른 글
[IBM CLOUDER:S] Building Cloud-Native and Multicloud Applications 뱃지 (0) | 2020.11.23 |
---|---|
[IBM CLOUDER:S] BIG DATA 뱃지 (0) | 2020.11.22 |
[IBM CLOUDER:S] Red Hat이 왜 IBM에서 나와? (0) | 2020.11.22 |
[IBM CLOUDER:S] watson과 cloud! (0) | 2020.10.20 |
[IBM Cloud Essential] Module 3-4 (0) | 2020.10.18 |