-
# library(KoNLP) # install.packages("KoNLP") # # install.packages("multilinguer") # library(multilinguer) # install_jdk() # install.packages(c('stringr', 'hash', 'tau', 'Sejong', 'RSQLite', 'devtools'), type = "binary") # install.packages("remotes") # remotes::install_github('haven-jeon/KoNLP', upgrade = "never", INSTALL_opts=c("--no-multiarch")) # library(KoNLP) #최종적으로 "KoNLP" 패키지를 불러옵니다 # # devtools::install_github('haven-jeon/NIADic/NIADic', build_vignettes = TRUE) # Sys.setenv(JAVA_HOME='C:/Program Files/Java/jre1.8.0_241') # 설치한 JAVA version에 따라 달라집니다 # buildDictionary(ext_dic = "woorimalsam") # "woorimalsam" dic을 불러옵니다 # useNIADic() # "NIADic" dic을 불러옵니다 #토핑모델링: 주어진글 -> 주제 #감정분석 : 주어진글 -> 감정 #감정어휘 사전:good,happy,bad,sad #AFINN(-5 ~ +5),lexicon(긍정,부정),EmoLex(즐거움 , 놀라움) #감정어휘사전 패키지 #install.packages("tidytext") library(tidytext) #install.packages("textdata") library(textdata) #install.packages("tidyverse") library(textdata) AFINN<-data.frame(get_sentiments("afinn")) summary(AFINN) hist(AFINN$value, breaks = 20,xlim = c(-6,6),col = 'blue',xlab = "senti score") get_sentiments("bing") oplex<-data.frame(get_sentiments("bing")) table(oplex$sentiment) emolex<-data.frame(get_sentiments("nrc")) table(emolex$sentiment) library(tm) #텍스트마이닝 library(stringr) #텍스트 library(dplyr) # 로드실패 -> 설치 -> 로드 my.text.location<-"D:/Rwork/papers" mypaper<-VCorpus(DirSource(my.text.location)) mypaper mytxt<-c(rep(NA,33)) for(i in 1:33){ #mytxt[i]<-mypaper[[i]][1] # 코퍼스 내용을 확인 , 리스트 저장 mytxt[i]<-as.character(mypaper[[i]][1]) } typeof(mytxt) mytxt #벡터 [1][2][3]........ 리스트:[[1]][1] [[2]][1] [[3]][1] my.df.text<-data_frame(paper.id=1:33,doc=mytxt) my.df.text # tibble dataframe보다 비슷하지만 가벼움 my.df.text.word<-my.df.text %>% unnest_tokens(word,doc) #%>% #cntl shift m :파이프 오퍼레이터 #객체.메스드명(전달값) 오브젝트%>%함수 : 함수를 오브젝트에 적용하라 # text<-c("How are you", "He is a boy","She is a girl") # text # # textDf<-data_frame(line=1:3,text=text) #tibble형식으로 # # textDf %>% unnest_tokens(word, text) # 토큰단위로 분해 하라 반드시 앞에 객체 # library(tidyr) myresult.sa<-my.df.text.word %>% inner_join(get_sentiments("bing")) %>% #word기준조인 count(word,paper.id,sentiment) %>% # advanced 11번 25번 각각 1번 spread(sentiment,n,fill=0) # 10번문서 1번 positive의미 myresult.sa myagg<-summarise(group_by(myresult.sa,paper.id), pos.sum = sum(positive), #positive 합계 neg.sum = sum(negative), pos.sent = pos.sum - neg.sum) # negative 합계 myagg install.packages("textstem") library("textstem") x<-c("well", "doggies","running") lemmatize_words(x) # 원형 #미니 프로젝트 감성어휘사전 기반 감성분석 프로젝트 #스크래핑(파이썬, 해외 언론사 ,통신사 ,text 스크랩핑, 넷플릭스 영화줄거리 ) -> txt 형식으로 저장 ->전처리 vcorpus 로 데이터 가져오기 #->감성분석->결과출력 #감정이 들어나 있는 문장 긴문장 library(SnowballC) #install.packages("analogue") library(analogue) readr::read_lines("reuters-train") data(acq) acq[[50]][1]
#미니 프로젝트 감성어휘사전 기반 감성분석 프로젝트 #스크래핑(파이썬, 해외 언론사 ,통신사 ,text 스크랩핑, 넷플릭스 영화줄거리 ) -> txt 형식으로 저장 ->전처리 vcorpus 로 데이터 가져오기 #->감성분석->결과출력 #감정이 들어나 있는 문장 긴문장 library(SnowballC) #install.packages("analogue") library(analogue) readr::read_lines("reuters-train") data(acq) acq[[50]] mytxt<-c(rep(NA,50)) for(i in 1:50){ #mytxt[i]<-mypaper[[i]][1] # 코퍼스 내용을 확인 , 리스트 저장 mytxt[i]<-as.character(acq[[i]][1]) } typeof(mytxt) mytxt #벡터 [1][2][3]........ 리스트:[[1]][1] [[2]][1] [[3]][1] my.df.text<-data_frame(paper.id=1:50,doc=mytxt) my.df.text # tibble dataframe보다 비슷하지만 가벼움 my.df.text.word<-my.df.text %>% unnest_tokens(word,doc) library(tidyr) myresult.sa<-my.df.text.word %>% inner_join(get_sentiments("bing")) %>% #word기준조인 count(word,paper.id,sentiment) %>% # advanced 11번 25번 각각 1번 spread(sentiment,n,fill=0) # 10번문서 1번 positive의미 myresult.sa myagg<-summarise(group_by(myresult.sa,paper.id), pos.sum = sum(positive), #positive 합계 neg.sum = sum(negative), pos.sent = pos.sum - neg.sum) # negative 합계 myagg