-
NLP 1. 토큰화 (Tokenization)DEV/nlp 2024. 1. 17. 14:16
자연어 처리
- 자연어 처리에서 수집한 데이터(코퍼스)는 보통의 경우 전처리가 필요함.
- 용도에 맞게 토큰화(Tokenization), 정제(cleaning), 정규화(normalization)가 필요함.
토큰화 (Tokenization)
- 단어 토큰화(word tokenization) : 토큰을 단어(word)를 기준으로 잡는 경우 (단어 단위로 분리함)
- 토큰화 기준은 상황에 따라 달라짐
- 예를 들어 단어 토큰화의 경우 띄어쓰기(whitespace) 기준으로 작업을 할 수 있으며 구두점(punctuation)을 제외할지, 다른 방법으로 토큰화할지는 작업에 따라 달라짐.
- ‘(apostrophe)가 있는 경우 어떻게 토큰화를 할 것인가? (don’t, Jone’s 등등…)
- 토큰화 방식에 따라 의미가 크게 달라질 수 있으니 많은 고민이 필요함.
- 특수 문자나 구두점을 제거하는 행위는 정제(cleaning)라 할 수 있음.
- 특수 문자나 구두점을 제거하는 경우 또한 문장 또는 단어의 의미가 크게 변할 수 있기 떄문에 단순하게 제외(정제) 처리하면 안됨.
- 줄임말 사이에 구두점이 들어가거나 띄어쓰기가 존재하는 경우가 있음 (Ph.D, AT&T, we’re, rock ’n’ roll 등…)
- 문장 토큰화(Sentence Tokenization) : 토큰 단위가 문장이 되는 경우 (사용 하는 용도에 맞게 문장 토큰화가 필요할 수 있음)
- 한국어 토큰화의 경우 띄어쓰기를 기준으로 하는 토큰화로도 충분히 잘 작동함.
(언어 특성상 거의 대부분의 경우에서 단어 단위로 띄어쓰기가 이루어 짐)- 한국어의 경우 띄어쓰기가 잘 지켜지지 않는 경우가 많음.
- 띄어쓰기를 지키지 않더라도 글을 쉽게 이해할 수 있는 언어의 특성 때문임.
- 진짜로띄어쓰기를하지않아도글을이해하는데문제가없음 << ㅇㅋ
- Thereisnoprobleminunderstandingthetextevenwithoutspaces. << …?
- 한국어의 경우 조사, 어미 등 언어 자체의 특성이 영어와 다르기 때문에 다른 토큰화 방식 채택이 필요함.
- 품사 태깅 (Part-of-speech tagging)
- 단어의 표기는 동일 하더라도 다른 의미를 가지기도 함.
- 해당 단어가 어떠한 품사로 쓰였는지를 보면 의미 파악에 큰 도움이 됨. (토큰화 후 태깅 진행)
functions
- 영어 단어 토큰화 : nltk.tokenize의 word_tokenize, WordPunctTokenizer
- 영어 표준 토큰화 : nltk.tokenize의 TreebankWordTokenizer
- 영어 문장 토큰화 : nltk.tokenize의 sent_tokenize
- 한국어 문장 토큰화 : kss의 split_sentences
- 영어 품사 태깅 : nltk.tag의 pos_tag
- 한국어 품사 태깅 : konlpy.tag의 Okt, Kkma
- okt, Kkma
- morphs : 형태소 추출
- pos : 품사 태깅(Part-of-speech tagging)
- nouns : 명사 추출
Ref.
[1] https://wikidocs.net/21698
[2] https://seokbong.tistory.com/238
'DEV > nlp' 카테고리의 다른 글
NLP 자연어 처리 정리 1 (0) 2024.08.22 LLaMA2 Meta의 LLM... (1) 2024.04.18 NLP 4. 불용어(Stopword), 정수 인코딩(Integer Encoding), 패딩(Padding) (0) 2024.01.17 NLP 3. 어간 추출(Stemming) / 표제어 추출(Lemmatization) (0) 2024.01.17 NLP 2. 정제(Cleaning) / 정규화(Normalization) (0) 2024.01.17