기본 콘텐츠로 건너뛰기

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

디지털 자료를 다루는 데 빠뜨릴 수 없는 기술 중 하나가 자연어 처리(Natural Language Processing) 기술이다. 여기서 '자연어'란 컴퓨터 언어에 대비되는 인간의 언어를 말하는 것으로 우리가 일상에서 사용하는 말(소리, 텍스트 등)을 뜻한다. 챗봇이나 AI 스피커 등에 쓰이는 기술이 NLP 기술인데, '디지털 인문학' 분야에서 기본적으로 사용하는 분석 기법이기도 하다.

디지털 텍스트 자료를 수집해서 이를 분석한다면 바로 NLP 기술을 적용해서 해야 한다. 종교문화 연구에도 적용이 가능하리라 생각한다.

어쨌든 NLP도 웹스크래핑과 함께 공부를 시작했다. Python 공부를 하면서 수업 시간에 종종 사용했던 주피터 노트북(jupyter notebook)을 활용해서 관련 책을 보면서 연습을 했다. 

(그냥 하는 소리지만 '주피터 노트북' 이야기를 처음 들었을 때는 '노트북 컴퓨터'를 떠올렸다. 몇 번 맛을 보고 시간이 흘러 사용한 것을 까먹을 때 쯤에는 파이썬 IDE 중 하나인 파이참이나 비쥬얼 스튜디오 같은 프로그램이라고 생각했다. 수업이나 관련 책에서 '주피터 노트북'을 준비하세요라는 말을 들을 때마다 '어 어떻게 깔지'라는 생각부터 했다. 근데 컴퓨터에 이미 깔려 있어서 '뭐지?'했던 기억이... '아나콘다' 깔면서 사용할 수 있게 되었던 것인 듯.

뭐 IDE 중 하나긴 한데, 웹브라우저에서 구동해서 구글의 코랩colab 같은 종류로 느껴진다. 실제로 교육 현장에서는 jupyter나 colab을 많이 쓰는 듯. colab은 클라우드 기반이라 협업-그래서 Colaboratory의 앞글자로 colab이라 한 것-에 강점을 가진다고 한다. 참고)

━━━━━━

문장이 있으면 단어들의 일부를 뽑을 수도 있고(3행은 위 문장에서 짝수 번째 단어를 추출한 것이다), 특정 단어만 뽑을 수도 있고(아래), 글자의 순서를 뒤바꿀 수도 있다.

단어의 순서는 그대로지만 단어의 철자는 거꾸로 적히게도 만든다.

그렇다면 철자는 그대로이고 단어의 순서는 거꾸로인 것을 어떻게 만들 수 있을까? 내가 본 책에는 그런 예제는 나오지 않았다. 

여러 방법이 있겠지만 내가 생각해 본 것은 애초 word는 리스트의 배열 순서를 바꿔서 그대로 문장으로 묶어주는 것이다.

iwords = words[::-1]

print(' '.join([iword for iword in iwords]))

그러면 단어의 철자는 그대로지만 단어의 순서는 거꾸로 쓰인 문장이 완성된다. 보다 완벽하게 하려면 구두점의 위치를 바꾸도록 해야하는데, 아직 그 정도까지는...

댓글

이 블로그의 인기 게시물

ChatGPT에 '크리스마스와 동지'의 관계를 물어 보았다.

요즘 핫하다는 '챗GPT'에 크리스마스와 동지의 관계를 물어보았다. https://openai.com/ 나: 크리스마스가 동지와 관계가 있다고 생각하니? 챗봇: 크리스마스는 세계 여러 지역에서 전통적으로 12월 25일에 기념하는 축제일이며 종종 북반구에서 1년 중 낮이 가장 짧은 동지와 관련이 있다. 동지는 보통 12월 21일 또는 22일 경에 발생하며 태양이 하늘에서 가장 낮은 지점에 도달하는 것, 즉 일 년 중 밤이 가장 긴 날을 표시한다. 크리스마스 축제는 원래 기독교 이전의 동지 축제의 영향을 받았을 것으로 생각되며, 이는 종종 태양의 재생과 낮이 더 길어지는 시기의 복귀와 관련이 있다. 고대 로마인과 고대 켈트족을 포함한 많은 고대 문화에는 동지와 태양의 귀환을 중심으로 한 전통과 축제가 있었다. 그러나 크리스마스는 복잡한 역사를 가지고 있으며 다양한 문화 및 종교적 영향에 의해 형성되었다는 점에 유의하는 것도 중요하다. 동지가 축제일의 기원에 역할을 했을 수도 있지만, 크리스마스는 광범위한 종교적, 문화적 전통과 연관되어 현재 전 세계의 다양한 신앙을 가진 사람들이 기념하고 있다. 크리스마스와 동지의 관계에 대해서 비교적 유의미한 정보를 제공하는 것으로 보인다.  동지 축제와 관련성을 '논증'하지는 않지만, 중요한 정보(동지 축제와 관련되지만 현재는 역사/문화/종교적 설명이 복잡하게 얽혀있다거나 복잡하게 변화했다)는 대체로 잘 이야기하고 있다. 인지진화적 설명은 관련 문서가 부족하기 때문에 활용하지 못하는 것으로 보인다. 디테일이 부족한 것도 한계라 할 수 있겠지만, 간단한 답변으로서는 상당한 수준이라는 것도 부인할 수 없는 것 같다. 챗GPT가 3문단으로 설명하는 것을 나는 A4 몇 페이지로 설명했던가. 대학 등에서 학생들에게 과제나 시험문제를 내줄 때 이제 안일하게 내면 AI가 답을 써주는 시대가 되어버린 듯하다. ─── ∞∞∞

'정신병', 스캡틱, 박한선

※ 이 글은 ' 얼룩소 '에 2023년 1월 28일에 게재했던 글입니다. 본래 제목을 약간 수정하였습니다. 이 글은 Skeptic Korea의 " 정신의학의 오래된 과제, 과학적 치료와 처방 "에 관한 얼룩소글의 출처를 체크하고, 정신질환 치료의 현실에 대해 박한선 선생님께 들었던 이야기를 정래해 본 글입니다. ─── ∞∞∞ ─── 최근에 나온 글인 줄 알고 찾아봤더니 전에 나온 글이군요. 마침 어제(1/27) 정신과 의사 출신 인류학자 박한선 선생님을 통해서 관련 이야기를 듣고, 글쓴이부터 찾아 봤습니다. 다른 저자인 걸 보고, 정신의학계에서 상당히 유명한 이야기라는 걸 짐작할 수 있었습니다. 박선생님께서 정신병 진단과 치료에 '정신분석학'이 사용되고 있다고 하셔서 좀 어리둥절 했었습니다. 심리학계(실험심리가 중심이 된)에서는 배우지 않게 된 분야로 알고 있어서 의학 분야에서도 당연히 퇴출되었다고 지레짐작하고 있었습니다. '왜 인지 모르지만, 효과가 있다'는 면에서 정신과 치료가 이루어지는 현실을 생각해 보는 계기가 되었습니다. 아, '정신분석학'도 프로이트, 융 시절의 버전이 아니라 많이 업데이트가 되었다고 하더군요. 자세한 부분은 과문해서 잘 모르겠습니다만. 어제 박선생님이 들려주신 이야기도 떠올라 흥미롭게 이 스켑틱의 글을 읽다가 문득 출처가 궁금해서 찾아 보니, '한국 스켑틱'에는 14권(2018년)에 "정신의학은 과학이 될 수 있을까"라는 제목의 글로 실려있었습니다. (스켑틱에서 얼룩소에 올리는 글이 최근호에 실린 글이 아니라는 걸 이제사 깨달은 거죠) https://www.badabooks.co.kr/SKEPTIC_magazine/?idx=54 글은 14권의 68~83쪽에 실렸습니다. 이 글을 일부 발췌해서 재편집한 것이 위의 얼룩소에 실린 글이더군요.

미신과 종교라는 개념에 담긴 '너는 틀렸고, 내가 맞다'

※ 이 글은 ' 얼룩소 '에 2023년 1월 21일에 게재했던 글입니다. ─── ∞∞∞ ─── 미신이란 말을 많이 씁니다. 그게 무엇이냐 물어 본다면 우리는 어떤 행위들이나 관념을 이야기합니다. 뇌과학자 정재승 선생님도 미신 이야기를 하면서 '빨간색으로 이름 쓰는 행위가 불길하다는 미신'을 이야기했습니다. 차이나는 클라스, 정재승 편 미신이 어떤 것인가를 말할 때, 이렇게 미신에 속한 것들을 이야기하게 됩니다. '시험 볼 때 미역국을 먹지 않는다' '시험 볼 때 포크를 선물한다' '손 없는 날 이사해야 한다' '밤에 손톱을 깎으면 안 된다' '귀신을 쫓기 위해서 팥죽을 먹는다' 그럼 '미신'은 어떤 것이냐 설명해 보라면, 아마 이런 말들을 늘어 놓게 될 겁니다. https://engoo.co.kr/blog/먼나라이웃나라-세계-각국의-다양한-미신들/ 표준국어대사전에 바로 그와 같이 설명이 되어 있습니다. 표준국어대사전 '미신' 항목 그런데 이런 개념은 일상에서는 그런대로 사용할 수 있지만, 엄밀하게 따지면 쓸 수 없는 설명입니다. '비합리적이고 비과학적'인 게 너무 광범위하기 때문입니다. 도덕적, 경제적 판단과 믿음에도 그런 사례를 많이 찾아 볼 수 있습니다. 가령 '관상은 과학이다', 'ABO 혈액형 성격론', '과시적 소비' 등등. 어떤 종교적 맥락에서 '이상한 것'을 이야기하기 위해서 '미신'이란 말을 많이 사용합니다. 종교와는 다른 것으로 이야기합니다. 그런데 위 국어사전의 개념 정의는 종교도