Python은 왠지 한글하고 친하지가 않은 것 같다.

그나마 v3.x 버전이 되면서 많이 편해지긴 했지만, 그래도 한글 관련 이슈가 계속 나오는 느낌적인 느낌이...

 

MachineLearning 공부하게 되면서 많은 분들이 사용하고 있는 matplotlib의 경우에도

기본적으로는 한글 출력에 문제가 있다.

 

Google Colab 및 Local 환경에서 matplotlib 한글 출력이 잘 되도록 해보자.

 

 

1. Google Colab

 

① 기본 상황

  - 한글 부분이 제대로 나오지 않는 것을 볼 수 있다.

 

font error

 

② 폰트 설치

  - 나눔 폰트를 설치해보자.

 

!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf

 

install font

 

③ 런타임 재시작

  - 설치된 폰트를 사용하기 위해 "런타임 다시 시작"을 실행하자

 

런타임 다시 시작

 

④ 폰트 적용

  - 이제 한글을 적용해서 그래프를 그려보자.

  - 설치한 폰트를 사용하도록 한 줄 추가가 되어야 한다.

 

plt.rc('font', family='NanumBarunGothic')

 

matplotlib with hangul

 

  - 그런데, 위의 그래프에서 뭔가 이상한 것을 볼 수 있는가?

  - y축의 "-5" 부분이 제대로 출력되지 않았다.

 

⑤ minus 처리

  - 아래와 같은 구문이 추가되면 된다.

import matplotlib as mpl
 
mpl.rcParams['axes.unicode_minus'] = False

 

fix minus

 

 

2. Local (Ubuntu)

Colab과 비슷하지만 약간 차이가 있다.

 

① 기본 상황

  - 코드가 살짝 다르다.

 

import pandas as pd
import matplotlib.pyplot as plt
import warnings

warnings.simplefilter(action='ignore', category=UserWarning)

plt.plot(['서울', '경기', '인천', '광주', '대구', '부산', '울산', '대전', '제주'], [12, 32, -4, 0, 5, 2, 19, 9, 3])
plt.xlabel('x축')
plt.ylabel('y축')
plt.title('제목')
plt.savefig('test.png')

 

execute

 

error

 

② 폰트 설치

  - 나눔 폰트를 설치해보자.

 

$ sudo apt-get install -y fonts-nanum
$ sudo fc-cache -fv
$ rm ~/.cache/matplotlib -rf

 

③ 코드 개선

  - 폰트 및 마이너스 관련 코드 추가해서 재실행해보자.

 

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import warnings

warnings.simplefilter(action='ignore', category=UserWarning)

plt.rc('font', family='NanumBarunGothic')
mpl.rcParams['axes.unicode_minus'] = False

plt.plot(['서울', '경기', '인천', '광주', '대구', '부산', '울산', '대전', '제주'], [12, 32, -4, 0, 5, 2, 19, 9, 3])
plt.xlabel('x축')
plt.ylabel('y축')
plt.title('제목')
plt.savefig('test.png')

 

new graph

 

예쁜 한글 파이팅 !!!

 

반응형

 

나의 로컬 환경에서 Jupyter Notebook을 사용하고 싶어서 살펴봤다.

 

0. 실행 환경

  - Ubuntu 18.04 환경에서 진행했지만, 20.04 등 다른 버전에서도 잘 될 것 같다.

 

1. 설치

  - 가장 편한 "pip"를 이용해서 설치해봤다.

$ pip install jupyter

 

pip install jupyter

 

2. 설치 내역

  - Jupyter Notebook은 여러 패키지의 조합이다. 확인해보자.

$ jupyter --version

 

jupyter --version

 

3. 실행

  - Jupyter Notebook을 실행해보자.

$ jupyter notebook

 

jupyter notebook

 

  - 자동으로 브라우저가 실행되며 Jupyter Notebook을 볼 수 있다.

 

jupyter notebook

 

  - 오른쪽 중간에 보이는 "New" 버튼을 통해 새로운 Notebook을 생성하고, 간단한 실행을 해보자.

 

jupyter notebook

 

정말 간단히 Jupyter Notebook 환경을 만들 수 있다.

서버로 구동하거나 비밀번호를 등록하는 등의 추가 설정은 별도의 포스팅으로 작성해보도록 하겠다.

 

반응형

알람(Alarm)이나 공지(Notification)를 하는 방법 중에서 카카오톡 메시지는  상당히 매력적이다.

 

Python 등을 이용해서 카카오톡 메시지를 발송하는 것은

알아야할 것들이 많아서 그렇지 어렵지는 않으니 하나씩 확인해보자.

 

01. kakao developers 가입하기

  - https://developers.kakao.com/

 

kakao developers

 

02. 애플리케이션 추가하기

  - 가입, 로그인 후 상단에 있는 메뉴 중에서 "내 어플리케이션"을 선택하자.

 

내 어플리케이션

 

  - 메시지 발송과 같은 작업을 하기 위해서는 기본이 되는 "애플리케이션"이 있어야 한다.

  - '앱 이름'과 '사업자명'을 임의로 적어주면 되고, 앱 아이콘은 등록하지 않아도 된다.

 

애플리케이션 추가

 

03. 애플리케이션 요약 정보

  - 생성한 애플리케이션을 선택하면 다양한 설정을 할 수 있는 화면을 볼 수 있다.

  - 첫 화면으로 나오는 요약 정보에서는 중요한 "앱 키"들도 볼 수 있다.

 

요약 정보

 

04. 카카오 로그인 활성화

  - 카카오 로그인 API를 사용하기 위해서 활성화 설정을 진행해야 한다.

 

로그인 활성화


05. Redirect URI

  - 로그인이 된 다음에 되돌아갈 URI를 등록하는 것이다.

  - 지금 마땅히 없으니, 그냥 샘플로 제공되는 주소를 그대로 써주자. (https://naver.com 같이 입력해도 무방하다)

 

Redirect URI

 

06. 접근 권한

  - 사용자 동의가 필요한 접근 항목들이 있다.

  - 제품 설정 → 카카오 로그인 → 동의항목 → 접근 권한 → 카카오톡 메시지 전송 → 설정

 

접근 권한

 

  - 아래 화면과 같이 "선택 동의"를 선택하고 "동의 목적"에 문구를 작성해주면 된다.

 

카카오톡 메시지 전송 설정

 

07. 소셜 API 가이드

  - 사이트 상단 메뉴에서 "문서" 선택 후, 소셜API가이드 - 메시지 - REST API

 

소셜 API 가이드

 

08. REST API 테스트 도구

  - "카카오톡 메시지:REST API" 페이지를 보면 바로 보이는 "REST API 테스트 도구"를 클릭하자.

 

카카오톡 메시지: REST API

 

09. 나에게 기본 템플릿으로 메시지 보내기

  - "REST API 테스트 도구"를 클릭하면 볼 수 있는 화면이다.

 

나에게 기본 템플릿으로 메시지 보내기

 

10. 액세스 토큰

  - "액세스 토큰" 항목에서 "토큰 발급" 눌러 주자.

  - 아래 화면에서 보이는 것과 같이 진행하면 된다.

 

토큰 발급

 

  - 확인을 누르면 동의화면이 나온다. 동의 해주면 된다.

 

동의하기

 

11. 명세 확인하기

  - 페이지의 하단 부분을 보면 "명세" 부분을 볼 수 있다.

  - "template_object"의 타입 부분에서 "Text"를 클릭해 주자.

 

명세

 

  - 메시지의 종류라고 생각하면 되고, 지금은 "Text" 형식으로 메시지를 보내고자 하기에 이렇게 한 것이다.
  - 아래와 같은 형식으로 사용할 수 있다는 것을 확인할 수 있다.
    . {"object_type":"text","text":"Hello World !!!","link":{}}

 

 

12. 전송

  - 페이지의 위로 올라가서 Body 부분의 "template_object" 항목에 입력해주면 된다.

 

전송

 

13. 응답

  - 모두 잘 따라왔으면 아래와 같이 200 OK 응답을 받았을 것이다.

 

응답

 

14. 확인

  - 카카오톡에 정상적으로 전달된 메시지를 볼 수 있다.

 

카카오톡

 

이번에는 여기까지만 진행하고,

Python 코드로 진행하는 것은 별도의 포스팅으로 진행하겠다.

반응형

라떼는 ... Python 버전이 2.x 인지 아니면 3.x 인지만 따지면 됐었는데,

요즘은 ... 3.6 이어도 충분한지 3.7 또는 3.8 호환인지도 따져야 하는 (더러운까지는 아니고) 아주 머리아픈 세상이다.

 

그래서 지금까지는 Ubuntu 환경으로 구축해놓은 개발PC 에서

기존에 JDK에서 사용하던 방식처럼 Python도 alternative 방식으로 원하는 버전을 선택해서 사용했었다.

 

  - https://www.whatwant.com/entry/update-alternatives-여러-버전의-패키지-관리하기

 

 

가볍게 사용하기에는 alternative 방식도 나름 괜찮은 방법이다.

하지만, Python에서는 JDK에서는 만나지 못했던 문제 상황이 발생한다.

작성한 프로그램에서 필요로 하는 패키지들이 있고, 서로간의 dependency까지 신경을 써줘야 한다.

 

패키지 관리에 대한 것은 다음 기회에 살펴보기로 하고,

지금은 일단 여러 버전의 Python을 편하게 사용할 수 있는 방법에 대해서 알아보도록 하겠다.

 

 

[ pyenv ]

  - https://github.com/pyenv/pyenv

 

pyenv

 

왜 이제서야 이 아이를 알게 되었을까!?

진작 알았더라면 훨씬 편하게 살 수 있었을 텐데...

 

이하 과정은 `Ubuntu 18.04` 운영체제에서 `zsh` 쉘환경을 기준으로 진행했다.

일부 차이가 나는 부분에 대해서는 pyenv 사이트에 나오는 가이드를 참고하면 된다.

 

 

1. Environment

 

Ubuntu 패키지로 제공되는 Python2, Python3 모두 설치되어 있으며,

버전 관리를 위해 update-alternatives 설정이 되어 있다.

❯ python --version
Python 3.6.9

❯ sudo update-alternatives --list python

/usr/bin/python2
/usr/bin/python3

❯ sudo update-alternatives --list pip   
/usr/bin/pip3

 

 

2. Prerequisites

 

① remove alternative

alternative가 설정된 상태에서 pyenv는 정상 동작하지 않기에 설정을 지워야 한다.

❯ sudo update-alternatives --remove python /usr/bin/python

❯ sudo update-alternatives --remove pip /usr/bin/pip

 

② install the Python build dependencies

Python build를 위해 필요한 의존성 패키지들을 설치해주자. 좀 많이 설치된다.

❯ sudo apt install make build-essential libssl-dev zlib1g-dev \ 
                        libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
                        libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

 

 

3. Basic GitHub Checkout

 

여러 설치 방법 중에서 가장 깔끔하고 무난한 방법이라서 선택했다.

 

① git clone

❯ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

 

② build

꼭 해야하는 과정은 아니지만, 성능 향상을 위해서 추천한다.

❯ cd ~/.pyenv && src/configure && make -C src
make: 디렉터리 '/home/chani/.pyenv/src' 들어감
gcc -fPIC     -c -o realpath.o realpath.c
gcc -shared -Wl,-soname,../libexec/pyenv-realpath.dylib  -o ../libexec/pyenv-realpath.dylib realpath.o 
make: 디렉터리 '/home/chani/.pyenv/src' 나감

 

③ Configure your shell's environment for Pyenv

여기에서는 zsh 환경에 대해서만 진행한다. 다른 쉘을 사용한다면 GitHub 사이트 방문해서 참고하면 되겠다.

아! MacOS의 zsh 환경에서는 .profile 부문만 빼고 진행하면 된다.

> echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zprofile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zprofile
echo 'eval "$(pyenv init --path)"' >> ~/.zprofile

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init --path)"' >> ~/.profile

