NEWSLETTER

자동번역, 렉스코드가 한 방에 정리해주마!

작성자
렉스코드
작성일
2019-11-01 14:01
조회
970


우리는 영어 독해 시간에 이해가 가지 않는 영어 문장들을 보며 이러한 생각을 했었을 것입니다. 알아서 그냥 자동으로 번역해주는 장치”가 있었으면 좋겠다 하고요. 그런가 하면 번역 업계에 몸담고 있는 사람들은 인간의 우월성과 기술에 대한 공포심 그 중간 어디쯤에서 그런 세상은 오지 않을 것이라는 시각을 견지하기도 했죠. 그러나 시대가 지남에 따라 우리는 알파고가 이세돌을 이기는 것을 직접 눈으로 보면서 인공지능, 머신러닝, 딥러닝 등의 제법 과학적인 용어들에 대해서도 알게 듣게 되었습니다. 이로 인해 전자의 사람들은 기대를, 후자의 사람들은 현실적인 우려를 하게 되었습니다. 어느덧 에어컨이나 가습기도 인공지능 달린 애들로 사야 되나 하는 고민을 하게 되었습니다. 내 전화기와 내비게이션에도 인공지능이 장착되어 있다고 하니까요.

생각해 보면 사람들은 음이온이 무엇인지도 모르면서 음이온을 발생한다는 전기장판을 사고, 나노 구조가 무엇인지도 모르면서 나노 치약, 나노화장품, 은나노 등 나노를 형용사로 하는 수없이 많은 물건들을 사기도 했습니다. 누군가는 라돈이 뭔지도 모르면서 침대에서 자기만 하면 류머티즘 관절염이 낫는다는 말에 이끌려 라돈 침대를 샀다가 나중에 그것이 일급 발암물질인 것을 알고 기겁을 하기도 했지요.

자동번역에 대한 대중의 관심이 이와 동일한 맥락에 있는 것은 아니지만, 명확하지 않는 정보와 섣부른 기대 위에서 뚜렷하지 않은 환상이 만들어지는 것은 마찬가지인 것 같습니다. 그래서 자동번역에 관하여 여러분이 알아야 할 사실들만 뽑아서 렉스코드가 한 방에 정리해드리겠습니다.


1. 자동번역의 종류_feat. 자동번역의 진화 과정
자동번역은 크게 다음과 같이 진화해 왔습니다.



1-1. RBMT(Rule-Based Machine Translation): 문법 기반 자동번역
첫 번째 시도된 것이 RMBT(Rule-Based Machine Translation)는 규칙에 기초한 자동번역입니다. 이것은 우리가 문법을 공부해서 외국어를 학습하는 것과 동일한 방식으로 프로그램을 짜서 번역을 시도한 것입니다. 세부적으로는 단어만 치환시키는 원시적인 방식부터, Corpus라고 하는 말뭉치를 치환시키는 방법, 번역된 단어를 문법에 맞게 재 배열하는 방식 등이 있습니다만, 어떻게 하든 이 방식은 결코 극복할 수 없는 태생적 한계가 있습니다.

그 한계는 바로 사람들은 글을 쓸 때 문법책에서 규정하는 대로 정확한 법칙에 따라서 글을 쓰지 않는다는 것입니다. 우리는 자유자재로 이것저것을 생략하거나, 옆길로 빠지거나, 문장을 끊거나 연결하거나 하면서 문장을 만들고, 심지어 사람마다 제각기 다른 언어 습관을 갖고 있습니다. 이때 RMBT 방식은 처참한 결과를 보여줄 수밖에 없습니다.

예를 들어 “오늘 저녁에 육회 쏠게!”라는 아주 평범한 문장조차 RMBT 방식으로는 다음과 같이 번역될 것입니다.

오늘 저녁에 육회 쏠게! → “Shoot six times today evening!”

