티스토리 뷰

오늘날 자동번역기술이 상당한 수준에 이르렀습니다. 그중 딥러닝 기술을 활용한 자동번역(Machine Translation) 기술이 최근 개발자들에게 널리 소개되기도 했지만, 불과 얼마전까지도 우리들은 확률에 기반한 머신러닝 기술로 만들어진 자동번역기를 편리하게 이용했었습니다.

이 발표는 확률에 기반한 머신러닝 알고리즘을 구현하여 일종의 자동번역기를 만드는 방법에 대해 소개합니다.

이 자동번역기는 로마자(알파벳)로 입력한 문자열을 한글 문자열로 변환하여 출력합니다. (ex. Obama => 오바마) 얼핏 머신러닝 기술 없이도 rule-base 로 만들 수 있을 것 같지만, rule-base 로 해결하기 어려운 문제점들이 있습니다.

첫째, "hangul", "hangeul", "hanguel" 등 여러가지 경우를 모두 "한글" 이라고 출력해야 합니다. rule-base 로 이런 경우를 모두 코딩해주는 것보다 머신러닝을 통해 패턴을 학습하는 것이 더 효율적이고 정확합니다.

두번째는 "Obama" 를 "오(o)바(ba)마(ma)" 라고 읽지 않고 "오(o)밤(bam)아(a)" 또는 "옵(ob)아(a)마(ma)" 라고 읽는 것처럼 출력하는 오류가 발생할 수 있습니다. 알파벳 문자열 "obama" 를 캐릭터 배열로 분리한 후 확률모델에 의해 오(o),바(ba),마(ma) 라고 다시 조합할 방법이 필요합니다.

이런 문제들을 해결하기 위해 자동번역기는 머신러닝 알고리즘을 이용합니다. 이 발표는 자동번역기를 만들기 위해 필요한 머신러닝 알고리즘을 소개하고 구현하는 데 중점을 두고 소개합니다.

소개될 자동번역기는 해외 K-pop 팬들을 위해 만들어진 로마자로 변환된 K-pop 노래 가사들을 활용해서 학습시켰는데, 그 학습 과정 또한 소개합니다. 그렇게 만들어진 번역기는 웹 인터페이스와 함께 사용자가 직접 임의 문자열을 입력하고 결과를 확인할 수 있는 형태로 데모할 예정입니다.

 

https://www.pycon.kr/program/talk-detail?id=117

 

 

 


프로그램 시연

영어를 치면 해당 발음과 가장 유사한 한국어를 표시해준다.

 

 

문제

접속

예전에는 프로그램을 사용할 때 무척 오류가 많았다.

그리고 외국에 나가면 한글을 쓰지 못하는 무문제도 빈번히 발생.

 

예전에 영화한편 소개. The Connect

채팅할 때 한글 입력이 안된다면?

지금은 oo이라고 했겟지만 당시에는 영어로만 했었어야 했다.

 

현실적인 방법은 발음나는 데로 쓰는 것.

강사는 이런식으로 이메일을 쓴 적도 있어.

 

구글 인풋툴

구글에서 해당 기능을 지원한다. 그런데 한글을 지원하지 않음.

그래서 만들게 된 프로그램이다.

 

 


 

MT Basics

Machine Translation Pyramid

번역하는 단계를 도식화한 이미지.

 

direct Translation

단어에 대한 하나 하나 번역하여 나열하는 방식.

어순이 다르면 번역이 이상하게 된다.

그리고 의미가 다른 단어를 구분하지 못함.

가장 간단한 방식의 번역

 

interlingual translaion

언어 분석에 해당.

입력한 단어나 문장에 대해 타켓언어로 번역.

 

Transfer Based Translation

언어의 소스 언어를 분석.

이를 타겟언어로 변환.

언어의 구조는 다시 3개로 나뉨

 

 

하단의 워드베이스의 경우 매칭되는 언어로 바꾸어고 순서를 바꾸어는 것.

중간의 프레이스 베이스는 조건부 확률로 단어를 매칭하는 것.

상단의 문법 구조는 파싱하여 서브쿼리로 트랜스퍼하는 것

 

이중 가장 낮은 단계의 워드베이스 단계를 소개.

얼마나 원시적인 것이니지는 역사를 보면 알 수 있어,

 

역사

88년에 IBM이 처음으로 개발. 

그러다 2013년 번역기반 논문이 발표.

2013녀이면 딥러닝 연구가 활발해질 시점.

2015년 번연기를 전부 대체함. 굉장히 짧은 시간에 활발히 연구된것.

참고로 카카오고 2016년에야 제품으로 출품.

88년 부터 연구결과를 내놓은 후 좋은 결과가 없이 많은 시간이 듬.

한 때, 연구소 편딩이 끈겨 연구불가 상태.

