brunch

You can make anything
by writing

C.S.Lewis

by 라인하트 Jun 20. 2021

오렌지로 배우는 텍스트 마이닝(3/6) - 텍스트 분류

텍스트 분류 개요


   전처리(Preprocess Test)를 거친 텍스트를 분석합니다. 텍스트를 통계적으로 분석할 때 수치적 표현으로 바꾸는 numerical representation 기법을 사용합니다. 첫 번째 글에서  단어의 출현 빈도를 기준으로 문서를 분석하는 Bag of Words와 워드 클라우드 기법을 설명하였고, 두 번째 글에서  단어의 출현 빈도와 문장들 간의 상관관계와 유사 관계도 분석하기 위해 Distance 위젯을 활용한 텍스트 클러스터링을 다루었습니다. 이 번 글은 텍스트를 분류하는 텍스트 분류 (Text Classification)를 설명합니다. 예를 들면, 그림 형제의 동화가 동물 이야기 (Animal Tales)인지 마법 이야기(Tales of magic)인지를 구분합니다. 



오렌지 프로그램으로 텍스트 분류하기 


1. 캔버스에서 기본구조  그리기

      왼쪽의 Text Mining 탭에서 코퍼스와 코퍼스 뷰어 위젯을 놓고 연결합니다. 그림 형제의 44개 동화를 두 가지로 분류하였습니다.  코퍼스 뷰어는 그림 형제의 44개의 동화를 동물 이야기와 마법 이야기로 분류합니다. 예를 들면, 신데렐라 (Cinderella), 헨젤과 그레텔 (Hansel and Gretel) 동화는  마법 이야기(Tales of magic)로 구분하였고, 늙은 술탄(Old Sultan),  쥐와 고양이 (Cat and Mouse in Partnership)는 동물 이야기 (Animal Tales)로 분류하였습니다. 



   Bag of words는 단어의 출현 빈도를 계산합니다. Data Table 위젯에서 마지막 열에는 각 단어와 출현 빈도를 나타냅니다. 




2. 텍스트 학습하기 : 로지스틱 회귀

   학습 과제는 텍스트를 이진 분류기로 동물 이야기 (Animal Tales)와 마법 이야기 (Tales of Magic)으로 구분합니다. 총 44개의 동화는 3714의 단어의 조합으로 이루어져 있고, 각 단어가 피처입니다. 정리하면, 총 학습 데이터셋은 44개이고, 피처는 3714개입니다. 각 피처의 값은 단어의 출현 빈도입니다. 


   학습을 위해 모델에서 분류 학습 알고리즘을 선택합니다. 가장 일반적이고 많이 사용하는 분류 알고리즘은 로지스틱 회귀입니다. 

   로지스틱 회귀의 분류 결과를 확인하기 위해 노모그램(nomogram) 위젯을 연결합니다. 노모그램은 세 개 이상의 변수 관계를 설명하기 위해 평면에 그린 도표나 계산표입니다.  노모그램을 보는 법을 정리합니다. 


   우선은 출현 빈도가 높은 상위 10개의 단어 little, came, fox, bird, king, wolf, father, cat, cap, man의 출현 빈도를 나타내었습니다. 표시 여부와 상관없이 총 3714개 단어에 대한 출현 빈도를 나타낼 수 있습니다. 로지스틱 회귀 알고리즘이 학습한 결과 노모그램에 나타납니다.  모든 단어의 평균 출현 빈도를 계산합니다. Target Class를 바꾸면 값이 정반대로 표시합니다.  


   예를 들면, Tales of Magic 분류기에서는  little 단어는 왼쪽으로 갈수록 Tales of Magic이고, 오른쪽으로 갈수록 Animal Tales입니다. 그리고, 맨 아래 확률이 표시됩니다. 파란색  볼을 움직이면 자동으로 확률이 바뀝니다. 




3. 학습 알고리즘 평가하기  : 로지스틱 회귀


   로지스틱 회귀로 만든 텍스트 분류기가 얼마나 잘 동작하는 지를 테스트하기 위해 Test and Score 위젯을 캔버스에 놓습니다. 방금 학습한 로지스틱 회귀와 Bag of Words 위젯을 연결합니다. Bag of Words에 있는 44 개의 학습 데이터셋을 2개의 학습셋과 교차 검증셋으로 나눕니다. 절반으로 학습하고 절반으로 검증합니다. 


   Precision(정확률)과 재현율(Recall)로 학습 알고리즘을 평가합니다. 두 값의 조화 평균은     F1 스코어가 0.887로 괜찮습니다. 이것의 공식과 평가 방법은 나중에 따로 다룰 것입니다.  


   

하지만, 좀 더 F1 스코어를 높이기 위해 학습 데이터셋을 10개로 나누어서 교차 검증셋과 학습셋의 숫자를 조정합니다. 결과적으로는 0.91로 매우 좋아졌습니다. 91% 수준의 정확도를 유지합니다.



4. 예측하기

   로지스틱 회귀 알고리즘으로 배운  분류기로 안데르센 동화를 예측합니다. 새로운 코퍼스 위젯을 캔버스에 배치하고 안데르센 동화집을 선택합니다. 그리고, 예측 위젯을 연결합니다. 



  예측 결과는 다음과 같습니다. 성냥팔이 소녀 (The little Match-Seller) 동화, 철학자의 돌, 그리고 못생긴 오리 이야기 모두 마법 이야기로 나왔습니다. 



5. 다양한 분류 알고리즘 적용하기


   왼쪽의 모델 탭에 있는 여러 학습 알고리즘을 적용합니다.  컴퓨터의 성능에 따라 시간이 걸릴 수 있습니다. 



   Test and Score 위젯에서 각 학습 알고리즘 성능을 평가합니다. 인공 신경망 (Neural Network )이 가장 성능이 좋은 것으로 나타났습니다. 인공 신경망은 안데르센 동화를 어떻게 예측하는 지를 테스트합니다. 


인공 신경망은 The Ugly Duckling을 Animal Tales로 평가했습니다. 

   서로 엇갈린 평가이므로 세 번째 랜덤 포레스트 기법과 다른 기법들의 예측도 살펴보았습니다. 모두 Tales of Magic으로 평가했습니다.  오렌지 프로그램은 여러 학습 기법을 활용하여 분류합니다. 



지난 글 보기





오렌지 프로그램 다운로드



매거진의 이전글 오렌지로 배우는텍스트 마이닝(2/6) :텍스트클러스터링
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari