[ML / 텍스트분석] 1. 텍스트 분석 개요
텍스트를 처리하는 대표적인 기술로는 NLP (National Language Processing)과 텍스트 분석 (Text Analytics)이 있다.
NLP는 머신이 인간의 언어를 이해하고 해석하는데 중점을 두고, 텍스트 마이닝 (Text Mining)은 비정형 텍스트에서 의미 있는 정보를 추출하는 것에 중점을 둔다.
하지만 머신러닝이 보편화 되면서 이 두 기술간의 차이는 사라지고 있는 추세이다.
텍스트 분석의 활용
1. 텍스트 분류 (Text Classification)
텍스트가 특정 분류나 카체고리에 속하는지 예측하는 기법으로, 지도학습을 적용한다.
* 비지도학습으로 수행하는 텍스트 분류는 텍스트 군집화 (Text Clustering) -그런데 이제 유사도 측정을 동반한-으로 분류할 수 있다.
예를 들면 신문기사의 카테고리 분류, 스팸 메일 검출 같은 것들이 있다.
2. 감성분석 (Sentiment Analysis)
텍스트에 내포된 writer의 감정을 분석하는 기법으로, 지도와 비지도 학습 모두 적용할 수 있다.
감성분석을 하기 위해서는 단어 하나하나에 대한 감성지수가 정리된 사전이 사전에 정의되어야 한다.
소셜 미디어 감성분석, 영화/제품 리뷰 분석 등이 이에 해당한다.
3. 텍스트 요약 (Summarization)
텍스트에서 주요한 idea를 추출하는 기법이다.
예시로는 토픽 모델링이 있다.
분석 프로세스
텍스트를 머신러닝 알고리즘으로 분석하기 위해서 필수적인 작업은 비정형 텍스트 데이터를 피처형태로 추출하고 여기에 의미있는 값을 부여하는 것이다.
1. 텍스트 사전준비(전처리)
텍스트를 피처화 하기 전에 클렌징, 대/소문자 변경, 특수문자 삭제등의 클렌징 작업과 단어 토큰화, stop words(불용어, 의미 없는 단어) 제거, 어근 추출 (stemming/lemmatization) 등의 정규화 작업을 거친다.
2. 피처 벡터화
전처리를 통해 가공된 텍스트에서 피처를 추출하고 해당 피처에 벡터값을 할당한다.
대표적으로 Bag of Words(BOW)와 Word2Vec이 있다. BOW 기법은 Count 기반과 TF-IDF 기반 벡터화가 대표적인 방법으로 쓰인다.
3. ML 모델을 통한 학습/예측/평가
피처 벡터화 된 텍스트 데이터에 ML 모델을 적용하여 학습/예측/평가한다.
대표적인 패키지
1. NLTK (Natural Language Toolkit for Python)
- 파이썬의 가장 대표적인 NLP 패키지
- 데이터 세트와 서브 모듈을 방대하게 보유
- 수행속도, 정확도, 신기술면에서 성능이 떨어져 실제 대량의 데이터 기반으로하는 업무에서는 활용되지 못함
2. Gensim
- 토픽 모델링 분야에서 사용되는 NLP 패키지
https://radimrehurek.com/gensim/
3. SpaCy
- 영어를 포함한 8개 국어에 대한 자연어 전처리 모듈을 제공하는 패키지
- 성능이 뛰러나 NLP 어플리케이션에서 많이 사용됨
4. KoNLPy
- 한글 형태소 분석을 위한 패키지
https://konlpy.org/ko/latest/index.html