brunch

You can make anything
by writing

C.S.Lewis

by 라인하트 May 24. 2021

오렌지로 배우는텍스트 마이닝(1/6) : 워드 클라우드

워드 클라우드

   워드 클라우드는 문서에 언급된 단어의 출현 빈도를 바탕으로 단어를 시각화하는 기법입니다. 워드 클라우드를 주제어 분석 또는 핵심 키워드 분석 등으로 설명합니다. 워드 클라우드는 가장 많이 알려진 텍스트 분석 기법입니다.  


   키워드 분석을 가장 잘 활용하는 곳은 뉴스 분야입니다. 예를 들면, 뉴스에서 하루 동안 또는 일정 기간 동안 가장 많이 뉴스에 노출된 단어를 알려주는 것입니다. 인터넷 상에서 누구나 이용할 수 있는 뉴스 기반 통계 검색 서비스는 워드 클라우드 서비스를 제공할 뿐만 아니라 키워드 간 관계도를 보여줍니다. 


https://data.kostat.go.kr/social/keyword/index.do#



데이터 전처리(Text preprocessing) 

   텍스트 마이닝 분야에서 워드 클라우드는 가장 쉽고 기본적인 기법이지만, 전문가의 손길이 닿으면 결과는 완전히 달라집니다. 워드 클라우드에서 전문가의 손길은 텍스트 전처리입니다. 텍스트 전처리(Preprocess Test)는 텍스트를 처리하기 전에 텍스트를 다듬는 작업입니다. 예를 들어, 요리를 하기 전에 파, 양파, 고기 등의 재료를 미리 손질하는 것입니다. 


