서비스 기획자의 성장기록

[ML/텍스트분석] 2. 텍스트 전처리 (정규화) - 클렌징, 텍스트 토큰화 본문

머신러닝 (ML)/텍스트 분석

[ML/텍스트분석] 2. 텍스트 전처리 (정규화) - 클렌징, 텍스트 토큰화

Jenny Noh 2024. 1. 11. 15:36

텍스트 데이터에서 피처를 추출하기 위해 텍스트를 정규화하는 작업이 필요하다.

텍스트 정규화 작업에는 크게 클렌징, 텍스트 토큰화, stop word 제거, 어근화 (stemming & lemmatization)이 있다. 

 

 

클렌징

텍스트 분석에 방해가 되는 불필요한 문자, 기호 등을 제거하는 작업이다. HTML, XML 태그나 기호들을 제거한다.

 

 

 

텍스트 토큰화

텍스트 토큰화는 문서를 문장 단위로 분리하는 문장 토큰화와 문장을 단어 단위로 분리하는 단어 토큰화가 있다.

 

1) 문장 토큰화 (sentence tokenization) - nltk sent_tokenize()

문장 토큰화는 문장의 끝을 의미하는 기호를 기준으로 문서를 문장 단위로 분리한다. 분리의 기준이 되는 기호는 마침표(.)나 개행문자(\n) 등이 있다.

parameters (출처: nltk.org)

*nltk.download('punkt'): 마침표, 개행문자 등의 데이터 세트 다운로드

 

2) 단어 토큰화 (word tokenization) - nltk word_tokenize

단어 토큰화는 공백, 콤마(,), 마침표(.), 개행문자 등으로 문서나 문장을 단어 단위로 분리하는 것이다. 

문장 분리 구분자도 분리의 기준에 포함되기 때문에 Bag of Word 처럼 단어의 순서가 중요하지 않은 경우, 문장 토큰화를 거치지 않고 바로 단어 토큰화를 사용해도 무방하다.

*문장 토큰화는 문장이 가지는 시멘틱적 의미가 중요한 요소로 사용될 때 사용함

parameters (출처: nltk.org)

 

이 때, 문장을 단어 하나씩 토큰화 할 경우 문맥적인 의미가 사라진다. 이를 방지하고자 사용하는 방법이 n-gram이다.

n-gram은 연속된 n개의 단어를 하나의 토큰 단위로 분리하는 것이다.

ex) n-grame=2

"I woke up at 6am this morning." -> (I, woke), (woke, up), (up, at), (at, 6am), (6am, this), (this, morning)