의식하지 않는다면 우리는 “오늘 저녁에 육회 쏠게!”라는 문장에 주어(나)와 대상(너)이 빠져 있다는 것을 잘 인지하지 못합니다. 왜냐하면 그것이 없어도 우리 머릿속에서는 그 부분을 이미 채워서 해석하고 있으니까요. 하지만 기계는 그렇게 하지 못합니다. 기계는 스스로 “I”나 “You”를 채워 넣지 못합니다. 그리고 “쏘다”의 사전적 의미는 “shoot”이고, “육회”는 말 그대로 여섯 번을 의미하는 “six times”로 번역해버립니다. 그래서 RMBT 방식으로 번역하는 경우는 저런 결과가 나오는 겁니다.

누군가는 이 RMBT 방식의 연구에 평생을 몰두하기도 했습니다만, 그 누구도 이 방식이 갖는 태생적 한계를 뛰어넘지는 못했습니다. 하지만 그들의 연구는 형태소(Morphology), 구문론(Syntactic), 의미론(Semantics)과 같이 언어학 연구 및 자연어 검색 등에 매주 중요한 학문적, 이론적 자양분이 되었습니다.


1-2. EBMT(Example-Based Machine Translation): 예시 기반 자동번역
수없이 복잡한 언어 규칙과 예외 조건을 프로그래밍해야 하는 RMBT 방식에 질린 연구자들은 그냥 원문 대 번역문을 1:1 매칭 시키면 안 될까?라는 생각을 하게 됩니다. 요즘 말로 하면 TM(Translation Memory), 즉 언어쌍인 것이지요. 이것은 혁신적이지는 않지만, 실용적인 접근 방식이긴 했습니다. 사람으로 치자면 문법을 통해서 외국어를 공부하는 것이 아니라, 외국에 가서 살다 보니 자연스럽게 그 생활에서 언어를 익히게 되는 방식과 유사하다고 할 수 있습니다. EBMT 방식으로는 이제 다음과 같이 번역될 수 있다고 예상할 수 있겠네요.

오늘 저녁에 육회 쏠게! “(shoot/buy/treat) (six times/raw beef) today evening!”

위 예시처럼 이 방식은 원문과 어떤 번역문을 매칭 시켰느냐에 따라 결과가 들쭉날쭉할 수밖에 없습니다. 결국 여러 가지 선택지 중에서 무엇이 옳은지는 어떤 것이 더 자주 쓰이는 지로 밖에 판단할 수 없는데, 이것은 자연스럽게 통계적 기반 자동번역 (SMT) 방식으로 연결됩니다. 따라서 이 EBMT 방식은 5년이라는 비교적 짧은 생애를 마치고 SMT 방식에게 길을 내주고 사라지게 됩니다.

그러나 EBMT 방식이 절대 무의미하진 않았습니다. 이 방식은 요즘 번역회사에서 필수적으로 사용하는 CAT(Computer Aided Translation) 툴의 토대가 되었다고 보입니다. CAT 툴은 원문과 번역문 쌍을 데이터베이스화하고 이를 바탕으로 새로운 문장을 번역할 때 기존의 데이터를 불러와서 활용할 수 있도록 도와주는 프로그램입니다. 번역 접근 방법과 기능 면에서 CAT 툴과 EBMT는 매우 닮아 있습니다.


1-3. SMT (Statistical Machine Translation): 통계적 자동번역
1990년대 초반, 언어학이나 문법 따위에 대해서는 전혀 관심도 없던 IBM의 개발자들이 알고리즘을 이용해 컴퓨터가 두 언어 간의 유사한 패턴을 찾아서 매칭할 수 있도록 하는 방식을 만들고자 했습니다. 이들은 유사한 의미를 포함한다고 생각되는 문장들을 단어 단위로 쪼갠 후, 어떤 단어와 어떤 단어가 확률적으로 가장 자주 연결이 되는지의 시뮬레이션을 5억 번 정도 반복하였습니다. 그 뒤 이렇게 해서 찾아낸 유사어들을 자연스러운 문장이 되도록 다시 배열하는 모델을 만들었습니다. 이러한 과정을 통해 SMT 방식은 원문에서 생략된 주어(나)를 찾고, 의지를 나타내는 조동사 “will”도 찾아서 다음과 같이 비교적(?) 자연스러운 문장을 만들 수 있게 되었습니다.

