[파이썬 머신러닝 완벽가이드] Chap08-1. 텍스트 분석 이해
- 본 글은 파이썬 머신러닝 완벽 가이드 (권철민 지음)을 공부하며 내용을 추가한 정리글입니다. 개인 공부를 위해 만들었으며, 만약 문제가 발생할 시 글을 비공개로 전환함을 알립니다.
[1] NLP이냐 텍스트 분석이냐?
ㆍNLP : 기계가 인간의 언어를 이해하고 해석하는데 더 중점을 두고 기술이 발전
ㆍ텍스트 마이닝(Text Mining) : 비정형 텍스트에서 의미 있는 정보를 추출하는 것에 더 중점을 두고 기술이 발전
NLP는 텍스트 분석을 향상하게 하는 기반 기술이라고 볼 수 있다고 합니다. 즉, NLP 기술이 향상하면 텍스트 분석도 더욱 정교하게 발전한다는 것이죠. NLP와 텍스트 분석의 발전 근간에는 머신러닝이 존재하는데요, 예전에는 텍스트를 구성하는 일종의 룰에 따라 텍스트를 분석하는 룰 기반 시스템에서, 머신러닝의 텍스트 데이터를 기반으로 모델을 학습하고 예측하는 기반의 시스템으로 변경되며 많은 기술적 발전이 가능했다고 합니다. (그러나, NLP와 텍스트 분석을 구분하는 것은 큰 의미가 없습니다.)
텍스트 분석 기술은 아래와 같이 나눌 수 있다고 합니다.
ㆍ텍스트 분류 (Text Classification) : 문서가 특정 분류 또는 카테고리에 속하는 것을 예측하는 기법 (지도학습)
ㆍ감정 분석 (Sentiment Analysis) : 텍스트에서 나타나는 감정/판단/믿음/의견/기분 등의 주관적인 요소를 분석하는 기법 (지도학습 + 비지도학습)
ㆍ텍스트 요약 (Summarization) : 텍스트 내에서 중요한 주제나 중심 사상을 추출하는 기법. 대표적으로 토픽 모델링이 있음.
ㆍ텍스트 군집화(Clustering)와 유사도 측정 : 비슷한 유형의 문서에 대해 군집화 수행 => 텍스트 분류를 비지도학습으로 수행하는 방법의 일환
[2] 텍스트 분석 이해
ㆍ텍스트 분석은 비정형 데이터인 텍스트를 분석하는 것
ㆍ머신러닝 알고리즘은 숫자형의 피처 기반 데이터만 입력받을 수 있기 때문에, 텍스트를 머신러닝에 적용하기 위해서는 비정형 텍스트 데이터를 어떻게 피처 형태로 추출하고, 추출된 피처에 의미 있는 값을 부여하는가 하는 것이 매우 중요한 요소
ㆍ피처 벡터화(Feature Vectorization) 또는 피처 추출(Feature Extraction) : 텍스트를 word 기반의 다수의 피처로 추출하고 이 피처에 단어 빈도수와 같은 숫자 값을 부여하면 텍스트는 단어의 조합인 벡터값으로 표현됨.
ㆍ텍스트를 벡터값을 가지는 피처로 변환하는 것은 머신러닝 모델에 적용하기 이전 굉장히 중요한 요소
[3] 텍스트 분석 수행 프로세스
① 텍스트 사전 준비작업(텍스트 전처리) : 텍스트를 피처로 만들기 이전 미리 클렌징, 대/소문자 변경, 특수문자 삭제 등의 클렌징 작업과 단어(Word) 등의 토큰화 작업, 의미 없는단어(Stop word) 제거 작업, 어근 추출(Stemming/Lemmatization) 등의 텍스트 정규화 작업을 수행하는 것
② 피처 벡터화/추출 : 사전 준비 작업으로 가공된 텍스트에서 피처를 추출하고, 벡터 값을 할당하는 것. 대표적으로 BOW와 Word2Vec이 있음
③ ML 모델 수립 및 학습/예측/평가 : 피처 벡터화된 데이터 세트에 ML 모델을 적용해 학습/예측 및 평가를 수행
[4] 파이썬 기반의 NLP, 텍스트 분석 패키지
ㆍNLTK(Natural Language Toolkit for Python) : 파이썬의 가장 대표적인 NLP 패키지입니다. NLP의 거의 모든 영역을 커버하고 있으며, 많은 NLP 패키지가 NLTK의 영향을 받아 작성되고 있습니다. 수행 속도 측면에서 아쉬운 부분이 있어 실제 대량 데이터 기반에서는 제대로 활용되지 못하고 있습니다.
ㆍGensim : 토픽 모델링 분야에서 가장 두각을 나타내는 패키지입니다. SpaCy와 함께 가장 많이 사용되는 NLP 패키지 입니다.
ㆍSpaCy : 뛰어난 수행 성능으로 최근 가장 주목을 받는 NLP 패키지입니다.