자연어처리(NLP, Natural Language Processing)와 텍스트 분석(Text Analytics)
- NLP는 기계가 인간의 언어를 이해하고 해석하는데 더 중점을 두고 기술이 발전해왔다.
- 언어를 해석하기 위한 기계 번역
- 자동으로 질문을 해석하고 답해주는 질의응답 시스템
- 텍스트 분석을 향상하게 하는 기반 기술이라도고 볼 수 있다.
- 텍스트 마이닝(Text Mining)이라고도 불리는 텍스트 분석은 비정형 텍스트에서 의미 있는 정보를 추충하는 것에 좀 더 중점을 두고 발전해왔다.
- 머신러닝, 언어 이해, 통계 등을 활용해 모델을 수립하고 정보를 추출해 비즈니스 인텔리전스(BI)나 예측 분석 등의 분석 작업을 주로 수행한다.
- 텍스트 분류(Text Classification): 예를 들어, 특정 신문 기사 내용이 정치/사회/연예/문화 중 어떤 카테고리에 속하는지 자동으로 분류하거나 스팸 메일 검출 같은 프로그램 → 지도학습을 적용
- 감성 분석(Sentiment Analysis): 텍스트에서 나타나는 감정/판단/의견/기분 등의 주관적인 요소를 분석하는 기법. 소셜 미디어 감정 분석, 제품에 대한 긍정 또는 리뷰, 여론조사 의견 분석 등 → 텍스트 분석에서 가장 활발하게 사용되고 있는 분야, 지도학습과 비지도학습 둘다 이용
- 텍스트 요약(Summarization): 텍스트 내에서 중요한 주제나 중심 사상을 추출하는 기법. 대표적으로 토픽 모델링(Topic Modeling)
- 텍스트 군집화(Clustering)와 유사도 측정: 비슷한 유형의 문서에 대해 군집화를 수행하는 기법. 텍스트 분류를 비지도학습으로 수행하는 방법의 일환이 될 수 있음. 문서들간의 유사도를 측정하여 비슷한 문서끼리 모을 수 있는 방법.
- NLP와 텍스트 분석의 발전 근간에는 머신러닝이 존재한다.
텍스트 분석 이해
- 머신러닝 알고리즘은 숫자형의 피처 기반 데이터만 입력받을 수 있기 때문에 텍스트를 머신러닝에 적용하기 위해서는 비정형 텍스트 데이터를 어떻게 피처 형태로 추출하고 추출된 피처에 의미있는 값을 부여하느냐가 중요하다.
- 텍스트를 word 기반의 다수 피처로 추출하고 이 피처에 단어 빈도수와 같은 숫자값을 부여하면 텍스트는 단어의 조합인 벡터값으로 표현될 수 있다. 이렇게 변환하는 것을 피처 벡터화(Feature Vectorization) 또는 피처 추출(Feature Extraction)이라고 한다.
- 대표적인 변환 방법에는 BOW(Bag of Words)와 Word2Vec이 있다.
텍스트 분석 수행 프로세스
- 텍스트 사전 준비작업(텍스트 전처리): 대/소문자 변경, 특수문자 삭제 등의 클렌징 작업, 단어 등의 토큰화 작업, 의미 없는 단어 제거 작업, 어근 추출(Stemming/Lemmatization) 등의 텍스트 정규화 작업
- 피처 벡터화/추출: 가공된 텍스트에서 피처를 추출하고 여기에 벡터값을 할당. BOW는 대표적으로 Count 기반과 TF-IDF 기반 벡터화가 있다.
- ML 모델 수립 및 학습/예측/평가: 피처 벡터화된 데이터셋에 ML모델을 적용하여 학습, 예측, 평가를 수행.
파이썬 기반의 NLP, 텍스트 분석 패키지
- NLTK(Natural Language Toolkit for Python): 파이썬의 가장 대표적인 NLP 패키지이다. 방대한 데이터셋과 서브 모듈을 갖고 있고 NLP의 거의 모든 영역을 커버하고 있다. 수행 속도면에서 아쉬워서 실제 대량의 데이터 기반에서는 제대로 활용되지 못한다.
- Gensim: 토픽 모델링 분야에서 가장 두각을 나타내는 패키지이다. Word2Vec 구현 등의 다양한 신기능을 제공하고 SpaCy와 함께 가장 많이 사용되는 NLP 패키지이다.
- SpaCy: 뛰어난 수행 성능으로 최근에 가장 주목받는 패키지이다. 많은 NLP 애플리케이션에서 사용한다.
사이킷런은 머신러닝 위주의 라이브러리이기 때문에 '어근 처리'와 같은 NLP를 위해 특화된 라이브러리는 갖고 있지 않다.
'Data Science > 파이썬 머신러닝 완벽 가이드' 카테고리의 다른 글
[sklearn] (50) Bag of Words - BOW (0) | 2023.08.01 |
---|---|
[sklearn] (49) 텍스트 사전 분비 작업(텍스트 전처리) - 텍스트 정규화 (0) | 2023.07.31 |
[sklearn] (47) 군집화 실습 - 고객 세그먼테이션(Customer Segmentation) (0) | 2023.07.28 |
[sklearn] (46) DBSCAN(밀도 기반 클러스터링), make_circles (0) | 2023.07.26 |
[sklearn] (45) 가우시안 혼합 모델, GMM(Gaussian Mixture Model) (0) | 2023.07.25 |