오늘 저녁에 육회 쏠게! “I will shoot six times today evening!”

하지만 보시다시피 SMT는 갖은 노력에도 불구하고 “쏘다”는 여전히 “shoot”이고 “육회”는 여전히 “six times”라는 통계적 매핑의 한계를 넘지는 못했습니다. 지난 20여 년간 SMT 방식은 거듭된 보안을 통해 개선되면서 그나마 현실에서 사용할 수 있는 가능성을 제시했습니다. 구글(google) 또한 이 방식을 기반으로 자동번역을 제공하기도 했습니다만, 우리가 흔히 말하는 “구글 번역기 돌렸냐?”라는 혹평을 들어야만 했습니다.

여기까지는 어떠한 방식을 취하든 간에 어쨌거나 사람이 특정한 규칙을 만들어서 코딩을 해야 한다는 점은 동일했습니다. 따라서 누군가는 고민했습니다. “그 규칙을 사람이 아닌 프로그램이 찾아내게 할 방법이 없을까?”

마치 사람의 신경망(Neuron)이 새로운 규칙을 학습하듯 말이죠.



1-4. NMT (Neural Machine Translation): 신경망 자동 번역
이 방식이 출현한 것은 2015년 말입니다. 구글에서는 원문의 단어나 구문 간 연계성을 수학적(행렬)으로 분석하고(Decoding), 이것에 대응하는 번역문과 연관성을 찾아서 조합하는 방식으로(Encoding) 자동번역을 시도하는 소스코드를 개발했습니다. 그리고 이것을 “TensorFlow”라는 이름으로 공개했습니다.

