Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Archives
Today
Total
관리 메뉴

잡동사니 블로그

R 간단한 한글 워드클라우드 본문

R

R 간단한 한글 워드클라우드

코딩부대찌개 2023. 5. 15. 10:56

https://n.news.naver.com/mnews/article/032/0003209196?sid=105 

 

AI 운명 결정할 ‘FATE’…인류의 미래도 달려 있다[인공지능 길들이기]

‘휴일 오후 소파에 누워 휴대전화로 온라인 쇼핑을 시작한다. 비교 검색을 활용해 A제품과 B제품을 찾아낸다. 화면 오른쪽 아래에 있는 로봇 아이콘을 누른다. 식품에 부착되는 식품영양정보처

n.news.naver.com

R에서 간단하게 워드클라우드 만들려고 하니 konlp랑 rhino가 install이 안됨. 

버전 3.x.x 으로 낮추니 stringr 패키지에서 다시 버전 안맞아서 안됨. 

또 맞추니 다른 버전에서 에러남.

화가나서 간단하게 만들어본 코드

파이썬으로 하면 쉬운데 암튼이부분이 중요함

 

#따옴표 처리
myCorpus <- tm_map(myCorpus, content_transformer(gsub), pattern = "”|‘|’|”", replacement = "")

#조사 제거
myCorpus <- tm_map(myCorpus, content_transformer(gsub), pattern = "(의|는|을|이|가|은|를|에게)(?=\\s)", replacement = "", perl = TRUE)

''    ‘’  

따옴표도 차이가 있음...

조사를 제거하기 위해서 정규 표현식 썼음 조사 뒤에 공백이 올 경우에만 제거함

나머지는 tm 패키지로 전처리함 소문자로 변경 공백 제거등

 

# install.packages('httr')
library(httr)

# install.packages('XML')
library(XML)

# install.packages("stringr")
library(stringr)
# install.packages("dplyr")
library(dplyr)
# install.packages('tm')
library(tm)
# install.packages('rvest')
library(xml2)
library(httr)
library(rvest)
# install.packages("wordcloud")
library(wordcloud)

url="https://n.news.naver.com/mnews/article/032/0003209196?sid=105"
page <- GET(url)
doc <- read_html(page)
article <- html_text(html_nodes(doc, "#newsct_article"))

# tm 패키지를 이용한 전처리
myCorpus <- VCorpus(VectorSource(article))
myCorpus <- tm_map(myCorpus, content_transformer(tolower))
myCorpus <- tm_map(myCorpus, removeNumbers)
myCorpus <- tm_map(myCorpus, removePunctuation)
myCorpus <- tm_map(myCorpus, stripWhitespace)
myCorpus <- tm_map(myCorpus, content_transformer(stemDocument))
myCorpus <- tm_map(myCorpus, content_transformer(removePunctuation))
myCorpus <- tm_map(myCorpus, content_transformer(removeNumbers))

#따옴표 처리
myCorpus <- tm_map(myCorpus, content_transformer(gsub), pattern = "”|‘|’|”", replacement = "")


#조사 제거
myCorpus <- tm_map(myCorpus, content_transformer(gsub), pattern = "(의|는|을|이|가|은|를|에게)(?=\\s)", replacement = "", perl = TRUE)

# DocumentTermMatrix 만들기
dtm <- DocumentTermMatrix(myCorpus)              

term_freq <- colSums(as.matrix(dtm))
term_freq[order(term_freq, decreasing = TRUE)][1:10]

#wordcloud 그리기
set.seed(123)
term_freq=colSums(as.matrix(dtm))
windows(width=6.5, height = 6.5)
wordcloud(words=names(term_freq), freq=term_freq, scale=c(5, 1.2), min.freq = 3, rot.per = 0, random.order = FALSE, 
          random.color = FALSE, colors = brewer.pal(5,"Set1"))

조사 처리 전
조사 처리 후

생각보다 차이 많이 나는걸 볼 수 있음