movie <- read.csv ("movie.csv", header = T, fileEncoding = "euc-kr")
movie
data <- movie$장르
data
source("kyw.R")
#install.packages("wordcloud2")
# 라이브러리 로드
library(wordcloud2)
library(RColorBrewer)
library(plyr) # 데이터 조작을 위한 패키지를 로드 합니다.
library(data.table) # 데이터를 테이블로 다루기 위한 패키지를 로드합니다.
# 작업 디렉토리 설정
setwd("c:\\data") # 파일이 있는 디렉토리로 변경
# 텍스트 데이터 로드
movie <- read.csv ("movie.csv", header = T, encoding = "UTF-8", fileEncoding = 'euc-kr')
txt <- movie$장르
# 특수문자 제거 및 공백 처리
# 불필요한 텍스트를 제거합니다.
cleaned_txt <- iconv(txt, "UTF-8", "UTF-8", sub="")
# 한글과 숫자, 공백을 제외한 모든 특수문자를 공백으로 대체합니다.
cleaned_txt <- gsub("[^[:alnum:][:space:]ㄱ-ㅎㅏ-ㅣ가-힣]", " ", cleaned_txt)
# 연속된 공백을 하나의 공백으로 변환합니다.
cleaned_txt <- gsub("\\s+", " ", cleaned_txt) # 연속된 공백 제거
# 명사 추출 함수
extract_nouns_simple <- function(doc) {
doc <- as.character(doc) # 문자로 변환
words <- unlist(strsplit(doc, "\\s+")) # 공백을 기준으로 단어 분리
nouns <- Filter(function(x) {grepl("^[가-힣]+$", x) && nchar(x) >= 2}, words) # 한글로만 구성된 단어 추출 및 길이 2 이상 필터링
return(nouns)
}
# 명사 추출
nouns <- extract_nouns_simple(cleaned_txt)
# 추출된 명사 확인
print(head(nouns, 10)) # 상위 10개 단어 확인
# 단어 빈도수 계산
word_freq <- table(nouns)
word_freq <- as.data.frame(word_freq, stringsAsFactors = FALSE)
word_freq <- arrange(word_freq, desc(Freq)) # 명사의 빈도수를 내림차순으로 정렬
# 상위 10개 단어 확인
print(head(word_freq, 10))
# 유효하지 않은 값 확인 및 제거
# 빈문자열을 포함하는 행을 제거합니다.
word_freq <- word_freq[word_freq$nouns != "", ]
# 단어 빈도수 데이터프레임 확인
print(head(word_freq, 10))
# 워드클라우드 생성 (하트 모양)
fig <- wordcloud2(data = word_freq, shape = "heart", color = brewer.pal(8, "Dark2"))
fig