echo 'eval "$(pyenv init -)"' >> ~/.zshrc

 

④ 재로그인 / 재부팅

로그아웃 후에 다시 로그인 하거나, 재부팅을 해야 이하 과정이 제대로 진행된다.

 

⑤ 확인

제대로 설치되었는지 확인해보자. 아래 결과가 나오지 않으면 위의 과정을 다시 한 번 점검해보기 바란다.

❯ pyenv versions
* system (set by /home/chani/.pyenv/version)

 

 

4. Python Install

 

이제 새로운 버전의 Python을 설치해보자.

현재 다운로드 받을 수 있는 버전들을 확인하고 싶으면 아래 사이트를 참고하기 바란다.

  - https://www.python.org/downloads/

 

① Python Install

❯ pyenv install 3.8.12
Downloading Python-3.8.12.tar.xz...
-> https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tar.xz
Installing Python-3.8.12...
Installed Python-3.8.12 to /home/chani/.pyenv/versions/3.8.12

 

② 확인

방금 설치한 3.8.12 버전을 볼 수 있다. (하지만 현재 설정된 것은 system에 설치된 버전이다)

❯ pyenv versions
* system (set by /home/chani/.pyenv/version)
  3.8.12

 

③ 추가

3.9 버전도 추가로 설치해보자.

❯ pyenv install 3.9.10
Downloading Python-3.9.10.tar.xz...
-> https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tar.xz
Installing Python-3.9.10...
Installed Python-3.9.10 to /home/chani/.pyenv/versions/3.9.10

❯ pyenv versions
* system (set by /home/chani/.pyenv/version)
  3.8.12
  3.9.10

 

 

5. command

 

전체 명령어에 대한 가이드는 아래 링크를 참조하기 바란다.

  - https://github.com/pyenv/pyenv/blob/master/COMMANDS.md

 

주로 사용할 것은 local / global / shell 이지 않을까 싶다.

❯ cd /srv/workspace/pyenv-test

❯ pyenv versions
  system
* 3.8.12 (set by /home/chani/.pyenv/version)
  3.9.10

❯ ls -al
합계 8
drwxrwxr-x 2 chani chani 4096  3월 14 23:01 .
drwxr-xr-x 4 chani chani 4096  3월 14 23:00 ..

❯ pyenv local 3.9.10

❯ ls -al
합계 12
drwxrwxr-x 2 chani chani 4096  3월 14 23:03 .
drwxr-xr-x 4 chani chani 4096  3월 14 23:00 ..
-rw-rw-r-- 1 chani chani    7  3월 14 23:03 .python-version

❯ pyenv versions
  system
  3.8.12
* 3.9.10 (set by /srv/workspace/pyenv-test/.python-version)

❯ pyenv local --unset

❯ ls -al
합계 8
drwxrwxr-x 2 chani chani 4096  3월 14 23:04 .
drwxr-xr-x 4 chani chani 4096  3월 14 23:00 ..

❯ python --version
Python 3.8.12

❯ pyenv versions
  system
* 3.8.12 (set by /home/chani/.pyenv/version)
  3.9.10

 

이제 Python 버전의 괴로움에서 벗어나자~~~!!!

 

반응형

 

개인적인 취향으로 Windows 환경에서

개발 비스무리한 것을 하는걸 별로 좋아하지 않지만

이번에 뭔가 해볼 일이 있어서... ^^

 

일단 Python 3.6 이상의 버전 설치가 필요하니 Go! Go! (여기에선 최신 버전은 3.9.7을 설치할 예정임!)

 

 

