1월, 2019의 게시물 표시

R API Server / jug 사용하기 How to use R as a simple API server

이미지
필요성 Why you need this? R로 서버를 구축하여 통계 데이터를 뿌려줄 때 If you want to distribute data or results from R Shiny를 사용하는 대신 간단히 결과만 알려주고자 할 때 If you hate Shiny servers API 서버란? Application Programming Interface의 약자. 웹으로 각종 함수를 실행하여 결과를 받아볼 수 있도록 한 서버 What is an API server? It refers to a simple server program for executing functions from remote sites. 패키지 설치 Install package > install.packages("jug") GET >library(jug) 기본적으로 chain rule이 적용된다. The package, jug, is applied by Chain Rule as does in {dplyr}. > jug()%>%   get(path='/',       function(req,res,err){         "Hello World!!"       })%>%   get(path='/name',       function(req,res,err){         "My name is Taekyung!"       })%>%   serve_it() 결과는 다음과 같다. The result is followed. http://127.0.0.1:8080  http://127.0.0.1:8080/name 모듈 프로그래밍을 하려면 collector()와 include()를 사용한다. If you need a modular program, consider collector() and include(). >

Notepad++ 팁 / line break

텍스트 마이닝을 할 때, 라인별로 데이터를 입력해야 할 때가 있다. 이때 적당한 길이로 라인을 끊어 줘야 한다. Ctrl+H 정규식 체크 Find: (?<=.{60})\s Replace: $0\n 60이라는 숫자를 바꾸면 길이를 적당히 조절할 수 있다.

KoNLP / 주어가 되는 명사 단어들 추출하기

문제: 다음 문장에서 주어절을 찾아 출력하시오. "현재까지 라떼마트가 판매하고 있는 맛있는 흑마늘 양념 치킨이 논란이 되고 있다." 풀이: options(java.parameters = "-Xmx2G") library(KoNLP) library(tidytext) library(dplyr) library(stringr) pos <- SimplePos09("현재까지 라떼마트가 판매하고 있는 맛있는 흑마늘 양념 치킨이 논란이 되고 있다.") result02=unlist(pos) result02a=tibble(text=result02,word=names(result02)) # result02b=result02a %>%   mutate(tag=str_detect(text,'/N')) %>%   mutate(tag2=str_detect(text,'\\+[이가은는]/J')) %>%   mutate(n=row_number()) idx=(result02b %>% filter(tag&tag2&n>1))$n cur=idx[1] output=NULL while(TRUE) {   if(!result02b[cur,]$tag) break   output=c(result02b[cur,]$word,output)   cur=cur-1 } paste(extractNoun(paste(output,collapse = ' ')),collapse=' ') #결과 [1] "흑마늘 양념 치킨"

KoNLP / Word Count 예제

문제: 데이터를 입력하여 명사형 단어의 빈도를 알아보라. 풀이: options(java.parameters = "-Xmx2G") library(KoNLP) library(tidytext) library(dplyr) library(stringr) txtSample=data.frame(   n=c(1,2,3),   text=c('대한민국은 민주공화국이다.','대한민국의 주권은 국민에게 있고, 모든 권력은 국민으로부터 나온다.',          '국가는 법률이 정하는 바에 의하여 재외국민을 보호할 의무를 진다.'),   stringsAsFactors=FALSE ) useSejongDic() result01=extractNoun(txtSample$text) result01a=do.call(rbind,lapply(result01,paste,collapse=' ')) result01b=tibble(text=result01a) %>% mutate(n=dplyr::row_number()) tidy_result01=result01b %>% unnest_tokens(word,text) #Word Count tidy_result01 %>% count(word,sort=TRUE) %>% filter(nchar(word)>1) #결과물: # A tibble: 11 x 2    word          nn    <chr>      <int>  1 국민           2  2 대한           2  3 민국           2  4 국가           1  5 권력           1  6 민주공화국     1  7 법률           1  8 보호           1  9 의무           1 10 재외국민       1 11 주권           1

Progress Bar in R

Source: https://github.com/r-lib/progress Check it out. You can use a progress bar very easily with package {progress}. Let's install the package. > devtools::install_github("r-lib/progress") Here are some examples from https://github.com/r-lib/progress #Sample 1 library(progress) pb <- progress_bar$new(total = 100) for (i in 1:100) {   pb$tick()   Sys.sleep(1 / 100) } #Sample 2 pb <- progress_bar$new(total = 100) f <- function() {   pb$tick(0)   Sys.sleep(3)   for (i in 1:100) {     pb$tick()     Sys.sleep(1 / 100)   } } f() #Sample 3 pb <- progress_bar$new(   format = "  downloading [:bar] :percent eta: :eta",   total = 100, clear = FALSE, width= 60) for (i in 1:100) {   pb$tick()   Sys.sleep(1 / 100) } #Sample 4 pb <- progress_bar$new(   format = "  downloading [:bar] :percent in :elapsed",   total = 100, clear = FALSE, width= 60) for (i in 1:100) {   pb$tick()   Sys.sleep(1 / 100) }

KoNLP / KoNLP 처음 설치한 다음

처음 설치한 다음 실행해야 할 코드 > library(KoNLP) > useSejongDic() > citation("KoNLP") 논문을 쓸 때는 꼭 레퍼런스를 달아 줍시다.

KoNLP / heap size error?

메모리가 부족하다면 다음과 같이 해보기를 바랍니다. > options(java.parameters='-Xmx2G') > library(KoNLP)