그런데 핵심 기술은 18세기까지 거슬러 올라감.

 

Noisy Channel 

통신상의 암호화 복호화 기술. 이게 한참 지나서 머신트렌싱레이션으로 발전함.

굿 모닝하고 보내면 해당 나라의 언어로 번역.

 

파란 상자의 알바벳은 문장을 의미. 소문자는 한 단어.

해당 기호가 지금은 일반적으로 사용되는 고정 문자.

소스언어가 입력되면 확률모형은 조건부 확률이 된다. P(f|e)

여기서 구하고자 하는 것은 아래의 P(e|f)이다.

 

SMT System

 

공식은 argmax_e P(e) P(f|e)로 나옴.

- P(e) : 언어 모델, 번역의 유창함, 영어 E하나만 있으면 됨

- P(fe) : 번역 모델, 번역기의 정확도, F,E가 쌍으로 필요

- Decoder : 훈련 모델과 검증 모델을 가지고 결과의 정확도를 비교 분석하여 가장 좋은 결과를 출력

 

예시 이미지

처음 가장 좋은 결과는 가장 아래에 있는 것.

그리고 보정을 해준 결과 최종 결과물은 'Hungry I am so'로 나옴.

 


 

SMT Component

Language Model

 

i'm 다음에 나올 단어의 확률은 어떻게 될까?

저 확률을 구하려면 I am이 출현하는 빈도로 나누면 된다.

 

문장 전체에 대한 확률도 구할 수 있다.

언어 모델이란 여러 단어를 받고 가장 적절한 단어를 출력하는 기능.

스펠링 체크, 검색엔진, 번역 추천 등 다양한게 사용 가능.

 

 

단어 조합을 전부 계산할 수는 없다.

마코브 에쌤션을 사용하면 보다 계산을 줄일 수 있다.

긴 조건에 대한 i워드에 대한 확률은 바로 이전 단계의 확률로 계산 가능.

 

전체 시퀀스에 대한 확률을 구하려면 아래와 같은 계산을 사용.

확률을 고르게 분포하기 위해 시작과 끄틀 표시하는 <s>라는 테그를 사용.

 

----

 

translation 모델

주어진 영엄문장에서 가장 가까운 프랑스 언어를 출력하는 기능.

입력 단어와 얼마나 잘 매칭되는지 계산.

굿 모닝이 해당 단어와 매칭이 되었는지 조건부 확률을 구하는 것.

 

문제는 언어마다 어순이 다르다. 영어에서 6단어이지만 프랑스어에는 7단어가 될 수 있다.

일단 정렬문제부터 해결해야 한다.

 

누군가 레이블링 작업을 해야 하는데, 너무 분량이 많다.

이것을 해결한 것인 EM알고리즘.

치킨과 계란 게임같은 것. 어느 것이 먼저인지 모름.

가장 확률이 높은 것을 비지도학습으로 분석.

 

처음에는 모르지만 분석이 될수록 관계가 굵어짐.

 

관련 코드 예시

 

---

 

디코더

검색하는 것.

확률이 가장 큰 문장을 찾아내는 것

모델을 통해 얻어낸 타켓언어의 단어 사잉에 엣지를 연결

가장 자연스러운 조합으로 연결.

굉장히 어려운 문제.

 

디코딩은 아웃풋이 바로나와야 하는데 속도에 민감하다.

해결법이 다이나믹 프로그래밍.

 

빅터비 언어 : 스테이트가 고정되어야 한다.

beam 탐색도 있어. 전부 검색하는 것이 아니라 가장 좋은 핸들링 데이터를 검색.

스태틱 코디을 구현.

 

 

-----

 

Ro-Ko transratlation

한글 특성에 대한 내용은 생략

 

romanization 

한글을 소리나는데로 영문으로 쓰는 것을 의미.

 

Back-romanization

위의 반대

 

목표

로만 어어와 가장 매칭이 좋은 한글어로 다시 쓰는 것.

 

한글이라고 쓰면 영어로 여러개를 쓸 수 있어. 한글만해도 3가지로 쓸 수 있어.

너무 많은 코딩이 필요한 문제. 

세그멘테이션 문제

칸막이라고 쓰면 칸마기 vs 칸막이 둘중 어느거이 맞는가?

한글 모델에 대한 문제

 

정렬

처음에는 자음 모음을 분리하고 다시 합치려 했는데

 

 

 

사실 이런 기능을 몇 년전에 만들었어.

우니나라 언어를 영어로 소리나는데로 쓴 자료가 없어.

얼마전에 k-pop 자료를 찾아서 다시 분석 시작.

1만여개 정도의 노래를 참고자료.

12만개의 유니크한 언어 자료 얻음.

이걸로 훈련에 사용.

 

이걸로 프로그램을 만들어서 배포하고 있어

 

 

 

----

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함