2017년 5월 15일 월요일

Minsky 서버에 한국어 text 분석을 위한 기초 환경 (gensim, keras, KoNLPy, MeCab) 및 Oracle client 버전 설치하기

Minsky 서버에 gensim 2.0.0, keras 2.0.4, KoNLPY, MeCab 및 Oracle client 버전을 설치하는 방법을 정리했습니다.

gensim은 python library로서 document로부터 어의(semantics)를 추출하는데 사용됩니다.  pip 명령으로 설치하면 되는데, 특정 버전을 설치하기 위해서는 다음과 같이 '==version'의 형태를 사용하면 됩니다.

u0017496@sys-87250:~$ sudo pip install gensim==2.0.0
Collecting gensim==2.0.0
  Downloading gensim-2.0.0.tar.gz (14.1MB)
    100% |████████████████████████████████| 14.2MB 70kB/s
Requirement already satisfied (use --upgrade to upgrade): numpy>=1.3 in /usr/lib/python2.7/dist-packages (from gensim==2.0.0)
Requirement already satisfied (use --upgrade to upgrade): scipy>=0.7.0 in /usr/local/lib/python2.7/dist-packages (from gensim==2.0.0)
Requirement already satisfied (use --upgrade to upgrade): six>=1.5.0 in /usr/lib/python2.7/dist-packages (from gensim==2.0.0)
Requirement already satisfied (use --upgrade to upgrade): smart_open>=1.2.1 in /usr/local/lib/python2.7/dist-packages (from gensim==2.0.0)
Requirement already satisfied (use --upgrade to upgrade): boto>=2.32 in /usr/lib/python2.7/dist-packages (from smart_open>=1.2.1->gensim==2.0.0)
Requirement already satisfied (use --upgrade to upgrade): bz2file in /usr/local/lib/python2.7/dist-packages (from smart_open>=1.2.1->gensim==2.0.0)
Requirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/python2.7/dist-packages (from smart_open>=1.2.1->gensim==2.0.0)
Installing collected packages: gensim
  Running setup.py install for gensim ... done
Successfully installed gensim-2.0.0


keras는 high-level neural networks API로서, python으로 작성되어 tensorflow나 theano 위에서 사용됩니다.  역시 pip 명령으로 설치하면 됩니다.

u0017496@sys-87250:~$ sudo pip install keras==2.0.4
Collecting keras==2.0.4
  Downloading Keras-2.0.4.tar.gz (199kB)
    100% |████████████████████████████████| 204kB 2.5MB/s
Collecting theano (from keras==2.0.4)
  Downloading Theano-0.9.0.tar.gz (3.1MB)
    100% |████████████████████████████████| 3.1MB 310kB/s
Collecting pyyaml (from keras==2.0.4)
  Downloading PyYAML-3.12.tar.gz (253kB)
    100% |████████████████████████████████| 256kB 2.3MB/s
Requirement already satisfied (use --upgrade to upgrade): six in /usr/lib/python2.7/dist-packages (from keras==2.0.4)
Requirement already satisfied (use --upgrade to upgrade): numpy>=1.9.1 in /usr/lib/python2.7/dist-packages (from theano->keras==2.0.4)
Requirement already satisfied (use --upgrade to upgrade): scipy>=0.14 in /usr/local/lib/python2.7/dist-packages (from theano->keras==2.0.4)
Installing collected packages: theano, pyyaml, keras
  Running setup.py install for theano ... done
  Running setup.py install for pyyaml ... done
  Running setup.py install for keras ... done
Successfully installed keras-2.0.4 pyyaml-3.12 theano-0.9.0


KoNLPy는 Korean National Language Processing in python으로서, 글자 그대로 한국어를 python으로 처리할 때 사용됩니다.  '콘엔엘파이'라고 읽습니다.  이 역시 pip로 설치합니다.

u0017496@sys-87250:~$ sudo pip install konlpy
Collecting konlpy
  Downloading konlpy-0.4.4-py2.py3-none-any.whl (22.5MB)
    100% |████████████████████████████████| 22.5MB 46kB/s
Collecting JPype1>=0.5.7; python_version == "2.6" or python_version == "2.7" (from konlpy)
  Downloading JPype1-0.6.2.tar.gz (147kB)
    100% |████████████████████████████████| 153kB 3.7MB/s
Installing collected packages: JPype1, konlpy
  Running setup.py install for JPype1 ... done
Successfully installed JPype1-0.6.2 konlpy-0.4.4


MeCab은 일본어 문자의 형태학적 분석을 위해 사용되는 패키지인데, 이는 Ubuntu OS 안에 다음과 같은 여러가지 package로 포함되어 있습니다.  다음과 같이 apt-get 명령으로 설치하면 됩니다.

u0017496@sys-87250:~$ sudo apt-get install mecab-utils libmecab-dev libmecab2 libmecab-jni ruby-mecab mecab-ipadic python-mecab libmecab-java mecab
...
reading /usr/share/mecab/dic/ipadic/Postp-col.csv ... 91
emitting double-array: 100% |###########################################|
reading /usr/share/mecab/dic/ipadic/matrix.def ... 1316x1316
emitting matrix      : 100% |###########################################|

done!
Setting up python-mecab (0.99.6-1build2) ...
Setting up ruby-mecab (0.99.6-2build7) ...
Processing triggers for libc-bin (2.23-0ubuntu7) ...

