Skip to content

고유명사 사전 기호화를 이용한 RNN 한영 번역기

Notifications You must be signed in to change notification settings

eoqkrskfk94/RNN_properNoun_Translator

Repository files navigation

RNN_properNoun_Translator

고유명사 사전 이용 및 숫자 기호화를 통한 한영 번역기

팀원: 김명진(한동대학교), 남준영(한동대학교), 정희석(한동대학교)

설계 핵심 아이디어 요약

현재 이용되고 있는 번역기들은 고유명사를 인식하는데 어려움을 겪고 있다. 본 발명의 목적은 기존의 한/영 번역기에서 “바람과 함께 사라진다” 같은 대명사를 “Gone With The Wind”가 아닌 “Vanish With The Wind”로 번역하는 문제점을 해결하는 것이다. RNN 번역 모델을 만들고 대명사와 고유명사는 토큰으로 변환하고 이 태그를 제외한 나머지 단어들을 번역한 후 마지막으로 대명사/고유명사 한/영 샘플 딕션너리에서 단어를 찾아 번역하는 구조이다.

1. 문제 정의

머신러닝(machine learning)의 발전은 다양한 분야에서 기업의 매출 향상을 위해 사용되고 있으며, 현재도 계속해서 발전해 나가고 있다. 머신러닝의 분야 중 하나인 딥러닝 기술은 사람의 사고방식을 컴퓨터에게 가르치는 기술로서 이전에 인간만이 할 수 있었던 음성인식, 이미지 인식 등에서 널리 사용되고 있다. 특히 몇몇 특정 분야에서는 이미 인간의 수준을 뛰어 넘는 성능을 보이기도 한다. 이에 따라 많은 기업들은 이미 딥러닝을 이용한 번역기 개발을 하고 있으며, 현재 이러한 기술을 활용한 네이버의 파파고(papago.naver.com), 구글 번역기 (translate.google.com), 카카오 아이(translate.kakao.com) 는 많은 사람들이 널리 사용하고 있는 번역 서비스이다.

스크린샷 2020-03-27 오후 2 28 34

딥러닝 기술을 활용한 번역기들은 기존의 번역기 보다 우수한 성능을 보이고 있으나, 몇가지문제점이있다.첫번째로문장내에이름,영화제목과같은 고유명사 번역시 오번역을 하는 문제가 있다. 두 번째로는 한동대학교 내에서 자주 사용하는특정단어를제대로번역해주지못한다.세번째로는문장내에 큰 숫자가 있을 경우, 그 숫자를 종종 다른 숫자로 오번역 하며, 같은 구조의 문장에서 숫자만 바꿔 번역할 때, 문장의 구조가 완전히 바뀌어 번역되는 문제가 나타난다.

문제점의 예시는 다음과 같다. 아래의 번역은 2019년 11월 25일 기준 결과이다.

입력 문장: 어제 조카랑 ‘겨울 왕국’을 봤어.

  • 파파고 번역: I saw ‘Winter Kingdom’ with my nephew yesterday.
  • 구글 번역기: I saw your niece and the Winter Kingdom yesterday.

위 번역 결과는 파파고, 구글 번역기를 사용한 것으로 ‘겨울 왕국(frozen)’을 Winter Kingdom 으로 오번역 하는 문제를 보인다.

2. conceptual design

스크린샷 2020-03-27 오후 2 31 37

사용된 기술:

스크린샷 2020-03-27 오후 2 31 37

3. 고유명사 사전 기호화

숫자 기호화와 비슷한 구조를 가진다. 기본적인 과정은 다음과 같다. 번역 모델이 번역할 때 입력으로 하나의 문장이 들어오면, 문장에 있는 고유명사를 기호화 한다. 번역 후 남아있는 기호를 입력문장에 있는 고유명사를 이용해 고유명사 딕셔너리 사전을 확인한 후 다시 원래 고유명사로 바꾼다.

1. 모델을 학습할 때

(1)인용 부호 ‘ ’로 고유명사 치환 인용 부호안에 들어가 있는 단어를 고유명사로 치환한다. 예를 들어 ‘겨울 왕국'과 같은 경우 일반적인 ‘Winter Kingdom’이 아닌 고유 명사 취급하여 ‘frozen’으로 번역되게끔 한다.

(2)대문자로 된 명사를 고유명사 치환 대문자로 시작하는 명사를 고유명사로 치환한다. 예를 들어 “Kim is a father” 라는 문장이 입력으로 들어오면 대문자로 된 명사를 기호화하여 입력을 “_N2 is a father”로 바꾸고, 그 후 번역 모델로 번역하여 “_N2 는 아빠이다"라는 번역 결과를 얻고, 기호를 고유명사 사전을 통해 바꾸어 “김씨는 아빠이다"라는 최종 번역문을 얻는다.

(3)입력문장 고유명사 classifier 입력문장에서 고유명사를 구별하기 위한 classifier 를 만들어 해당 문장을 번역시 고유명사 classifier 로 고유명사 부분을 찾아 따로 고유명사 dictionary 를 사용해 번역을 한다.

(4)입력문장에서 고유명사가 없을 경우 입력문장에서 고유명사가 없을 경우 모든 명사를 고유명사로 취급한 후 고유명사 사전에 포함되어 있으면 고유명사로 치환, 고유명사 사전에 포함되어 있지 않는 경우 일반 명사로 취급하여 번역한다. 이를 통해 인용 부호나 대문자로 되어있지 않은 고유명사를 찾을 수 있다.

2. 번역할 때

학습이 끝난 후 새로운 문장을 번역 할 때는 학습 데이터를 다룰 때와는 다른 알고리즘을 적용한다. 학습할 때와 달리 입력 문장만 주어지기 때문에 입력 문장의 고유명사를 기호화하고, 기호화한 문장을 모델을 사용해 번역한다. 나온 번역문의 기호를 다시 원래 고유명사로 치환한다.

4. 실험 순서

  1. Tokenize 진행 (./tokenize.perl)
  2. 고유명사 처리
  3. BPE 및 subwording 작업 (./data_prepare.sh)
  4. 학습하기 (./train.sh)
  5. 학습후 data cleansing (./two_gram_bleu)
  6. 다시 학습
  7. 웹 사용(트랜슬레이션) - 준비물 : 학습된 모델

실제 사용 화면

스크린샷 2020-03-27 오후 2 41 27

해당 번역기는 http://www.aihub.or.kr/ 에서 한국어-영어 번역 말뭉치 데이터(약 160만 문장)를 받아와 해당 데이터에서 제일 흔히 나오는 450의 고유명사를 기호화 하여 학습한 모델로 진행했습니다.

고유명사 기호화를 사용하지 않았을때의 Bleu score: 26.55

고유명사 기호화를 사용했을 때의 Bleu score: 28.48

About

고유명사 사전 기호화를 이용한 RNN 한영 번역기

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published