은전한닢 MeCab Python 설치하기

메카브(MeCab)는 일본어 형태소분석기입니다.

은전한닢은 메카브를 한국어용으로 포팅한 것이고 Mecab-Ko 라고도 부릅니다.

은전한닢으로 텍스트마이닝, 자연어처리를 하거나 은전한닢에 의존성이 있는 소스코드, 패키지를 쓰려고 하면 메카브를 설치해야 하는데 이게 설치가 깔끔하게 잘 안되는 편입니다.

Mecab-ko의 코어 모듈과 Python 모듈까지 설치하는 방법입니다.

간단하게 한 셀로 정리했으니 순서대로 하면 됩니다.

# 아래의 명령으로 설치가 되야 하는데 안되며 포기
# sudo python3.9 -m pip install -v python-mecab-ko

# 메카브의 소스를 받와서 빌드후 설치
wget https://bitbucket.org/eunjeon/mecab-ko/downloads/mecab-0.996-ko-0.9.2.tar.gz
tar xzvf mecab-0.996-ko-0.9.2.tar.gz
cd mecab-0.996-ko-0.9.2
./configure
make
sudo make install

# 메카브 한국어 사전을 받아와서 빌드 후 설치
cd
wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.1.1-20180720.tar.gz
tar xvfz mecab-ko-dic-2.1.1-20180720.tar.gz
cd mecab-ko-dic-2.1.1-20180720
./configure
sudo apt-get install autoconf
# autogen.sh
# autoreconf
# /etc/ld.so.conf파일에 마지막 한 줄을 추가하고 다시 수행하면 정상적으로 표시가 됩니다.
sudo vim /etc/ld.so.conf
# 아래의 두줄이 들어가면 오케이
# include ld.so.conf.d/*.conf
# /usr/local/lib
sudo ldconfig
make
sudo make install
# 이제 메카브 파이썬 모듀을 설치한다
cd
git clone https://bitbucket.org/eunjeon/mecab-python-0.996.git
cd mecab-python-0.996
python3 setup.py build
python3 setup.py install
# python3 실행해서 다음 코드를 실행해서 에러가 없으면 오케이
# import MeCab

시간대에 따른 온라인 고객의 구매패턴 분석

시계열로 고객의 구매패턴을 확인하려면 많은 드릴다운과 데이터 탐색이 필요합니다. 하지만 간단한 특징으로 몇 가지 중요한 인사이트를 얻을 수도 있습니다.

가장 짧은 계졀단위를 먼저 본다

사람의 계절성(Seasonality) 중 가장 짧은 것은 하루입니다. 하루 다위로 어떻게 행동이 반복되는지 보면됩니다.

데이터 탐색에 의한 인사이트

그래프와 자료를 공유할 수는 없지만 위의 데이터는 다음과 같은 간단한 인사이트가 있습니다.

  • 가장 인터넷서핑이 활발한 시간은 10시 ~ 11시, 13시 ~ 18시, 20시 ~ 23시입니다.
  • 구매는 보통 오전 9시경 ~ 10시경, 오후 7시에 새벽 13시까지에 가장 많이 발생한다.

1일 일과의 사용자들의 웹서핑 패턴과 구매 패턴을 분석하면 광고클릭모델이나 광고전환모델을 만들 때 매우 유용한 특성, 자질(feature)에 대한 힌트를 얻을 수도 있습니다.

데이터 설명

우선 위의 그림은 2022년 9월의 추석연휴를 전후로 7일간의 인터넷 사용자들의 여러 웹사이트에서 발생한 웹사이트의 페이지뷰 중의 일부 트래픽의 패턴입니다. PC와 Mobile을 모두 포함한 것인데 모바일과 PC는 양상이 조금 다르긴 합니다.

웹사이트 페이지뷰와 사용자 구매패턴과의 상관관계

여기서 말하는 웹사이트는 뉴스, 신문, 커뮤니티, 각종 블로그를 말하고 인터넷 사용자는 매체를 돌아다니며 콘텐츠를 섭취하는 사람들을 말합니다. 이 사람들은 이런 매체들을 돌아다니가 어느 시점에 광고를 클릭하거나 또는 직접 쇼핑몰에 직접접속해서 물건을 보고 구매를 합니다.

웹사이트 페이지뷰와 사용자들의 구매 패턴과는 상관관계가 있을까? 하는 궁금증이 생길 것입니다.

단순한 아이디어로는 “어느 시간대에 광고를 보여주면 물건을 살까?” 같은 것이 있습니다.

인터넷서핑이 활발한 시간은 직장인들의 출퇴근 시간과 직장내에서의 행동패턴과 관련이 있습니다. 출근 후 앉아서 시간을 때우고 싶어지는 시간대입니다.

구매는 이것과는 다른데 구매는 정신이 또렷하고 바쁘지 않으면서 올바른 판단을 할 수 있는 시간대입니다. 이 시간대에는 구매하려고 봐 두었던 물건의 구매를 확정하거나 가격대 또는 유형이 비슷한 물건을 찾아다니는 특성이 있습니다.

그외에 소소한 인사이트로는

  • PC사용자에 비해 모바일 사용자는 새벽시간대의 트래픽이 조금 더 많다.

위의 이유로 추정할 수 있는 것은

PC나 데스크탑은 누워서 쓰거나 할 수 없지만 모바일은 편안하게 누워서 새벽까지 사용가능하기 때문입니다. 이 시간대에 사용자들이 소비하는 컨텐츠는 게임, 웹툰, 소설, 틱톡, 유튜브 같은 엔터테인먼트가 많습니다.

Ubuntu microk8s와 fluentd 설치하기

fluentd는 데이터 인제스쳔(Data ingestion) 레이어를 구성하는데 매우 유용한 도구입니다.

fluentd를 microk8s로 구성하는 방법입니다.

우분투(Ubuntu)에 microk8s 설치하기

microk8s는 snap으로 설치해야 합니다.

그래서 snap이 없는 우분투 구버전은 먼저 snap부터 설치합니다. 최근 우분투에는 snap이 기본 설치되어 있습니다.

snap설치

sudo apt-get install snapd

microk8s 설치

sudo snap install microk8s –classic

helm3 활성화

계정을 root로 전환합니다. 일반 사용자로 해도 되지만 몇 가지 선행작업이 있어서 조금 귀찮습니다. 여기서는 그냥 root로 하겠습니다.

sudo su –
microk8s enable helm3
microk8s helm3 init

init을 하면 이런 에러가 발생할수도 있습니다.

Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
Error: error initializing: Looks like “https://kubernetes-charts.storage.googleapis.com” is not a valid chart repository or cannot be reached: Failed to fetch https://kubernetes-charts.storage.googleapis.com/index.yaml : 403 Forbidden

이럴 때는 다음과 같이 해결합니다.

해결법

Use the –stable-repo-url argument to specify the new repository:

helm init –stable-repo-url https://charts.helm.sh/stable –service-account tiller
Use the –skip-refresh argument and replace the stable repo:

해결법 실행명령

helm init –client-only –skip-refresh
helm repo rm stable
helm repo add stable https://charts.helm.sh/stable
Upgrade helm to 2.17.0 or later.

이제 fluentd의 helm 레파지토리를 추가합니다.

fluentd helm 레파지토리 추가

microk8s helm3 repo add fluent https://fluent.github.io/helm-charts
microk8s helm3 repo update

fluentd 설치

fluentd를 설치합니다.

microk8s helm3 install fluentd fluent/fluentd

fleuntd의 기본 values를 봅니다.

microk8s helm3 show values fluent/fluentd

fluend가 실행되어 있는지 서비스 확인

root@pr-01:~# microk8s kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
Kubernetes ClusterIP 10.152.183.1 443/TCP 3h16m
fluentd ClusterIP 10.152.183.249 24231/TCP 26m