위에서 보셨다시피 python-mecab이 이미 포함되어 있으므로, pip 명령으로 mecab-python을 설치하려고 해보면 이미 충족되었다고 나옵니다.

u0017496@sys-87250:~$ sudo pip install mecab-python
Requirement already satisfied (use --upgrade to upgrade): mecab-python in /usr/lib/python2.7/dist-packages


alien은 Ubuntu에서 주로 사용되는 debian 패키지와 Redhat에서 주로 사용되는 rpm 패키지 등을 상호 변환해주는 tool이며, Ubuntu OS에 기본 패키지로 포함되어 있습니다.  따라서 다음과 같이 apt-get 명령으로 설치만 해주면 됩니다.  이러면 rpm 등 필요한 패키지를 자동으로 함께 설치합니다.

u0017496@sys-87250:~$ sudo apt-get install alien

---------------------------

이제 Oracle client 버전을 설치해보겠습니다.   Oracle DBMS의 서버 버전은 Minsky 서버의 processor 아키텍처인 ppc64le에 포팅이 되어 있지 않고, 앞으로도 그럴 일은 없어 보입니다.  (IBM에서는 왜 Linux에 값비싼 Oracle을 쓰느냐, Linux를 쓰려거든 당연히 MariaDB나 PostgreSQL, MySQL 등의 오픈소스 DBMS를 쓰는 것이 맞는 방향이다 라고 말하고 있습니다.)  그러나 Linux건 UNIX건 Oracle DBMS가 차지하는 막대한 비중을 생각할 때, Linux 서버들이 Oracle 서버에는 접속할 필요가 있다고 보았는지 Oracle client 버전은 최신 12 버전까지 모두 포팅되어 있습니다.  아래의 Oracle site에서 무료 회원 가입하고 download 받으시면 됩니다.

http://www.oracle.com/technetwork/topics/linux-power-le-2835260.html



u0017496@sys-87250:/usr/local$ ls ~/
instantclient-basic-linux.leppc64-12.1.0.2.0.zip
instantclient-jdbc-linux.leppc64-12.1.0.2.0.zip
instantclient-odbc-linux.leppc64-12.1.0.2.0.zip
instantclient-sdk-linux.leppc64-12.1.0.2.0.zip
instantclient-sqlplus-linux.leppc64-12.1.0.2.0.zip

이것들을 unzip으로 다음과 같이 풀어놓으면 됩니다.

u0017496@sys-87250:/usr/local$ sudo unzip ~/instantclient-basic-linux.leppc64-12.1.0.2.0.zip
u0017496@sys-87250:/usr/local$ sudo unzip ~/instantclient-jdbc-linux.leppc64-12.1.0.2.0.zip
u0017496@sys-87250:/usr/local$ sudo unzip ~/instantclient-odbc-linux.leppc64-12.1.0.2.0.zip
u0017496@sys-87250:/usr/local$ sudo unzip ~/instantclient-sdk-linux.leppc64-12.1.0.2.0.zip
u0017496@sys-87250:/usr/local$ sudo unzip ~/instantclient-sqlplus-linux.leppc64-12.1.0.2.0.zip

내용을 살펴보면 다음과 같이 sqlplus 실행파일과 각종 shared object (so) 파일들이 들어 있습니다.

u0017496@sys-87250:/usr/local/instantclient_12_1$ ls
adrci                  libheteroxa12.so  libsqlplus.so             sdk
BASIC_README           libnnz12.so       libsqora.so.12.1          sqlplus
genezi                 libocci.so.12.1   ODBC_IC_Readme_Unix.html  SQLPLUS_README
glogin.sql             libociei.so       odbc_update_ini.sh        uidrvci
help                   libocijdbc12.so   ojdbc6.jar                xstreams.jar
JDBC_README            libons.so         ojdbc7.jar
libclntshcore.so.12.1  liboramysql12.so  orai18n.jar
libclntsh.so.12.1      libsqlplusic.so   orai18n-mapping.jar


이제 LD_LIBRARY_PATH와 PATH 등 환경변수를 설정하고 sqlplus를 구동해보겠습니다.

u0017496@sys-87250:/usr/local/instantclient_12_1$ cd
u0017496@sys-87250:~$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/instantclient_12_1
u0017496@sys-87250:~$ export PATH=$PATH:/usr/local/instantclient_12_1

u0017496@sys-87250:~$ which sqlplus
/usr/local/instantclient_12_1/sqlplus

u0017496@sys-87250:~$ sqlplus
sqlplus: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

놀랍게도 error가 납니다.  놀라실 것 없습니다.  AIX 시절의 기억을 살려보면, Oracle은 async I/O를 사용하지요.  Linux에도 aio library가 있고, apt-get 명령으로 설치할 수 있습니다.

u0017496@sys-87250:~$ sudo apt-get install libaio-dev libaio1 libaio1-dbg

이제 다시 sqlplus를 구동해보겠습니다.  잘 되는 것을 보실 수 있습니다.

u0017496@sys-87250:~$ sqlplus

SQL*Plus: Release 12.1.0.2.0 Production on Sun May 14 21:10:37 2017

Copyright (c) 1982, 2015, Oracle.  All rights reserved.

Enter user-name:

댓글 없음:

댓글 쓰기