서론
문자로 된 데이터에서 가치 있는 정보를 얻어 내는 텍스트 마이닝에 대해 알아보자.
텍스트 마이닝
문자로 된 데이터에서 가치 있는 정보를 얻어 내는 분석 기법을 '텍스트 마이닝(Text mining)'이라고 한다. 텍스트 마이닝을 할 때 가장 먼저 하는 작업은 문장을 구성하는 어절들이 어떤 품사로 되어 있는지 파악하는 '형태소 분석(Morphology Analysis)'이다. 형태소 분석으로 어절들의 품사를 파악한 후 명사, 동사, 형용사 등 의미를 지닌 품사의 단어들을 추출해 각 단어가 얼마나 많이 등장했는지 확인한다. 텍스트 마이닝을 이용해 SNS나 웹 사이트에 올라온 글을 분석하면 사람들이 어떤 이야기를 나누고 있는지 파악할 수 있다.
힙합 음악 가사
'KoNLP(Korean Natural Language Processing)' 패키지를 이용하면 한글 텍스트의 형태소를 분석할 수 있다. 그러나 이 패키지를 이용하기 위해 다른 패키지를 함께 설치해야만 한다. 이처럼 패키지가 의존하고 있는 패키지를 '의존성 패키지'라고 한다.
# KoNLP 이전 설치
install.packages("multilinguer")
library(multilinguer)
install_jdk()
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"))
library(KoNLP)
# 형태소 사전 설정
useNIADic()
# 데이터 준비하기
txt <- readLines("hiphop.txt")
head(txt)
# 특수 문자 제거하기
install.packages("stringr")
library(stringr)
txt <- str_replace_all(txt, "\\W", " ")
텍스트 파일에 있는 힙합 가사에 어떤 단어가 많이 사용됐는지 알아보자. 'KoNLP'의 "extractNoun()'을 이용하면 문장에서 명사를 추출할 수 있다. 한 글자로 된 단어는 의미가 없는 경우가 많기 때문에 "nchar()"을 이용해 두 글자 이상으로 된 단어만 추출한다.
워드 클라우드(Word cloud)는 단어의 빈도를 구름 모양으로 표현한 그래프이다. 워드 클라우드를 만들면 단어의 빈도에 따라 글자의 크기와 색깔이 다르게 표현되기 때문에 어떤 단어가 얼마나 많이 사용됐는지 한눈에 파악할 수 있다.
# 가사에서 명사 추출
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)
top20 <- df_word %>% arrange(desc(freq)) %>% head(20)
# 위드 클라우드 패키지 준비
install.packages("wordcloud")
library(wordcloud)
library(RColorBrewer) # 내장 패키지
library(dplyr)
# 단어 색상 목록 만들기
pal <- brewer.pal(8, "Dark2")
# 난수 고정
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) # 색상 목록
주섬주섬
- txt파일의 한글이 깨진다면, R studio의 인코딩을 확인하고 txt파일도 같은 인코딩으로 설정해주면 된다. "UTF-8"을 추천한다.
참고
GitHub - youngwoos/Doit_R: <Do it! 쉽게 배우는 R 데이터 분석> 저장소
<Do it! 쉽게 배우는 R 데이터 분석> 저장소. Contribute to youngwoos/Doit_R development by creating an account on GitHub.
github.com
GitHub - haven-jeon/KoNLP: R package for Korean NLP
R package for Korean NLP. Contribute to haven-jeon/KoNLP development by creating an account on GitHub.
github.com
국정원 의심 계정 트윗 분석
요즘 인터넷이 국정원의 정치개입의혹 때문에 떠들썩 합니다. 외국에 살기에 주로 인터넷을 통해 국내 상황을 접하는 데 트위터에서 보면 인터넷상에서만 정보가 오가지 공중파 방송이나 조중
wsyang.com
'프로그래밍 언어 > R' 카테고리의 다른 글
R 11. 인터랙티브 그래프 (0) | 2024.02.02 |
---|---|
R 10. 지도 시각화 (0) | 2024.02.02 |
R 8. 데이터 분석하기 (0) | 2024.02.01 |
R 7. 그래프 만들기 (1) | 2024.01.31 |
R 6. 데이터 정제하기 (0) | 2024.01.30 |
댓글