최근에 한국어 텍스트 분석을 연습할 수 있는 데이터를 공유하고 있습니다. 데이터 분석 연습의 첫 코드가 분석이 아닌 데이터 수집이지 않기를 바래서 였습니다. 데이터셋의 구성과 앞으로 추가하려는 종류의 데이터, 그리고 연습 가능한 문제들을 살펴봅니다.
k-means Ensemble 구현과 학습 시 주의할 점
k-means clustering 은 각 군집의 모양이 구 형태로 convex 할 때 작동하며, 데이터 분포가 복잡할 경우에는 잘 작동하지 않는다 알려져 있습니다. 복잡한 형태의 분포를 띄는 데이터의 군집화를 위해서 clustering ensemble 방법들이 이용될 수 있습니다. Ensemble 의 기본 군집화 알고리즘으로 k-means 를 이용할 수도 있습니다. 이번 포스트에서는 데이터 분포가 복잡한 경우에 적용할 수 있는 군집화 방법인 k-means ensemble 을 다룹니다. 이를 위해 sparse matrix 형태의 affinity matrix 를 이용하는 agglomerative clustering 알고리즘도 구현합니다.
Bokeh 와 Flask 를 이용한 AWS S3 access log 모니터링 앱 만들기
AWS S3 는 bucket 의 파일들에 접속하는 접속 로그 (access logs) 를 저장할 수 있습니다. 텍스트 파일로 제공되는 로그들을 모아 파싱하고, Bokeh 를 이용하여 widget 을 만든 뒤, Flask 를 이용하여 로그 모니터링을 할 수 있는 앱을 만드는 과정을 정리합니다.
AWS CLI (Command Line Interface) 를 이용하여 S3 버킷 다루기 (파일 업로드, 폴더 동기화) 및 AWS IAM 등록
이전 포스트에서 AWS S3 에 버킷을 만들고 Web UI 를 이용하여 파일을 업로드, 공유하였습니다. 이번에는 AWS CLI 를 이용하여 로컬과 S3 bucket 을 동기화 시킵니다. CLI 는 terminal 환경에서 AWS 를 이용할 수 있도록 도와줍니다.
(Spark) 0. Ubuntu 에 Spark 설치, IPython Notebook 의 외부접속 설정, PySpark 와 Notebook 연동
이번 포스터에서는 Ubuntu 에 Spark 를 설치하는 과정, 그리고 IPython Notebook 에서 Spark 를 이용하기 위하여 PySpark 를 설치하는 과정, 외부에서 IPython Notebook 을 이용할 수 있도록 설정을 하는 과정을 정리하였습니다.
AWS S3 에 데이터셋 공유하기 (Bucket 만들고 파일 업로드 하기)
이전의 Git 으로 데이터셋 API 공유하기에서 github 에 데이터셋을 다루는 파이썬 패키지를 올려 이용하자는 이야기를 하였습니다. 이 패키지는 파이썬 함수들만 업데이트 되어 있으며, 실제 데이터 파일과 학습된 모델 파일들은 외부 링크로 공유하였습니다. 이러한 파일들을 올려둘 목적으로 AWS S3 를 이용하기로 결정했습니다. 이번 포스트에서는 S3 에 bucket 을 만들고 파일을 업로드, public 으로 공유, acecss log 를 기록하는 과정을 정리하였습니다.
말뭉치를 이용한 한국어 용언 분석기 (Korean Lemmatizer)
한국어의 단어는 9 품사로 이뤄져 있으며, 그 중 동사와 형용사는 목적에 따라 그 형태가 변하기 때문에 용언이라 부릅니다. 동사와 형용사는 중심 의미를 지니는 어간 (stem) 과 시제와 같은 문법적 기능을 하는 어미 (eomi, ending) 가 결합하여 표현형 (surfacial form) 이 이뤄집니다. 때로는 표현형에서 어간과 어미를 분리하거나, 원형 (canonical form, lemma) 으로 복원해야 할 필요가 있습니다. 이번 포스트에서는 사전과 규칙 기반으로 이뤄진 한국어 용언 분석기를 만들어 봅니다.
praw 를 이용한 Reddit scrapping 과 아카이빙이 된 이전 Reddit 가져오기
최근에 이 Reddit 의 자료들을 수집할 일이 있었습니다. Reddit 은 praw 라는 파이썬 API 를 제공하지만, 이를 통하여 수집할 수 있는 submissions (posts) 의 개수는 제한적입니다. 대신 데이터를 아카이빙하여 제공합니다. 이들에 대한 간단한 설명입니다. 같은 작업을 하실 다른 분들이 헤매지 않고 작업하시길 바랍니다.
Python dill 로 class definition 까지 binary 로 저장하기
파이썬으로 작업을 할 때, 사용자가 정의하는 클래스 인스턴스를 저장할 일들이 있습니다. 예를 들면 namedtuple 을 이용한 데이터 타입이라던지, PyTorch 에서 nn.Module 을 상속받은 모델들이 그 예입니다. 물론 site-packages 폴더에 설치된 클래스들은 pickle 을 이용하여 저장/로딩에 문제가 없지만, 때때로 패키지에 없는 클래스를 만들일이 있습니다. 이처럼 serializable 하지 않은 변수들은 pickle 을 이용하여 저장할 수 없습니다. dill 은 이 때 사용할 수 있는 파이썬 패키지 입니다.
Github 으로 데이터 공유 API 만들기
폴더 내 파일 구성이 달라질 수 있는 데이터셋을 공유할 일이 생겼습니다. 이를 이용할 사람들이 링크로 파일을 다운로드 받아 폴더에 파일을 더하는 방식이라면 귀찮을 뿐더러 의도치 않게 파일을 잘못된 폴더에 저장할 위험도 있습니다. 이러한 위험을 방지하기 위하여 데이터셋을 파이썬 패키지로 만들자는 생각을 했습니다. 파이썬으로 파일을 다운로드 받고 압축을 푸는 기능만 구현하면 github 과 url 링크를 이용하여 데이터셋을 공유할 수 있습니다.