tidytext와 KoNLP 함께 사용하기

여러분 안녕하세요?
코딩하다가 여러분도 필요할 것 같아서 공유드립니다. 최근 Julia Silge가 내놓은 tidytext가 선풍적인 인기를 끌고 있습니다. LSTM을 사용하는 사람에게는 거의 필수품이 되고 있습니다. UT Austin 출신의 닥터 Silge의 노력으로 tidyr과 tibble 계열의 기술들이 새롭게 가치평가 받고 있다고 봅니다.

문제는... 한글 처리는 전혀 안되기 때문에...

그래도 우리에게는 koNLP가 있습니다. 오늘은 koNLP, stringr과 함께 tidytext를 함께 사용하는 방법에 대해서 소개 드리겠습니다.


library(tidytext)
library(dplyr)
library(KoNLP)
library(stringr)

필요한 것들을 다 불러왔네요.

그럼 분석할 대상을 좀 보죠.

temp.text=tibble(lineid=1:3,

  text=c("한국(韓國), 조선(朝鮮), 또는 코리아(Korea)는 동아시아에 위치한 지역 또는 헌법상의 국가로, 현대사에서는 한반도의 대한민국과 조선민주주의인민공화국을 통틀어 이르는 말이다.",
         "근현대사에서 한국은 고종이 수립한 대한제국을 일컫는 말이었다.",
         "넓은 의미로 한국은 고조선 이후 한반도에서 설립된 여러 한민족의 국가를 통칭하는 말이다. 한국의 역사를 한국사라고 한다."

temp.text를 분석하겠습니다.

몇 가지 stopping word 처리를 위한 데이터를 만들어보겠습니다.

stopping_ko_end=regex("입니다$|이다$")
stopping_ko=tibble(word=c('','','',''))

이제,


temp=temp.text%>%
  group_by(lineid)%>%
  mutate(text_matched=SimplePos09(text)%>%
           unlist()%>%
           paste(collapse=' ')%>%
           str_extract_all(regex('[^\\s]+/N'))%>% #POS에서 명사부만 뽑겠습니다.
           unlist()%>%
           paste(collapse=' ' )%>%
           str_remove_all('/N')%>% #태그는 지우지요.
           str_remove_all(stopping_ko_end))%>%
  ungroup()%>%
  unnest_tokens(word,text_matched)%>%
  select(-text)%>%
  anti_join(stopping_ko)


결과를 보면,

멋지게 tidytext로 분석하도록 변환했습니다. Wow~

댓글

댓글 쓰기

이 블로그의 인기 게시물

R에서 csv 파일 읽는 법

xlwings tutorial - 데이터 계산하여 붙여 넣기