1.
네이버와 다음이 맞춤법 검사기를 공개했다
요즘 마음이 착잡합니다. 그러면서도 안타깝고요. 한국어맞춤법검사기 개발 26년, 그런데 몇 년 전부터 네이버가 맞춤법 검사기를 공개했습니다. 그런데 우리 맞춤법 검사기를 참고하는 것은 좋은데 거의 베끼더군요. 3년 동안 베타로 두고요.
규칙 만드는 데 1일, 베끼는 데 1분
맞춤법 검사기 규칙 하나 만드는 데 하루 걸립니다. 그러나 다른 사람이 만든 것 보고 넣는 데는 1분도 안 걸립니다. 우리가 새 규칙 넣으면 곧 추가됩니다. 특정한 맞춤법 검사기의 결과를 대용량 자료에 돌려 비교하면 6개월이면 거의 따라잡습니다. 빅데이터 처리의 슬픔이랄까요. 더구나 맞춤법 검사기는 맞춤법이 틀린 것을 고치므로 고쳐야 하는 유형을 찾는 것이 어렵지, 유형만 알면 쉽게 만들 수 있습니다.
그런데 드디어 다음마저 공개했네요. 그런데 듣기로는 참고만 했다고 했지만, 우리 것과 네이버 것 그대로 베꼈습니다. 물론 우기겠죠. 참고는 했지만, 자기들의 아이디어도 있다고…. 그리고 다음은 아예 API도 공개했습니다. 심하게 말하면 도둑질해서 선심 쓰는 의적인지도 모르죠. 남이 한 것을 훔치면서 부끄럼 모르고 자랑하는 현실… 김진형 교수님께서 소프트웨어 교육과 육성해야 한다고 외치시지만… 우리나라 소프트웨어 업계 장래성 없습니다.
정말 무례한 건 누구인가
10년 전쯤 생각이 나네요. 네이버 과장이 와서 맞춤법 검사기 네이버에서 서비스 해줄테니 비용을 내라고요. 네이버가 도우면 장사가 잘될 거라고요. 웃었더니 6개월 후쯤 무료로 해주겠다고요. 그리고 6개월쯤 지나자 연 5천만 원, 그 이상이면 안 되니 그렇게 하자더군요. 그래서 화가 나서 ‘월 5천만 원은 내야 한다, 거기에 너희 회장(이해진)이 와야 한다’고 화냈습니다. 그러니 곧 소문나더군요. 부산대학이 엄청난 액수를 불렀고 무례하다고요. 다음도 비슷했고요.
다른 예로 로마자 변환기 만들었더니 네이버도 곧 만들더군요. 그러더니 무료로 API 공개해서(상업적 사용 가능) 그나마 진행되던 은행과 계약 모두 취소되었습니다. 현재 맞춤법 검사기 사용자 99%가 무료 사용자입니다. 겨우 1년 수입이 2억 정도고 그래도 어렵게 개발하고 있습니다. 두 기업 중 한 기업은 우리 시스템 참고용 자료 조사(리버스 엔지니어링(?))에만 8명 투여했다네요.
그 비용이면 우리 1년 수입 두 배입니다. 훔치고도 훔쳤다고 못 느끼는 분위기에서는 소프트웨어 산업은 살지 못합니다. 사실 우리처럼 도움말을 8만 종류 이상으로 다양하게 제공하면서 각종 오류에 대해 분석하는 것은 신념 없이는 불가능합니다. 그러나 남의 것 보고 비교하면서 개발하기는 쉽습니다. 오히려 네이버와 다음은 우리보다 다양한 사전, 고유명사 따위를 보유해 훨씬 유리합니다. 개발비나 환경도 좋고요. 직원들 능력도 자부심도 (주)나라인포테크와는 비교가 안 되지요.
현재 방송사와 신문사에서만 매출이 있습니다. 그런데 여기는 오류 자체만 찾으면 됩니다. 도움말이 절대적으로 필요하지는 않습니다. 그러나 일반인이나 학생은 다릅니다. 두 업체는 도움말을 제공하지 않습니다. 사실 이 부분은 따라오기 어려울 겁니다. 다음은 규칙 처리 방법마저 우리와 거의 같습니다. 한 1년 버텨 보다 어떻든 결론을 낼 생각입니다. 개발을 중지할지 계속할지… 광복절에 연구실에 와서 일하다 한심해 글을 써봅니다.
2.
여러분의 따뜻한 격려 고맙습니다. 어제 약간 흥분한 상태라 두서없이 쓴 것 같아 정리하여 씁니다. 끝까지 읽어 보시면 도움이 될 겁니다. 거의 잠을 못 잤네요.
내용은 (1) 포털은 맞춤법검사기(응용시스템)는 만들면 안 되나? (2) 부산대 시스템의 현황은? (3) 6개월 만에 최고 맞춤법검사기 만드는 방법 (4) 마무리 순입니다. 제가 6개월 만에 만드는 법을 제시하는 이유는 ‘부산대가 23년을 만든 시스템이면 다른 곳이 그렇게 쉽게 따라올 수 있느냐’는 의문을 가지는 분이 있으시기 때문입니다.
1. 포털은 맞춤법검사기를 만들면 안 되나?
아닙니다. 당연히 만들어 쓸 수 있습니다. 물론 외주하여 기술 발전에 이바지하면 좋겠지만, 자체에서 만들어 쓰는 것도 좋습니다.
그러나 그것을 자체에서만 쓰지 않고, 무료로 API를 공개하여 사용하게 하여 다른 업체나 개발자의 싹을 잘라버려서는 안 됩니다. 그 점은 네이버는 잘 알고 있습니다. 맞춤법 검사기의 API는 따로 제공하지 않습니다. 로마자 변환기는 저희가 상업적으로 판매하고 있는 것을 모르는 것 같습니다. 은행에 판매하는데, 네이버가 무료(상업적 포함)로 제공하여 모든 계약이 취소되었습니다.
다음은 맞춤법 검사기의 API를 완전히 공개했습니다. 더구나 부산대 시스템을 상당 부분 역공학을 했음에도요. 국내 소프트웨어 업계를 보호하려면 포털이 자체에서 사용하는 것을 넘어 개발한 시스템을 무료로 공개하는 것은 막아야 합니다. 빵을 무료로 나누어주면 재료비라도 들지만, 응용시스템은 거의 비용이 안 들면서 다른 개발업체는 모두 죽입니다. 저희 시스템을 쓰려면 포털에서 찾아야 하며, 그 과정에서 포털 통신량이 늘지만, 저희에게 오는 것은 없습니다.
2. 부산대 시스템의 현황은?
저희 시스템의 장점은 현재 35MB밖에 메모리를 쓰지 않는다는 점입니다. 아마 이 부분은 아무도 따라올 수 없을 겁니다. 문맥에 따라 오류를 고치는 규칙이 2만 3천 개쯤 됩니다. 오류 패턴도 20만 개쯤 되고요. 현재 일반 PC 1대로 하루에 15만 건 정도의 문서를 처리하고 있으며, 입시 철과 입사 시험 기간에는 하루에 40만 문서 이상을 처리합니다.
또한 도움말이 다양하게 제공됩니다. 그러나 이것도 어느 정도 비용만 들이면 쉽게 따라올 수 있습니다. 오히려 다른 시스템을 보고 따라 만들면 더 체계적이겠지요. 사실이 그렇기도 하고요.
3. 6개월 만에 최고 맞춤법검사기 만드는 방법
방법은 그리 어렵지 않습니다. 그 전에 완벽한 맞춤법검사기는 없다는 점과 일반 사용자가 틀리는 철자 오류 유형은 아주 제한됨을 말씀드리겠습니다. 따라서 저희가 만든 규칙 10% 정도(2,000개)가 대략 95%의 오류를 고치고, 나머지 90%가 5%를 고친다고 보면 됩니다.
만드는 방법은 3단계이며, 각 2개월이 필요합니다. 이 방법은 지도검색서비스 등 다양한 서비스의 역공학에 활용할 수 있습니다. 이것에 대한 법적 또는 도덕적 판단은 알아서 하십시오.
1단계: 멍청한 맞춤법 검사기 만들기
먼저 형태소 분석기를 이용하여 대충 맞춤법검사기를 만듭니다. 단, 규칙과 도움말 따위는 기존 맞춤법 검사기를 참고로 완벽히 작동하게 합니다. 부산대 시스템의 구성 원리는 논문에 나와 있으니 그대로 만들면 됩니다.
그리고 몇 가지 중요한 규칙을 적용하여 검증하십시오. 형태소분석기를 가지고 있다면 아마 2개월이면 만들 겁니다. 특히 맞춤법 검사기는 등록된 단어가 중요합니다. 표준국어대사전이나 기타 사전의 단어를 찾아서 다른 맞춤법 검사기에 돌리되, 명사는 ‘-을/를(목적격 조사)’을 붙여서 돌리세요. 허용되면 사전에 넣고, 아니면 적합한 단어만 골라서 추가하세요. 다양한 사전을 가진 곳이라면 이것으로 다른 시스템을 앞섭니다.
2단계: 다른 맞춤법 검사기로 똑똑하게 만들기
이제 대용량 말뭉치(아마 신문 1년 치면 충분할 겁니다)를 구해서 다른 맞춤법 검사기에 돌려서 오류와 도움말을 모으세요. 모은 오류를 새로 만드신 맞춤법 검사기에 돌려서 오류로 판단하고 대치어가 같으면 제거하세요. 그리고 오류 유형에 따라 분류하세요. 아르바이트생을 동원해 그 결과는 분석하여 다른 맞춤법 검사기의 결과가 옳으면 내용을 추가하고, 아니면 바르게 수정하여 반영하세요.
제가 95% 오류를 반복적이라 했지요. 따라서 이 정도면 원시스템의 성능을 거의 따라잡았을 겁니다. 물론 5% 정도는 차이가 있겠지만, 원 시스템의 오류도 반영했으므로 오히려 좋을 겁니다.
예를 ‘친구밖에 없다’와 ‘친구 밖에 있다’처럼 ‘밖에’가 조사인 경우와 명사인 경우를 구별하는 규칙을 찾아서 만드는 데는 열흘 이상 걸립니다. 그러나 부산대 시스템을 돌려보면 반복해서 뒤에 ‘없다’가 나오면 붙이고, ‘있다’가 나오면 띄어쓸 겁니다. 제가 봐서는 10분이면 만듭니다. 단, 문제점은 규칙이 과적용될 수 있다는 점입니다.
이렇게 해서 어떻든 더 똑똑한 맞춤법검사기가 만들어졌습니다. 당연히 여러 맞춤법 검사기를 사용했다면 더 좋은 결과가 나올 겁니다.
이 방법을 원천적으로 막을 수는 없지만, 막는 방법이 있습니다. 하루에 몇 건 이상을 동일 사이트에서 검사하지 못하게 하는 방법입니다. 또 아주 빠르게 재검사를 하면 못 하게 합니다. 부산대처럼 검사 결과 오류를 정리해서 제공하지 않으면 됩니다. 두 단어가 연계되어 오류가 만들어졌을 때 오류 부분만 보여주고, ‘마를린 몬로’처럼 틀렸을 때 각각 오류를 따로 나오게 하면 됩니다. 실제 부산대는 이런 방어장치가 전혀 없고, 어떤 시스템은 철저합니다. 부산대 시스템의 모듈을 사용하는 회사에서 몰래 가져와 써도 됩니다.
(오비이락인지 모르지만 지난 몇 달간 부산대 시스템이 속도가 늦어졌다는 항의가 자주 있었습니다. 우리말 배움터를 보시면 알 수 있을 겁니다(올해 4월 7월). 저희 오류 찾는다고 엄청나게 고생했습니다. 그런데 이유 없이 며칠 후부터 해결되었습니다. 이 부분은 짐작이지 증명된 것은 아닙니다.)
3단계: 만든 시스템을 검증하고 마지막 금상첨화
이제 꽤 똑똑한 시스템이 만들어졌습니다. 그러나 규칙이 과적용될 수 있습니다. 대용량 말뭉치를 새로 만든 시스템에 돌리세요. 그리고 틀렸다고 하는 것을 모두 모아서 다른 맞춤법 검사기에 돌리세요. 다른 시스템과 같은 결과가 나온 것은 제거하고, 나머지를 직접 검증하세요. 규칙이 과적용되었으면 고치고, 아니면 다른 맞춤법 검사기 오류이니 뿌듯해하세요. 다른 어떤 맞춤법 검사기보다 최소한 5%는 좋은 맞춤법 검사기를 완성했습니다.
4. 마무리
현재 한국어 맞춤법검사기 성능은 부산대가 약간 앞서고, 다음과 네이버 순입니다. 그 차이는 크지 않습니다. 그래서 저희와 계약하려던 일부 업체가 다음이 공개한 API 사용을 고려하고 있다고 합니다.
올해 3월만 하더라도 다음 시스템은 맞춤법검사기라 할 수준이 아니었습니다. 그런데 벌써 이 수준이면 대단한 능력입니다. 다음 맞춤법검사기 개발자가 부산대를 쉽게 따라잡았다고 뿌듯해한다는 소문을 들었습니다. 20년 이상 개발한 시스템을 단번에 따라잡았으니까요. 계속 두 회사 상황이 들리니 짜증이 납니다.
물론 따라잡히지 않은 부분도 있습니다. 그리고 준비해둔 ‘산의 한 수’도 있습니다. 메모리를 1GB쯤 더 쓰면 성능을 크게 개선할 수 있습니다. 논문으로는 발표되었고요. 그런데 문제는 ‘신의 한 수’는 두고 나면 더는 ‘신의 한 수’가 아니라는 거죠. 한 달이면 따라잡힐 거거든요. 이럴 바에는 다른 곳에서 아이디어 내면 흉내(표절) 내는 것이 편하겠네요.
참, 대용량 자료를 검사하는 것을 포털이 막았네요. 이제는 진정성을 인정해달라고 할 수도 없겠습니다. 올해는 직원 5명 월급 주기도 빠듯하네요, 사실 버티기도 어렵습니다. 하소연은 안 하려 했는데요. 여러분 격려 덕분에 힘을 내봅니다만, 내년 한글날쯤이면 여론몰이 한번 하고 편하게 지낼 수 있을 것 같습니다.
(넋두리로 맞춤법 검사기 포기하게 되면 우리나라 전자지도를 구매하고, 포털에 주소만 넣으면 다양한 정보 나오니 그거 자동으로 가져와 참고해서 아르바이트생 동원해 온갖 정보 추가해서 판매나 할까 합니다. 참, 자동으로 못 가져오게 하면 해커 동원해 10만 개쯤 분산해 접근하면 되겠네요. 그때 훌륭한 해커 추천해주세요.)
긴 글 읽어주셔서 고맙습니다.
원문1: 권혁철 님의 페이스북
원문2: 권혁철 님의 페이스북