단어 토큰화

   데이터 전처리가 필요한 이유는 문서에서 단어를 띄워쓰기 기준으로 정리하는 것만으로 충분하지 않기 때문입니다. 예를 들면, 다음 문장이 있습니다


      What a wonderful world! 

      She is a walking dictionary.  


   띄워쓰기를 기준으로 단어를 추출합니다. 


       "what',  "a",  "wonderful",  "world", "!", "she", "is", "a", "walking", "dictionary", "."


   마침표(.), 콤마(,), 세미콜론(:), 물음표(?), 느낌표(!) 등과 같은 구두점 (punctuation)과 특수문자는 단어의 의미가 없습니다. 데이터 전처리 과정에서 구두점과 특수문자를 제거합니다. 


             "what',  "a",  "wonderful",  "world", "she", "is", "a", "walking", "dictionary",


   데이터 전처리에서 띄워쓰기를 기준으로 단어를 구분하고 구두점과 특수문자를 제거하는 것은 단지 시작일 뿐입니다. 데이터 전처리가 이렇게 단순한 절차는 아닙니다. 구두점을 포함할 때 새로운 의미를 가지는 단어들이 있기 때문입니다. 예를 들면, 박사 학위자를 의미하는 ph.D, 한국담배인삼공사를 줄인  KT&G, 달러를 표시하는 $, 그리고 10.03과 같은 소수점 자리 표시 등입니다. 


   또한, 영어에서 아포스트로피(')를 이용하는 락앤롤( rock'n'roll )와 She's와 같은 단어도 있습니다. 어떤 단어들은 띄워쓰기 단위로 추출하면 의미를 잃어버리기도 합니다.  예를 들면, "walking dictionary" 는 지식을 많이 아는 사람이라는 뜻이지만, 두 단어를 분리하면 완전히 다른 뜻입니다. 한국어도 마찬가지입니다. 


   한국어는 영어와 달리 다양한 조사를 사용하는 교착어입니다. 한국어는 단어 토큰화 과정이 영어 대비 더 복잡합니다. 한국어는 명사에 다양한 조사를 붙여 문장을 구성합니다. 예를 들면, 나는, 나를, 나에게, 나와, 내가 등과 같은 단어들은 같은 의미이고 조사만 다릅니다. 띄워쓰기가 제대로 지켜지지 않는 경우가 많습니다. 한국어는 단어를 형태소 단위로 분리하면 더욱 복잡합니다. 예를 들면, 읽다, 읽었다, 읽는다, 읽고, 읽은 등입니다. 마지막으로 여러가지 뜻을 가진 단어가 있습니다. 


   텍스트 마이닝을 활용할 때 단어 토큰화를 고민할 필요는 없습니다. 문서에서 의미있는 단어를 추출하는 다양한 방법과 알고리즘들이 나와 있습니다. 우리는 적당한 것을 찾아 이용할 뿐입니다. 


정규화(Normalizaiton)

   문서에서 단어를 추출한 후 같은 의미의 단어를 묶어주는 정규화를 합니다. 아무런 의미가 없는 단어를 제거하는 정제(Cleaning)도 수행합니다. 


   예를 들면, USA와 US 그리고 ME와 me는 같은 의미이므로 하나의 단어로 묶어줍니다.영어를 정규화 할 때 대소문자를 구분하지 않고 소문자로 통합니다. 물론, US와 us는 완전히 다른 뜻이므로 예외처리가 필요합니다. 


   목적에 따라 출현빈도가 적은 단어를 제거합니다. 예를 들어, 스팸 분류기는 자주 등장하지 않는 단어는 연산을 복잡하게 할 뿐 필요없습니다. 


불용어 (Stopword)

   직접 데이터를 보고 의미가 없는 단어를 제거합니다. 문서를 정제할 때 의미가 없는 단어는 '아' 또는 '어'와 같은 무의미한 단어이고, 여기서 의미가 없는 단어는 출현 빈도는 높지만 분석할 가치가 없는 단어입니다. 대표적으로  전치사, 대명사, 접속어 등입니다.


정규 표현식 (Regular Expression)

  정규 표현식으로 특정 규칙에 해당하는 단어를 제거합니다. 

이고, 한국어에서는 대명사나 접속어 등입니다. 



<실습>


1. 오렌지 프로그램에서 텍스트 마이닝 확장팩 설치 

      메뉴바에서 "Options >> Add-ons"를 클릭합니다. 

   Installer 창에서 "Text"를 체크하고 OK를 클릭합니다. 

  

   확장팩을 설치를 완료한 후 오렌지 프로그램을 재시작합니다. 오른쪽 프로그램이 재시작한 후에 텍스트 마이닝 탭을 볼 수 있습니다. 



2. 텍스트 가져오기

   코퍼스 위젯을 클릭해서 컨버스에 옮깁니다. 코퍼스(Corpus)는 말뭉치라는 의미로 언어 연구를 위해 컴퓨터가 텍스트를 처리하거나 분석할 수 있도록 한 자료 모음입니다. 


   코퍼스 위젯에서 직접 문서 파일을 불러들일 수 있지만, 간단한 실습을 위해 그림 형제의 동화를 모아놓은 예제를 선택합니다. 코퍼스 위젯을 더블 클릭한 후 "Grimm-tales-selected.tab" 파일을 선택합니다. 

  텍스트 파일의 첫 번째 열이 변수명입니다. 그림 형제의 동화는 4개의 열로 이루어져 있습니다. Title은 제목


44개의 이야기가 있습니다. 


3. 텍스트 분석하기 : Corpus Viewer

   캔버스에 코퍼스 뷰어(Corpus Viewer) 위젯을 놓고 코피스와 연결합니다. 오렌지의 위젯은 입력과 출력이 있거나 또는 출력만 있습니다. 위젯의 왼쪽이 입력 방향이고, 오른쪽이 출력 방향입니다.  



   백설공주(Snow White) 이야기의 내용을 보고 싶다면, 왼쪽 하단의 "Display Features"에서 Content를 선택합니다. 



   'king'이라는 단어를 내용에서 검색하고 싶다면, 왼쪽 중앙의 Search features에서 content를 선택합니다. 검색으로 간단하게 분석할 수 있지만, 여전히 모호합니다. 


 

4. 텍스트 분석하기 : Word Cloud

   워드 클라우드 (Word Cloud)는 텍스트에서 단어의 출현 빈도를 분석합니다. 워드 클라우드 위젯을 캔버스에 배치하고 선을 연결합니다. 출현 빈도가 높은 단어를 크게 표시합니다. 


   워드 클라우드는 문장 부호나 관사 등의 무의미한 단어를 보여줍니다. 이런 것들을 제거하기 위 텍스트 전처리 (Preprocess Text)를 수행합니다.  문장 부호나 관사 등을 제거합니다.  



    워드 클라우드 위젯을 캔버스에 배치하고 텍스트 전처리 위젯의 출력과 연결합니다. 


워드 클라우드에서 여러 글자를 볼 수 있습니다. 하지만, 여전히 said, would, could와 같은 의미 없는 단어가 보입니다. 직접 의미 없는 단어를 제거하기 위해 custom stopword list를 만듭니다. Text Editor 나 워드패드를 열고, 불필요한 단어를 적은 후에 저장합니다. 여기서는 stopword.txt로 저장합니다.


 텍스트 전처리 (Preprocess Text) 위젯을 열고, Stopwords 항목에 stopword.txt 파일을 배치합니다. 바로 워드 클라우드에 반영된 워드 클라우드를 확인할 수 있습니다. 




5. 웹크롤링 : 리스틀리로 데이터 수집하기

   워드 클라우드를 사용하기 위해서는 데이터가 필요합니다. 지금은 오렌지 프로그램에서 제공하는 그림 형제가 쓴 동화를 바탕으로 분석했지만, 실제 활용하기 위해서는 데이터 수집 방법이 필요합니다.


   특정 웹사이트의 고객 피드백이나 댓글을 분석할 때 워드 클라우드는 효과적입니다. 웹 페이지의 데이터를 수집하는 방법 중에 리스틀리를 이용한 방법이 있습니다. 구글의 크롬 브라우저로 접속한 후에 listly.io 에 접속하여 "크롬 확장 프로그램 추가" 버튼을 클릭합니다. 



   구글 크롬 브라우저 우측 상단에서 확장팩 아이콘을 선택합니다. Listly - Data Scraper 부분에 핀셋을 파란색으로 바꿉니다. 핀셋을 고정하면 연필 모양의 긴 막대기가 크롬 브라우저 주소창 옆에 생깁니다. 언제든지 클릭하면 데이터를 스크랩할 수 있습니다. 



   사람들의 댓글을 분석하기 위해 안드로이드 구글 플레이 마켓에 접속합니다. 하단의 "리뷰 모두 보기"를 클릭하고 스크롤 다운을 합니다. 원하는 만큼의 데이터를 얻기 위해 계속 스크롤을 합니다. 


   우측 상단의 리스틀리 연필 막대를 클릭하면 자동으로 리스틀리 대시보드 사이트로 이동을 하고, 아래와 같이 데이터를 수집합니다. 수집한 데이터를 분석하기 쉽게 가공합니다. 


   유튜브나 구글에서 리스틀리를 검색하면 사용법에 대한 글들이 많기 때문에 이 글에서는 간단하게 정리합니다. 




참조 자료 : 오렌지 프로그램  설명

                    리스틀리 사용법 설명


https://www.youtube.com/watch?v=V70UwJZWkZ8&list=PLmNPvQr9Tf-bxmjlFRg0AGjMzzd1y8_kB


https://www.youtube.com/watch?v=P5EzsnKRRY0&t=85s

매거진의 이전글 머신 러닝 강의 노트 - 1. 단변수 선형 회귀 (상)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari