저는 “개발자”가 아닙니다.
컴퓨터공학을 전공한 것도 아니고 학부 때 들은 컴공과 수업이 전공필수 “컴퓨터의 기초”가 전부이기도 하지만,1 무엇보다 스스로가 개발자라고 생각하지 않습니다.2 그런 제가 요 몇 년간 “개발자 코스프레”를 할 수 있게 된데에는 간결하면서도 강력한, 파이썬이라는 언어의 힘이 상당히 컸습니다. 올해는 그러한 파이썬의 개발자 컨퍼런스, PyCon이 국내에서 처음 열린 해이고, 파이썬 팬으로써 저도 작게나마 기여를 하고 싶어 발표자로서 참여하게 되었습니다.

행사가 마무리된 후 약 일주일 간 생각을 정리하며, 간단한 기록을 남깁니다.

발표 주제 선택

국내에서 처음 PyCon이 개최된다는 소식을 접한 것은 6월 말 쯤이었습니다. 당시 소식을 전해준 @cornchz군은 나름 첫 PyCon인데 발표를 하는게 큰 의미가 있지 않겠냐고 했고, 저도 그 말에 동의했습니다. 다만 발표를 하긴 해야겠는데, 뭘할지 조금 고민은 되었지요.

  1. 팀포퐁에서 대부분의 개발을 파이썬으로 하고 있는데, 그 경험을 공유해볼까?
  2. 처음 파이썬을 시작했을때 인코딩 때문에 주구장창 고생했던게 기억나는데, 다른 분들이 좀 덜 고생할 수 있게 인코딩 얘기를 해볼까?
  3. 아직은 부족하지만, 이제 막 개발을 시작한 파이썬 한국어 NLP 도구인 KoNLPy를 공유해볼까?

주제를 정하면서 세 가지를 고려하기로 했습니다.
1) 청중이 듣고 싶어할 말인지, 2) 내가 하고 싶은 말인지, 3) 내가 가장 잘 할 수 있는 말인지.

첫 번째 주제는 두 번째와 세 번째 조건은 아주 잘 충족했지만, 가장 중요한 첫 번째 조건을 충족시킬 수 있을지 확신이 없었습니다. 내용이 불충분하거나 주제가 핵심에서 벗어났기 때문이 아니라, 제가 “제품”에 대해 가지고 있는 애정이 너무 크다보니 “제품 홍보”가 될 수 있겠다는 우려가 컸기 때문입니다. 하지만 PyCon의 청중은 “제품 홍보”를 듣기 위해 자신의 시간을 투자하는 것은 아니겠지요.

또, 저는 “누구나 얻어갈 것이 하나씩은 있는 발표”가 좋은 발표라고 생각하는데, 두 번째 주제는 아주 중요한 내용임에도 불구하고 제대로 준비하지 못하면 누군가에게는 크게 도움이 될지라도 누군가에게는 전혀 도움이 못될거라고 생각했습니다. 게다가 저는 제 자신이 유니코드 이해의 7단계 중 5단계에 속하(ㄴ다고 생각하)기 때문에 이것이 내가 가장 잘 할 수 있는 발표, 즉 상대우위가 있는 발표도 아닐거라고 생각했습니다.3

반면 세 번째 주제는 세 가지 조건을 어느 정도 다 충족을 했습니다. 주변을 둘러보면, 한국어 NLP는 관심이 높으면서도 정작 제대로 정리되고 있지 않은 분야 중 하나인데, 새로운 discussion을 이끌어내거나, 오픈소스 한국어 NLP에 대한 관심을 환기시키기만 해도 충분히 의미있는 발표가 될거라고 생각했습니다. 또한, PyCon의 대상이 대부분 개발자이기 때문에 데이터 분석가로서 데이터 분석에 대한 얘기를 해보면 좋겠다고 생각했고, 한국에서 열리는 PyCon인만큼 한국적인 무언가가 있었으면 좋겠다는 생각도 있었습니다. 뿐만 아니라 준비과정 자체가 나의 성장에 도움이 되는 발표가 될 것 같았죠. 한편 8월 말 컨퍼런스 때까지 준비를 충분히 마칠 수 있을지 확신이 들지 않기도 했는데, 대정모의 베타 런치에 비춰 생각해보니 어차피 언제 공개해도 부족함은 느끼게 마련이고, 따라서 기회가 있을 때 최대한 일찍 공개를 하는 것이 모두에게 beneficial하다고 생각했습니다. 그래서 최종적으로, 첫 PyCon에서는 파이썬 한국어 NLP에 대해 발표를 하기로 결정했습니다.

“Now is better than never.” – The Zen of Python

자바, 미안하다! 파이썬 한국어 NLP

사실 제목은 좀 낚시성입니다 ㅎㅎ
내용을 보면 아시겠지만 자바를 디스하는 것은 전혀 아니고, 발표를 준비하던 당시 재미있는 시사적 이슈가 있었는데 마침 rhyme도 맞고 해서 활용(?)한 측면이 강합니다. 발표 내용은 다음의 세 가지를 신경썼습니다.

  • 누구든 얻어갈 수 있는 한 가지가 있게 한다. (새로운 시각, 새로운 개념, 새로운 기술 등)
  • 세상에 존재하지 않는 무언가를 내놓는다.
  • 어려운 것은 괜찮지만 이해가 안 되는 것은 별로다.4

