# 패키지 불러오기
library(devtools)
library(KoSpacing)
## loaded KoSpacing model!
library(KoNLP)
## Checking user defined dictionary!
library(rJava)
library(tm)
## Loading required package: NLP
library(stringr)
library(wordcloud2)
library(igraph)
##
## Attaching package: 'igraph'
## The following objects are masked from 'package:stats':
##
## decompose, spectrum
## The following object is masked from 'package:base':
##
## union
library(ggraph)
## Loading required package: ggplot2
##
## Attaching package: 'ggplot2'
## The following object is masked from 'package:NLP':
##
## annotate
library(visNetwork)
#Java 설정
Sys.setenv(JAVA_HOME="C://Program Files//Java//jre-9")
# 파일 불러오기
txt <- file("q13.txt", encoding = "UTF-8") #애초 파일은 ANSI 형태
text <- readLines(txt)
close(txt)
text
## [1] "<U+FEFF>강원"
## [2] "기초학력부터 미래학력까지 책임지는 교실 혁신"
## [3] "유치원부터 고등학교까지 돈 안 드는 교육 완성"
## [4] "더 따뜻해지는 사람중심 행복교육"
## [5] "집처럼 편안하고 안전한 학교"
## [6] "마을과 학교가 만나 민주시민 키우는 강원교육"
## [7] ""
## [8] "경기"
## [9] "경기혁신교육3 0 실현"
## [10] "4 16교육체제 공정한 교육 공평한 학교 "
## [11] "학교자치 학교민주주의 실현"
## [12] "미래시대 진로·진학교육 강화"
## [13] "평화통일교육 강화"
## [14] ""
## [15] "경남"
## [16] "미래사회를 대비한 미래교육체제를 구축하겠습니다 "
## [17] "따뜻한 돌봄 정의로운 교육을 실현하겠습니다 "
## [18] "조용한 교실혁명 배움이 있는 학교를 만들겠습니다 "
## [19] "더 안전하고 더 안심한 학교를 조성하겠습니다 "
## [20] "삶을 가꾸는 인성교육 평화로운 학교를 만들겠습니다 "
## [21] ""
## [22] "경북"
## [23] "학교 내 미세먼지 유해물질 제로화 추진"
## [24] "유치원부터 고등학교까지 무상급식 확대"
## [25] "학생인권 및 교권보호를 위한 행복교육거점지원센터 구축"
## [26] "미래사회 대비 수학문화관 및 메이커센터 설립"
## [27] "진로진학상담센터 구축"
## [28] ""
## [29] "광주"
## [30] "고교 무상교육 시행"
## [31] "4차산업혁명 진로체험센터 건립"
## [32] "광주학생문화예술체험센터 건립"
## [33] "통일시대에 대비한 평화통일교육 시행"
## [34] "대학입시제도 전면 개편"
## [35] ""
## [36] "대구"
## [37] "미래사회 창의 융합 인재를 양성하겠습니다"
## [38] "지역별 교육격차를 해소하겠습니다 "
## [39] "믿고 맡기는 안심학교를 만들겠습니다 "
## [40] "건강하고 행복한 학교를 만들겠습니다 "
## [41] "교실 중심 학교자율책임경영를 보장하겠습니다 "
## [42] ""
## [43] "대전"
## [44] "미래를 선도하는 교육혁신"
## [45] "창의·융합형 미래 인재 양성"
## [46] "안전하고 건강한 학교"
## [47] "공정하고 효율적인 교육경영"
## [48] "교육기회 균등 교육복지"
## [49] ""
## [50] "부산"
## [51] "미래를 준비하는 부산 "
## [52] "아이 키우기 좋은 부산 "
## [53] "교육격차 없는 부산 "
## [54] "공부도 잘하는 부산"
## [55] "평화롭고 안전한 부산 "
## [56] ""
## [57] "서울"
## [58] "4차 산업혁명시대를 살아갈 힘 학교에서 키우겠습니다 "
## [59] "따뜻하고 정의로운 서울교육을 만들겠습니다 "
## [60] "안전하고 쾌적한 학교 더불어 살아가는 평화로운 세계시민을 만들겠습니다 "
## [61] " 다시 새롭게 더 새롭게 혁신교육을 발전시키겠습니다 "
## [62] "시민과 함께 교육도시 서울 을 만들어가겠습니다 "
## [63] ""
## [64] "세종"
## [65] "캠퍼스형 공동교육과정 확대와 캠퍼스형 고등학교 설립"
## [66] "유아교육의 혁신"
## [67] "미래 인재 육성"
## [68] "교육복지 최고 세종 실현"
## [69] "교원이 교육에 전념할 수 있도록 지원"
## [70] ""
## [71] "울산"
## [72] "성역없는 부패비리 원스트라이크 아웃"
## [73] "유치원에서 고등학교까지 친환경 무상급식"
## [74] "무상교복 무상교과서 수학여행비 지원"
## [75] "학교 교육과정 외 강제학습 폐지"
## [76] "학교통학로 전수조사 및 통학안전용품 지급"
## [77] ""
## [78] "인천"
## [79] "기회는 균등하고 결과는 정의로운 평등교육 을 실현하겠습니다 "
## [80] "우리 아이들의 꿈을 위해 혁신미래교육의 문을 활짝 열겠습니다"
## [81] "믿고 맡길 수 있는 안심교육 꼭 만들겠습니다"
## [82] "학교 마을과 협력하는 소통교육의 시대를 열겠습니다"
## [83] "부정부패 성폭력 없는 청정교육 반드시 지키겠습니다"
## [84] ""
## [85] "전남"
## [86] "교육비부터 진로 진학까지 이젠 걱정 끝"
## [87] "소통과 협력이 교육을 바꿉니다"
## [88] "시설부터 환경 급식까지 이젠 안심입니다"
## [89] "미래교육 1번가는 전남입니다 "
## [90] "교육공동체의 새로운 변화를 만들어 갑니다 "
## [91] ""
## [92] ""
## [93] "전북"
## [94] "공교육 혁신으로 4차 산업혁명 시대를 대비하겠습니다 "
## [95] "교육예산 확대로 학부모 교육비 부담 계속 줄이겠습니다 "
## [96] "학교안전 민주교육행정으로 교육자치 실현하겠습니다 "
## [97] "교육에 집중합시다 선생님을 응원합니다 "
## [98] "전북도민과 함께 전북교육자치 꽃 피우겠습니다 "
# 불용어 처리 및 띄워 쓰기 교정
text <- gsub("\\[(.*?)\\]", "",text) #대괄호안의 내용 삭제(대괄로도 포함)
text <- gsub("현재", "",text) #해당글자 제거
text <- gsub("[^가-힣]", "",text) #한글외 모든 문자 제거
text <- spacing(text ) #띄워쓰기 교정
text <- str_trim(text) # 문자 앞 뒤 빈공간 없애기
# 사전 추가
useSejongDic()
## Backup was just finished!
## 370957 words dictionary was built.
word <- data.frame(c("업드레곤", "혁신")) # 단어 추가
buildDictionary(ext_dic = c("sejong", "woorimalsam"), user_dic=word, replace_usr_dic = T)
## 716905 words dictionary was built.
# 명사추출 및 단어설정
nouns <- sapply(text,extractNoun, USE.NAMES = F) # KoNLP 명사추출
unlist_nouns <- unlist(nouns) # unlist
unlist_nouns_n <- Filter(function(x){nchar(x)>=2 & nchar(x)<=5}, unlist_nouns)
wordcount <- table(unlist_nouns_n)
wordcount <- sort(wordcount, decreasing = T)
wordcount
## unlist_nouns_n
## 교육 학교 미래 만들겠습니 안전 로운
## 31 16 9 7 6 5
## 센터 고등학교 무상 시대 안심 진로
## 5 4 4 4 4 4
## 혁신 교실 대비 미래사회 산업혁명 유치원
## 4 3 3 3 3 3
## 인재 정의 평화 행복 건강 격차
## 3 3 3 3 2 2
## 공정 교육체제 급식 따뜻 마을 서울
## 2 2 2 2 2 2
## 소통 시민 열겠습니 이젠 전북 중심
## 2 2 2 2 2 2
## 진학 창의 체험 캠퍼스 평화통일 협력
## 2 2 2 2 2 2
## 확대 가겠습니 강제 거점 걱정 결과
## 2 1 1 1 1 1
## 경기 경영 고교 공교육 공동 공부
## 1 1 1 1 1 1
## 공평 과정 광주학생 교과서 교권 교복
## 1 1 1 1 1 1
## 교원 교육공동체 교육예산 교육자 교육자치 균등
## 1 1 1 1 1 1
## 기초학력 기회 기회균등 도민 도시 먼지
## 1 1 1 1 1 1
## 메이커 무상교육 문화관 문화예술 미세 민주교육
## 1 1 1 1 1 1
## 민주주의 번가 변화 보호 복지 부담
## 1 1 1 1 1 1
## 부정부패 부패 사람 선도 선생님 성역
## 1 1 1 1 1 1
## 성폭력 세계 세종 수학 수학여행비 스트라이크
## 1 1 1 1 1 1
## 시설 아이들 안전용품 우리 원교 유아교육
## 1 1 1 1 1 1
## 유해물질 융합 융합형 응원 인권 인성교육
## 1 1 1 1 1 1
## 자율 자치 전념 전면 전수 제로화
## 1 1 1 1 1 1
## 조사 조용 준비 줄이겠습니 지역별 지원
## 1 1 1 1 1 1
## 지키겠습니 진학상담 집중 책임 청정 최고
## 1 1 1 1 1 1
## 친환경 쾌적 키우겠습니 통일시대 통학 통학로
## 1 1 1 1 1 1
## 편안 평등 피우겠습니 학력 학부모 학생
## 1 1 1 1 1 1
## 학습 한학 행정 혁명 환경 효율적
## 1 1 1 1 1 1
# 워드클라우드 1 # size = font size 플로팅 결과 보고 사이즈 조절 필요
wordcloud2(data = wordcount, size = 1.5,
fontFamily = 'Segoe UI', fontWeight = 'bold', shape = 'pentagon')
***
# 워드클라우드 2 - 일정 빈도 이상 단어만 추출
wordcount_1 <- data.frame(wordcount)
summary(wordcount_1)
## unlist_nouns_n Freq
## 교육 : 1 Min. : 1.000
## 학교 : 1 1st Qu.: 1.000
## 미래 : 1 Median : 1.000
## 만들겠습니: 1 Mean : 1.896
## 안전 : 1 3rd Qu.: 2.000
## 로운 : 1 Max. :31.000
## (Other) :138
wordcount_2 <- subset(wordcount_1, Freq>=2) #00회 이상 빈도
wordcloud2(data = wordcount_2, size = 1.5,
fontFamily = 'Segoe UI', fontWeight = 'bold', shape = 'pentagon')
# 변환
aa <- VectorSource(nouns)
aa
## $encoding
## [1] ""
##
## $length
## [1] 98
##
## $position
## [1] 0
##
## $reader
## function (elem, language, id)
## {
## if (!is.null(elem$uri))
## id <- basename(elem$uri)
## PlainTextDocument(elem$content, id = id, language = language)
## }
## <bytecode: 0x000000014092e960>
## <environment: namespace:tm>
##
## $content
## $content[[1]]
## [1] "강"
##
## $content[[2]]
## [1] "기초학력" "미래" "학력" "교실" "혁" "신"
##
## $content[[3]]
## [1] "유치원" "고등학교" "돈" "교육" "완" "성"
##
## $content[[4]]
## [1] "사람" "중심" "행복" "교" "육"
##
## $content[[5]]
## [1] "집" "편안" "안전" "한" "학" "교"
##
## $content[[6]]
## [1] "마을" "학교" "민주시민키우는" "원교"
## [5] "육"
##
## $content[[7]]
## [1] ""
##
## $content[[8]]
## [1] "경" "기"
##
## $content[[9]]
## [1] "경기" "혁신" "교육" "실"
##
## $content[[10]]
## [1] "교육체제" "공정" "한" "교육" "공평" "한학"
## [7] "교"
##
## $content[[11]]
## [1] "학교" "자치" "학교" "민주주의" "실"
##
## $content[[12]]
## [1] "미래" "시대" "진로" "진학" "교육" "강" "화"
##
## $content[[13]]
## [1] "평화통일" "교육" "강" "화"
##
## $content[[14]]
## [1] ""
##
## $content[[15]]
## [1] "경" "남"
##
## $content[[16]]
## [1] "미래사회" "대비" "한" "미래"
## [5] "교육체제" "구축하겠습니"
##
## $content[[17]]
## [1] "따뜻" "한" "정의" "로운"
## [5] "교육" "실현하겠습니"
##
## $content[[18]]
## [1] "조용" "한" "교실" "혁명" "학교"
## [6] "만들겠습니"
##
## $content[[19]]
## [1] "안전" "안심" "한" "학교"
## [5] "조성하겠습니"
##
## $content[[20]]
## [1] "삶" "인성교육" "평화" "로운" "학교"
## [6] "만들겠습니"
##
## $content[[21]]
## [1] ""
##
## $content[[22]]
## [1] "경"
##
## $content[[23]]
## [1] "학교" "내" "미세" "먼지" "유해물질" "제로화"
## [7] "추" "진"
##
## $content[[24]]
## [1] "유치원" "고등학교" "무상" "급식"
##
## $content[[25]]
## [1] "학생" "인권" "교권" "보호" "행복" "교육" "거점" "지원" "센터" "구"
##
## $content[[26]]
## [1] "미래사회" "대비" "수학" "문화관" "메이커" "센터"
## [7] "립"
##
## $content[[27]]
## [1] "진로" "진학상담" "센터" "구"
##
## $content[[28]]
## [1] ""
##
## $content[[29]]
## [1] "광" "주"
##
## $content[[30]]
## [1] "고교" "무상교육" "시" "행"
##
## $content[[31]]
## [1] "차" "산업혁명" "진로" "체험" "센터" "거"
## [7] "립"
##
## $content[[32]]
## [1] "광주학생" "문화예술" "체험" "센터" "거" "립"
##
## $content[[33]]
## [1] "통일시대" "대비" "한" "평화통일" "교육" "시"
## [7] "행"
##
## $content[[34]]
## [1] "대학입시제도" "전면" "개" "편"
##
## $content[[35]]
## [1] ""
##
## $content[[36]]
## [1] "대" "구"
##
## $content[[37]]
## [1] "미래사회" "창의" "융합" "인재"
## [5] "양성하겠습니"
##
## $content[[38]]
## [1] "지역별" "교육" "격차" "해소하겠습니"
##
## $content[[39]]
## [1] "안심" "학교" "만들겠습니"
##
## $content[[40]]
## [1] "건강" "행복" "한" "학교" "만들겠습니"
##
## $content[[41]]
## [1] "교실" "중심" "학교" "자율"
## [5] "책임" "경영" "보장하겠습니"
##
## $content[[42]]
## [1] ""
##
## $content[[43]]
## [1] "대"
##
## $content[[44]]
## [1] "미래" "선도" "하" "교육" "혁" "신"
##
## $content[[45]]
## [1] "창의" "융합형" "미래" "인재" "양" "성"
##
## $content[[46]]
## [1] "안전" "건강" "한" "학" "교"
##
## $content[[47]]
## [1] "공정" "효율적" "교육" "경"
##
## $content[[48]]
## [1] "교육" "기회균등" "교육" "복" "지"
##
## $content[[49]]
## [1] ""
##
## $content[[50]]
## [1] "부" "산"
##
## $content[[51]]
## [1] "미래" "준비" "하" "부" "산"
##
## $content[[52]]
## [1] "부" "산"
##
## $content[[53]]
## [1] "교육" "격차" "부" "산"
##
## $content[[54]]
## [1] "공부" "부" "산"
##
## $content[[55]]
## [1] "평화" "안전" "한" "부" "산"
##
## $content[[56]]
## [1] ""
##
## $content[[57]]
## [1] "울"
##
## $content[[58]]
## [1] "차" "산업혁명" "시대" "힘" "학교"
## [6] "키우겠습니"
##
## $content[[59]]
## [1] "따뜻" "정의" "로운" "서울" "교육"
## [6] "만들겠습니"
##
## $content[[60]]
## [1] "안전" "쾌적" "한" "학교" "평화"
## [6] "로운" "세계" "시민" "만들겠습니"
##
## $content[[61]]
## [1] "혁신" "교육" "발전시키겠습니"
##
## $content[[62]]
## [1] "시민" "교육" "도시" "서울" "가겠습니"
##
## $content[[63]]
## [1] ""
##
## $content[[64]]
## [1] "세" "종"
##
## $content[[65]]
## [1] "캠퍼스" "형" "공동" "교육" "확대" "캠퍼스"
## [7] "형" "고등학교" "립"
##
## $content[[66]]
## [1] "유아교육" "혁" "신"
##
## $content[[67]]
## [1] "미래" "인재" "육" "성"
##
## $content[[68]]
## [1] "교육" "복지" "최고" "세종" "실"
##
## $content[[69]]
## [1] "교원" "교육" "전념" "할" "수" "지"
##
## $content[[70]]
## [1] ""
##
## $content[[71]]
## [1] "산"
##
## $content[[72]]
## [1] "성역" "부패" "비" "스트라이크" "웃"
##
## $content[[73]]
## [1] "유치원" "고등학교" "친환경" "무상" "급"
##
## $content[[74]]
## [1] "무상" "교복" "무상" "교과서" "수학여행비"
## [6] "지"
##
## $content[[75]]
## [1] "학교" "교육" "과정" "외" "강제" "학습" "폐" "지"
##
## $content[[76]]
## [1] "학교" "통학로" "전수" "조사" "통학" "안전용품"
## [7] "지" "급"
##
## $content[[77]]
## [1] ""
##
## $content[[78]]
## [1] "천"
##
## $content[[79]]
## [1] "기회" "균등" "결과" "정의"
## [5] "로운" "평등" "교육" "실현하겠습니"
##
## $content[[80]]
## [1] "우리" "아이들" "꿈" "혁신" "미래" "교육"
## [7] "문" "열겠습니"
##
## $content[[81]]
## [1] "수" "안심" "교육" "만들겠습니"
##
## $content[[82]]
## [1] "학교" "마을" "협력" "하" "소통" "교육"
## [7] "시대" "열겠습니"
##
## $content[[83]]
## [1] "부정부패" "성폭력" "청정" "교육" "지키겠습니"
##
## $content[[84]]
## [1] ""
##
## $content[[85]]
## [1] "전" "남"
##
## $content[[86]]
## [1] "교육" "비" "진로" "진학" "이젠" "걱정" "끝"
##
## $content[[87]]
## [1] "소통" "협력" "교육"
##
## $content[[88]]
## [1] "시설" "환경" "급식" "이젠" "안심"
##
## $content[[89]]
## [1] "미래" "교육" "번가" "남"
##
## $content[[90]]
## [1] "교육공동체" "변화" "갑"
##
## $content[[91]]
## [1] ""
##
## $content[[92]]
## [1] ""
##
## $content[[93]]
## [1] "전"
##
## $content[[94]]
## [1] "공교육" "혁신" "차" "산업혁명"
## [5] "시대" "대비하겠습니"
##
## $content[[95]]
## [1] "교육예산" "확대" "학부모" "교육" "비"
## [6] "부담" "줄이겠습니"
##
## $content[[96]]
## [1] "학교" "안전" "민주교육" "행정"
## [5] "교육자" "치" "실현하겠습니"
##
## $content[[97]]
## [1] "교육" "집중" "선생님" "응원" "합"
##
## $content[[98]]
## [1] "전북" "도민" "전북" "교육자치" "꽃"
## [6] "피우겠습니"
##
##
## attr(,"class")
## [1] "VectorSource" "SimpleSource" "Source"
aa_corpus <- Corpus(aa)
inspect(aa_corpus)
## <<SimpleCorpus>>
## Metadata: corpus specific: 1, document level (indexed): 0
## Content: documents: 98
##
## [1] 강
## [2] c("기초학력", "미래", "학력", "교실", "혁", "신")
## [3] c("유치원", "고등학교", "돈", "교육", "완", "성")
## [4] c("사람", "중심", "행복", "교", "육")
## [5] c("집", "편안", "안전", "한", "학", "교")
## [6] c("마을", "학교", "민주시민키우는", "원교", "육")
## [7]
## [8] c("경", "기")
## [9] c("경기", "혁신", "교육", "실")
## [10] c("교육체제", "공정", "한", "교육", "공평", "한학", "교")
## [11] c("학교", "자치", "학교", "민주주의", "실")
## [12] c("미래", "시대", "진로", "진학", "교육", "강", "화")
## [13] c("평화통일", "교육", "강", "화")
## [14]
## [15] c("경", "남")
## [16] c("미래사회", "대비", "한", "미래", "교육체제", "구축하겠습니")
## [17] c("따뜻", "한", "정의", "로운", "교육", "실현하겠습니")
## [18] c("조용", "한", "교실", "혁명", "학교", "만들겠습니")
## [19] c("안전", "안심", "한", "학교", "조성하겠습니")
## [20] c("삶", "인성교육", "평화", "로운", "학교", "만들겠습니")
## [21]
## [22] 경
## [23] c("학교", "내", "미세", "먼지", "유해물질", "제로화", "추", "진")
## [24] c("유치원", "고등학교", "무상", "급식")
## [25] c("학생", "인권", "교권", "보호", "행복", "교육", "거점", "지원", "센터", "구")
## [26] c("미래사회", "대비", "수학", "문화관", "메이커", "센터", "립")
## [27] c("진로", "진학상담", "센터", "구")
## [28]
## [29] c("광", "주")
## [30] c("고교", "무상교육", "시", "행")
## [31] c("차", "산업혁명", "진로", "체험", "센터", "거", "립")
## [32] c("광주학생", "문화예술", "체험", "센터", "거", "립")
## [33] c("통일시대", "대비", "한", "평화통일", "교육", "시", "행")
## [34] c("대학입시제도", "전면", "개", "편")
## [35]
## [36] c("대", "구")
## [37] c("미래사회", "창의", "융합", "인재", "양성하겠습니")
## [38] c("지역별", "교육", "격차", "해소하겠습니")
## [39] c("안심", "학교", "만들겠습니")
## [40] c("건강", "행복", "한", "학교", "만들겠습니")
## [41] c("교실", "중심", "학교", "자율", "책임", "경영", "보장하겠습니")
## [42]
## [43] 대
## [44] c("미래", "선도", "하", "교육", "혁", "신")
## [45] c("창의", "융합형", "미래", "인재", "양", "성")
## [46] c("안전", "건강", "한", "학", "교")
## [47] c("공정", "효율적", "교육", "경")
## [48] c("교육", "기회균등", "교육", "복", "지")
## [49]
## [50] c("부", "산")
## [51] c("미래", "준비", "하", "부", "산")
## [52] c("부", "산")
## [53] c("교육", "격차", "부", "산")
## [54] c("공부", "부", "산")
## [55] c("평화", "안전", "한", "부", "산")
## [56]
## [57] 울
## [58] c("차", "산업혁명", "시대", "힘", "학교", "키우겠습니")
## [59] c("따뜻", "정의", "로운", "서울", "교육", "만들겠습니")
## [60] c("안전", "쾌적", "한", "학교", "평화", "로운", "세계", "시민", "만들겠습니")
## [61] c("혁신", "교육", "발전시키겠습니")
## [62] c("시민", "교육", "도시", "서울", "가겠습니")
## [63]
## [64] c("세", "종")
## [65] c("캠퍼스", "형", "공동", "교육", "확대", "캠퍼스", "형", "고등학교", "립")
## [66] c("유아교육", "혁", "신")
## [67] c("미래", "인재", "육", "성")
## [68] c("교육", "복지", "최고", "세종", "실")
## [69] c("교원", "교육", "전념", "할", "수", "지")
## [70]
## [71] 산
## [72] c("성역", "부패", "비", "스트라이크", "웃")
## [73] c("유치원", "고등학교", "친환경", "무상", "급")
## [74] c("무상", "교복", "무상", "교과서", "수학여행비", "지")
## [75] c("학교", "교육", "과정", "외", "강제", "학습", "폐", "지")
## [76] c("학교", "통학로", "전수", "조사", "통학", "안전용품", "지", "급")
## [77]
## [78] 천
## [79] c("기회", "균등", "결과", "정의", "로운", "평등", "교육", "실현하겠습니")
## [80] c("우리", "아이들", "꿈", "혁신", "미래", "교육", "문", "열겠습니")
## [81] c("수", "안심", "교육", "만들겠습니")
## [82] c("학교", "마을", "협력", "하", "소통", "교육", "시대", "열겠습니")
## [83] c("부정부패", "성폭력", "청정", "교육", "지키겠습니")
## [84]
## [85] c("전", "남")
## [86] c("교육", "비", "진로", "진학", "이젠", "걱정", "끝")
## [87] c("소통", "협력", "교육")
## [88] c("시설", "환경", "급식", "이젠", "안심")
## [89] c("미래", "교육", "번가", "남")
## [90] c("교육공동체", "변화", "갑")
## [91]
## [92]
## [93] 전
## [94] c("공교육", "혁신", "차", "산업혁명", "시대", "대비하겠습니")
## [95] c("교육예산", "확대", "학부모", "교육", "비", "부담", "줄이겠습니")
## [96] c("학교", "안전", "민주교육", "행정", "교육자", "치", "실현하겠습니")
## [97] c("교육", "집중", "선생님", "응원", "합")
## [98] c("전북", "도민", "전북", "교육자치", "꽃", "피우겠습니")
#aa_corpus <- tm_map(aa_corpus, tolower)
#aa_corpus <- tm_map(aa_corpus, removePunction)
#aa_corpus <- tm_map(aa_corpus, removeNumbers)
aa_corpus_mat <- TermDocumentMatrix(aa_corpus)
inspect(aa_corpus_mat)
## <<TermDocumentMatrix (terms: 161, documents: 98)>>
## Non-/sparse entries: 287/15491
## Sparsity : 98%
## Maximal term length: 9
## Weighting : term frequency (tf)
## Sample :
## Docs
## Terms 25 26 41 59 60 65 76 79 80 82
## 고등학교 0 0 0 0 0 1 0 0 0 0
## 교육 1 0 0 1 0 1 0 1 1 1
## 로운 0 0 0 1 1 0 0 1 0 0
## 만들겠습니 0 0 0 1 1 0 0 0 0 0
## 미래 0 0 0 0 0 0 0 0 1 0
## 센터 1 1 0 0 0 0 0 0 0 0
## 시대 0 0 0 0 0 0 0 0 0 1
## 안전 0 0 0 0 1 0 0 0 0 0
## 학교 0 0 1 0 1 0 1 0 0 1
## 혁신 0 0 0 0 0 0 0 0 1 0
inspect(aa_corpus_mat[1:20,])
## <<TermDocumentMatrix (terms: 20, documents: 98)>>
## Non-/sparse entries: 91/1869
## Sparsity : 95%
## Maximal term length: 7
## Weighting : term frequency (tf)
## Sample :
## Docs
## Terms 10 2 3 4 41 5 6 80 82 9
## 고등학교 0 0 1 0 0 0 0 0 0 0
## 교실 0 1 0 0 1 0 0 0 0 0
## 교육 1 0 1 0 0 0 0 1 1 1
## 미래 0 1 0 0 0 0 0 1 0 0
## 안전 0 0 0 0 0 1 0 0 0 0
## 유치원 0 0 1 0 0 0 0 0 0 0
## 중심 0 0 0 1 1 0 0 0 0 0
## 학교 0 0 0 0 1 0 1 0 1 0
## 행복 0 0 0 1 0 0 0 0 0 0
## 혁신 0 0 0 0 0 0 0 1 0 1
# 단어 빈도 확인
findFreqTerms(aa_corpus_mat, lowfreq=3, highfreq=1000) # 단어 빈도 확인
## [1] "교실" "미래" "고등학교" "교육"
## [5] "유치원" "행복" "안전" "학교"
## [9] "혁신" "시대" "진로" "대비"
## [13] "미래사회" "로운" "실현하겠습니" "정의"
## [17] "만들겠습니" "안심" "평화" "무상"
## [21] "센터" "산업혁명" "인재"
# 단어빈도를 일정 이상만 추출은 어떻게 ????
# aa_corpus_mat <- TermDocumentMatrix(aa_corpus)
bb <- as.matrix(aa_corpus_mat)
bb <- as.matrix(aa_corpus_mat, 60)
#bb <- bb[1:100,1:100] # 메트릭스 행렬 범위 사이즈 선택
bb[bb>=1] <- 1
bb_mat <- bb %*% t(bb)
#연결망 그리기
g <- graph.adjacency(bb_mat, weighted = T, mode = "undirected")
g <- simplify(g)
g;V(g);E(g)
## IGRAPH c6f28f1 UNW- 161 462 --
## + attr: name (v/c), weight (e/n)
## + edges from c6f28f1 (vertex names):
## [1] 교실 --기초학력 교실 --미래 교실 --학력
## [4] 교실 --중심 교실 --학교 교실 --만들겠습니
## [7] 교실 --조용 교실 --혁명 교실 --경영
## [10] 교실 --보장하겠습니 교실 --자율 교실 --책임
## [13] 기초학력--미래 기초학력--학력 미래 --학력
## [16] 미래 --교육 미래 --혁신 미래 --교육체제
## [19] 미래 --시대 미래 --진로 미래 --진학
## [22] 미래 --구축하겠습니 미래 --대비 미래 --미래사회
## + ... omitted several edges
## + 161/161 vertices, named, from c6f28f1:
## [1] 媛<95> 교실 기초학력 미래
## [5] 학력 고등학교 교육 유치원
## [9] 사람 중심 행복 안전
## [13] 편안 마을 민주시민키우는 원교
## [17] 학교 경기 혁신 공정
## [21] 공평 교육체제 한학 민주주의
## [25] 자치 시대 진로 진학
## [29] 평화통일 구축하겠습니 대비 미래사회
## [33] 따뜻 로운 실현하겠습니 정의
## [37] 만들겠습니 조용 혁명 안심
## + ... omitted several vertices
## + 462/462 edges from c6f28f1 (vertex names):
## [1] 교실 --기초학력 교실 --미래 교실 --학력
## [4] 교실 --중심 교실 --학교 교실 --만들겠습니
## [7] 교실 --조용 교실 --혁명 교실 --경영
## [10] 교실 --보장하겠습니 교실 --자율 교실 --책임
## [13] 기초학력--미래 기초학력--학력 미래 --학력
## [16] 미래 --교육 미래 --혁신 미래 --교육체제
## [19] 미래 --시대 미래 --진로 미래 --진학
## [22] 미래 --구축하겠습니 미래 --대비 미래 --미래사회
## [25] 미래 --인재 미래 --창의 미래 --선도
## [28] 미래 --융합형 미래 --준비 미래 --아이들
## + ... omitted several edges
V(g)$label <- V(g)$name # 네임을 노드 라벨로 사용
V(g)$degree <- degree(g) # 단어 빈도를 노드(버티스) 빈도로 저장
sort(degree(g), decreasing=T) # 중심성(이웃 노드 수)이 높은(많은) 순으로 정렬
## 교육 학교 미래 센터 만들겠습니
## 76 48 21 19 18
## 로운 안전 시대 행복 실현하겠습니
## 17 15 14 13 13
## 교실 미래사회 혁신 대비 시민
## 12 12 11 11 11
## 진로 정의 열겠습니 안심 산업혁명
## 10 10 10 9 9
## 고등학교 중심 마을 교육체제 평화
## 8 8 8 8 8
## 거점 교권 보호 인권 지원
## 8 8 8 8 8
## 학생 서울 확대 이젠 급식
## 8 8 8 8 7
## 무상 세계 쾌적 결과 균등
## 7 7 7 7 7
## 기회 평등 진학 따뜻 인재
## 7 7 6 6 6
## 창의 경영 보장하겠습니 자율 책임
## 6 6 6 6 6
## 소통 협력 유치원 공정 메이커
## 6 6 5 5 5
## 문화관 수학 체험 안전용품 전수
## 5 5 5 5 5
## 조사 통학 통학로 아이들 우리
## 5 5 5 5 5
## 교육예산 부담 줄이겠습니 학부모 교육자
## 5 5 5 5 5
## 민주교육 행정 공평 한학 구축하겠습니
## 5 5 4 4 4
## 조용 혁명 인성교육 먼지 미세
## 4 4 4 4 4
## 유해물질 제로화 양성하겠습니 융합 건강
## 4 4 4 4 4
## 가겠습니 도시 공동 캠퍼스 강제
## 4 4 4 4 4
## 과정 학습 부정부패 성폭력 지키겠습니
## 4 4 4 4 4
## 청정 걱정 시설 환경 공교육
## 4 4 4 4 4
## 대비하겠습니 기초학력 학력 민주시민키우는 원교
## 4 3 3 3 3
## 평화통일 조성하겠습니 광주학생 문화예술 통일시대
## 3 3 3 3 3
## 격차 지역별 해소하겠습니 융합형 키우겠습니
## 3 3 3 3 3
## 복지 세종 최고 친환경 교과서
## 3 3 3 3 3
## 교복 수학여행비 선생님 응원 집중
## 3 3 3 3 3
## 교육자치 도민 전북 피우겠습니 사람
## 3 3 3 3 2
## 경기 민주주의 자치 진학상담 선도
## 2 2 2 2 2
## 효율적 발전시키겠습니 교원 전념 부패
## 2 2 2 2 2
## 성역 스트라이크 번가 편안 고교
## 2 2 2 1 1
## 무상교육 대학입시제도 전면 기회균등 준비
## 1 1 1 1 1
## 교육공동체 변화 媛<95> 寃<bd> <eb><8c>\u0080
## 1 1 0 0 0
## 공부 <ec>슱 유아교육 <ec>궛 泥<9c>
## 0 0 0 0 0
## <ec>쟾
## 0
w1 <- V(g)$degree # 노드 빈도, 추후 weight 로 사용
m1 <- layout_nicely(g) # 시각화 유형을 최적화
w1
## [1] 0 12 3 21 3 8 76 5 2 8 13 15 1 8 3 3 48 2 11 5 4 8 4
## [24] 2 2 14 10 6 3 4 11 12 6 17 13 10 18 4 4 9 3 4 8 0 4 4
## [47] 4 4 7 7 8 8 8 19 8 8 8 5 5 5 2 1 1 9 5 3 3 3 1
## [70] 1 4 4 6 6 3 3 3 4 6 6 6 6 0 2 3 2 1 1 0 0 3 8
## [93] 7 11 7 2 4 4 4 4 8 0 3 3 3 2 2 0 2 2 2 3 3 3 3
## [116] 4 4 4 5 5 5 5 5 0 7 7 7 7 5 10 5 6 6 4 4 4 4 4
## [139] 8 4 4 2 1 1 0 4 4 5 5 5 5 5 5 5 3 3 3 3 3 3 3
# 플로팅 1
plot(g, vertex.label.color="black", edge.color="black", #gray88
edge.width=w1, layout=m1)
***
# 플로팅 2
g.ec <- eigen_centrality(g)
plot(g, vertex.label.color="black", vertex.label.cex=0.6,
vertex.size=10*(g.ec$vector), edge.color="gray60", edges.width=w1*10,
layout=m1, main="교육감 선거 공약 키워드 네트워크")
***
# 플로팅 3 -일정 빈도이하 제거 플로팅
# delete_edges() edge값 얼마이하 삭제
g2 <- delete_vertices(g, V(g)[degree<=4])
# 각 노드의 이웃 수 혹은, 연결선의 수 4이하 삭제, 노드 수 변화
g2 # 먼저 degree 값을 검토하고 범위 설정할 것
## IGRAPH c7a8b82 UNW- 72 277 --
## + attr: name (v/c), label (v/c), degree (v/n), weight (e/n)
## + edges from c7a8b82 (vertex names):
## [1] 교실 --미래 교실 --중심 교실 --학교
## [4] 교실 --만들겠습니 교실 --경영 교실 --보장하겠습니
## [7] 교실 --자율 교실 --책임 미래 --교육
## [10] 미래 --혁신 미래 --교육체제 미래 --시대
## [13] 미래 --진로 미래 --진학 미래 --대비
## [16] 미래 --미래사회 미래 --인재 미래 --창의
## [19] 미래 --아이들 미래 --열겠습니 미래 --우리
## [22] 고등학교--교육 고등학교--유치원 고등학교--급식
## + ... omitted several edges
V(g2)$label <- V(g2)$name # 네임을 노드 라벨로 사용
V(g2)$degree <- degree(g2) # 단어 빈도를 노드(버티스) 빈도로 저장
V(g2)$degree
## [1] 8 14 5 43 4 7 11 12 6 31 7 2 5 11 8 5 8 9 6 16 13 10 14
## [24] 6 7 5 3 8 8 8 16 8 8 8 5 5 5 6 3 3 3 6 6 6 6 6
## [47] 7 9 7 6 5 5 5 5 5 7 7 7 7 5 10 5 6 6 5 5 5 5 5
## [70] 5 5 5
sort(V(g2)$degree, decreasing=T)
## [1] 43 31 16 16 14 14 13 12 11 11 10 10 9 9 8 8 8 8 8 8 8 8 8
## [24] 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 5 5
## [47] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3
## [70] 3 3 2
w2 <- V(g2)$degree # 추후 weight 로 사용(??) # 101개
m2 <- layout_nicely(g2) # 시각화 유형을 최적화
g.ec.2 <- eigen_centrality(g2)
plot(g2, vertex.label.color="black", vertex.label.cex=0.55,
vertex.size=15*(g.ec.2$vector), edge.color="gray60", edges.width=w2*10,
layout=m2,
main="교육감 선거 공약 키워드 네트워크") # gray60 숫자는 밝기
***
# 플로팅 4 -클러스터
kc <- fastgreedy.community(g2)
sizes(kc)
## Community sizes
## 1 2 3 4 5 6 7
## 17 20 6 5 5 15 4
plot(kc,g2, vertex.label.color="black", vertex.label.cex=0.6,
vertex.size=10*(g.ec.2$vector), edge.color="gray60", layout=m2)
***
# 플로팅 5 -ggraph 패키지
E(g2)$weight
## [1] 1 1 2 1 1 1 1 1 4 1 1 1 1 1 1 1 2 1 1 1 1 2 3 1 2 1 1 1 1 2 3 2 1 2 2
## [36] 2 1 2 3 2 3 2 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 2 1 2 2 1 1 1 1 1 1 2 1
## [71] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 2 2 1 5
## [106] 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1
## [141] 2 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 2 3 3 2 1 1 1 1 1 1 1 1 2
## [176] 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [211] 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1
## [246] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1
dgr <- degree(g2)
ggraph(g2, layout="with_kk") + geom_edge_link(aes(alpha=weight*50), color="gray60") +
geom_node_point(aes(size=dgr*20), color="red") +
geom_node_text(aes(label=name), repel=TRUE) # in_circle, grid
## Warning: Ignoring unknown parameters: edge_color
***
# 플로팅 6 -ggraph 패키지
# E(g2)$weight==1 인 경우와 아닌 경우 확인
weakness <- E(g2)$weight==1
weakness; sum(weakness)
## [1] TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE
## [12] TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE
## [23] FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE
## [34] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
## [45] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE TRUE
## [56] TRUE TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE TRUE TRUE
## [67] TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [78] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
## [89] TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE
## [100] TRUE TRUE FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE TRUE
## [111] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [122] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [133] TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE
## [144] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [155] TRUE TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE
## [166] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE
## [177] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [188] TRUE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [199] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [210] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [221] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [232] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [243] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [254] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [265] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [276] TRUE TRUE
## [1] 230
ggraph(g2, layout="with_kk") +
geom_edge_link(aes(color=weakness)) +
geom_node_point(aes(size=dgr*20), color="green") +
geom_node_text(aes(label=name), repel=TRUE)
***
# 플로팅 7 -ggraph 패키지
# E(g2)$weight==1 인 경우만 필터링하여 그리기
# 반대는 filter=!weakness
ggraph(g2, layout="with_kk") +
geom_edge_link(aes(filter=weakness), alpha=.5) +
geom_node_point(aes(size=dgr*20), color="red") +
geom_node_text(aes(label=name), repel=TRUE)
***
# 플로팅 8 - visNetwork 패키지
data<- toVisNetworkData(g2)
head(data$nodes)
## id label degree
## 교실 교실 교실 8
## 미래 미래 미래 14
## 고등학교 고등학교 고등학교 5
## 교육 교육 교육 43
## 유치원 유치원 유치원 4
## 중심 중심 중심 7
head(data$edges)
## from to weight
## 1 교실 미래 1
## 2 교실 중심 1
## 3 교실 학교 2
## 4 교실 만들겠습니 1
## 5 교실 경영 1
## 6 교실 보장하겠습니 1
visNetwork(nodes=data$nodes, edges=data$edges) %>%
visIgraphLayout(layout="layout_with_kk") %>%
visOptions(nodesIdSelection = TRUE)
***
tie <- as_data_frame(g, what="edges") # from to weight 로 변환
head(tie)
## from to weight
## 1 교실 기초학력 1
## 2 교실 미래 1
## 3 교실 학력 1
## 4 교실 중심 1
## 5 교실 학교 2
## 6 교실 만들겠습니 1
tie_1 <- subset(tie, weight>=2) # weight 2 이상만 추출
head(tie_1)
## from to weight
## 5 교실 학교 2
## 16 미래 교육 4
## 25 미래 인재 2
## 34 고등학교 교육 2
## 35 고등학교 유치원 3
## 37 고등학교 무상 2
ggplot(tie_1,aes(x=from, y=to, color=factor(weight))) +
geom_point(cex=8) + labs(color="weight")
***