안녕하세요
오늘은 '문서 분석 시스템' 만들기에 대해 알아보겠습니다.
머신러닝을 활용하는 한 분야로 여러 문서를 분석합니다. 문서 내 단어의 개수나 빈도, 주변 단어 연관성 등 여러가지 기준으로 학습을 합니다. 여러가지 학습 모델을 통해 효율적인 방법에 대해 알아보겠습니다.
문서의 주제, 문자 구조 파악, 고유 명사 추출 등의 용도로 사용되며, 예전보다 온라인 상에서 텍스트로 구성된 데이터가 많이 활용되고 있기 때문에 이러한 텍스트 데이터로부터 의미있는 패턴이나 결과를 도출하는 것이 중요합니다.
특히 인터넷 신문이나 포털사이트, 백과사전, 쇼핑몰 등에서 텍스트 데이터는 매우 중요합니다.
그러나 텍스트 데이터는 중의적인 표현, 순서 및 주변 단어 배열에 의해 결과가 많이 바뀌기 때문에 분석하기가 쉽지 않습니다.
문서 분석 시스템을 만들기 위해서는 '문서 분류'를 해야합니다. 여러가지 목적에 따라 문서 내용을 구분합니다. 기준은 내용, 글쓴이, 서식, 문서 구조, 문서 길이 등이 있지만 기본은 '문서 내용'이 되겠습니다. 문서 내용 파악을 위해서는 '단어 빈도'를 활용합니다. 특정 단어가 자주 반복되면 전체 문서가 그 단어와 연관되어 있다는 것입니다. 다른 방법으로는 '단어 출현'으로 문서 내 특정 단어가 노출되는 것으로 확인하는 방법입니다. 단순히 문서를 긍정 또는 부정으로 평가할 때는 성능을 발휘하기도 합니다.
'TF-IDF' 방법을 사용하면 단어의 희귀도를 고려해서 피처를 생성할 수 있습니다. 즉 단어 빈도로 문서 내용을 구분하면 빈도 수가 많은 단어가 중요하다고 인식할 수 있기 때문입니다. 'TF'는 단어 빈도를, 'IDF'는 역문서 빈도를 뜻합니다. 식에 따라 계산하면 단어의 빈도 수와 중요도를 모두 고려하여 문서를 구분하는데 사용됩니다.
피처를 이용하여 실제 데이터를 분류하는 방법을 알아보겠습니다. 대표적으로 문서 분류 기법인 로지스틱 회귀와 SVM에 대해 알아보겠습니다.
'로지스틱 회귀'는 선형 회귀 모델에 로지스틱 함수를 적용해서 분류를 하는 기법입니다. 선형회귀의 연속적인 숫자값을 로지스틱 함수가 확률값으로 변환하여 0에서 1 사이의 값으로 분류합니다.
여기서 조금 더 복잡한 로지스틱 회귀로 다항 로지스틱 회귀(소프트맥스 회귀)가 있습니다.
'SVM'은 문서 분류 문제에 사용하는 표준적인 분류 모델입니다. 데이터가 어떤 '경계선'을 넘는지, 안넘는지를 통해 분류합니다. 가장 가까운 데이터와 경계선과의 최소 간격를 구하여 그 간격을 최대화하는 방법입니다. 모델이 가볍고 노이즈에 강한 특성이 있습니다.
이외에도 결정 트리나 그래디언트 부스티드 트리 등의 모델도 많이 사용됩니다.
'토픽 모델링'은 문서에 존재하는 토픽을 추출하는 기법입니다. 어떤 단어가 특정하게 분포하는 것을 토픽이라고 합니다. 이러한 토픽들로부터 생성된 단어가 문서를 구성한다고 봅니다. 토픽 모델링 방법 중 가장 유명한 'LDA' 에 대해 알아보겠습니다. 'LDA(잠재 디리클레 할당)'는 확률모델을 통해 문서의 토픽과 토픽에 분포하는 단어들을 분석합니다. 문서가 어떤 토픽을 가질 확률과 각 단어가 어떤 토픽에 해당할지의 확률, 그 토픽에 따라 단어가 어떤 확률로 생성될지 설명하는 방법입니다.
'문법 분석'은 문서의 문법 구조를 분석해서 내용을 파악하는 기법입니다. 문서의 문법 구조를 알아보기 위해서는 중요한 문제가 있는데, '품사 태깅'과 '고유명사 추출' 입니다.
'품사 태깅' 문제는 현재 단어와 이전 단어에 따라 품사가 결정됩니다. 즉 순차 모델링을 통해 순차적으로 업데이트하며 문장 구조를 분석합니다. 그 방법으로 'RNN'으로 딥러닝 기법에 많이 활용되는 방법과 RNN 모델 기법 중 하나인 'LSTM' 방법이 있습니다. RNN 방법은 순차적으로 업데이트하며 데이터를 분석하는 방법이지만, 문장이 길어져 단어 간의 연관관계가 멀어질 경우 제대로 모델이 작동하지 못한다는 단점이 있습니다. 이 문제를 '소멸하는 1차 미분값'이라고 합니다. 이러한 문제를 해결하기 위한 방법이 'LSTM'입니다. 가장 큰 차이점은 이 모델에는 정보를 버릴지, 계속 가져갈지 판단하는 신경망 구조가 포함되어 있다는 점입니다. 이 방법은 음성 데이터처럼 시간에 따라 변화하는 데이터를 분석하는 데 많이 사용됩니다.
'고유 명사 추출(NER)'은 텍스트에서 인물, 장소, 일정 등을 찾아내는 문법 분석 방법입니다. 앞뒤의 단어의 의미를 고려하여 영향을 받습니다. 순차 모델 'RNN/LSTM' 등을 활용하기도 하고, 정규표현식을 이용하여 처리하는 방법도 있습니다. 인물 사전, 장소사전 등 적절한 정규표현식을 사용하면 빠르게 분석할 수 있는 장점이 있습니다.
'단어 임베딩 학습'은 단어를 실수값으로 이루어진 벡터로 표현하는 것으로, 컴퓨터로 단어의 의미를 나타내는 방법에는 '이산 표현' 과 '분산 표현'이 있습니다. 이산 표현은 단어 자체를 이용하여 의미를 나타내는 것이고, 분산 표현은 주변 단어를 통해 의미를 표현하는 것입니다.
문서 분석이라는 문제를 대상으로 다양한 학습 모델을 적용할 수 있습니다. 앞서 살펴본 회귀, 분류, 군집화, 딥러닝 등 데이터의 형태에 따라 한 개 또는 두 개의 모델을 활용하여 분석합니다. 머신러닝, 딥러닝, 인공지능 등 데이터를 기반으로 유의미한 결과를 도출하는 통계학적인, 컴퓨터 과학적인 부분은 기술 측면도 중요하지만 해당 문제를 분석하는 능력 또한 매우 중요함을 알 수 있습니다. 다음에는 보다 익숙한 문제를 어떤 학습 모델로 해결하는 지 알아보도록 하겠습니다.
감사합니다.
'머신러닝' 카테고리의 다른 글
[머신러닝 입문]영화 추천 시스템 만들기 (0) | 2020.04.06 |
---|---|
[머신러닝 입문]구매 이력 데이터를 이용한 사용자 그룹 만들기 (0) | 2020.04.04 |
[머신러닝 입문]머신러닝 주요 문제 유형 (0) | 2020.04.01 |
[머신러닝 입문]머신러닝 주요 모델-데이터양과 품질/표준화 (0) | 2020.03.31 |
[머신러닝 입문]머신러닝 주요 모델 - 데이터형 (0) | 2020.03.31 |