권혁철 교수님의 부산대 맞춤법 검사기에 대한 명성은 익히 들어서 알고 있었다. 한국의 맞춤법 검사기 영역을 개척한 분이시고 나는 물론이고 주위 많은 분들이 교수님의 연구실적이 국가에 기여하는 바를 인정하고 있다.
이슈는 네이버와 카카오가 맞춤법 검사기를 구매하지 않고, 부산대 맞춤법 검사기를 역공학 했다는 의문이다. 이것에 대해서는 카카오가 역공학을 한 것이 아니라고 공식 블로그로 답변을 했다. 카카오가 공식 블로그에서 거짓을 말했다고 생각지는 않는다. 교수님이 주장하시는 ‘역공학(리버스엔지니어링)’ 방식은 법에 저촉되는 것은 아니기도 하고 말이다. 결국은 카카오가 오픈 API를 닫는 쪽으로 결론이 났다. 이 이상한 결론은 무엇인가?
나의 맞춤법 검사기 고민
나는 Mac을 주로 사용하는데 Mac용 아래아한글이나 MS워드는 실시간 맞춤법 교정 기능(맞춤법이 틀리면 빨간색 밑줄로 표시해주는 기능)의 결과물이 만족스럽지 않다. 여러 가지 방도를 찾아보았지만 딱히 좋은 방법은 없었고 그나마 Mac 사용자들이 사용하는 것이 fallroot 님이 만드신 단디 나 Checkor 와 같은 부산대 맞춤법 검사기를 기반으로 하는 플러그인 들이다. 나는 플로그인 지양하는 편이라서 이 플러그인들을 설치는 해보았으나 내게 맞지 않아 사용하지는 않는다.
부산대 맞춤법 검사기의 UX는 UX 전문회사인 pxd에서 만들어서 제공 한 것으로 보이고 CC로 공개되어있다. 구성은 좋은 편이나 넓은 화면을 활용치 못한다는 단점 때문에 답답하다는 느낌이 들고 디테일이나 디자인이 부족하다. 그래서 나는 한번에 1,000자만 검사할 수 있다는 제한에도 불구하고 다음 맞춤법 검사기를 사용한다. 다음 맞춤법 검사기는 깔끔하고 빠른 인터페이스가 마음에 들었고 안정적인 속도와 이쁜 디자인을 보여준다. 나는 블로그에 쓰는 글 정도를 검사하는 것이라서 다음 맞춤법 검사기 정도면 꼭 필요한 오타 수정과 띄어쓰기 수정을 할 수 있으니 충분하다. 나는 다음 맞춤법 검사기 인터페이스가 너무 마음에 들고 깔끔하고 좋아서 고객센터에 “너무너무 좋은데 1,000자 제한좀 늘려주면 안될까요?”라고 고객센터에 고마움을 포함한 문의를 한 적이 있다.
카카오(다음)의 입장
네이버와 다음은 검색 광고로 수익을 창출하는 회사다. 즉 검색을 위한 한국어에 대한 이해와 처리는 그들의 핵심 경쟁력이다. 맞춤법에 대한 연구와 기술은 외부에서 “구입”하는 것으로 의존하기에는 너무나 중요한 그들의 핵심 기술이기에 미리 여러 가지 연구를 했을 것이고, 이는 카카오의 해명자료에도 나와있다.
또한 이를 오픈 API로 제공하기로 했다는 것은 사회에 커다란 기여를 하는 것이다. 다양한 편집기, 즉 atom이나 sublime 등과 연동하는 데에 있어서 API가 있다는 것은 필수 불가결한 요소이다. API가 없으면 편집기와의 연동이 매우 제한될 수밖에 없기 때문에 API 제공은 한국어의 올바른 사용에 커다란 기여를 할 수 있다. 웹상에 더 많은 글들이 맞춤법과 띄어쓰기를 지키게 될 것이다. 다음 API를 활용한 atom이나 sublime의 플러그인이 아직은 등장하지 않았지만, 나는 내심 기다리고 있었다. 실제 나는 대부분의 글을 atom 편집기에서 작성하는데, 귀찮게 copy & paste 할 필요 없이 플러그인으로 제공된다면 내가 글 쓰는데 많은 도움이 되었을 것이다.
오픈 API가 나라인포테크의 비지니스에 지장을 준다면 비지니스 용도로만으로 사용을 막으면 대부분의 기업에서는 더 나은 엔진의 라이센스를 돈을 내고 사용할 것이다. 아직 맞춤법 “엔진을 납품”하는 오래된 방법을 원하는 기업도 있겠지만 오픈 API 방식을 원하는 기업도 늘어나고 있으니 말이다.
연구실과 나라인포테크
교수님의 글에는 나와있지 않지만, 권혁철 교수님은 연구실과 나라인포테크라는 기업을 모두 운영하고 계신 것 같다. 보통 연구실은 기업이나 국가, 학교 등 으로부터 연구비를 지원받고 논문이나 연구를 하는 것이 역할이며 나라인포테크는 기업이므로 그것을 가지고 수익을 창출하는 것이 목적일 것이다. 그렇게 운영되고 있을것이라고 생각한다.
부산대 맞춤법 검사기 사이트인 speller.cs.pusan.ac.kr 에 들어가면 좌측 하단 로고는 “(주)나라인포테크”라고 되어있다. 도메인은 부산대의 것을 사용하면서 “Copyrightⓒ2001 AI Lab & Narainfotech. All Rights Reserved” 라고 되어있는 것을 보면 무언가 두 조직 간에 구분이 명확하게 되어있지는 않은 듯하다. 또 나라인포테크 홈페이지의 contact 링크를 누르면 pusan.ac.kr 도메인의 이메일로 연락을 하게 되어있다.
학교의 역할과 기업의 역할은 다르다. 학술적으로 연구하고 알고리즘을 만드는 것은 학교가 잘하는 것이되, 그것을 포장하여 비지니스 모델을 만들고 알고리즘을 포장하여 서비스로 만드는 것은 기업이 잘하는 일이다. 학교 연구실을 위해 다양한 방법으로 연구비를 마련해 마음껏 연구 할 수 있는 길을 열어주고, 주식회사 나라인포테크가 사업에 실패하더라도 교수님이 지속적으로 연구를 하실 수 있는 환경이 만들어졌으면 좋겠다. 가장 이상적인 모양은 부산대 권혁철 교수님의 연구실에서 맞춤법 알고리즘을 만들고 논문, 특허, 라이센스 등 법적인 권리를 주식회사 나라인포테크에 판매하여, 그것을 기반으로 네이버/다음 수준의 편리하고 안정적이고 빠른 서비스를 만들어 서빙도 직접 하고 많은 수익화도 직접 하는 것이겠지만, 꼭 훌륭한 연구자가 동시에 훌륭한 기업가가 되기는 힘들기에 이는 쉬운 일이 아니다. 기업은 끊임없이 만들어지고 망하는 것인데, 주식회사 나라인포테크가 사업에 실패했다고 교수님의 우수한 한국어 연구에 영향을 미친다면 손해가 아닐 수 없다.
두 가지를 구분하자
맞춤법 검사는 공익을 위한 서비스에 가까운 성격이 있다. 그런데 맞춤법 엔진은 부산대가 더 낫고 맞춤법 서비스를 만드는 것은 네이버, 카카오가 더 잘하는 일이다. 이 둘 사이에 합의점이 없는 것인가 궁금하다. 결론이 다음의 오픈 API를 내리는 것으로 나는 것은, 너무나 아쉬운 결론이다. 교수님의 연구실이 충분한 연구비와 함께 지속되었으면 하지만, 이것이 주식회사 나라인포테크의 운명과 엮여야 하는지는 의문이다. 카카오의 오픈 API 폐쇄 결정은 권혁철 교수님의 연구를 위한 결정인가? 아니면 주식회사 나라인포테크를 위한 결정인가? 교수님의 연구를 존경하고 앞으로 계속되었으면 하고 바라지만, 또한 주식회사 나라인포테크를 위해서 오픈API가 닫히는 것을 원치 않는다.
- 추가: 다음 맞춤법 API를 활용한 atom 에디터용 플러그인이 이미 2달전에 만들어져 MIT 라이센스로 공개되어있다고 알려주셨다
저도 완전히 같은 생각이에요. 맞춤법 검사기는 공공재로 더 널리 쓰일 수 있는 성격의 것인데. 아쉽네요.
제 의견과 같습니다. 딱 정리 잘해주셨네요
아마 다음이나 네이버나 교수님의 제자들이나 논문에 영향을 받은 개발자가 일을했을겁니다. 이 바닥이 사실 매우 좁아서..
https://github.com/yomybaby/atom-korean-spell-daum 참고하세요~
[…] 이상한 결론의 부산대 맞춤법 검사기 사태 – http://earlybird.kr/1946 […]
교수님은 너무 과거에 사시는듯하고
우리나라 대기업은 역시대기업..
진짜 리버싱한게 맞다면 소송해서 승소하시길
nodejs을 오픈소스로 공개했다고 나모웹에디터가 열받아하는거랑 다를게 없다고 생각하네요
구글이 유튜브 인수한 것처럼 울나라에서 돈벌어 먹었으면… 그런 벤처나 중기를 인수 합병해서 그에 상응하는 대가를 치루고 기술을 확보 하는 것이 대기업과 중소 기업, 스타트업이 상생하는 것이 아닐까.. 합니다.
[…] http://earlybird.kr/1946 […]
20년간 이미지 프로세싱에 올인했던 연구자가 딥러닝 후에 그간의 수고가 의미없어진데 섭섭해 하는 글이 생각나네요. 20년 동안 패턴과 규칙, 자잘한 트릭 등과 씨름했었는데, 딥러닝은 학습데이타만 넣어주면 다 알아서, 더 잘 처리를 해 주니깐요.
딥러닝을 이용하면 띄어쓰기는 물론, 오탈자 교정 정도는 비교적 쉽게 구현 가능해진 시대에 이 무슨 …
https://research.googleblog.com/2016/08/meet-parseys-cousins-syntax-for-40.html
구글이 40개 언어에 대한 문법 분석기를 발표했죠. 아직 한국어, 일본어는 들어가지 않았는데, 여기에 한국어도 들어가면 그땐?
딥러닝 머신러닝이 문제를 해결해 주는 것은 맞지만 그러려면 기초적인 자료, 말하자면 이미 가지고 있는 노하우가 적용된 자료가 많이 있어야 하지요. 저간의 연구 결과가 이런 자료를 만들어 주는 것이고요. 그런 의미에서 딥러닝이 그간의 수고를 완전히 필요없게 하는 것은 아닐 듯해요. 단지 연구 방향이 달라져서 힘이 빠지는 것일 뿐.
딥러닝이 무슨 능사인거마냥 얘기하시는데…
이미지 프로세싱이나 음성언어 인식에서는 확실히 딥러닝을 사용하는것만으로도 성능이 많이 오르지만 자연어처리에서는 대부분 분야에서 규칙+통계 기반 접근이 state of the art입니다. 그리고 대부분 정교하게 만들어진 규칙에서 성능향상이 많이 일어나죠. 게다가 맞춤법 검사기 쪽은 딥러닝으로 구현은 가능하지만, 오탈자가 없는 대규모 데이터베이스를 구하는거 자체가 매우 힘든일입니다. 마지막으로 언어는 계속 변화하고 있습니다. 당장 어제 표준어가 아니었던 단어가 내일은 표준어가 되기도 하죠. 이런 부분을 딥러닝이 처리한다? 이는 극히 힘든일입니다.
머신러닝(딥러닝)은 확률, 통계를 기반으로 하기 때문에 “오탈자가 없는” 무결점 데이타가 꼭 필요한 건 아닙니다. 오류가 있는 보통 데이타를 가지고 돌려도 충분한 결과를 얻을 수 있습니다. (당연히 그래야 폭넓게 사용 가능 하겠죠?) 단, 학습 데이타에 오류가 많을수록, 더 많은 샘플을 집어넣어줘야 좋은 결과가 나오는 것은 당연지사겠구요. 그리고, 딥러닝이 이전의 어떤 머신러닝 알고리즘보다 이걸 아주 잘 해 주고 있어서 사람들이 다들 올인하고 있는 거고요.
이렇게 만든 모델은 100% 완벽하진 않지만 비교적 (아주) 쉽게 원하는 수준까지는 도달할 수 있습니다. 하지만, 응용 분야에 따라 80%, 90%까지는 어렵지 않게 도달할 수 있지만, 99%, 더 나아가 100%가 되는 건 전혀 다른 차원의 얘기겠죠. 알파고 같은 경우가 이 99%에 도달하기 위해 무지막지하게 노력을 한 경우가 될 거구요.
예전에 한 번 돌려봤던 예를 보여드리면,
인터넷 상에 돌아다니는 삼국지 텍스트를 가지고 간단한 딥러닝(char-rnn)을 한 번 돌려봤습니다. 이거 그냥 문자 단위(그냥 글자 하나 하나 단위)로 일련의 규칙을 학습하는건데, 스스로 알아서 띄워쓰기 규칙을 익히고, 단어의 조합을 찾고, 문장의 구성을 학습해 나갑니다.
사용한 코드는 https://github.com/karpathy/char-rnn
인터넷에 떠도는 텍스트들은 OCR로 스캔한 것들이라 오탈자가 비교적 많은 편입니다. 한마디로 그닥 좋은 학습데이타는 아니지요.
다음은 이렇게 만들어진 모델을 가지고 랜덤하게 만들어진 문장의 예 입니다.
“사마의는 급히 옆에 있다가 마침내 동탁한테 나간다는 말을 듣고 취한 듯 말을 몰아 나갔다.
장군의 동도나는 오래 저의 부하에 대하여 나라를 취하지 못하던 날은 졸개가 군사를 거느려 강북으로 나가서 서문을 지키게 하니 동오의 일은 편안하고 둘째 아들을 보전할 것입니다. 만약 하시면 좋은 계책을 묻지 못한다면 이것은 반드시 유표한테로 가시지 아니하시니 황운 이 몸은 무슨 의심이 있겠소? 조조는 사랑의 노릇이니 며칠 후에 안팎으로 업군을 취하게 한 후에 완봉을 한 것이 아닙니다. 운장한테, 이 사람이 조조한테 보고했던 것입니다. 그러나 천하의 조칙을 받들어 왕관을 원수를 갚을 것입니다. 육손은 곧 진궁의 말을 듣고 유비를 도와 주셔서 병법을 털어놓고 한편으로 사람을 사신으로 옮겼다.
공명은 껄껄 웃으며 대답했다.
어찌하면 좋단 말인가? 현덕은 노숙의 말을 듣자 껄껄 웃었다.
제가 전을 멸하고 딸한테 알리지 못하고 말겠소. 현덕은 진림이 대답했다.”
그냥 한 글자 한 글자 단위로 학습된 모델을 바탕으로 랜덤하게 생성된 것입니다. 전혀 말이 안 되는 내용이지만, 일단, 알아서 띄어쓰기를 할 줄 알고, 단어를 만들고, 이름과 같은 고유 명사도 나오고, 주어, 서술어가 있는 문장을 완성해 주고 있습니다. 다시 말하면, 이 모델만 가지고도 띄어쓰기와 오탈자 검사를 할 수 있다는거죠. 보다 정교한 결과를 원한다면 (오류가 적당히 있는) 데이타를 좀 더 충분히 넣어주면 되고, 최신 맞춤법을 적용하고 싶다면 새로운 샘플(예제)를 만들어서 충분히 학습시켜주면 됩니다.
생각보다 쉽지 않나요?
딥러닝 for 텍스트에 대한 보다 자세한 내용은 구글한테…
[…] http://earlybird.kr/1946 […]
얘기가 이상한 곳으로 흐르면서 또 싸우네
ㅋㅋㅋ