Base/R

[R] R을 통한 텍스트마이닝에서 워드클라우드 까지

반응형

#텍스트 마이닝

 

시작전에 자바  jdk를 깔고 환경변수를 설정해줘야 한다. jdk를 통해 KoNLP 통해 돌리기 떄문이다. 이부분이 선행되야 나머지가 된다.

KoNLP는 일반적인 인스톨을 해서는 안되고 위와같이 github라는 것을 통해서 받아야 한다.

 

없는부분은 install하자 java home의 위치나 버전은 사람마다 다를 수도 있으니 해당 경로를 맞춰주자.

 

 

test라는 변수에 문자열을 넣어준다.

 

extractNoun을 통해 명사를 추출해낸다.

 

 

 

이제 뽑아낸 명사를 전처리 하는 과정을 거친다.

 

#전처리

명사를 추출한 데이터에서 nchar()를 통해 두글자 이상의 글자만 가져온다. 한글자로 만된 것중에 등 한 이런것들을 뺴기 위해서이다.

 

 

table 함수를 사용해서 각각의 데이터가 몇번씩 나왔는지 확인한다.

 

 

 

빅데이터~ 는 명사로 뽑으면 빅데이터 단어가 끝이기 때문에 전처리가 제대로 안된 부분에 대해서는 이런식으로 전처리를 해준다.

 

테이블 데이터를 WFreq로 확인한다.

 

이제 테이블 데이터를 가지고 워드클라우드를 만든다.

 

 


예제

기본적인 텍스트 마이닝 단계는 text -> corpus(말뭉치) -> TDM(단어에 따른 매트릭스) -> 매트릭스로 형변환 -> 워드클라우드

로 나뉜다. 전체적인 로직은 이렇다.

 

이걸 하나씩 풀어서 설명해보자

 

 

#VCorpus - 받은 text를 말뭉치로 만드는 함수

받은 데이터를 말뭉치로 만드는 작업이다. 이렇게 만들어 놔야 전처리를 하기 쉽다.

 

#TermDocumentMatrix - 행이 단어, 열이 문서 형태로 된 행렬을 만드는 함수

이 말뭉치들을 TermDocumentMatrix를 통해 데이터를 확인한다.

9개의 도큐먼트중에 37개의 단어를 를 찾았다.

행열로 봤을때 0 으로 매칭되지 않는 값이 56개가 있다는 뜻이다 . 즉 한번이라도 노출된 개수가 56개이다.

Maximal term Length 는 가장 긴 단어가 10글자이다.

Sparsity는 희소행렬이다.

 

#tm_map - 전처리를 도와주는 함수

이제 데이터에서 불용어(쓰이지 않는 단어)를 처리한다. 

stopwords('en')에는 영어에서 불용어처리 하는 단어들이 들어있다. 그데이터에 추가적으로 걸리지 않는 and 나 not 등을 추가로 해 stopwords2를 만들어준다. 

그후 데이터를 가공하는 작업을 진행한다.

이런 방식으로 한번에 하는 것 도 가능하다.

#확인

 

 

 

TermDocumentMatrix를 통해 해당문서에서 단어 발생유무를 0,1로 나타낸다.

그 후 그 값을 매트릭스로 형변환 시킨다. 

왼쪽행에 값에는 단어가 들어있고 위에 Docs는 이 단어가 발생된 위치의 순서값에 0 / 1 로 값이 존재하는지를 나타낸다.

 

다시 전체로 보면

 

 

 

이런식으로 결과가 나온다.

반응형