일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 자연어처리
- 데이콘 소설
- 캐치카페
- Real or Not? NLP with Disaster Tweets
- 우분투
- 데이콘
- selenium
- leetcode
- ubuntu
- 캐글
- Kaggle
- hackerrank
- 백준
- PYTHON
- dacon
- windows
- 인공지능 공모전
- Git
- 파이썬
- 캐치
- catch
- Keras
- programmers
- Compas
- SW Expert Academy
- 금융문자분석경진대회
- Baekjoon
- 프로그래머스
- NLP 대회
- AI 경진대회
- Today
- 1,101
- Total
- 441,525
목록Programming/python (61)
솜씨좋은장씨

gunicorn을 활용하여 Flask로 만든 API를 배포하기 위하여 gunicorn --bind 0.0.0.0:5000 -w=2 -k=gevent --threads=2 app:app 위의 명령어를 활용하여 실행을 하니 [Ubuntu] ModuleNotFoundError: No module named '_bz2' 해결 방법 우분투에서 아래의 명령어를 통해 api를 gunicorn을 활용하여 띄우려고 할때 gunicorn --bind 0.0.0.0:5000 -w=2 -k=gevent --threads=2 app:app /usr/local/lib/python3.7/importlib/_bootstrap.py:219: Runtime.. somjang.tistory.com [Ubuntu] UserWarning: ..

wand 라이브러리 설치 $ pip install wand 위의 라이브러리는 ImageMagick이라는 것을 활용하므로 이것도 같이 설치해주어야 합니다. ImageMagick 설치 Ubuntu 에서 설치하는 방법 sudo apt-get install libmagickwand-dev 위의 명령어로 설치한 이후에 사용할 설정을 수정해주면 완료입니다. [Python] wand.exceptions.PolicyError: not authorized `./test.pdf' @ error/constitute.c/ReadImage/412 해결방법 wand와 ImageMagick을 설치한 후 pdf를 tiff로 변환하려고 할 때 wand.exceptions.PolicyError: not authorized `./test..

