지난 시간에 파파고 API를 사용하여 번역을 하였는데 일부 고유명사의 경우 한글로 번역이 안되는 결과를 볼 수 있었다.
trans = get_translate("Skt")
trans

이러한 경우에만 영어 발음 그대로 자모단위 필터링을 해주려고 한다. (예시- 에스케이티)
import re
def simple_filter(input_text):
ENGS = ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k',
'K', 'l', 'L',
'm', 'M', 'n', 'N', 'o', 'O', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w',
'W', 's', 'S', 'y', 'Y', 'z', 'Z']
KORS = ['에이', '에이', '비', '비', '씨', '씨', '디', '디', '이', '이', '에프', '에프', '쥐', '쥐', '에이치', '에이치', '아이', '아이', '제이',
'제이',
'케이', '케이', '엘', '엘', '엠', '엠', '엔', '엔', '오', '오', '피', '피', '큐', '큐', '알', '알', '에스', '에스', '티', '티', '유',
'유', '브이', '브이',
'더블유', '더블유', '에스', '에스', '와이', '와이', '지', '지']
trans = dict(zip(ENGS, KORS)) # 영어와 한글을 대칭하여 딕셔너리화
is_english = re.compile('[-a-zA-Z]') # 영어 정규화
temp = is_english.findall(input_text) # 함수에 들어오는 인자가 영어가 있는경우 temp에 삽입
result_trans = []
if len(temp) > 0: # 영어가 temp에 존재하는 경우
result_trans = ''.join([trans[i] for i in temp]) # 영어를 한글자씩 한글로 매칭
return result_trans # 매칭된값 리턴
else:
return None
발음 그대로 표기하여 매칭해주는 부분이다.
a = simple_filter("SKT")
a

확장
파파고 API를 사용하는데 고유명사 등 처리가 안될경우 그 부분만 번역을 해주어 리턴해주는 방법을 고안
파파고 API는 무료버전을 사용
import requests
def get_translate(text):
client_id = "" # <-- client_id 기입
client_secret = "" # <-- client_secret 기입
data = {'text' : text,
'source' : 'en',
'target': 'ko'}
url = "https://openapi.naver.com/v1/papago/n2mt"
header = {"X-Naver-Client-Id":client_id,
"X-Naver-Client-Secret":client_secret}
response = requests.post(url, headers=header, data=data)
rescode = response.status_code
if(rescode==200):
send_data = response.json()
trans_data = (send_data['message']['result']['translatedText'])
return trans_data
else:
print("Error Code:" , rescode)
def start_trans(input_text):
ENGS = ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k',
'K', 'l', 'L',
'm', 'M', 'n', 'N', 'o', 'O', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w',
'W', 's', 'S', 'y', 'Y', 'z', 'Z']
KORS = ['에이', '에이', '비', '비', '씨', '씨', '디', '디', '이', '이', '에프', '에프', '쥐', '쥐', '에이치', '에이치', '아이', '아이', '제이',
'제이',
'케이', '케이', '엘', '엘', '엠', '엠', '엔', '엔', '오', '오', '피', '피', '큐', '큐', '알', '알', '에스', '에스', '티', '티', '유',
'유', '브이', '브이',
'더블유', '더블유', '에스', '에스', '와이', '와이', '지', '지']
trans = dict(zip(ENGS, KORS))
papago_trans = get_translate(input_text) # 파파고로 번역 데이터 보내기
is_english = re.compile('[-a-zA-Z]')
temp = is_english.findall(papago_trans) # 파파고에서 번역이 안된 영어 문장이 있다면 temp값 존재
result_trans = []
if len(temp) > 0: # 영어 데이터 존재 유무
result_trans = ''.join([trans[i] for i in temp])
return result_trans # 한글로 번역이 안된 데이터 존재
else:
return papago_trans # 한글로 번역이 잘된 데이터일 경우 그대로 리턴
a = start_trans("SKT")
a

기존에 영어 데이터가 없다면 파파고에서 출력된 값이 출력될 것이고 번역이 안됬다면 매칭된 결과값이 출력될 것이다.
a = start_trans("naver")
a

a = start_trans("SKT T1")
a

