tm 패키지와 KoNLP 패키지 로딩 문제

두가지 패키지를 로딩하는데 각각 다음과 같은 문제를 확인했습니다.

KoNLP 문제는 JAVA HOME setting 만 잡아주면 해결이 되지만, tm 패키지의 문제는 R version 을 업그레이드 하니 해결이 되었습니다.

R 업그레이드하게 되면 일부 패키지를 재설치하여야 하는 부담이 있어서 cran 에서 직접 slam 최신버전을 찾아 보았는데, Depends: R (>= 3.4.0) 이라고 정의되어 있었습니다. R 3.4.0 이하 버전을 사용하고 있다면 최신버전으로 업그레이드를 하는 편이 좋은 것 같습니다. 참고로 현재의 최신버전은 3.5.0 입니다.

session info 확인하기

현재 설치되어 있는 R version 과 플랫폼 정보를 먼저 찾아보기 위해서는 R 또는 R 스튜디오에서 sessionInfo() 를 실행시키면 됩니다.

sessionInfo()
## R version 3.5.0 (2018-04-23)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS High Sierra 10.13.4
## 
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## loaded via a namespace (and not attached):
##  [1] compiler_3.5.0  backports_1.1.2 magrittr_1.5    rprojroot_1.3-2
##  [5] tools_3.5.0     htmltools_0.3.6 yaml_2.1.19     Rcpp_0.12.16   
##  [9] stringi_1.2.2   rmarkdown_1.9   knitr_1.20      stringr_1.3.1  
## [13] digest_0.6.15   evaluate_0.10.1

MAC OS용 R 최신버전 설치하기

http://cran.r-project.org/bin/macosx/ 에서 최신버전을 다운받을 수 있습니다.

JAVA HOME 세팅하기

현재 R 에서 JAVA HOME 이 어디로 세팅되어 있는지 확인합니다.

Sys.getenv("JAVA_HOME")
## [1] "/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre"

현재 설치되어 있는 java 의 버전과 경로를 확인하려면, 터미널에서 아래 와 같이 sudo R CMD javareconf 명령어를 입력합니다. 그러면 아래와 같이 맥에 설치된 java 정보와 시스템 변수로 저장된 경로를 확인할 수 있습니다.

여기에서 Java 버전이 1.7.x 또는 1.8.x 인지 확인하셔야 합니다. R의 KoNLP 와 마찬가지로, python 의 konlpy 라이브러리도 1.7 또는 1.8 여야한다고 합니다. 두개 버전을 맞춰주는게 좋다고 합니다. 저는 1.8.x 버전만 남기고 다른 버전은 삭제했습니다. 최신버전이 1.10.x 인데, 모르는 사이에(?) 자동 업그레이드가 되어 있다면 삭제하여도 이상없습니다. (자바 다운로드: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)

JAVA_HOME path 는 MAC OS 버전에 따라 달라서, /jre 폴더가 있는 경우도 있고 그렇지 않은 경로가 있다고 하니, 위와 같이 Java home path 뒷부분에 있는 경로를 카피하셔서 아래와 같이 입력하시며 됩니다.

Sys.setenv(JAVA_HOME = '/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre')
dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre/lib/server/libjvm.dylib')

그리고 나서 다시 Sys.getenv()를 확인합니다.

Sys.getenv("JAVA_HOME")
## [1] "/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre"

그리고 rJava 가 정상적으로 로딩되는지 확인하면 됩니다.

library(rJava)

그러면 이제 tm 및 KoNLP 패키지의 설치와 로딩이 정상적으로 될 겁니다.

#install.packages("tm")
#install.packages("KoNLP")

library(tm)
## Loading required package: NLP
library(KoNLP)
## Checking user defined dictionary!
useSejongDic()
## Backup was just finished!
## 370957 words dictionary was built.

참고로, R 을 재실행할 때마다 Sys.setenv 를 해줘야 하고, 이것을 permanent 하게 하려면 .Rprofile 에서 설정해줘야 하는데, 구지 Sys.setenv 를 매번 하지 않더라도 라이브러리를 로딩하는데는 문제가 없으니, 개의치 않아도 될 것 같습니다. (ggplot 에서 맥 한글깨짐 문제를 해결하려면 Rprofile 을 생성하는 방법이 있기는 하니, 그때가서 필요하면 같이 정리하는 것도 좋을거 같습니다).

그리고, Java의 새로운 버전을 설치했다면 ‘rJava’패키지를 완전히 삭제하고 (remove.packsges()) 다시 설치해야 한답니다. 특히 ’package or namespace load failed for ‘rJava’ 와 같은 에러가 나는 경우에는 재설치 하고 Java configuration 을 update 해주면 해결됩니다.

  1. remove.packages(‘rJava’) 그리고 install.packages(‘rJava’) 재설치 한 후에,
  2. 터미널에서 다음 명령어 실행 $ sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
  3. 그리고 다시 $ R CMD javareconf 를 실행하면,
  1. 두개 질문에 모두 y 입력하면 Done. 됩니다.
  2. R studio 재실행하면 위의 에러는 없어집니다.