-
python
koNLPy 설치할 때 난관들
자연어 분석을 위해 koNLPy를 설치할 때 제대로 실행되지 않을 때가 많다. 내가 겪은 오류를 바탕으로 정리해봤다. java.nio.file.InvalidPathException: Illegal char at index... 가장 자주 겪은 오류인데, koNLPy는 자바를 사용하는데, 파이썬에서 자바를 쓸 수 있게 해주는 JPype의 버전 오류다. JPype는 구글링을 해보면 여기로 들어가서 자신에게 맞는 버전을 받으라고 안내하는 글이 많다. 파일을 받아서 pip로 파일을 설치하면 된다. 다만 이게 끝이 아니다. 보통 자신의 python 버전을 고려해서 받기만 하면 된다고 하는데, python 3.8의 경우 JPype는 1.3.0, 1.2.0, 1.1.2 등이 모두 3.8을 지원한다. 그런데 내 경우에..
-
python
for 안에서 list.pop()을 쓰면 안되는 이유
pop은 아래처럼 쓴다. >>> a = [1, 2, 3, 4, 5] >>> a.pop() 5 >>> a [1, 2, 3, 4] >>> a.pop(0) 1 >>> a [2, 3, 4] 그러니까 리스트에서 인자값 없이 pop()을 호출하면 마지막 요소를 꺼낸다. 인자값으로 인덱스를 넣으면 해당 인덱스의 값을 꺼낸다. 꺼낸 값은 다른 변수에 할당해도 되고, 리스트 자체는 바로 바뀐다. 그럼 아래 예의 결과는 어떻게 될까. a = [1,2,3,4,5] for i, v in enumerate(a): if v < 5: a.pop(i) enumerate()는 리스트의 인덱스를 함께 반환한다. 위에서 i가 인덱스넘버, v가 값이다. 5보다 작으면 해당 인덱스를 pop하라고 하니, 결과는 [5]일 것이다. 실제로 해보라..
-
python
텐서플로(tensorflow) GPU 사용하기
2021.10.29 블로그에서 검색 유입량이 제일 많은 글이었는데, 반년만에 아나콘다와 텐서플로 GPU를 재설치하려다보니 틀린 부분이 너무 많아서 찔려서 전면 재수정함. 책이나 웹 문서를 봐도 텐서플로 GPU 사용 방법을 제대로 설명하지 않아서 세팅할 때 헛갈리는 편이다. 코랩 말고 게임에나 쓰는 그래픽 카드를 다른 방식으로 사용해보고 싶은 사람들을 위해 정리. 1. 아나콘다 아나콘다는 가상환경을 만들 때 파이썬 버전을 지정할 수 있다. 특히 한국어 자연어 분석을 위해 koNLPy 등을 설치할 때 파이썬 3.9에서는 잘 되지 않는다. 아나콘다 공홈에서 무료 버전인 Individual Edition 설치파일을 내려받아 실행한다. 설치후 시작 프로그램에서 anaconda prompt나 anaconda pow..
-
python
아나콘다(Anaconda)를 VS Code에서 쓰기
머신러닝, 딥러닝 등의 개념을 배우고 싶어서 입문 책을 샀다. 입문 책은 구글의 colab을 이용하도록 안내해서 별도의 환경 세팅을 설명하진 않는다. 그런데 하다보면 코랩이 약간 느리고(아예 자동 완성이 뜨질 않으면 모르겠는데 느리게 뜨는 현상 등), 로컬에서 실행하는 게 조금이라도 실행 속도가 빨라서 아나콘다를 설치했다. PyCharm에서 해보는 것도 좋을 것 같은데, 설치할 아나콘다는 유료 버전을 쓰도록 권장한다. 결제할 마음은 없으니 커뮤니티 에디션 대신 익숙한 VS Code로 진행했다. 아나콘다 공홈에서 설치 파일을 받아 실행한다. choco로 설치도 가능하지만, 공홈 안내는 설치파일만 적혀 있으니 추천하지 않는다. 아나콘다는 거대한 프로젝트이지만 설치 후 추가로 건드릴 필요는 없다. Anacon..
-
python
파이썬으로 유튜브 고화질 영상 다운로드 하기
서론부터. 유튜브 영상을 다운로드 하는 것이 규정 위반인지 의문이 있다. 얼마 전 Github에서 유튜브 다운로드 프로그램 하나가 삭제됐다가 복구됐다는 소식이 있었는데, 다운로드 행위 혹은 다운로드 방법에 대한 이야기 자체가 부적절하지는 않은 것 같다. 사실 유튜브 영상을 다운로드 받을 일이 얼마나 있나 싶다. 이미 경고하면 유튜브 영상 다운로드를 남용하면 차단당할 수 있다. 꼭 내려받아야 하는 영상이 생길 경우를 대비해 알아두는 정도가 좋지 않을까. 브라우저 확장으로 다운로드 할 때 크롬 혹은 크롬 앱스토어를 통해 비디오 다운로드 확장을 설치하면 유튜브는 서비스 제공을 하지 않는 것 같다. 하는 앱이 있는지 모르겠으나, 얼마 전 앱스토어에서 예전에 설치하고 비활성화한 다운로드 앱 하나에 멀웨어가 있다는..
-
hobby
파이썬으로 업무 자동화까지 <14> API_1
requests와 BeautifulSoup으로 웹페이지를 가져와 원하는 값을 가져오는 것까지만 익숙해지면 재미가 붙어서 이것저것 해보곤 한다. 내 경우엔 프로그래밍을 모를 때부터 해보고 싶었던 게 API를 다뤄보는 일이었다. API에 대한 정의는 차고 넘치지만, 내 경우엔 '컴퓨터가 하는 브라우징' 정도로 이해했었다. 물론 그 보다 더 심오하고 활용도가 많다. 다만 스크래이핑을 하는 차원에서 보면, 페이지를 긁어서 원하는 정보를 탐색하는 것보다 처음부터 그 정보를 제공할 목적으로 만들어진 게 있다면 훨씬 이용이 간편하지 않을까. 여기 쓰는 글 컨셉트에 맞춰 썰은 줄이고 바로 테스트해보자. 우리는 네이버에서 뉴스 검색을 자주 한다. 네이버 뉴스에서 '코로나'를 검색하면(통합검색이 아니고 뉴스 검색이다), ..
-
hobby
파이썬으로 업무 자동화까지 <13> 함수
코딩 초보의 정리글입니다. 0편부터 보세요. 지난 글 말미에 취미 코딩의 원동력은 필요성이라고 했다. 함수 정의 이런 건 넘어간다. 나도 함수를 필요할 때 처음 짜봤다. 지금까지 과정을 기반으로 생각해보자. requests와 Beautifulsoup 모듈을 불러오고, URL을 호출해서 페이지 소스를 BeautifulSoup 객체로 만든다. 내가 스크래핑 하고 싶은 사이트가 50개 정도 있다고 치자. 사이트별로 처리하고 싶은 작업이 제각각이기 때문에 사이트별로 파일을 하나씩 만들 가능성이 높다. 파일마다 저 작업을 반복할 건가? 50번씩 복붙을 하면서? 코드는 반복을 줄이는 게 최선이다. 왜냐면 나중에 수정을 할 때 여러번 반복해서 수정할 일이 줄어들기 때문이다. 당장은 편하니까 막 코딩을 해도, 반복하다..
-
hobby
파이썬으로 업무 자동화까지 <12> for
코딩 초보의 정리글입니다. 0편부터 보세요. 네이버뉴스 메인 페이지를 호출하고 있었다. import requests from bs4 import BeautifulSoup url = "https://news.naver.com/" headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"} r = requests.get(url, headers=headers) soup = BeautifulSoup(r.text, 'html.parser') article = soup.select('a.lnk_hdline_article')..
-
hobby
파이썬으로 업무 자동화까지 <11> BeautifulSoup 03
코딩 초보의 정리글입니다. 0편부터 보세요. 다시 돌아가자. select부터. BeautifulSoup은 HTML 문서를 탐색해 원하는 부분을 선택해 필요한 값만 취할 수 있다는 걸 지난 편에서 알았다. 원하는 부분을 선택하는 방법 중에서 가장 간편한 css selector 방식을 썼다. 그런데, 무엇을 취하고 싶는 지는 2가지로 나뉜다. 예컨데 어떤 페이지를 스크래핑하고 싶은데 원하는 건 해당 페이지에 있는 글의 제목 뿐이라고 하자. 제목은 보통 1개만 붙이므로, 가져오고 싶은 값도 1개다. 지난 편에서 배운대로 제목 부부의 selector를 브라우저에서 가져와 동일 스크립트를 실행시킬 수 있다. 그런데, 리스트에서 다시 유일한 값 하나를 가져오는 과정(art = article[0] 따위)을 생략하고 ..
-
hobby
파이썬으로 업무 자동화까지 <10> BeautifulSoup 02
코딩 초보의 정리글입니다. 0편부터 보세요. 문득 파이썬 웹 스크래핑 방법을 구글링으로 배웠다. 대부분 완성된 코드를 복사해 값을 바꿔가는 꼼수로 익혀갔는데, 목표 지향적이긴 해도 무심코 지나간 구문의 의미를 몰라서 다시 구글링을 반복했다. 시행착오 때문에 흥미를 잃지는 않았지만, 모두가 동일한 시간낭비를 할 필요는 없다. 그런 마음으로 정리하고 있다. 지금까지 짠 코드를 보면 import requests from bs4 import BeautifulSoup url = "https://news.naver.com/" headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ..