슬랙봇으로 개발 생산성 높이기 with Slack RTM API 개발을 하면서 때때로 간단한 프로퍼티를 조회하기 위해 매번 번거로운 DB 접근 절차를 거치게 되는데요. 개발 생산성을 높이기 위해 프로퍼티를 조회하는 절차를 효율적으로 개선해 보자는 생각을 시작으로 공통 코드 조회 슬랙봇(WhatIsThisCode)이 만들어지게 되었고, 이번 글에서는 그 생성 과정을 공유해 드리고자 합니다. 들어가기 슬랙봇을 만드는 방법은 정말 다양했습니다. 그중에서도 저에게는 아래와 같은 조건을 만족하는 방법이 필요했습니다. API를 외부(Slack)에 오픈하지 않고 슬랙봇을 동작시킬 수 있는가? 구현 환경에서 방화벽 이슈가 발생하지 않는가? 슬랙봇이 실시간으로 이벤트를 수신하고 메시지를 보낼 수 있는가? 다행히도 슬랙은..
Json 구조의 로그 파일 분석 Json 구조의 로그 파일을 분석하는 코드를 작성해보자. 간단한 설명은 주석을 참고해보자. Log file Example Line-by-line json type. 라인 단위로 Json 형태의 로그가 저장되어있는 파일이다. {"success":"true", "fileType":"pdf", "summary":[{"page_count":"3", "sentence_count":"20", "char_count":"80"}]} {"success":"true", "fileType":"docx", "summary":[{"page_count":"6", "sentence_count":"50", "char_count":"140"}]} Code import json import os file..
Korean spacing Model Taekyoon 님이 개발하신 한국어 띄어쓰기 모델 Trainable Korean spacing (TaKos) 을 간략하게 테스트해보고자 한다. 자연어처리에서는 텍스트를 토큰 단위로 구분하여 다루는데, 가장 쉬운 토크나이징 방법은 띄어 쓴 단어를 구분하는 것 한국어의 경우 띄어쓰기는 텍스트의 의미를 구분하는 데 큰 영향을 줌 Reference takos-alpha 한국어 띄어쓰기 프로그램 도전기 Install git clone https://github.com/Taekyoon/takos-alpha.git pip install -r requirements python setup.py install Requirements packages torch numpy pandas..
NAVER 금융 ETF 종목 엑셀 추출 매번 ETF 종목 현재가 검색하는 귀차니즘이 발동하여... NAVER 금융 ETF 페이지 Scraping 을 해보려고 한다. 항상 Scraping 전에 robots.txt 확인이 필요한다. https://finance.naver.com/robots.txt를 확인해보면 Allow: /sise/ 라고 automated scraping 허용이 되는 것을 확인할 수 있다. Get Chrome Debug Mode Driver chrome 을 자동화 모드가 아닌 Debug 모드로 실행 def get_driver(url): subprocess.Popen( r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --r..
Scrape Linkedin People Search Results with Python 먼저 scraping 하고자 하는 링크는 https://www.linkedin.com/search/results/people/?keywords.. 이고 https://www.linkedin.com/robots.txt 에 접속해서 automated scraping 허용 여부를 확인해보자. Disallow 목록에 포함되지 않는다면 시작 !! Run Chrome Debug mode chrome 을 자동화 모드가 아닌 Debug 모드로 실행 subprocess.Popen( r'C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port=9..
Python MS-SQL 연동 (pymssql) Documentation pymssql 설치 pip install pymssql MS SQL 연동 Auto commit 을 사용할 경우 conn.autocommit(True) 을 설정해주면 된다. conn = pymssql.connect(server, username, password, database) # MSSQL 접속 cursor = conn.cursor() # 쿼리 생성과 결과 조회를 위해 사용 SELECT 한글 깨짐을 해결하기 위해 .encode('ISO-8859-1').decode('euc-kr') 방법을 많은 분들이 사용하는 듯 하다. cursor.execute('SELECT * FROM POST;')..
Subword Modeling 개요 자연어처리 모델을 훈련할 때 tokenizing 된 단어의 개수(단어사전, vocab)는 모델 성능에 다양한 영향을 미치게 된다. 여기서 특히 OOV 문제는 굉장한 이슈거리이다. OOV(Out-Of-Vocabulary) 또는 UNK(Unknown Token) 기계가 모르는 단어로 인해 문제를 푸는 것이 까다로워지는 상황 -> OOV 문제 특히 한국어의 경우 형태소 분석기를 많이 사용하는데, OOV 문제 해결을 위해 사용자 단어 사전을 만들어주기도 한다. -> 하지만, 엄청난 노가다 작업이 필요하다. 이러한 상황들을 해결하기 위해 나온 것이 Subword Segmentation 서브워드 분리 작업은 하나의 단어는 더 작은 단위의 의미있는 여러 subword(책+가방)의 ..
Python Multiprocessing GIL(Global Interpreter Lock) 파이썬에서는 하나의 프로세스 안에 모든 자원의 Lock을 Global하게 관리함으로써 한번에 하나의 쓰레드만 자원을 컨트롤하여 동작 여러 쓰레드를 동시에 실행시키지만, 결국 GIL 때문에 한번에 하나의 쓰레드만 계산을 실행 GIL로 자원 관리(GC..)를 쉽게 구현 가능해졌지만, 멀티 코어 부분에서는 아쉬움 파이썬의 경우에는 GIL이 존재하여 멀티 쓰레드보다는 멀티 프로세스를 사용하는 것이 좋음 multiprocessing 쓰레딩 모듈로 쓰레드를 생성 할 수 있는 것과 동일한 방식으로 프로세스를 생성 프로세스는 각자가 고유한 메모리 영역을 가지기 때문에 쓰레드에 비하면 메모리 사용이 늘어난다는 단점 싱글 머신 아..