기본 콘텐츠로 건너뛰기

9월, 2022의 게시물 표시

nltk 라이브러리 사용 문제-pip install invalid syntax, 환경 변수 path 설정

야메로 python을 배우다보니 기본적인 부분에서 문제가 발생하면 해결이 참 난감하다. python 3.9.x로 작업을 하고 있었는데, nltk를 import해서 word_tokenize 함수를 사용하려 할 때 문제가 발생했다. 오류가 발생할 때 문제해결에 집중해서 관련 문제가 구체적으로 무엇이었는지 찍어 놓지를 않아서 구체적인 오류 코드를 확인하지 못했다. 다만 python 3.9에 아나콘다3를 설치하고 Pycharm을 주로 사용했는데, nltk의 word_tokenize()를 쓰려고 할 때 문제가 발생했다. 문제해결 방법으로 일반적으로 추천되는 것이 nltk가 잘 인스톨 되었는지 체크하고 문제가 있다면 nltk.download()로 해결할 수 있다는 것이었다. 가령 저런 정보를 확인하고 시도해 보았다. 그러나 어떻게 된 일인지 cmd 창에서 'python'이 먹히지 않았고 python 창을 띄워서 작업하면 다음과 같은 결과가 나왔다. nltk 라이브러리가 없어서 문제라 생각해서 pip install nltk를 입력했는데, invalid syntax 오류만 떴다. 위에서 말한 대로 'nltk_data' 폴더를 C:에 만들고 해당 패키지를 수동으로 다운로드해서 시도해 봤지만 오류는 해결되지 않았다.  어딘가에서는 [시스템 속성>고급>환경변수>path]에서 'C:\Python'과 'C:\Python\Scripts'를 추가하면 문제가 해결될 것이라 해서 그렇게 해 봤는데 역시 문제는 해결되지 않았다. 'nltk 설치 오류' 등을 찾다가 아래와 같은 설명을 만날 수 있었다. 그래서 python 3.9.x를 지우고 3.7.9를 다시 설치했다. 그러나 invalid syntax 문제는 해결되지 않았다. 계속 찾아보니 경로의 문제라는 지적이 있었다. 앞에서도 봤던 것이라 시큰둥 했는데 경로 주소가 앞서 제시한 것과는 달랐다. C:\Users\[user_com_name]\AppData\

자연어 처리(Natural Language Processing, NLP)로 텍스트 다루기 (1)

디지털 자료를 다루는 데 빠뜨릴 수 없는 기술 중 하나가 자연어 처리(Natural Language Processing) 기술이다. 여기서 '자연어'란 컴퓨터 언어에 대비되는 인간의 언어를 말하는 것으로 우리가 일상에서 사용하는 말(소리, 텍스트 등)을 뜻한다. 챗봇이나 AI 스피커 등에 쓰이는 기술이 NLP 기술인데, '디지털 인문학' 분야에서 기본적으로 사용하는 분석 기법이기도 하다. 디지털 텍스트 자료를 수집해서 이를 분석한다면 바로 NLP 기술을 적용해서 해야 한다. 종교문화 연구에도 적용이 가능하리라 생각한다. 어쨌든 NLP도 웹스크래핑과 함께 공부를 시작했다. Python 공부를 하면서 수업 시간에 종종 사용했던 주피터 노트북(jupyter notebook)을 활용해서 관련 책을 보면서 연습을 했다.  (그냥 하는 소리지만 '주피터 노트북' 이야기를 처음 들었을 때는 '노트북 컴퓨터'를 떠올렸다. 몇 번 맛을 보고 시간이 흘러 사용한 것을 까먹을 때 쯤에는 파이썬 IDE 중 하나인 파이참이나 비쥬얼 스튜디오 같은 프로그램이라고 생각했다. 수업이나 관련 책에서 '주피터 노트북'을 준비하세요라는 말을 들을 때마다 '어 어떻게 깔지'라는 생각부터 했다. 근데 컴퓨터에 이미 깔려 있어서 '뭐지?'했던 기억이... '아나콘다' 깔면서 사용할 수 있게 되었던 것인 듯. 뭐 IDE 중 하나긴 한데, 웹브라우저에서 구동해서 구글의 코랩colab 같은 종류로 느껴진다. 실제로 교육 현장에서는 jupyter나 colab을 많이 쓰는 듯. colab은 클라우드 기반이라 협업-그래서 Colaboratory 의 앞글자로 colab이라 한 것-에 강점을 가진다고 한다. 참고 ) ━━━━━━ 문장이 있으면 단어들의 일부를 뽑을 수도 있고(3행은 위 문장에서 짝수 번째 단어를 추출한 것이다), 특정 단어만 뽑을 수도 있고(아래), 글자의 순서를 뒤바꿀 수도 있다.