1. Download and Install

   - 아래 경로에 접속하면 알아서 현재 운영체제에 맞는 버전을 링크해준다.

   - https://www.python.org/downloads/

   - 다운로드 받은 후, 그냥 추천해주는대로 클릭 클릭 하면 설치 완료

 

 

2. PATH 설정

  - 설치가 완료되었지만, 제대로 사용하려면 PATH 설정을 해줘야 한다.

 

  ① 제어판

      - 시작 메뉴의 기어 모양 버튼을 통해 "제어판" 실행

 

   ② 고급 시스템 설정

      - 검색창에서 `고급 시스템 설정`을 타이핑 해서 나오는 결과를 클릭

 

   ③ 환경 변수

      - 속성창에서 `환경 변수` 선택

 

   ④ 시스템 변수 - PATH

      - 하단에 있는 `시스템 변수`에서 `PATH` 항목 찾으면 된다.

 

   ⑤ PATH - 새로만들기

      - `새로만들기`로 추가하면 된다.

      - 21-10-02 기준 Python 3.9.7 에서는 아래 경로였다. (2개 추가해야 한다)

      - 물론 사용자 명칭은 각자 환경에 따라서...

C:\Users\<사용자>\AppData\Local\Programs\Python\Python39\
C:\Users\<사용자>\AppData\Local\Programs\Python\Python39\Scripts

 

3. 동작 테스트

   - 잘 되었는지 테스트 해보자 ~

 

   - 시작 메뉴에서 `cmd`라고 타이핑을 한 뒤, `명령 프롬프트` 클릭

 

   - 명령어를 넣어보고 그림과 같은 결과가 나오면 성공이다.

> python --version

> pip --version

   - 위 2개 명령어만 잘되면 된다 ^^

 

반응형

 

매번 귀찮게 찾는 것이 귀찮아서 정리하고자 포스팅 해본다.

 

 

1. Python3 설치하기

$ sudo apt install python3 python3-pip

 

2. update-alternative 설정하기

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2
$ sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

 

3. select

$ sudo update-alternatives --config python
$ sudo update-alternatives --config pip

 

아~ 속 시원하다~!!

반응형


Python version.2 지원이 끝난다고 하니

이제는 Python version.3 환경을 기본으로 사용해야할 것 같다.


Ubuntu를 설치하면 기본적으로 셋팅되어 있는 Python은 version.2 이다.


이를 변경하여 Python version.3 환경으로 꾸며 보고자 한다.




0. 기본 환경


    - Ubuntu 설치가 된 깨끗한(?) 환경이다.


$ lsb_release -a


No LSB modules are available.

Distributor ID: Ubuntu

Description:    Ubuntu 18.04.3 LTS

Release:        18.04

Codename:       bionic



$ python --version


Python 2.7.17




1. python3 상태 확인


    - 어?! 그런데, 살펴보면 python3도 이미 설치되어 있다.


$ python3 --version


Python 3.6.9


    - 뭐뭐가 있는지 한 번 보자


$ ls /usr/bin/ | grep python


dh_python2

python

python-config

python2

python2-config

python2.7

python2.7-config

python3

python3.6

python3.6m

python3m

x86_64-linux-gnu-python-config

x86_64-linux-gnu-python2.7-config




2. python 3.7 설치하기


    - 추가로 Python 3.7 버전을 설치해보자


$ sudo apt-get install python3.7


Reading package lists... Done

Building dependency tree

Reading state information... Done

The following additional packages will be installed:

  libpython3.7-minimal libpython3.7-stdlib python3.7-minimal

Suggested packages:

  python3.7-venv python3.7-doc binfmt-support

The following NEW packages will be installed:

  libpython3.7-minimal libpython3.7-stdlib python3.7 python3.7-minimal

0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.

Need to get 4,282 kB of archives.

After this operation, 22.5 MB of additional disk space will be used.

Do you want to continue? [Y/n]


    - 잘 설치되어 있는지 확인 !


$ python3.7 --version


Python 3.7.5



$ ls /usr/bin/ | grep python


dh_python2

python

python-config

python2

python2-config

python2.7

python2.7-config

python3

python3.6

python3.6m

python3.7

python3.7m

python3m

x86_64-linux-gnu-python-config

x86_64-linux-gnu-python2.7-config




3. Python 버전 등록


    - 기본적인 설정이 등록되어 있는지 확인하여 보자


$ sudo update-alternatives --config python


update-alternatives: error: no alternatives for python


    - 기본 정보를 차례대로 등록해보자


$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1


update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode



$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2


update-alternatives: using /usr/bin/python3.6 to provide /usr/bin/python (python) in auto mode



$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 3


update-alternatives: using /usr/bin/python3.7 to provide /usr/bin/python (python) in auto mode




4. Python 버전 설정


    - 위에서 기본적으로 등록을 했으니... 실제 확인


$ sudo update-alternatives --config python


There are 3 choices for the alternative python (providing /usr/bin/python).


  Selection    Path                Priority   Status

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

* 0            /usr/bin/python3.7   3         auto mode

  1            /usr/bin/python2.7   1         manual mode

  2            /usr/bin/python3.6   2         manual mode

  3            /usr/bin/python3.7   3         manual mode


Press <enter> to keep the current choice[*], or type selection number: 0



$ python --version


Python 3.7.5


    - 이제, "python" 이라는 이름으로 버전 확인을 하면 '3.7.5'가 나온다 !!!



그런데, 3.7 버전으로 했을 경우에.... 뭔가 신경써야할 것들이 많은 것 같다 !! (라이브러리 관리가 쉽지 않다는...)

Ubuntu에서는 현재 3.6 버전을 기본으로 제공하고 있으니 이를 따라서 3.6 버전으로 가는 것을 추천한다.



모두 수고하셨어욥~!!


반응형


※ 아래 내용이 많은데.... 뭔가 해보려고 엎치락 뒷치락 하면서 작성한 내용이라 그렇다.

   비슷한 고민을, 공부를 해보시려는 분이면 조금 도움이 되지 않을까 해서 공개한다.



주말에 뭘할까 고민하다가 블로그를 뒤져봤는데... 뭔가 귀찮았다.

그래서 이걸 어떻게 하면 편하게 할 수 있을까 고민하다가... ^^


[ 목표 ]

1. 네이버 블로그에서 특정 키워드(동탄)를 검색해서

   맛집 포스팅인지 부동산 포스팅인지 구분하고

   동일한 식당이면 묶어서

   홍보 포스팅이면 제외시켜서

   GitHub 페이지로 결과를 보여주도록 하고 싶다.


2. 불량 포스팅이면 작성자를 기록해서

   다음부터는 해당 블로거 글은 무조건 걸러버리는 기능도 필요


3. 처리한 결과는 별도 로깅도 하고 레포팅도 한다.



[ 개발 환경 ]

    - GitHub에 repository를 생성해서 소스코드 관리

        . https://github.com/

    - Virtualbox를 이용해서 Ubuntu 18.04 LTS Server 설치

        . https://www.whatwant.com/entry/Ubuntu-Server-18042-LTS-64bit-Bionic-Beaver-Installation

    - Python

        . 일단 2.7 버전의 Python으로 해보고자 한다. "$ sudo apt-get install python"