wand와 ImageMagick을 설치한 후 pdf를 tiff로 변환하려고 할 때 wand.exceptions.PolicyError: not authorized `./test.pdf'@ error/constitute.c/ReadImage/412 위와 같은 오류를 만나게 되었습니다. 위는 imageMagick의 설정에 pdf 관련 설정이 none으로 설정되어있기 때문입니다. 이를 해결하는 방법은 다음과 같습니다. 먼저 설정을 변경할 파일을 vi 편집기로 열어줍니다. $ sudo vi /etc/ImageMagick-6/policy.xml $ sudo vi /etc/ImageMagick/policy.xml 위의 두 경로 중 본인의 설치 버전에 맞는 버전의 경로로 들어가면됩니다. 여러 부분 중에서 위의 부분을 ..

이 글에서는 자주 사용하는 정규식을 정리하려합니다. XXXX년 XX월 XX일 ( 년 월 일 형식 추출 정규식 ) import re value = "오늘은 2020년 12월 29일 입니다." pattern = r"\d+년 \d+월 \d+일" regex_result = re.search(pattern, value) result = regex_result.group() 특수문자 제거 정규식 import re regex_text = re.sub('[-=+,#/\?:^$.@*\"※~&%ㆍ!』\\‘|\(\)\[\]\`\'…》]', '', text) XX-XXX-XXXX | XX-XXXX-XXXX | XXX-XXX-XXXX | XXX-XXXX-XXXX ( 전화번호 추출 정규식 ) import re value = "내..

각 페이지별 이미지 변환 ( pdf to jpg ) - pdf2image 활용 여러 페이지로 구성되어있는 pdf 파일을 각 페이지별 이미지로 변환하는 방법에 대해서 적어보려 합니다. 먼저 이 과정을 진행하기 위해서 필요한 라이브러리를 설치합니다. pdf2image A wrapper around the pdftoppm and pdftocairo command line tools to convert PDF to a PIL Image list. pypi.org pip install pdf2image 그 다음 아래의 코드를 활용하여 pdf파일의 각 페이지를 jpg 이미지로 변환하면 됩니다. #-*- coding:utf-8 -*- from pdf2image import convert_from_path file_n..

최근에 API를 만들면서 API 요청에 대한 로그를 남겨야하는 일이 있어 python의 logging을 활용하여 로그를 남기려고 코드를 작성하여 실행하였는데 로그를 찍으면 찍을 수록 중복되어 찍히는 로그가 점점 많아 졌습니다. 수정 전 코드 import os import logging import logging.handlers def request_log(query, subj, prop, top1_prop, elapsed_time): dir_path = "./log_data/kbqa" if not (os.path.isdir(dir_path)): os.makedirs(os.path.join(dir_path)) logger = logging.getLogger("kbqa_search") logger.setLe..

이 글에서는 Mac OS 가 설치된 맥북, 아이맥, 맥 등에서 파이썬을 활용하여 코딩을 할 때 영어나 숫자로 되어있는 이름의 파일은 문제가 없는데 윈도우에서 가져온 파일 중에 한글로 된 파일을 가져와서 데이터를 로드하여 사용하려하면 오류가 나지는 않는데 제대로 파일에 접근하여 다른 작업을 하지 못할때 해결하는 방법에 대해서 적어보려합니다. 원인 먼저 이렇게 한글로 된 파일은 맥과 윈도우에서 한글을 표현할 때 사용하는 방식이 다르기 때문입니다. 맥에서 만든 파일을 윈도우로 가져갔을 때 파일이름의 자모가 분리되어 보이는 문제도 같은 이유로 발생합니다. 맥은 NFD ( Normalization Form Decomposition ) 방법을 윈도우는 NFC ( Normalization Form Compositio..

최근 제가 만든 코드의 실행 속도를 측정해야하는 일이 있었습니다. 다양한 방법이 있지만 저는 datetime을 활용하여 측정해보았습니다. datetime을 활용하는 방법은 다음과 같습니다. import datetime 먼저 datetime 라이브러리를 import 합니다. start_time = datetime.datetime.now() # ( 측정을 하고자 하는 코드 ) end_time = datetime.datetime.now() datetime.datetime.now( ) 를 활용하여 코드 실행 전, 후 시간을 가져옵니다. elapsed_time = end_time - start_time 그 다음 코드 실행 후 시간에서 코드 실행 전 시간을 빼줍니다. 여기서 얻은 elapsed_time을 활용하여 ..

이 글에서는 pdf2image 라이브러리를 활용하여 pdf 파일을 image로 변환하는 방법에 대해서 적어보려 합니다. 먼저 pdf 파일목록을 os 를 활용하여 받아옵니다. import os file_list = os.listdir("./source/") 저는 source 디렉토리에 3개의 pdf 파일을 담아두었기에 os의 listdir을 활용하여 ./source/ 디렉토리의 파일 목록을 가져왔습니다. file_list ['TA_클러스터링_핵심어추출.pdf', 'Word_Embedding_자질을_이용한_한국어_개체명_인식_및_분류.pdf', 'journal_ktsde_9-4_752015269.pdf'] from pdf2image..

Python에서 pdf2image 라이브러리를 활용하여 pdf를 이미지로 변경하려는 코드를 실행하려고하니 아래와 같은 오류가 발생하였습니다. from pdf2image import convert_from_path pages = convert_from_path("./source/" + file_list[0], 500) --------------------------------------------------------------------------- FileNotFoundError Traceback (most recent call last) ~/anaconda3/lib/python3.7/site-packages/pdf2image/pdf2image.py in pdfinfo_from_path(pdf_path..

pandas를 활용하여 읽어온 csv 파일에서 특정 column에 대한 중복값을 제거하기 위하여 아래와 같이 먼저 파일을 엑셀에서 읽어온 후 import pandas as pd data = pd.read_excel("./42_nia_pqa_QueryTemplate.xlsx") data_fillna = data.fillna(0.0) data_fillna_dropna = data_fillna[data_fillna['property'] != 0.0] data_fillna_dropna.head() 특정 값 이외의 값만 남기기 위하여 위와 같이 코드를 실행하였으나 --------------------------------------------------------------------------- ValueErr..

최근 약 3만개의 한글파일을 첫페이지를 이미지로 500x707크기의 썸네일을 만들어야하는 일이 있었습니다. 30개의 파일이었으면 귀찮더라도 그냥 모든 파일을 하나하나 열어서 첫 페이지를 이미지로 저장하게끔 하였겠지만 3만개의 파일을 하나하나 열어서 하기에는 너무 많은 양이 었습니다. 저는 이를 파이썬으로 코드를 작성하여 한번에! 촤르륵 실행해보기로 하였습니다. 파이썬을 배우고 나서부터는 이런 대량의 파일을 다루는 작업이나 단순 반복 작업, 수많은 파일 속에서 하나의 파일 찾기와 같은 작업을 주로 파이썬을 활용하여 진행하게 되는 것 같습니다. 진행한 환경은 Windows 10 + 한글 2018 + Python3,7 ( pywin32 라이브러리 ) 에서 진행하였습니다. 이 작업을 진행하기 위해서는 무조건! ..

한글 파일에서 첫 페이지만 bmp로 저장한 다음 bmp 파일을 작은 해상도로 resizing 한 후 jpeg로 저장하는 과정에서 이미지가 깨져서 보이는 현상이 있었습니다. 처음에는 한글 API 가 제대로 동작하지 않아서인가 싶었지만 PIL(Pillow) 라이브러리에서 resize 하는 과정에서 발생하는 문제였습니다. 해결 방법 해결하는 방법은 아주 간단했습니다. img = Image.open("./test.bmp").convert("RGB") new_img = img.resize((500, 707), Image.ANTIALIAS) new_img.save("./test.jpg", format='jpeg', quality=100) resize를 하는 과정에서 Image.ANTIALIAS 라는 인자를 넣어주면..

업무 중 NER을 담당하는 분께 NER을 활용하여 특정 태스크에 대해서 테스트를 요청드렸었고 결과로 받은 파일은 'INPUT : 롤플레잉 게임 시스템 쇼크를 개발한 회사는\n', "GOLD : ['O', 'O', 'B-SUB', 'I-SUB', 'O', 'O']\n", "PRED : ['B-EXP', 'I-EXP', 'B-SUB', 'I-SUB', 'O', 'O']\n", 'CONF : [0.99205834 0.99542373 0.9999639 0.999987 0.99999595 0.9999968 ]\n', 이렇게 NER을 거쳐 나온 결과들이 string 형식으로 한줄한줄 적혀 있는 txt 파일 형식이었습니다. 여기서 NER 모델이 예측해서 뽑아낸 결과를 B-SUB, I-SUB, B-EXP, I-EXP를..

Python에서 문자열을 다루다보면 특히 한글이 포함된 문자열을 다루게 되면 종종 아래와 같은 에러코드를 만나며 인코딩 문제로 애를 먹는 경우가 많이 있습니다. UnicodeEncodeError: 'cp949' codec can't encode character '\xa0' in position 17678: illegal multibyte sequence 위와 같은 문제를 만났을 때 내가 지금 다루고 있는 문자열 또는 파일속의 데이터가 어떤 인코딩을 사용하는지 확인하고 싶을 경우 방법은 다음과 같습니다. 필요 라이브러리 설치 먼저 인코딩을 확인하기 위해 필요한 chardet 라이브러리를 설치합니다. $ pip install chardet 사용 방법 문자열의 경우 import chardet string =..

가끔씩 데이터를 수집하기 위해서 Python으로 Selenium 을 활용한 크롤링 코드를 작성하고 실행하려하면! 새롭게 세팅한 개발환경이라 webdriver가 아직 존재하지 않거나 기존 컴퓨터에서 사용하고 있는 Chrome( 크롬 )의 버전이 업데이트 되어 기존에 사용하던 webdriver가 버전이 맞지않아 사용이 불가한 경우 직접 Chrome 버전이 무엇인지 확인 후 webdriver를 다운받는 홈페이지로 이동하여 직접 현재 버전에 맞는 파일을 다운로드 받아 사용해야 해서 번거로움이 많았습니다. 여러 페이지의 크롤러를 만들면서 이를 하나로 묶어서 패키지화를 하면 어떨까 고민하던 중 매번 다운로드 받아야하는 webdriver를 python 코드를 활용해 자동으로 설치해주면 어떨까? 라는 생각이 들었고 이..

Folium이 업데이트를 하면서 jupyter notebook 에서 지도에 시각화를 할때 한글을 출력하려고 하면 한글이 아닌 외계어가 출력되는 경우를 볼 수 있습니다. 이를 해결하는 방법은 두 가지가 있습니다. 현재 제가 해결한 Folium 라이브러리의 버전은 0.11.0 버전입니다. 버전 확인은 pip list 명령어를 통해 확인하면 됩니다. 해결방법 1 branca 라이브러리 수정 사항 반영 $ pip install git+https://github.com/python-visualization/branca.git@master

for 문을 한 줄로 작성하는 방법 ex ) 여러개의 단어가 들어있는 리스트 중에서 길이가 3 이상인 단어만 남기고 싶을 경우 words = ["솜씨좋은장씨", "티스토리", "블로그", "파이썬", "for", "프로그래밍", "반복"] new_words = [ "솜씨좋은장씨", "티스토리", "프로그래밍" ] 기존 코드 new_words = [] for word in words: if len(word) > 3: new_words.append(word) 한 줄로 작성 new_words = [ word for word in words if len(word) > 3 ] 이중 for 문을 한 줄로 작성하는 방법 ex ) 여러 단어들이 담겨있는 2차원 리스트에서 각 리스트 별로 길이가 4 이상인 단어만 남기고..

윈도우에서 mecab을 사용할 일이 있어 mecab을 윈도우에서도 사용할 수 있도록 만든 eunjeon 패키지를 pip install eunjeon 명령어로 설치를 시도하였습니다. 그런데 순조롭게 진행되고 있는 줄 알고 있다가 다시 확인해보니 붉은색 오류가 저를 반겨주고 있었습니다. error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools" : https://visualstudio.microsoft.com/downloads/ 원인 이 문제의 원인은 Microsoft Visual C++ Build Tools 가 설치 되어있지 않아서 발생하는 오류 입니다. 해결방법 오류 문구에서 안내해주는 주소로 이동..

[Python] Python3에서 venv로 가상환경 만들고 사용하기! 예전 Ubuntu에서 Python 가상환경을 만들때에는 virtualenv를 활용하여 가상환경을 만들고 사용했었습니다. Windows에서도 virtualenv를 설치하고자 검색 중 venv라는 더 편하고 쉽게 사용할 수 있는 방법을 somjang.tistory.com 위와 같은 방법으로 Python에서 만든 가상환경을 Jupyter Notebook에 추가하는 방법은 다음과 같습니다. 먼저 만든 가상환경을 활성화 시킵니다. 만들어둔 가상환경의 이름이 myvenv라고 가정하면 $ source myvenv/bin/activate 위와 같은 방법으로 활성화시켜줍니다. 윈도우의 경우 $ myvenv\Scripts\activate 그 다음 pi..

평소와 같이 아나콘다로 만든 가상환경을 활성화하기 위하여 $ conda activate tensorflow_1_11_p36 위처럼 가상환경 활성화 명령어를 입력하였으나 CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. If your shell is Bash or a Bourne variant, enable conda for the current user with $ echo ". /home/ubuntu/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc or, for all users, enable conda with $ sudo ln -s /home/ubunt..

이 글은 새로운 방법을 알게 될 때 마다 계속 업데이트 할 예정입니다. 우리는 종종 별도의 설정없이 matplotlib으로 한글이 들어간 그래프를 그리고자 할때 아래와 같이 한국어가 ㅁ로 깨져서 나오는 것을 볼 수 있습니다. 이 글에서는 위처럼 matplotlib 활용 시 한글이 깨져나올 때 해결하는 방법에 대해서 적어보려 합니다. Mac OSX 1. matplotlib의 rcParams를 통해 전역 폰트 설정하기 먼저 matplotlib의 rcParams를 통해 전역 폰트를 설정해주는 방법입니다. 별도의 폰트 설치 없이도 가장 쉽게 설정할 수 있는 방법입니다. import matplotlib.pyplot as plt import matplotlib matplotlib.rcParams['axes.unic..

Python으로 프로그래밍을 하다보면 가끔 아래와 같은 오류를 만나는 경우가 있습니다. SyntaxError: Non-ASCII character '\xeb' in file 위의 오류는 코드 내부에 한글 데이터가 포함 되어있을 경우 발생하는 문제입니다. 이걸 해결하기 위해서 코드에 있는 한글을 다 삭제하거나 영어로 번역하지 않아도 됩니다. 해결방법 #-*- coding:utf-8 -*- 해당 코드파일의 코드 맨 윗줄에 위의 코드를 추가해주고 다시 실행해보면 정상적으로 작동하는 것을 볼 수 있습니다! 읽어주셔서 감사합니다!

Flask로 웹페이지를 만들면서 npm 라이브러리를 사용해야하는 경우 다음과 같은 방법으로 사용하면 됩니다. 다음의 방법은 node.js가 미리 설치되어있다는 가정 하에 가능합니다. Mac을 사용하고 brew를 설치하셨다면 $ brew install node 위의 명령어를 활용하여 설치하여 줍니다. 먼저 Flask 프로젝트의 static 디렉토리로 이동합니다. $ cd static 그 다음 다음의 명령어를 활용하여 npm 프로젝트로 initialize 시켜줍니다. $ npm init 그 다음 npm라이브러리 중 사용을 희망하는 라이브러리를 설치하고 저장합니다. 예시로는 dom-inspector라는 오픈소스 라이브러리를 예시로 들겠습니다. $ npm install dom-inspector --save 완료..

Flask로 API를 만들던 중 (venv) (base) DongHyunui-MacBook-Pro:ElasticsearchAPI donghyunjang$ python3 app.py * Serving Flask app "app" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: on Traceback (most recent call last): File "app.py", line 97, in app.run(host='0.0.0.0', debug=Tr..

최근에 크롤링을 하면서 네이버 뉴스의 기사를 크롤링하고 그 크롤링한 데이터를 MariaDB에 insert하는데 워낙 크롤링하는 데이터의 개수가 많다보니 time.sleep(0.5) 의 0.5초 시간까지 더하여 24시간 ~ 30시간 정도가 소요되었습니다. 짧은 시간 크롤링이라면 그냥 크롤링이 진행되는 동안 지켜보면서 문제가 발생했을 때 대응할 수 있지만 많은 양의 데이터를 긴 시간 동안 크롤링할때는 중간중간 이동하는 시간이나 식사시간에 직접 일일이 확인할 수 없으니 뭔가 다른 루트를 통해 진행 과정이나 오류가나서 멈추거나 하는 것들을 확인하고 싶었습니다. 그러던 중 예전에 삼성 SOSCON 당시 케라스 코리아 밋업에서 들었던 내용중에 딥러닝의 학습과정을 Slack에 기록을 남겨 어디서든지 확인할 수 있도록..

[AWS] yum을 활용하여 Amazon Linux 2 AMI 에 Python 3.x 설치하기! 1. yum 패키지 업데이트 먼저 yum 패키지를 업데이트 합니다. $ sudo yum update -y 2. Python 3.x / pip3 설치 yum 패키지를 활용하여 python3.x과 pip3를 설치합니다. $ sudo yum install -y python3 pip3 :.. somjang.tistory.com Amazon Linux 2 AMI 서버에 Python을 설치는 했으니 이번에는 개인 PC에 설치되어있는 Pycharm에서 원격 인터프리터를 추가하고 적용해보려합니다. 먼저 Amazon Linux 2 AMI에서 원하는 위치에 가상환경 하나를 생성합니다. Windows PC 일 경우 1) File..

Python에서는 다양한 방법을 통해 암호화 관련 알고리즘을 구현할 수 있습니다. 그 중 cryptography의 Fernet을 활용한 대칭키 암호화 알고리즘을 해보려합니다. 대칭키 암호화 방식 먼저 대칭키 암호화 방식 ( symmetric-key algorithm)은 암호화와 복호화에 같은 암호키를 사용하는 알고리즘 입니다. 이에 암호화를 하는 측과 복호화를 하는 측이 같은 암호키를 공유해야합니다. 공개키 암호화 방식에 비하여 계산 속도가 빠르다는 장점이 있습니다. 공개키 암호화 방식 공개키와 비밀키 두가지의 키가 존재하며 공개키는 누구나 알 수 있지만 그에 대응하는 비밀키는 키의 소유자만이 알 수 있습니다. 공개키를 구성하는 알고리즘은 비대칭 암호라고 부르기도 합니다. 사전에 비밀키를 나눠가지지 않아..

파이썬을 여행하는 히치하이커를 위한 안내서에 나온 PyCrpyto 코드를 실습하다가 다음의 오류를 만나게 되었습니다. 실습 코드 from Crypto.Cipher import AES encryption_suite = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456') chiper_text = encryption_suite.encrypt("aaaaaaaaaaaaaaaaa") decryption_suite = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456') plain_text = decryption_suite.decrypt(chiper_text) Error ... 생략 ValueError..

Python에서 사용할 수 있는 데이터베이스 라이브러리 중 Sqlite3 의 사용법에 대해서 정리해보고자 합니다. sqlite3 — SQLite 데이터베이스용 DB-API 2.0 인터페이스 — Python 3.8.2 문서 바로 가기 메서드 사용하기 Connection 객체의 비표준 execute(), executemany() 및 executescript() 메서드를 사용하면, (종종 불필요한) Cursor 객체를 명시적으로 만들 필요가 없으므로, 코드를 더 간결하게 작성할 수 있습니다. 대신, Cursor 객체가 묵시적으로 만들어지며 이러한 바로 가기 메서드는 커서 객체를 반환합니다. 이런 방법으로, Connection 객체에 대한 단일 호출만 사용하여 SELECT 문을 docs.python.org Sq..