문자로 된 데이터에서 가치 있는 정보를 얻어 내는 분석 기법을 '텍스트 마이닝'이라고 한다. 텍스트 마이닝을 하기 전에는 '형태소 분석'을 하는데, '형태소 분석' 이란 문장을 구성하는 어절들이 어떤 품사로 되어 있는지 파악하는 것이다. 따라서, '형태소 분석' 으로 어절들을의 품사를 파악하고 품사의 단어들을 추출한 다음 얼마나 많이 등장했는지를 확인할 수 있다.
먼저, 필요한 패키지들을 설치 및 확인한다. 그 다음 extractNoun() 함수를 사용해서 명사를 추출한다.
# 필요한 라이브러리 설치 및 로드
install.packages("multilinguer")
library(multilinguer)
install_jdk()
# KoNLP의 의존성 패키지 설치
install.packages(c("stringr", "hash", "tau", "Sejong", "RSQLite", "devtools"), type = 'binary')
# koNLP 패키지 설치
install.packages("remotes")
remotes::install_github("haven-jeon/KoNLP", upgrade = 'never', INSTALL_opts = c("--no-multiarch"))
install.packages("KoNLP", dependencies = TRUE)
library(KoNLP)
# 사용할 사전 설정
useNIADic()
# 텍스트 파일 읽기
txt <- readLines("(저장위치)/hiphop.txt")
# 텍스트 데이터 확인
head(txt)
# 문자 처리 패키지
library(stringr)
# 특수문자 제거
txt <- str_replace_all(txt, "\\W", " ")
# 명사 추출 예시
sentence <- "대한민국의 영토는 한반도와 그 부속도서로 한다"
nouns <- extractNoun(sentence)
print(nouns)
# 출력값
[1] "대한민국" "영토" "한반도" "부속도서" "한"
명사가 정확하게 추출되었다면 빈도표를 테이블 형태로 만들고 자주 사용된 단어를 빈도표로 만들겠다.
nouns <- extractNoun(txt)
# 추출한 명사 list를 문자열 벡터로 변환, 단어별 빈도표 생성
wordcount <- table(unlist(nouns))
# 데이터 프레임으로 변환
df_word <- as.data.frame(wordcount, stringsAsFactors = F)
# 변수명 수정
df_word <- rename(df_word,
word = Var1,
freq = Freq)
# 두 글자 이상 단어 추출
df_word <- filter(df_word, nchar(word) >= 2)
top_20 <- df_word |>
arrange(desc(freq)) |>
head(20)
top_20
# 출력값
word freq
1 you 89
2 my 86
3 YAH 80
4 on 76
5 하나 75
6 오늘 51
7 and 49
8 사랑 49
9 like 48
10 우리 48
11 the 43
12 시간 39
13 love 38
14 to 38
15 we 36
16 it 33
17 em 32
18 not 32
19 역사 31
20 flex 30
다음에는 wordcloud 패키지를 설치하고 8개 색상으로 워드 클라우드를 구현하겠다.
# 패키지 설치
install.packages("wordcloud")
# 패키지 로드
library(wordcloud)
library(RColorBrewer)
pal <- brewer.pal(8,"Dark2") # Dark2 색상 목록에서 8개 색상 추출
set.seed(1234)
wordcloud(words = df_word$word, # 단어
freq = df_word$freq, # 빈도
min.freq = 2, # 최소 단어 빈도
max.words = 200, # 표현 단어 수
random.order = F, # 고빈도 단어 중앙 배치
rot.per = .1, # 회전 단어 비율
scale = c(4, 0.3), # 단어 크기 범위
colors = pal) # 색깔 목록
이렇게 글자의 크기, 색상을 통해 직관적으로 어떤 단어가 많이 사용되었는지 확인할 수 있다.
'My Work > Data Literacy' 카테고리의 다른 글
R 공부 (8편) - 쉽게 배우는 R 데이터 분석 (0) | 2024.08.05 |
---|---|
R 공부 (6편) - 쉽게 배우는 R 데이터 분석 (0) | 2024.07.28 |
R 공부 (5편) - 쉽게 배우는 R 데이터 분석 (2) | 2024.07.15 |
R 공부 (4편) - 쉽게 배우는 R 데이터 분석 (1) | 2024.07.14 |
R 공부 (3편) - 쉽게 배우는 R 데이터 분석 (0) | 2024.07.10 |