[ 진행 #1 - Python module 설치 ]

    - 추가로 설치해야하는 Python module들을 설치하자

$$ sudo apt-get install python-beautifulsoup python-requests



[ 진행 #2 - Naver API 사용 준비 ]

    - Naver 블로그 검색을 API를 통해 해보고자 한다.

        . https://www.whatwant.com/entry/Naver-API-사용-준비하기

    - 기본적인 활용은 아래 링크에서 확인할 수 있다.

        . https://developers.naver.com/docs/search/blog/



[ 진행 #3 - 기본 코드 작성하기 ]

    - 이제 준비는 모두 끝났다. 뭔가 동작하도록 해보자!!!


#!/usr/bin/env python

# -*- coding: utf8 -*-


import urllib2

import requests



naver_client_id = "XXXX"

naver_client_secret = "XXXX"


search_blog_keyword = "동탄"

query = urllib2.quote(search_blog_keyword)


display = 10


start = 1


sort = "date"


url = "https://openapi.naver.com/v1/search/blog.json?query=%s&display=%s&start=%s&sort=%s" % (query, display, start, sort)



request = urllib2.Request(url)

request.add_header("X-Naver-Client-Id", naver_client_id)

request.add_header("X-Naver-Client-Secret", naver_client_secret)



response = urllib2.urlopen(request)

rescode = response.getcode()



if( rescode == 200 ):

    response_body = response.read().decode('utf-8')


    print response_body


exit()


    - 위와 같이 작성 후 실행하면, 뭔가 값을 가져온 것을 확인할 수 있을 것이다. 뭔가 다 된 것만 같은 착각이~~~ 든다.

    - 정말로 뭔가 가져온다~ ^^



[ 진행 #4 - NLP 사용하기 (KoNLPy) ]

    - 한국어 분석을 해보기 위해 알아보니, 가장 유명한 NLP 모듈이 KoNLPy 인 것 같다.

        . Reference: http://konlpy.org/ko/latest/


    - 필요한 패키지 미리 설치하기

        . 공식 홈피에는 openjdk-7-jdk로 되어있고, python3-dev도 기재되어 있지만,

          Ubuntu 18.04 환경에서 현재 openjdk-7-jdk는 사라졌고, 필자는 python2.7 환경에서만 사용할 것이기에 아래와 같이...


$ sudo apt-get install g++ openjdk-8-jdk python-dev


    - KoNLPy 설치하기


$ sudo apt-get install python-pip

$ sudo -H pip install konlpy


    - 샘플 코드는 다음과 같다.

    - 과거 Twitter가 이름을 Okt로 바꿨단다.


from konlpy.tag import Okt

from konlpy.utils import pprint



...

        blog_content = ... (위의 블로그 긁어오기 응용)

        okt = Okt()

        pprint( okt.nouns( blog_content ) )



[ 진행 #5 - 단어 카운트하기 ]

    - 블로그 본문 얻기 → 형태소 분석해서 noun 얻기 → 각 단어가 몇개인지 갯수를 얻어야겠다!!!!

    - 예전에는 for 구문 돌려서 하나씩 갯수를 더해가면서 분석을 했는데, 좀 더 편한 방법을 찾아봤다.


from collections import Counter


...


    ... (블로그 본문 얻기)


        okt = Okt()

        nouns = okt.nouns( blog_content )


        tags = Counter( nouns )


        pprint( tags )


    - Counter() 함수 하나로 해결?!



[ 진행 #6 - 한글 폰트 설치하기 ]

    - 단어 구하고 몇 개씩인지 카운트까지 했으면, 당연히 wordcloud 한 번 해봐야할 것 같아서 ... 미리 필요한 한글 폰트부터 설치해봤다.


$ sudo apt-get install fonts-nanum fonts-nanum-coding fonts-nanum-extra


    - 설치된 폰트를 확인해보자.


$ ll /usr/share/fonts/truetype/nanum/



[ 진행 #7 - wordcloud 설치하기 ]

    - 최근 Python을 통해서 이러한 분석작업을 하는 것이 엄청 유행을 하고 있는데,

      ML과 함께 하는 것이 유행하면서 Jupyter Notebook 환경에서 작업한 코드들이 대부분이다보니 필자가 원하는 내용을 찾기가 쉽지 않았다.

    - 뭐, 결국은 필자의 지식과 노력과 실력이 부족한 탓이겠지 ㅠㅠ


$ sudo -H pip install wordcloud

$ sudo -H pip install matplotlib

$ sudo apt-get install python-tk



[ 진행 #8 - wordcloud 만들어보기 ]

    - 앞에서 형태소 분석한 단어가 각 몇 개씩인지까지 분석했으니... 그걸 가지고 WordCloud를 만들어보자.


from wordcloud import WordCloud


... (블라블라)


        ... (블로그 본문 읽어와서)

        ... (KoNLPy 이용해서 형태소 쪼개고)

        tags = (Count 이용해서 단어별로 갯수 카운트하고)


        font_path = '/usr/share/fonts/truetype/nanum/NanumMyeongjoBold.ttf'

        wc = WordCloud(font_path=font_path, background_color='white', width=800, height=600)


        cloud = wc.generate_from_frequencies( tags )

        cloud.to_file( "wordcloud.png" )


    - 그러면 아래와 같은 그림이 만들어진다. (폰트는 바꿔서 만들었다 ^^)




[ 진행 #9 - GitHub Pages Theme 고르기 ]

    - 이미지 파일까지 만들었는데... 이걸 어떻게 보여줄까 고민하다가 생각한 GitHub Pages ...

    - 기본으로 주어진 테마 중에는 마음에 드는 것이 없어서 다른 테마들은 없을까 찾아보았다.

        . https://jekyllthemes.io/github-pages-themes



    - 유료도 있지만, 무료도 있으니 잘 찾아보길... ^^



[ 진행 #10 - GitHub Pages Theme 가져오기 ]

    - 필자가 고른 Theme는 "flexible-jekyll"

        . Repo: https://github.com/artemsheludko/flexible-jekyll

    - 해당 Theme를 다룰 다양할 방법이 있지만, 필자가 택한 방법은 "/docs" 디렉토리에 넣어서 사용하기!


    ① 내가 사용하는 Repo를 다운로드 받은 뒤, 내 Repo 디렉토리로 이동하자

    ② 위 Theme를 clone 받은 뒤, .git 디렉토리를 지우자.


$ git clone https://github.com/artemsheludko/flexible-jekyll.git ./docs

$ rm -rf ./docs/.git


    ③ 그렇게 하고 push 하자. /docs 디렉토리가 있어야 뒤에서 할 settings 설정을 진행할 수 있다.


    ④ GitHub에서 Pages 기능을 활성화 시키자. 해당 Repository의 settings 메뉴에서 GitHub Pages 항목을 살펴보자.



    ⑤ Source 선택 時 /docs folder로 골라주면 된다. (/docs 디렉토리가 있어야 해당 옵션을 선택할 수 있다)



[ 진행 #11 - GitHub Pages Theme 설정하기 ]

    - 간단한 config를 설정해야 한다.



    - 입맛에 맞게 수정한 후 commit 반영하자.



[ 진행 #12 - GitHub Pages Post 반영하기 ]

    - 검색 결과를 얻어와서 분석하고, 이미지까지 만든 것을 post로 만들어 보자.

    - 아래 코드는 필자가 테스트로 작성했던 것을 샘플로 기재한 것이다.


... (앞에서 작업한 것들)


    for content in CONTENTS:

        post_filepath = "docs/_posts/%s-%s.markdown" % ( datetime.now().strftime("%Y-%m-%d"), content['id'] )


        temps = [ "---", "layout: post" ]

        temps.append( "title: %s" % content['title'] )

        temps.append( "date: %s" % content['postdate'] )

        temps.append( "description: %s" % content['description'] )

        temps.append( "img: %s" % content['img'] )

        temps.append( "fig-caption: # Add figcaption (optional)" )

        temps.append( "tags: [ %s ]" % ','.join(content['nouns']) )

        temps.append( "---" )

        temps.append( "[%s](%s)" % (content['title'], content['link']) )


        with open( post_filepath, 'w') as outfile:

            outfile.write( "\n".join( temps ) )



여기까지 진행해서 얻게된 결과는 다음 이미지와 같다.




아직도 해볼만한 것이 엄청 많지만,

힘들어서 여기까지만 작성한 내용으로 한 번 선 긋고자 한다. 헥헥 ...



반응형

+ Recent posts