텍스트 마이닝과 프로세스에 대한 이해
텍스트 마이닝이라고 하는 개념이 있다. 텍스트 마이닝은 정형 형태의 데이터가 아닌 비정형 형태의 데이터인 텍스트 데이터를 다룬다. 패턴을 찾아내고 분석하여 의미 있는 정보를 발견해내고 인사이트를 얻는 분석 기법이다. 데이터 마이닝과 자연어 처리, 정보를 검색하는 분야와 관련이 있는 분석 기법이라고 할 수 있다. 텍스트 마이닝은 텍스트 데이터에 대해서 웹크롤링과 같은 기법을 통해서 웹 상에서 분포되어 있는 텍스트 데이터를 수집해서 저장하고 활용한다. 해당 데이터를 전 처리하는 과정도 반드시 필요하다. 텍스트 데이터를 전 처리하고 특성 벡터화를 시킨 후 머신러닝 모델을 구축하여 학습과 평가 프로세스를 진행한다. 여기서 텍스트 전처리에서는 토큰화를 진행하며 숫자와 영어를 제거한다. 이를 불용어 제거 처리라고 하는데 이와 함께 표제어 추출, 품사 분석 등의 작업도 함께 진행한다. 토근화라고 하는 개념은 텍스트 문장을 단어나 문자와 같은 기본 단위로 나누어서 토큰처럼 만드는 과정을 의미한다. 불용어 제거는 단어가 아닌 특수 문자와 숫자와 같이 분석에 기여할 수 없는 불필요한 조사나 문자를 제거하는 것이다. 표제어 추출도 필요하며 언어적 속성인 형태소와 어근, 품사와 같은 구조를 파악해서 형태소를 분석하는 과정도 진행한다. 특성 벡터화는 컴퓨터가 텍스트 자체로는 이해하기 어렵기 때문에 단어 기반의 특성을 추출한 다음에 숫자 형태로 표현한 벡터 값과 벡터 형태로 표현하는 것으로 데이터 형태를 바꿔줘야 한다. 단어 자체로는 머신러닝 알고리즘으로 분석하기 어렵기 때문이다. 자연어 처리라고 하는데 자연어 처리 분야에서는 단어 임베딩이라고 부른다. 특성 벡터화에서 가장 대표적인 방법은 Bag of Words 기법과 Word2 Vec이라고 하는 방법을 사용한다. 텍스트를 벡터화하면서 훌륭한 임베딩 방법은 단어와 문장 사이에 관련도도 계산하고 의미적인 부분과 문법적인 정보도 함축하며 전이 학습이 가능해야 한다. 이 조건을 만족한다면 훌륭한 임베딩 방법이라고 할 수 있다. One-Hot 엔코딩은 각 단어를 이진법 형태로 각 단어마다 다른 벡터를 부여하는 방법이다. 단어가 100개이면 100개의 요소로 구성된 벡터가 생기게 된다. 물론 데이터의 차원 개수가 단어의 수가 같아서 데이터의 양이 굉장히 커진다. 그리고 새로운 단어가 추가되는 것에 대한 유연성을 가져가기 힘들다. 단어 간의 거리를 통해서 유사도도 정의할 수 없는 단점이 있는 방법이긴 하다. Bag of Words 방법은 문서에서 구성하고 있는 모든 단어들에 대해서 순서나 규칙을 고려하지 않고 오직 단어의 빈도수만 고려해서 단어가 얼마나 많이 사용되는지를 특성 벡터로 표현하는 것이다. 단어에 중요도를 부여할 수 있고 문서에 등장하는 단어의 중요도를 가중치를 부여해서 계산할 수 있다. 단어들을 가방에 넣듯이 하는 방식이어서 Bag of Words라고 부른다. 여기에는 카운트 기반 벡터화 방법과 TF-IDF 기반 벡터화 방식이 있다.
텍스트 마이닝의 활용과 세부적 이해
카운트 기반 벡터화는 각 문서를 보고 각 웹 문서에서 볼 수 있는 단어들에 대해서 단어의 빈도를 확인하고 값을 부여하는 벡터화 방식이다. 웹문서에서 문서를 구성하고 있는 전체 단어들에 대해서 단어 사전을 만들고 단어마다 각 문서에서 등장하는 횟수를 카운트한다. 그리고 해당 단어의 벡터 값을 할당하게 된다. 단어의 빈도를 정리해서 문서 단어 행렬을 구성하는 것이다. 당연히 해당 단어의 빈도가 높다면 중요한 단어로 볼 수 있다. 그래서 이를 메트릭스로 표현하면 측정기준은 문서가 되고 측정요소는 각 단어들이 된다. TF-IDF(Term Frequency-Inverse Document Frequency) 기반 벡터화는 카운트 기반 벡터화를 좀 더 업그레이드 한 방법으로 단어 빈도가 무조건 높다고 중요한 단어로 보기는 어려운 단어가 문서 안에 당연히 포함되어 있다는 것을 고려하고 착안한 방법이다. 그래서 범용적으로 사용하는 단어도 식별한다. 범용적으로 사용하는 단어는 단어의 가중치를 낮추는 방법이다. 가중치를 두어서 이를 표현한다. Word2 Vec은 통계기반의 임베딩 방법과는 다르다. 뉴럴 네트워크 기반의 임베딩 방법이다. 특성 벡터 안에 있는 요소들의 조합을 통해서 단어의 의미를 표현한다. 단어의 의미와 문장의 맥락을 보존할 수 있도록 한다. 그럼 이러한 기법을 어떻게 활용하는지 알아볼 필요가 있다. 텍스트 마이닝은 인터넷 상에서 사람들이 남긴 후기나 의견들에 대해서 웹 크롤링 방식을 활용해서 데이터를 수집한 후 이를 마이닝하여 수집된 텍스트 데이터를 감성 분석이나 토픽 모델링을 통해서 분석모델을 통해서 분석한 후 결과를 디지털 마케팅에 활용할 수 있다. 감성 분석은 텍스트에서 사람들의 주관적인 의견이나 감성, 태도를 담고 있다. 사람들의 니즈나 태도를 확인할 수 있다. 이러한 데이터도 분석할 가치가 있으며 감성 분석을 통해서 텍스트에 담긴 감성을 긍정이냐 부정이냐로 판단할 수 있다. 아주 단순한 방법으로는 감성 사전 기반의 감성 분석이 있다. 이는 모든 감성 단어들도 결국 사전에 담겨 있고 사전을 활용한다면 모든 단어들을 미리 분류해놓을 수 있는 것이다. 그래서 사전에 나와 있는 단어들을 통계 기반이나 규칙 기반으로 점수로 계산해서 미리 세팅을 하는 것이다. 하지만 이것은 예전 방식이며 요즘은 머신러닝 기반의 감성 분석 기법을 사용한다. 토픽 모델링도 고려할 수 있는데 문서를 구성하는 키워드 들에 대해서 토픽을 추출하고 토픽을 기준으로 분류하고 분석하는 방법이다. 단어들을 통해서 경향이나 동향을 파악할 수 있고 조합하여 새로운 주제를 발굴할 수 있다.
감성 분석을 통해서 결과 도출하기
웹 크롤링을 통해서 사람들의 반응이나 뉴스와 같은 동향을 파악할 수 있는 텍스트를 활용해서 감성 분석을 진행할 수 있다. 이를 진행하기 위해서는 감성 분석을 위한 예측모델을 만들어야 한다. 이것은 예측하고자 하는 값이 있는 지도 학습 모델이 된다. 전처리를 하고 나서 벡터화 한 텍스트 데이터가 input 값이며 예측하고자 하는 값이 output값이다. 각 데이터 행들은 아이디로 구분할 수 있고 각 요소가 된다. 결국 분류 문제이며 로지스틱 회귀분석과 같은 분류 모델을 사용할 수 있다. 그런데 여기서 학습이 필요하기 때문에 학습을 해주기 위해서 미리 아이디와 텍스트 그리고 이것이 긍정인지 아니면 부정인지를 나타내는 레이블이 필요하다. 텍스트와 이에 대한 긍정과 부정에 대한 결과 값이 사전에 준비되어 있어야 한다. 이러한 데이터 셋을 준비하기 위해서 많은 노력이 필요하다. 비용과 시간이 들어가는 문제이다. 수작업이 될 수도 있는 것이다. 그래서 이를 위한 직업이 있을 정도로 데이터 분석 영역에 있어서는 노동력이 들어가는 작업이 될 수 있다. 학습을 위한 데이터와 분석 모델이 만들어지고 나서 평가를 위한 데이터 셋이 함께 필요하다. 파일은 아이디와 텍스트 값, 레이블로 분리되어 있으면 된다. 평점과 같이 점수로 표현될 수도 있다. 결과를 도출하기 위한 과정은 비슷하다. 데이터를 준비하고 텍스트 데이터를 전 처리한 다음 데이터를 임베딩 시키고 분류 모델을 훈련시킨다. 훈련된 분류 모델을 평가하면 되며 훈련된 분류 모델을 가지고 실제 예측을 진행할 수 있는 것이다. 만약 파이썬 프로그램을 활용한다면 미리 개발된 좋은 패키지들이 있다. 경우에 따라서는 자바 프로그램이 필요한 경우도 있다. 단어 기준으로 분석하는 경우에는 데이터 양의 절대치도 중요하므로 충분한 양을 확보하는 것이 중요하다. 부족하다면 정확도가 떨어질 수 있기 때문이다. 정확도가 높으면 높을수록 예측하기 좋은 모델인 것이다.