그렇게 해서 나온 것이 아래의 발표자료입니다.

세 줄 요약:

  1. 파이썬으로 한국어 분석할 수 있는 KoNLPy를 만들고 있습니다.
  2. 자바 등으로 개발된 기존 한국어 형태소 분석기의 wrapper와, NLP에 편리한 함수들을 파이썬으로 손쉽게 설치하고 사용할 수 있게 하는 것이 목표입니다.
  3. 크롤링부터 NLP분석, 시각화까지 하나의 언어로 처리할 수 있다는 편리함을 제공하며, 이것이 한국어 자연어처리에 대한 진입 장벽을 많이 낮춰줄 것이라고 희망합니다.

아쉬웠던 점

미리 조금씩 준비한다고는 했는데, 아직 내공이 부족한지 처음하는 발표는 참 만족하기 어려운 것 같습니다.

  • 먼저, 왜 파이썬으로 NLP를 하면 좋은지, KoNLPy에 어떤 철학이 내재되어 있는지 충분히 강조하지 못한 점이 아쉬웠습니다. 이 부분에 대해서는 앞으로 꾸준히 정리해서 KoNLPy의 문서에서 다룰 예정입니다.
  • 청중이 jargon에 압도당하지 않게 최대한 줄이려고 했는데, 지금 생각해보면 좀 더 심층적인 내용을 전달하는 것도 의미 있었을 것 같습니다.5
  • 발표를 하다보니 다른 분들 발표는 거의 못듣거나 신경을 못쓰기도 했습니다… 내년에는 청중이 되거나, 아침에 발표를 할 수 있게 부탁드려야겠습니다.

좋았던 점

  • 발표 직후, 퍼키님께서 KoNLPy를 사용해보셨고 Python3에서도 큰 문제 없이 돌아간다고 말씀해주셨어요. 꺅!
  • 발표 이후로 일주일도 안 자났는데 관심 있는 분들의 contribution이 생겼습니다. 컴백서님 감사합니다!
  • 오징어 네트워크에 #koreannlp 채널이 생겼습니다.6
  • 그 외 관심 있는 분들과 네트워크를 형성하게 되었습니다.
  • 아이디어도 몇 가지 제안 받았습니다.
    • 형태소 분석기/사전 간 성능을 엄밀히 비교해서 publish
    • 형태소 분석 모듈을 동시에 비교하기 더 쉽게, 함수를 자체 내장
    • 사용자 사전 추가 interface를 편리하게 import할 수 있는 인터페이스를 만듦

PyCon에 참석해보니, 각종 전문분야에서 온 다양한 사람들을 만날 수 있었고, 그것은 다른 개발자 컨퍼런스에서 발견하기 어려운, 독특한 모습이었던 것 같습니다. 또, 이번 컨퍼런스 준비에 참여하신 박현우님께서 Lightning Talk에서 말씀하신 것과 같이, 이런 행사는 행사 자체도 중요하지만 그 이후도 중요하다고 생각합니다. KoNLPy, 그리고 한국어 NLP 관련 내용을 이 블로그를 통해 조금씩 꾸준히 전달해보도록 하겠습니다.

결과적으로는, 발표하길 참 잘했다고 생각합니다.
PyCon Korean 2015에서는 더 재미있고 풍부한 세션들을 들을 수 있기를 바랍니다.

  1. 생각해보면 국내 유일의 파이썬 커미터인 perky님도 컴공 전공은 아니시죠…^^ 그게 또한 커다란 용기가 됩니다. 

  2. 누군가는, 개발을 하면 다 개발자 아니냐고 하겠지만, 수학을 사용하는 모든 사람이 자신이 수학자라고 생각하지는 않겠지요. 물론 수학을 사용하는 모든 사람을 수학자라고도 볼 수도 있겠습니다. 

  3. 나중에 “유니코드 이해 7단계”라고 하는강성훈 씨의 유니코드 강연을 들을 기회가 있으면 좋겠네요. 

  4. 사실 저는 가장 어려운 개념도 내공이 깊은 사람은 누구나 이해할 수 있게 쉽게 설명할 수 있다고 생각합니다. 즉, 어떤 개념이 전달이 안될 때는 개념 자체의 난이도나 청자의 이해력 뿐 아니라 화자의 전달력도 영향을 주기 때문에, 화자의 입장에서는 자신이 최선의 방식으로 내용을 효과적으로 전달하고 있는지도 의심해봐야한다고 생각합니다. 

  5. …는 어디까지나 제 느낌이고 생각인데, 직접적인 피드백을 받지 못해서 확신은 없네요. 내년에는 발표에 대한 사전/사후 피드백을 주고 받을 수 있는 통로가 생기면 좋겠습니다. 

  6. 채널 이름을 #konlpy가 아니라 #koreannlp로 정한 것은, 프로그래밍 언어와 패키지와 무관하게 한국어 NLP에 대해 관심 가지고 있는 분들을 모으기 위함입니다. 잘 될지는 모르겠지만 꼭 이곳을 통하지 않더라도 지속적으로 논의가 이루어졌으면 좋겠네요.