#sql 전처리
select distinct(fac_name)
from hosp_info;
#R
install.packages("wordcloud2")
# 라이브러리 로드
library(wordcloud2)
library(RColorBrewer)
library(plyr) #데이터 조작을 위한 패키지를 로드함
library(data.table) #데이터를 테이블로 다루기 위한 패키지를 로드함
# 작업 디렉토리 설정
setwd("c:\\data") # 파일이 있는 디렉토리로 변경
# 텍스트 데이터 로드
txt <- readLines('병원이름.txt', encoding = "UTF-8")
# 특수문자 제거 및 공백 처리
# 불필요한 텍스트를 제거하기
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 != "", ]
#특정 단어 제외하기
word_freq <- subset(word_freq,nouns !="의료법인")
word_freq <- subset(word_freq,nouns !="치과의원")
word_freq <- subset(word_freq,nouns !="한의원")
word_freq <- subset(word_freq,nouns !="부속의원")
word_freq <- subset(word_freq,nouns !="의원")
# 단어 빈도수 데이터프레임 확인
print(head(word_freq, 20))
# 워드클라우드 생성 (하트 모양)
wordcloud2(data = word_freq, shape = "heart", color = brewer.pal(8, "Dark2"))