본문 바로가기

분류 전체보기

(31)
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을 지원한다. 그런데 내 경우에..
웨일 브라우저를 써야 할 때 웨일 브라우저가 처음 나왔을 땐, 비호감이었다. 비발비의 주요 기능을 노골적으로 베껴놓았었는데, 지금은 비발디건 웨일이건 다른 길을 걷고 있으니 선입견은 버릴 때가 됐다. 웨일 브라우저가 좋다고 느끼는 몇몇 순간이 있어서 기록. 1. 번역 한국어의 특수성상 글로벌 서비스가 별로일 때가 있다. 웨일은 파파고로 웹페이지 통번역을 할 수 있는데(페이지에서 우클릭 후 번역 선택), 일반적인 영문 문서는 원문 대조가 필요없을 정도로 알아보기 쉽고, 문장도 잘 정제되어 있다. 영문 검색을 자주 한다면, 기본 검색엔진을 구글로 변경하고 번역 기능을 주로 쓰면 괜찮을 것 같다. 모바일도 지원한다. 2. 스크린 캡처 캡처는 확장도 있고 내장 브라우저도 많고 윈도 기본 캡처도 훌륭한데, 웨일 내장 캡처는 선택영역 캡처시 ..
0. 이해하기 보통 간편한 requests로 웹 크롤링을 시작한다. python을 잘 몰라도 HTTP에 대한 이해가 있고(브라우저의 개발자모드에서 요청과 응답을 확인할 수 있는 정도) requests와 BeautifulSoup의 사용법만 익히면 다른 고민 없이도 스크립트 작성이 가능하다. 복잡하지 않다면 로그인 세션을 생성하는 것도 가능하고(조금 복잡한 경우도 가능하다), 자신의 웹에 대한 이해도에 따라 활용도가 늘어나니 배우는 재미도 있다. 문제는 양. 1개의 URL을 5분에 한번씩 스크래핑해서 원하는 정보를 받는 건 requests로 충분하다. 그런데 100개라면? 예를 들어서 동일URL을 스크래핑하는데, 페이지 분할이 되어 있어서 URL에 page 파라미터를 1~100까지 변경시켜가면서 스크래핑 해야한다면? 실제..
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]일 것이다. 실제로 해보라..
네이버 뉴스검색 유감 2021년 4월 15일자로 네이버 뉴스 공지사항 게시판에 'PC뉴스 검색 옵션 개선'이라는 글이 등록됐다. 예상은 했지만 실망스럽다. 글의 요지는 PC 뉴스 검색을 모바일 검색과 동일하게 맞췄다는 내용이다. 그 동안에는 차이가 약간 있었다. 다른 부분은 비슷비슷한데, 이번 변화로 크게 차이가 나는 부분이 있다. 언론사별 검색이다. 모바일은 상세검색에서 언론사별 검색시 언론사 1개만 선택할 수 있다. PC에서는 체크박스 형태로 복수의 언론사를 지정할 수 있다(개수 제한은 있었지만 크기가 커서 방해가 되진 않았다). 가령 10대 일간만, 방송사만, 통신사만 식으로 그루핑된 언론사를 복수 지정해 검색할 수 있었다. 만약 사건 속보가 1보, 2보 이어진다면, 통신사만 선택해 빠르게 속보를 캐치할 수도 있었다. ..
파이썬으로 업무 자동화까지 <14> API_1 requests와 BeautifulSoup으로 웹페이지를 가져와 원하는 값을 가져오는 것까지만 익숙해지면 재미가 붙어서 이것저것 해보곤 한다. 내 경우엔 프로그래밍을 모를 때부터 해보고 싶었던 게 API를 다뤄보는 일이었다. API에 대한 정의는 차고 넘치지만, 내 경우엔 '컴퓨터가 하는 브라우징' 정도로 이해했었다. 물론 그 보다 더 심오하고 활용도가 많다. 다만 스크래이핑을 하는 차원에서 보면, 페이지를 긁어서 원하는 정보를 탐색하는 것보다 처음부터 그 정보를 제공할 목적으로 만들어진 게 있다면 훨씬 이용이 간편하지 않을까. 여기 쓰는 글 컨셉트에 맞춰 썰은 줄이고 바로 테스트해보자. 우리는 네이버에서 뉴스 검색을 자주 한다. 네이버 뉴스에서 '코로나'를 검색하면(통합검색이 아니고 뉴스 검색이다), ..
중력의 임무 중력의 임무. 할 클레멘트 저. 1954년. 아작에서 재출간해 전자책으로 구입해 읽다. 하드SF의 효시로 불린다고 한다. 과학적 고증이라는 한계선을 긋고, 그 위에서 상상력을 펼치는 노력이 낭만이 넘치던 과거보다 '팩트체크'가 난무하는 요즘(과학적으로 체크하려는 노력인지는 따지지 않겠다) 더 매력적으로 다가올 수도 있겠다. 사전정보가 없었고, 열독하는 SF팬도 아닌지라 소설에서 묘사하는 행성의 모습을 구체적으로 그리는데 시간이 조금 걸렸다. 타원형에 가까운 행성이 지구의 십수배 속도로 자전하고(아침에 일어나 대화 한번 나누면 해가 진다), 양극으로 갈수록 중력은 커져 지구의 최대 700배에 이른다. 이 때문에 극지방으로 갈 수록 '점프'와 같이 지면에서 벗어나는 건 자살행위이며, 고소공포증이 아니라 높은..
로또를 하면 안되는 이유를 파이썬으로 알아보기 어느 프로그램 언어든 초반에 이런 저런 내용을 기웃거려보다, random과 관련된 내용을 접할 때 쯤 로또 번호를 떠올릴 만하다. 내가 짠 코드로 지정한 로또 번호라면 좀 더 행운이 따르지 않을까 하는 소박한 신앙이다. 로또 번호를 연구한다는 사람도 있고, 추천 번호가 있다는 광고는 또 얼마나 많은가. 그런데 1에서 45사이에서 무작위로 6개의 숫자를 고르는 코드는 매우 쉽다. 그리고 그걸 로또 구입에 써먹는다고 달라지는 건 본인의 기대감 뿐이다. 코드도 재미없다. 그러니, 역으로 "복권은 통계에 무지한 자들이 내는 추가 세금이다"라는 격언이 맞는 지를 코드로 시험해보자. 엄밀히 말하면 진짜 random이라는 건 없다. 굳이 어렵게 생각해보지 않아도, 정해진 논리에 따라 값을 내도록 설계된 프로그래밍 언..
텐서플로(tensorflow) GPU 사용하기 2021.10.29 블로그에서 검색 유입량이 제일 많은 글이었는데, 반년만에 아나콘다와 텐서플로 GPU를 재설치하려다보니 틀린 부분이 너무 많아서 찔려서 전면 재수정함. 책이나 웹 문서를 봐도 텐서플로 GPU 사용 방법을 제대로 설명하지 않아서 세팅할 때 헛갈리는 편이다. 코랩 말고 게임에나 쓰는 그래픽 카드를 다른 방식으로 사용해보고 싶은 사람들을 위해 정리. 1. 아나콘다 아나콘다는 가상환경을 만들 때 파이썬 버전을 지정할 수 있다. 특히 한국어 자연어 분석을 위해 koNLPy 등을 설치할 때 파이썬 3.9에서는 잘 되지 않는다. 아나콘다 공홈에서 무료 버전인 Individual Edition 설치파일을 내려받아 실행한다. 설치후 시작 프로그램에서 anaconda prompt나 anaconda pow..
파이썬으로 업무 자동화까지 <13> 함수 코딩 초보의 정리글입니다. 0편부터 보세요. 지난 글 말미에 취미 코딩의 원동력은 필요성이라고 했다. 함수 정의 이런 건 넘어간다. 나도 함수를 필요할 때 처음 짜봤다. 지금까지 과정을 기반으로 생각해보자. requests와 Beautifulsoup 모듈을 불러오고, URL을 호출해서 페이지 소스를 BeautifulSoup 객체로 만든다. 내가 스크래핑 하고 싶은 사이트가 50개 정도 있다고 치자. 사이트별로 처리하고 싶은 작업이 제각각이기 때문에 사이트별로 파일을 하나씩 만들 가능성이 높다. 파일마다 저 작업을 반복할 건가? 50번씩 복붙을 하면서? 코드는 반복을 줄이는 게 최선이다. 왜냐면 나중에 수정을 할 때 여러번 반복해서 수정할 일이 줄어들기 때문이다. 당장은 편하니까 막 코딩을 해도, 반복하다..