selenium을 이용한 카카오 로그인┃웹스크래핑 공부(2)

티스토리 블로그에서 글을 백업하기 위한 첫 관문은 코딩을 이용해서 로그인을 하는 것이다. selenium(파이썬을 이용해 웹에서 자동적 상호작용을 하게 하는 도구)을 이용해 티스토리 블로그 로그인을 어떻게 하는지에 대한 코드는 검색을 하면 여기저기에서 볼 수 있다. 일단 kakao 아이디가 통합되어 있다면 2022년 이전 코드는 소용이 없는 것 같다. 또 '카카오 로그인'을 설명하는 게시물들 중에 요즘 로그인 코드와 다른 구버전의 코드로 작성된 것도 보인다. 가령 이 코드 같은 경우는 실제로 작동하지 않는다. 카카오 웹 구조가 위 코딩이 짜였을 때와 달라졌기 때문이다. 또 Python 버전에 따라서 selenium 코드도 다르다. 옛날 버전에서는 driver.find_element_by_id('id_email_2').send_keys(user_id) 라고 적는 것이 최신 버전에서는 다음과 같이 바뀌었다. driver.find_element(By.ID, 'id_email_2').send_keys(user_id) 그래서 검색 가능한 코드들을 복붙한다고 결과가 나오지 않는다. 사소한 문제 때문에 작동하지 않는 코드를 써야 하기도 한다. 로그인 자동화 시에 '자동 로그인'을 막는 포털의 대응 때문에 과거에 알려진 방법이 더 이상 유효하지 않은 경우도 있다. 네이버 로그인의 경우 몇 가지 우회 방법이 알려져 있는데( 참고 ), 인간스러움을 보이기 위해서 코드 실행 사이에 '쿨 타임'을 넣는다던지, 로그인 시에 사람처럼 복붙하게 해서 네이버를 속인다 든지 하는 스킬이 덧붙여진다( 참고 ). 덕분에 time.sleep() 함수라던지, pyperclip.copy('비밀번호'); tag_pw.send_keys(Keys.CONTROL, 'v') 함수를 써 봤다. 그래서 네이버에 로그인 하는 것까지는 성공했다. 그러나 자동 로그아웃은 실현시키지 못했다. 'a href

블로그 이사와 웹스크래핑 공부 (1)

코딩, 맛만 봤던 사람으로서 참 험난한 길을 걷고 있다. 티스토리의 만행에 열폭하여 '블로그 이사'를 선언했는데, 그 실현의 길은 어렵기만 하다. 50여건의 글을 수동으로 스크래핑을 해 보았지만 남은 게시물은 여전히 800건 가까이 된다. 학부 때부터 작성해 온 게시물을 네이버 블로그에서 티스토리를 거쳐 쌓아 놓았으니 결코 적지 않은 양이다. 그 중에 '재활용'의 의미가 있는 것이 얼마나 될지는 모르겠지만 지울 건 지우고 옮겨오려 한다. 급한 마음에 문과출신스럽게 접근한다면 '계속' 수동으로 copy & paste(복사/붙이기)를 해야 할 것이다. 한 두 번 해보았다. 15건 정도를 처리하는 데 1시간 정도는 걸렸던 것 같다. 정신 차리고 빠릿빠릿하면 40분 정도가 될지도 모르지만. 수동의 길은 이렇다. 1) 티스토리 로그인, 2) 글관리 도구로 들어가서, 3) 해당 글을 띄운 뒤, 4) 글 수정 모드에서 글과 제목을 copy해서, 5) Word * 에 붙여넣기하고, 6) 저장하되 7) 작성 시간과 제목으로 파일명을 부여해서 완료하고, 8) 해당 글을 과거 블로그에서 삭제하는 것으로 글의 백업을 할 수 있다. *  .txt를 쓸 수도 있지만 .docx를 쓰려 한 것은 이미지도 함께 copy&paste가 되어 좋으며, 용량도 15kb-500kb 정도로 적기 때문이다. 수동 스크래핑 방법 중 가장 편리한 것은 브라우저에서 pdf로 인쇄하는 것이긴 하다. 그 경우 용량은 2mb 내외가 된다. 새로운 블로그에 글을 재게재하는 것은 또 다른 일이 된다. word 파일에서 긁어다가 붙이는 건 text만 가능하고 이미지는 별도로 업로드 해야 하니. 이런 걸 프로그래밍해서 백업 파일을 만들고, 그 백업 파일을 자동으로 업로드할 수 있다면 좋을 것이다. 그러나 지금으로서는 백업은 자동으로 하고, 업로드는 선별과 수정 작업을 거쳐야 할 것 같다. 쓸만한 옛날 글을 재활용 한다고 할 때 어색한 문장이나 바뀐 생각을 반영해서

한국진화학회 창립 심포지엄에 다녀와

구형찬 박사님을 따라서 참석하게 되었다. 귀차니즘의 노예라 웬만하면 학회에 잘 가지 않는데, 진화적 관점의 종교문화 연구를 펼칠 수 있는 장이 될 수도 있지 않을까 하는 기대로 크게 발심을 해 보았다. 심포는 2022년 9월 24일 토요일 13시, 이화여자대학교 종합과학관 B동 102호에서 진행되었다. 학회측에서 제공한 지도는 위와 같았다. 이대에서 진행한 학회에 참여하는 건 아마 내 인생에서 이번이 두 번째였던 것 같다. 수 년 전인지 10여 년 전인지 정확히는 알 수 없지만 이대의 지형, 학교의 구조에 대해 이미지가 전혀 없었다. 이럴 경우 나는 지도를 기준으로 '가장 짧은 동선'을 찾는 편이다. 긴 동선을 선택할 경우 충분히 '부족한 운동'을 보충할 기회를 갖기도 하겠지만, 복잡한 길에서 가장 빠른 길 찾기를 일삼는 내 성향에 충실한 선택을 내렸다. 후문을 통해서 '별표'가 되어 있는 종합과학관 B동으로 접근하기로 했다. (가장 적게 걷는 방법은 물론 승용차로 가는 것이었겠지만, 주차권을 확보할 수 있을지 몰라 포기했던 터) 내가 계획한 경로는 저랬다. 실제로 가보니 이 경로는 '언덕'을 올라야 했다. 게다가 공사로 중간에 길이 막혀 있기도 했다. 실제로는 파란 경로로 움직여야 했다. 낯선 곳이었기 때문에 계속 지도를 보고 움직여야 하는 불편이 있었는데, 약학관 B동을 지나쳐 가고 있을 때, 우연히 좌측 인도를 빠르게 걷고 있는 한 할아버지를 발견했다. 뒷모습이 낯이 익었는데, 잘 보니 최재천 선생님이었다.  ─────── 개인적으로 통성명을 한 적은 없지만 2002년 한국종교문화연구소 심포에서 발표하셨을 때(당시 현장에서 뵌 건 아니었다. 해당 심포엔 참석하지 않았으니) 이후로 종종 학회 등에서 뵐 기회가 있었다. 최근에는 선생의 유튜브를 찾아 보고 있기도 하다. 생각해 보니 지금 나나 구형찬 박사님이나 '신앙도 정신 진화의 산물'이라는 시각에서 연구 활동을 하고 있는 것 같다. 올

음수 이해의 역사와 개념을 이해하는 문제

오늘 우연히 '(서양에서의)음수 수용의 역사'에 대한 이야기를 들었다.  '-'(마이너스)라는 개념이 중국에서는 기원전 기록에서부터 확인되고(BCE 200), 이것이 인도와 이슬람 세계를 통해서 유럽에 전해졌다고 한다. 그런데 1800년대까지 이 음수는 수로서 제대로 이해되지 못했다고 한다. 이론적으로는 이야기가 되지만 실생활에서는 경험해 볼 수 있는 경우가 없기 때문에 '잘못된 수'로 이해했다고 한다. 꾸역꾸역 대응시켜 본 것이 '이익'과 '빚'으로 +와 -를 이해하는 것이었다고 한다. 그런데 그 경우는 (-1)x(-1)=+1 같은 문제는 해결할 수 없었다고 한다. 이익-빚 모델은 -(-1)=+1을 이해하는 데 도움을 주었을 뿐이라고 한다. (빚이 1 있다. 채무자 -1. 채무자의 빚이 감소하는 것을 -로 표현할 때, -(-1)은 빚이 없어진 것이고 채권자는 다시 +1이 되므로 위 식을 현실 세계에서 벌어지는 일로 이해했다는 것이다)  물론 이러한 비유적 이해는 오로지 저 식을 '납득'해 보자는 취지이니 조건을 조금만 달리해도 현실의 문제와 수식은 불일치 한다. 가령 채무자의 경우만 보면 -(-1)이 아니라 (-1)+(+1)=0으로 생각할 수 있다. (-1)x(-1)은 위치나 위상을 고려할 때 우리가 구체화해서 이해할 수 있는 개념이다. 지금 우리는 위의 문제를 수직선[수를 나타내는 직선]에 나타내서 이해한다. 음수를 더 쉽게 많은 사람들이 이해할 수 있는 계기가 있었다고 한다. 화씨의 다니엘 가브리엘 파렌하이트(Daniel Gabriel Fahrenheit, 1686–1736)가 온도계를 만들면서 0도 아래에 음수를 표기하면서 대중들이 음수 개념을 0 아래의 '어떤 위치'로 이해할 수 있게 되었다고 한다(위 영상 참고). 수학자들조차도 현실에 대응되지 못하는 개념을 받아들이는 데 수백 년이 걸렸고, 결국 낯선 개념이 일상에서 친숙해지는 어떤 계기를 통해서

최근 논문(1883-1910 한국 종교 용례 특이성)에 대한 윤조철 박사의 논평에 대해

오늘 최근 낸 논문(초기 종교 용례 연구)에 대해 윤조철 박사님의 질정을 받았다. 1. '근대적 종교 개념'이 무엇인지 설명될 필요가 있다 당연히 알겠지 싶어서 신경 쓰지 못한 부분이었다. 교정이 진행될 때 나도 파악한 문제였지만 후속작에서 수습하기로 생각했다. 근대적 종교 개념의 중요한 특징은 '정교 분리', '사적 믿음', '배타적 신앙'(종교는 '갖는다'고 표현하며 특정 단체에 소속되는 기준으로 판단하는 시각) 같은 것이라 생각한다. 일제가 통감부 시절부터 '포교 규칙'을 수립하여 '종교 단체'를 규정하고 공권력의 영향을 항시 받게 만들면서 그 이전의 '교의 경험'과는 다른 토대를 만들었다. 그 근대적 특성을 내면화 하기까지는 제도의 도입 이후 시간이 좀 더 필요했던 것 같다. 2. 19세기 말 20세기 초에 사용된 '국교'가 지금 우리가 이해하는 state religion과는 차이가 있는데 혼란스럽게 쓰였다 이에 대해서는 심사자의 지적도 있었다. 주3으로 갈음하긴 하였다. 이 글에서 쓰이는 '국교'는 state religion으로 이해하면 오해라고. 3. '세계대세론'의 발행 상황에 대한 언급이 없다 방원일 박사님의 논문(2021, "한국 개신교계의 종교 개념 수용 과정")을 참고하면 되겠거니 안일하게 생각해서 빠뜨린 것 같다. 중요한 정보를 잘 인용하지 못한 나의 불찰이다. 방원일, 2021: 10. 4. '언문일치'의 측면에서 용례 빈도 변화를 살펴 볼 수 있는 여지도 있다 「我が国の宗教」, 「我国之宗教」의 차이를 말씀해 주셨다. 한자로는 '교', '도'가 그러나 국문으로 넘어가면 한자식 낱글자 의미로는 부족해지는 감이 없지 않다. 그 효과가 어느 정도인지는 정확히 어떻게 측정할 수 있을지는 모르겠지만, 제법 흥미로운 문제 제기라는 생

도매급과 도매금, 표준어 혹은 올바른 표현 규정의 문제

도매금(도매가격)이 맞는 표현이라는 썰을 들었다. 도매금은 사전에 나오지만 도매급은 사전에 나오지 않는다. 관용적으로 쓰는 표현, '도매급으로 넘기다'에서 '도매금'으로 가 더 상황을 명확하게 이해시킨다는 점에서 맞는 설명인 것 같다. 그런데 도매금에서 '도매급'이란 표현이 파생되고, '도매급'이 더 많이 쓰이는 상황이라면 '이 표현이 맞으니 저 표현을 쓰면 안 돼'라고 말하는 게 무슨 의미가 있을까 싶다. '도매금'은 '도매급'보다 발음도 불편하다. 게다가 '도매급'도 말이 된다. '도매'+'급( 級, 등급)'의 합성어로도 충분히 '정상적 표현'이라고 할 수 있다. '도매급 취급', ' 각각의   차이에도   불구하고   여럿이   같은   무리로   취급받음 '이라는 의미에 도매금보다는 도매급이 훨씬 직관적으로 이해된다는 장점도 있다. 참고로 구글링을 해 보면(22-9-23, 5:40 검색), '도매금'은 44,000건, '도매급'은 1,730,000건 정도의 결과를 보여준다.   왜 국어학자 등은 언어를 화석으로 만들고 싶어할까? 분명 언어의 사회성을 가르치는 사람들일 텐데. .   .   . '언어의 사회성'을 '...약속'으로 설명하는 건 '사회계약론' 같은 소설적 개념인 듯하다. 뭐 일상의 '약속'과는 다른 약속이라고 당연히 이야기하겠지만, 그런 표현을 쓰는 건 다분히 '변이'보다는 '고정된 것'에 초점을 맞추게 되는 것 같다. '국립국어원'의 '온라인가나다라'의 답변에 "개인이 함부로 바꿀 수도 없앨 수도 없는 공용물"과 "사회 구성원 간의 약속"이란 표현이 눈에 띈다. 시중의 신조어 유

논란의 애도 베일(Mourning Veil)

영국 여왕 조문과 장례식 때문에 요즘 관심을 받은 여성 조문객 패션이 '애도 베일(mourning veil)이다. 트위터 상에서는 영부인의 과도한 따라하기가 빚은 결례로 보는 시각이 퍼지고 있는데, 일부 언론 등에서는 과도한 해석이란 평가다. 해당 기사에서 "미국 폭스뉴스는 “모닝 베일은 왕족에게만 국한되지 않는다”고 했다."고 말하고 있는데, 이 신문이 외신을 인용하는 방식을 고려하면 원문 확인이 필수겠다. 신문들은 외신 인용할 때 '기사 제목'이나 '링크'를 제공하지 않기 때문에 수고가 들 수 있지만 이번엔 수월하게 찾을 수 있었다. 폭스뉴스에서 "모닝 베일은 왕족에게만 국한되지 않는다"고 말한 것은 사실이다. "Mourning veils, however, are not just limited to royalty." 그런데 그 다음 나오는 문장은 "영부인 재클린 케네디가 1963년 11월 워싱턴 DC에서 존 F. 케네디 대통령의 장례식과 장례 행렬에서 애도 베일을 쓴 것으로 유명하다(First lady Jacqueline Kennedy famously wore a mourning veil during President John F. Kennedy’s funeral and funeral procession in Washington, D.C., in November 1963)"라는 것이다. 폭스뉴스 기사로 보면 '애도 베일'은 영국 왕족의 전유물이 아니고 다른 장례식에서도 쓰인 예가 있다는 취지의 말이다. 조선은 자신들 입맛대로 인용하긴 했다. 물론 그렇다고 해서 조선의 주장이 틀린 것은 아닌 듯하다. 항간에 떠돌듯이 '미망인만 착용'하는 것은 아닌 것으로 보인다. BBC 등에서 '영국 왕실의 전통'을 이야기하긴 하지만 '직계존비속만 애도 베일을 착용한다'는 배타적 규정으로 존재하는지는 명확하지

도덕적 환상(Moral Illusions), 스웨덴 린셰핑대의 한 박사논문

 최근에 NeuroscienceNews.com 에서 '도덕적 환상'에 관한 기사를 보았다. "도덕적 환상은 우리의 행동을 바꿀 수 있다"는 제목의 기사다. 올해(2022) 스웨덴의 린셰핑(Linköping) 대학에서 나온 '박사 학위 논문' 내용을 소개하고 있다. 해당 논문의 일부(서론)는  여기 에서 직접 다운로드 받아 확인할 수 있다. 경영공학과(department of management and engineering) * 논문이라서 그런지 논문이 길지는 않다. 전체 분량은 130페이지 정도다. 내용으로 볼 때 행동경제학 분야의 연구로 보인다. 공개된 버전은 '본문'이 생략된 것이다. 본문은 4개의 소논문으로 구성되어 있는데, 저자의 공동연구 결과물들이다.  소논문1 Kajsa Hansson, Emil Persson, Shai Davidai, Gustav Tinghög. 2021.  Losing sense of fairness how information about a level playing field reduces selfish behavior .  Journal of Economic Behavior & Organization , 190: 66-75. 소논문2 Confident winners in a meritocratic world (출판 확인 못함) 소논문3 Finding a moral excuse: How information about relative efforts affects selfish behavior (출판 확인 못함) 소논문4 Voting and (im)moral behavior (출판 확인 못함) 핵심적인 메시지는 '이성의 진화(원제는 '이성의 수수께끼The Enigma of Reason'이다)'라는 책을 떠올리게 한다. (해당 논문은 이 책을 참고하지는 않았지만)  '이성의 진화'에서 '이성'이란 '

한강 물은 왜 갑자기 불었나...백중사리를 알아보자

한강 물이 갑자기 불어난 이유가 만조 때문이라는 데, 높은 만조가 달 때문인지 아니면 다른 요인 때문인지, 불현듯 궁금증이 들어서 디벼봤다.  ━ ━ ━ 어제(9월 12일 밤) 한강에서 이런 일이 있었다고 한다. 지난 달 비가 많이 내릴 때라면 한강 상류 댐들의 방류 때문이라 하겠지만 이날 팔당댐의 방류량은 당시 초당 1,000t이 조금 넘는 수준이었다고 한다. 반면 비가 많이 내리면 방류량이 5천t에서 1만 2천t 수준이다(8월 초와 9월 초).  즉, 팔당댐 방류량 만으로는 한강 물 넘침을 설명할 수 없다. 두 가지 요인이 추가적으로 주목되는데, 그동안 많은 비가 내려 하류로 모래 등이 쓸려 내려와 강바닥이 높아져 있다는 것과 마침 만조 때가 겹쳤다는 것이다. 이 후자가 아마 주요한 요인이었을 걸로 보인다. 어제 인천의 만조 시간은 저녁 6시18분이었다( 참고 ). 한강의 물이 넘친 건 저녁 9시였다고 한다( 관련기사 ). 요즘 1년 중에 조수 간만의 차가 가장 큰 시기라 한다. 이를 보통 '백중사리'라고 한다. 백중은 음력 7월 15일을 가리키는 말이고, 사리는 조수 차가 가장 클 때를 가리키는 표현이다. 다른 표현으로는 '대조(大潮)'가 있다. 영어로는 'spring tide'라고 한다. 반대로 조수가 차가 가장 작을 때를 통상 '조금'이라 하고 다른 말로 '소조(小潮)', 영어로 'neap tide'라고 한다. 바닷가 사람들은 밀물과 썰물이 언제 드는지 당연히 알아야 할 것인데, 특히나 그 조수의 높이가 높을 때와 낮을 때를 알 필요가 있었으니 '사리'와 '조금'을 구분한 것이겠다.  어쨌든 백중사리는 음력 7월 15일 즈음의 사리를 말하는데, 올해는 8월 초 중부지방에 큰 비가 내렸을 때이다. 그런데 실제로 조수가 높은 것은 그때만이 아니라 일정 기간이라고 한다. 대체로 7-9월로 이번 9월 12일까지가 그 기간이었다고 한다. 어제 기