교육통계/텍스트마이닝

텍스트마이닝-단어빈도, 워드클라우드

개노답이글스 2022. 11. 3. 16:20

1. 단어 빈도 분석

명사를 담아둔 noun 객체를 활용해서 분석을 이어가 보겠습니다.

특정 단어가 자주 등장한다면, 일단 그 단어에 주목해볼 필요가 있겠죠.

마치 양적 연구에서 기술통계를 통해 변수의 평균과 표준편차 등을 살펴보듯이

어떤 단어가 자주 등장하는지 살펴보려 합니다.

빈도 계산을 위해 dplyr 패키지 불러와주시고,

count와 filter, str_count 함수를 사용하려 합니다.

noun_frequency <- noun %>%

count(word, sort = T) %>%

filter(str_count(word)>1)

count: 전체 단어의 개수를 세어줍니다.

filter: 특정 조건에 따른 값만 보여줍니다.

str_count: word에서 1글자 초과하는(2글자 이상) 것만 나오도록 설정해줍니다.

1글자 단어는 그게 어떤 의미인지 보통 알기 어려우니 제외해줍니다.

결과를 살펴보니,

정체불명의 단어가 달려있네요..

삭제가 필요하겠습니다

**불용어 처리

저런 것처럼 의미를 알 수 없는 단어들이 종종 포함되는데,

저런 것들 싹 지워줘야.. 데이터가 잘 추출되겠죠

또 연구자 판단에 의미를 알 수 없는 단어라 하면 과감히 지워주세요

이런 쓸데없는 단어를 불용어(stopword)라 하는데,

이를 따로 저장해줍니다.

제가 대충 써놨던 불용어를 쓰면,

stopword <- c("들이","하게","하다","하면","해서","이번","하네","해요",

"이것","니들","하기","하지","한거","해주","그것","어디",

"여기","까지","이거","하신","만큼","진짜","아무것","^ㅋ",

"누구","해라","니들","하려","^ㅋ^ㅋ^ㅋ","하라","그때",

"하지마","때문","어디","이젠","한게","하니","^ㅎ","가서",

"한지","해놨어","거기","라가","할꺼면서","무조껀","암것",

"하는거","하거","누가","할라하지","정도","군지","로하","가야겠네",

"^ㅋ^ㅋ^ㅋ^ㅋ^ㅋ","하나")

 

이거를 사용해서 지워보겠습니다.

noun_frequency1 <- noun_frequency %>%

filter(!word %in% stopword)

filter(!word %in% stopword) : stopword에 존재하는 단어들을 word에서 지워줍니다.

결과를 살펴보면,

아까 그 놈들이 안 보이네요 ㅋㅎㅋㅋ

상위 30개 단어만 보겠습니다.

top30 <- noun_frequency1 %>%

head(30)

head(30): 상위 30개 단어만 보이게 설정

단어 30개만 모아놓은 것을 사용해서, 단어 빈도 그래프와 워드 클라우드를 그려볼까요

2. 빈도 그래프, 워드 클라우드

먼저 그래프부터 그려보면,

ggplot을 사용해서 그려보겠습니다.

library(scales)

library(ggplot2)

이 두 가지 패키지 불러놓은 다음에,

ggplot(top30, aes(x = reorder(word, n), y=n)) +

geom_col()+

coord_flip()+

geom_text(aes(label = comma(n, accuracy = 1)), hjust = -0.3) +

scale_y_continuous(limits = c(0,200)) +

labs(x = NULL, y= NULL) +

theme_minimal()

ggoplt 함수에서 scale_y_continuous(limits = c(0,200))

이 조건만 주의하면 됩니다,

아까 구한 단어 빈도에서 최댓값 보다 작거나, 너무 크지 않게 설정을 해주셔야 그래프가

이쁘게 나올 듯싶어요 ㅎㅋㅋ

암튼 실행하면,

이런 식으로 나오게 됩니다.

ggplot을 제가 잘 못써서.. 색깔 넣는 것은 솔직히 잘 모르겠습니다 ㅎㅋㅋㅋ

이어서 워드 클라우드를 보면,

library(wordcloud2) 를 사용하면 간단하고 예쁜 워드 클라우드가 나옵니다.

wordcloud2(top30, size = 1)

이렇게 보면, 수능 관련 기사에 사람들이 댓글을 통해

여전히 코로나 이슈가 해결되지 않았다는 것을 볼 수가 있네요.

백신, 확진자, 접종 등의 단어가 눈에 띄네요 ㅠ