특별히 어려운 부분은 없지만 한 개의 단어를 보다 효율적으로 찾는 방법에 대해서 고민을 해봐야겠다.
조사가 포함되는 걸 막기 위해 한 글자를 모두 없애기에는 한 개로 된 단어도 다수 존재하기 때문이다.
=================================== R ===================================
rm(list=ls())
#필요한 패키지 설치 및 라이브러리 등록
install.packages("rJava")
library("rJava")
install.packages("memoise")
library("memoise")
install.packages("KoNLP")
library("KoNLP")
install.packages("devtools")
library("devtools")
install.packages("stringr")
library("stringr")
useNIADic()
#박근혜 전 대통령 사과문을 txt1에 등록, encoding은 UTF-8로 한다. 꼭 대문자로 써야한다.
txt1 <- readLines("apology.txt", encoding = "UTF-8")
txt1
#텍스트 내부에 있는 escape문자를 ""로 바꾼다. W는 대문자이다
txt2 <- str_replace_all(txt1, "\\W", " ")
head(txt2)
#sapply{base}를 선택하여 txt1에 있는 모든 명사를 추출하고(extractNoun) 한글만 뽑아낸다(USE.NAMES = F).
txt3 <- sapply(txt1, extractNoun, USE.NAMES = F)
txt3
#리스트를 풀어준다.
txt4 <- unlist(txt3)
txt4
#글자의 갯수가 1개인 것들은 뺀다.
txt5 <- Filter(function(x){nchar(x)>=2}, txt4)
txt5
#gsub을 이용하여 원하는 단어를 뺀다.
txt5 <- gsub("박근혜","", txt5)
txt5
#얻은 자료를 new_word.txt로 저장한다.
write(unlist(txt5),"new_word.txt")
txt6 <- readLines("new_word.txt")
txt6
#wordcloud를 만들기 위해 관련 라이브러리 설치 및 호출
install.packages("wordcloud")
install.packages("RColorBrewer")
library("RColorBrewer")
library("wordcloud")
#wordcloud를 사용하기 위해 얻은 자료를 표로 만든다.
word1 <- read.table("new_word.txt")
word1
#각 단어의 사용 빈도를 확인하기 위해서 table()에 넣어본다.
word2 <- table(word1)
word2
#8가지 색상, Dark2라는 타입의 색 군집을 불러온다.
wordcolor <- brewer.pal(8, "Dark2")
#wordcloud 함수 사용.
wordcloud(names(word2), freq = word2, min.freq = 1, max.words = 200, random.order = F, rot.per= .1, scale = c(4,0.5), colors = wordcolor)
#파이차트를 만들기 위해 빈도가 높은 상위 8개만 추린다.
top10 <- head(sort(word2, decreasing = T), 8)
top10
###################################
#전처리용 라이브러리 등록
library("dplyr")
library("stringr")
library("KoNLP")
useNIADic()
#트위터 댓글 자료를 가져와서 twitter에 저장
twitter <- read.csv("newstapa.csv", header = T, stringsAsFactors = F, fileEncoding = "UTF-8")
#안에 있는 컬럼의 이름을 한글에서 영어로 바꿔준다.
#앞이 최종적으로 출력하고자 하는 컬럼이름, 뒤가 바꾸려고 선택한 컬럼이름 이다.
twitter <- rename(twitter, no = 번호, id = 계정이름, date = 작성일, tw = 내용)
#내부에 있는 escape문자를 없애기 위해 str_replace_all을 사용한다. W는 대문자.
#띄어쓰기를 살리기 위해 escape문자를 " "스페이스 한 칸으로 바꾼다.
twitter$tw <- str_replace_all(twitter$tw, "\\W", " ")
#명사만 추출
nouns <- extractNoun(twitter$tw)
#unlist를 하고 테이블에서 자료를 본다.
word1 <- table(unlist(nouns))
#구조를 확인
str(word1)
#데이터프레임으로 바꾼다.
dfword <- as.data.frame(word1, stringsAsFactors = F)
#일단 위에 3개만 출력
head(dfword,3)
#컬럼에 Var1, Freq가 있는데 이름을 바꿔준다.
dfword <- rename (dfword, word = Var1, hit =Freq)
#바꾼걸 확인
head(dfword,3)
#한 개짜리 단어는 버린다
dfword <- filter(dfword, nchar(word)>=2)
#빈도수가 많은 단어로 정렬해서 위에서 25개만 추린다.
top25 <- dfword %>% arrange(desc(hit)) %>% head(25)
top25
#마음에 안 드는 단어들이 있어 다시 처리해준다.
#트위터 댓글 자료를 가져와서 twitter에 저장
twitter <- read.csv("newstapa.csv", header = T, stringsAsFactors = F, fileEncoding = "UTF-8")
#안에 있는 컬럼의 이름을 한글에서 영어로 바꿔준다.
#앞이 최종적으로 출력하고자 하는 컬럼이름, 뒤가 바꾸려고 선택한 컬럼이름 이다.
twitter <- rename(twitter, no = 번호, id = 계정이름, date = 작성일, tw = 내용)
#########여기서 마음에 안 드는 단어를 없앤다#########
#내부에 있는 escape문자를 없애기 위해 str_replace_all을 사용한다. W는 대문자.
#띄어쓰기를 살리기 위해 escape문자를 " "스페이스 한 칸으로 바꾼다.
twitter$tw <- str_replace_all(twitter$tw, "\\W", " ")
twitter$tw <- str_replace_all(twitter$tw, "들이", " ")
twitter$tw <- str_replace_all(twitter$tw, "우리", " ")
#명사만 추출
nouns <- extractNoun(twitter$tw)
#unlist를 하고 테이블에서 자료를 본다.
word1 <- table(unlist(nouns))
#구조를 확인
str(word1)
#데이터프레임으로 바꾼다.
dfword <- as.data.frame(word1, stringsAsFactors = F)
#일단 위에 3개만 출력
head(dfword,3)
#컬럼에 Var1, Freq가 있는데 이름을 바꿔준다.
dfword <- rename (dfword, word = Var1, hit =Freq)
#바꾼걸 확인
head(dfword,3)
#한 개짜리 단어는 버린다
dfword <- filter(dfword, nchar(word)>=2)
#빈도수가 많은 단어로 정렬해서 위에서 25개만 추린다.
top25 <- dfword %>% arrange(desc(hit)) %>% head(25)
top25
=================================== R ===================================
'프로그래밍 > Python, R 프로그래밍' 카테고리의 다른 글
[R] 10일차 (0) | 2018.05.28 |
---|---|
[Python] 9일차 (0) | 2018.05.23 |
[Python] Python 8일차 (0) | 2018.05.21 |
[R] R 8일차 (0) | 2018.05.21 |
[Python] Python 7일차 (0) | 2018.05.18 |