이세돌과 알파고의 세기의 대결이 2016년 3월에 열렸으니 바로 그 시점이 NMT가 무대에 등장한 시기입니다.  이어 2016년 하버드 대학교의 NLP (https://nlp.seas.harvard.edu)라는 연구실에서는 교수 및 학부생과 대학원생들은 OpenNMT라는 머신러닝 알고리즘을 개발하여 공유합니다. 구글이나 네이버의 파파고 자동번역의 품질이 급속도로 좋아지기 시작한 것도 이때부터입니다.

이 외에도 아마존, 페이스북, 마이크로소프트, 그리고 한국의 네이버나 중국의 바이두와 같은 기업에서 이를 수정 그리고 보완한 소스를 개발하여 자체적으로 활용하거나, 오픈소스로 공유하고 있습니다. 이상의 코드는 대부분 Gutbhub이라는 개발자들이 소스 코드를 공유하는 사이트에 가서 검색하면 자세한 설명과 함께 다운로드해서 설치할 수 있습니다. (https://github.com) 파이떤(Python 파이썬 아님)이라는 프로그래밍 언어 초∙중급 실력자 정도라면 누구나 설치할 수 있습니다. 제가 파이떤을 공부하게 된 계기도 바로 이것입니다.

자, 그럼 이들은 왜 이렇게 소스를 공개할까요? 그리고 이러한 소스들은 누구나 받아서 설치하기만 하면 바로 자동번역이 가능해 질까요?

진짜 문제는 여기서부터 시작됩니다. 이 소스를 활용해서 유의미한 번역 엔진을 만들기 위해서는 수백만 문장을 데이터로 학습시키는 과정이 필요합니다. 알파고를 생각해 보세요. 알파고 역시 엄청난 양의 기존 기보를 끊임없이 학습하면서 최적의 수를 찾아내게 되었지요. 이와 같이 자동 번역 엔진을 개발하기 위해서는 방대한 양의 번역 데이터를 수집하고, 분류하고, 학습 목적에 맞게 정제해서 소스코드에 학습시키는 노하우가 축적되어야 합니다. 이렇게 분류한 데이터를 한 장에 약 2백여만 원 하는 그래픽 카드가 복수로 장착된 컴퓨터에 넣어서 며칠 또는 몇 주씩 연산 작업을 수행합니다. 그리고 테스트한 후 결과가 신통치 않으면 이와 같은 과정을 처음부터 다시 반복합니다.


2. 자동번역에 대한 의문점들_feat.자동번역에 관한 허와 실
자, 이제 시중에 떠도는 NMT에 관한 몇 가지 의문에 대해서 정리할 수 있겠습니다.

우선 “우리 회사는 자체적으로 인공지능 자동번역을 개발하여…. “라고 말하는 회사가 있다면, 그 회사가 자체적으로 소스코드를 개발했는지를 물어보세요. 그 회사가 구글이거나 아마존, 혹은 한국의 네이버나 인터넷 진흥원과 같은 규모의 기관이 아니라면 자동번역 소스 자체를 개발했다는 말은 거짓말일 확률이 크거나 설령 진짜라 하더라도 볼품없는 수준일 것입니다. 실제로 세계적인 규모의 이름있는 로컬리제인션 회사조차 오픈소스를 응용해서 학습시켰다는 말을 공개적으로 하고 있는 상황이니까요.

둘째, 그 회사가 어느 정도의 데이터로 어떤 언어쌍을 학습시켰는지를 확인해야 합니다. 참고로 국내 최대 분량의 휴먼 번역물을 납품하는 렉스코드에서조차, 학습하는데 필요한 법률, 기계, 특허, 인문 등 분야별 데이터를 언어별로 100% 충분히 확보하는 데 어려움을 겪고 있습니다. 앞서 언급한 바와 같이 자동번역을 학습시키기 위해서는 백만 문장 이상의 수준 높은 번역 데이터가 필요합니다. 백만 문장을 수준 높게 번역하기 위해서는 수 십억 원 이상의 비용이 들고, 온갖 방법으로 데이터를 수집해서 정련하는데도 수 억 원의 예산이 소요됩니다. 그리고 연간 최소 1억 원 이상이 소요되는 전담 연구 개발 인력을 유지할만한 규모를 갖추고 있어야 합니다. 어느 경우든 조악한 데이터로 학습된 컴퓨터는 절대 원본의 수준을 넘는 번역을 스스로 만들어내지 못한다는 점을 기억하셔야 합니다.

셋째, 그 어떤 자동번역 시스템을 도입하더라도 그것은 바로 운전할 수 있는 자동차가 아닙니다. 이제 막 걸음마를 뗀 어린이와 같다고 생각해야 합니다. 이 어린이는 향후 수년간 방대한 양의 데이터를 끊임없이 읽고 학습해야지만 성장할 수 있을 것입니다.

마지막으로 이렇게 자동 번역 솔루션이 완성이 되었다고 하더라도 번역의 정확도를 위해서는 인간에 의한 포스트 에디팅이 필수적입니다. 자동 번역이 제공하는 장점은 대량의 문서를 아주 빠른 시간에 번역할 수 있다는 것이지, 사람보다 정확하게 번역할 수 있다는 것이 아닙니다. 그 이유는 언어는 인간이 1차적으로 생성하고 있는 정보를 담고 있기에 기술이 아무리 발전한다고 하더라도 근접하게 따라올 수 있을지언정, 적어도 현재의 기술 수준으로는 인간만큼 인간의 언어를 정확하게 이해할 수 없다는 한계를 갖고 있습니다.

이 말이 믿기지 않는다면, 이제 여러분이 직접 눈으로 확인할 차례입니다. 상업적으로 가장 진화된 자동번역 사이트인 구글이나 파파고에 가셔서 “오늘 저녁 육회 쏠게!”를 입력해 보세요. 만약 결과가 여러분 기대대로 나온다면,

“I’ll treat you the marinated sweet raw beef this evening!”



렉스코드 대표 함철용
yham@lexcode.com

전체 2

  • 2019-11-08 21:25

    바이두 번역에서는 정확히 번역되고 있네요.

    https://fanyi.baidu.com/#kor/zh/%EC%98%A4%EB%8A%98%20%EC%A0%80%EB%85%81%20%EC%9C%A1%ED%9A%8C%20%EC%8F%A0%EA%B2%8C

    今天晚上我请生拌牛肉.
    오늘 저녁 나는 한턱낸다 생으로버무린 우육

    오늘 저녁이라는 것이 글쓴 날 저녁을 얘기하나요?


    • 2019-11-12 10:34

      바이두를 필두로 중국어 자동번역 기술도 점차 정확해지고 있습니다.
      하지만 "今天晚上我请生拌牛肉。" 문장은 '오늘 저녁에 육회를 쏠께'라는 의미 전달이 되지만 문법상으로는 조금 부자연스럽긴 합니다!
      "今天晚上我请你吃生拌牛肉。" 请 뒤에 대상인 你(너)를 넣고 '먹다'라는 의미인 吃를 넣어주면 보다 자연스러운 문장이 됩니다! ^^
      앞으로 더욱 발전할 자동번역의 놀라움을 다시 한번 느낄 수 있었습니다. 감사합니다! ^^


전체 233
번호 썸네일 제목 작성자 작성일 추천 조회
233 자동번역, 렉스코드가 한 방에 정리해주마!
자동번역, 렉스코드가 한 방에 정리해주마!
자동번역, 렉스코드가 한 방에 정리해주마! (2)
렉스코드 | 2019.11.01 | 추천 3 | 조회 970
렉스코드 2019.11.01 3 970
232 보통의 존재
보통의 존재
보통의 존재
렉스코드 | 2019.11.01 | 추천 1 | 조회 137
렉스코드 2019.11.01 1 137
231 1년 전 나에게 쓰는 편지
1년 전 나에게 쓰는 편지
1년 전 나에게 쓰는 편지
렉스코드 | 2019.11.01 | 추천 1 | 조회 113
렉스코드 2019.11.01 1 113
230 나를 선택하게 하는 힘
나를 선택하게 하는 힘
나를 선택하게 하는 힘
렉스코드 | 2019.11.01 | 추천 1 | 조회 100
렉스코드 2019.11.01 1 100
229 [미생일기]  “오늘 하루도 고생 많았습니다!”
[미생일기]  “오늘 하루도 고생 많았습니다!”
[미생일기] “오늘 하루도 고생 많았습니다!”
렉스코드 | 2019.11.01 | 추천 2 | 조회 105
렉스코드 2019.11.01 2 105
228 “PM님, 이러다 아랍어 읽으시겠어요!”
“PM님, 이러다 아랍어 읽으시겠어요!”
“PM님, 이러다 아랍어 읽으시겠어요!” (2)
렉스코드 | 2019.10.02 | 추천 6 | 조회 2094
렉스코드 2019.10.02 6 2094
227 당신의 소비에는 이유가 있다.
당신의 소비에는 이유가 있다.
당신의 소비에는 이유가 있다.
렉스코드 | 2019.10.02 | 추천 5 | 조회 264
렉스코드 2019.10.02 5 264
226 내 삶의 1등석
내 삶의 1등석
내 삶의 1등석
렉스코드 | 2019.10.02 | 추천 3 | 조회 226
렉스코드 2019.10.02 3 226
225 번역회사 다니는데요, 번역사는 아닙니다.
번역회사 다니는데요, 번역사는 아닙니다.
번역회사 다니는데요, 번역사는 아닙니다.
렉스코드 | 2019.10.02 | 추천 3 | 조회 322
렉스코드 2019.10.02 3 322
224 내가 그동안 여행을 떠나지 못했던 이유
내가 그동안 여행을 떠나지 못했던 이유
내가 그동안 여행을 떠나지 못했던 이유 (1)
렉스코드 | 2019.10.02 | 추천 2 | 조회 254
렉스코드 2019.10.02 2 254
223 퇴사하는 신입사원과 점심 같이 먹었어요.
퇴사하는 신입사원과 점심 같이 먹었어요.
퇴사하는 신입사원과 점심 같이 먹었어요. (3)
렉스코드 | 2019.08.29 | 추천 4 | 조회 3803
렉스코드 2019.08.29 4 3803
222 커스텀하세요, 당신의 편집
커스텀하세요, 당신의 편집
커스텀하세요, 당신의 편집
렉스코드 | 2019.08.29 | 추천 1 | 조회 367
렉스코드 2019.08.29 1 367