숫자 데이터 같은 경우에는 필터링되므로 필터 부분에 적당한 조율을 하면 될것 같다.
다음 편에선 파파고 API의 비동기화를 다뤄보겠다.
지난 시간에 파파고 API를 사용하여 번역을 하였는데 일부 고유명사의 경우 한글로 번역이 안되는 결과를 볼 수 있었다.
trans = get_translate("Skt")
trans

이러한 경우에만 영어 발음 그대로 자모단위 필터링을 해주려고 한다. (예시- 에스케이티)
import re
def simple_filter(input_text):
ENGS = ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k',
'K', 'l', 'L',
'm', 'M', 'n', 'N', 'o', 'O', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w',
'W', 's', 'S', 'y', 'Y', 'z', 'Z']
KORS = ['에이', '에이', '비', '비', '씨', '씨', '디', '디', '이', '이', '에프', '에프', '쥐', '쥐', '에이치', '에이치', '아이', '아이', '제이',
'제이',
'케이', '케이', '엘', '엘', '엠', '엠', '엔', '엔', '오', '오', '피', '피', '큐', '큐', '알', '알', '에스', '에스', '티', '티', '유',
'유', '브이', '브이',
'더블유', '더블유', '에스', '에스', '와이', '와이', '지', '지']
trans = dict(zip(ENGS, KORS)) # 영어와 한글을 대칭하여 딕셔너리화
is_english = re.compile('[-a-zA-Z]') # 영어 정규화
temp = is_english.findall(input_text) # 함수에 들어오는 인자가 영어가 있는경우 temp에 삽입
result_trans = []
if len(temp) > 0: # 영어가 temp에 존재하는 경우
result_trans = ''.join([trans[i] for i in temp]) # 영어를 한글자씩 한글로 매칭
return result_trans # 매칭된값 리턴
else:
return None
발음 그대로 표기하여 매칭해주는 부분이다.
a = simple_filter("SKT")
a

확장
파파고 API를 사용하는데 고유명사 등 처리가 안될경우 그 부분만 번역을 해주어 리턴해주는 방법을 고안
파파고 API는 무료버전을 사용
import requests
def get_translate(text):
client_id = "" # <-- client_id 기입
client_secret = "" # <-- client_secret 기입
data = {'text' : text,
'source' : 'en',
'target': 'ko'}
url = "https://openapi.naver.com/v1/papago/n2mt"
header = {"X-Naver-Client-Id":client_id,
"X-Naver-Client-Secret":client_secret}
response = requests.post(url, headers=header, data=data)
rescode = response.status_code
if(rescode==200):
send_data = response.json()
trans_data = (send_data['message']['result']['translatedText'])
return trans_data
else:
print("Error Code:" , rescode)
def start_trans(input_text):
ENGS = ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k',
'K', 'l', 'L',
'm', 'M', 'n', 'N', 'o', 'O', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w',
'W', 's', 'S', 'y', 'Y', 'z', 'Z']
KORS = ['에이', '에이', '비', '비', '씨', '씨', '디', '디', '이', '이', '에프', '에프', '쥐', '쥐', '에이치', '에이치', '아이', '아이', '제이',
'제이',
'케이', '케이', '엘', '엘', '엠', '엠', '엔', '엔', '오', '오', '피', '피', '큐', '큐', '알', '알', '에스', '에스', '티', '티', '유',
'유', '브이', '브이',
'더블유', '더블유', '에스', '에스', '와이', '와이', '지', '지']
trans = dict(zip(ENGS, KORS))
papago_trans = get_translate(input_text) # 파파고로 번역 데이터 보내기
is_english = re.compile('[-a-zA-Z]')
temp = is_english.findall(papago_trans) # 파파고에서 번역이 안된 영어 문장이 있다면 temp값 존재
result_trans = []
if len(temp) > 0: # 영어 데이터 존재 유무
result_trans = ''.join([trans[i] for i in temp])
return result_trans # 한글로 번역이 안된 데이터 존재
else:
return papago_trans # 한글로 번역이 잘된 데이터일 경우 그대로 리턴
a = start_trans("SKT")
a

기존에 영어 데이터가 없다면 파파고에서 출력된 값이 출력될 것이고 번역이 안됬다면 매칭된 결과값이 출력될 것이다.
a = start_trans("naver")
a

a = start_trans("SKT T1")
a

숫자 데이터 같은 경우에는 필터링되므로 필터 부분에 적당한 조율을 하면 될것 같다.
다음 편에선 파파고 API의 비동기화를 다뤄보겠다.