세로형
Recent Posts
Recent Comments
Link
12-22 05:07
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

꿈 많은 사람의 이야기

R KoNLP를 이용해 텍스트 마이닝을 진행해보자 본문

R

R KoNLP를 이용해 텍스트 마이닝을 진행해보자

이수진의 블로그 2017. 12. 4. 08:59
반응형
728x170

R에서 텍스트 마이닝을 할 수 있습니다

즉 텍스트(문장)이 주어지면 그게 주어인지, 동사인지 등등을 파악할 수 있죠(형태소 분석)

저는 영어가 아닌 한글의 텍스트 마이닝을 진행해보려고 합니다.

 

 

일단 이 텍스트 마이닝을 진행하려면 컴퓨터에 java가 설치되어 있어야 합니다

자바가 설치되어 있다고 가정하에 진행하겠습니다

 

 

위 3개의 패키지를 설치해줍니다

KoNLP, rJava, memoise 3개의 패키지입니다

패키지 설치가 완료되었죠?

자 이제 useNIADic( )을 통해 사전을 가지고 옵니다

KoNLP에서 지원하는 NIA 사전은 98만여 개의 단어로 구성되어 있는데요

이 사전을 활용해서 진행해야 합니다

 

 

저렇게 useNIADic( )을 하게 되면요

 

 

 

이렇게 install이 되면서 진행될겁니다

 

 

98만여개의 단어가 built가 되었다고 하네요!

 

자 이제 본격적인 텍스트마이닝을 해보죠

저는 힙합 가사를 이용해서 진행했습니다

힙합 가사는 한줄 한줄로 되어 있어요

 

 

이렇게요

저는 책으로 공부하느라고 책에서 준 자료를 토대로 했는데요

그냥 아무거나 복사 붙여넣기 해서 해도 상관없습니다!

 

근데 저 가사를 보면 특수 문자가 좀 많죠?

저 특수 문자를 처리해줘야 합니다

 

stringr 패키지에서 str_replace_all을 이용해야 합니다

 

자 이렇게 stringr 패키지를 설치해줍니다

그리고

data <- readLines("hiphop.txt")

를 통해 txt파일을 가지고 옵니다

저는 hiphop.txt 파일이에요!

이건 여러분들이 각자 가지고 있는 텍스트 파일을 기준으로 하면 됩니다.

 

 

자 이제 특수문자를 제거해줍니다

library를 통해 stringr을 불러오구요

str_replace_all을 통해 data에 있는 특수문자를 빈칸으로 전부 처리합니다.

 

자 이제 KoNLP를 이용해서 단어를 구분해보죠

테스트를 일단 해볼까요?

명사를 먼저 추출해볼게요

 

extractNoun( )을 통해 명사를 추출해보죠

 

자 이렇게 안에 문자열을 쓰면요

 

 

이렇게 나름대로? 문자를 구별해서 명사인 단어를 뽑아줍니다

테스트를 마쳤으니 이제 실전으로 해보죠

 

마찬가지로 extractNoun을 통해서 명사를 추출하고요

그 추출한 단어의 빈도수를 생성할겁니다

그리고 테이블 형태의 데이터를 데이터 프레임으로 변환시킬거구요

 

 

위 처럼 하면 됩니다

table(unlist())는 리스트 형태를 테이블로 변환시켜줍니다

그리고 as.data.frame은 데이터 프레임으로 변환시켜줍니다

이제 최종적으로 df_word라는 곳에 들어갔어요

 

 

 

이렇게요!

그리고 변수명을 살짝 바꿔볼게요

rename( )을 통해서 변수명을 바꿉니다.

var1을 word로, Freq를 freq로 바꿉니다

 

이렇게 바꿔주고요

글자수가 1개인 애들은 무의미한 글자일 확률이 높기에 제외시킵니다

nchar(word)를 통해서 글자길이가 2개 이상인 애들만 추출합니다.

 

 

이렇게요!

자 이제 준비는 끝났습니다

한 번 데이터를 봐볼까요?

 

상위 30개만 출력해보겠습니다

arrange()를 통해서 desc로 내림차순으로 바꿔줍니다

 

 

오늘, 사랑, 역사, 시간, 행복, love 등 다양한 글자가 top 랭킹안에 들어와있네요 ㅎㅎ

다음 포스팅에선 이걸로 워드클라우드를 만들어보겠습니다!

 

반응형
그리드형
Comments