반원 블로그

[파이썬 레시피 - 웹 활용 입문편] 04. REST API - D. 네이버 파파고 API 본문

2018~/파이선 레시피 웹 활용 입문편

[파이썬 레시피 - 웹 활용 입문편] 04. REST API - D. 네이버 파파고 API

반원_SemiCircle 2019. 6. 22. 15:33

PaPaGo API

파파고는 2가지 번역서비스가 존재합니다.

  • NMT(Neural Machine Translation) : 인공신경망 기반 기계 번역
  • SMT(Statistical Machine Translation) : 통계 기반 기계 번역

각각의 장단점은 직접 확인하시길 바랍니다.

여기서는 NMT만 다루도록 하겠습니다.

기본 예제

해당 가이드는 여기서 확인할 수 있습니다.
https://developers.naver.com/docs/papago/papago-nmt-example-code.md#python

import os
import sys
import urllib.request
client_id = "발급받은ID" # 개발자센터에서 발급받은 Client ID 값
client_secret = "발급받은SECRET" # 개발자센터에서 발급받은 Client Secret 값
encText = urllib.parse.quote("번역할내용")
data = "source=ko&target=en&text=" + encText
url = "https://openapi.naver.com/v1/papago/n2mt"
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request, data=data.encode("utf-8"))
rescode = response.getcode()
if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)

레퍼런스 확인

"얼마나 많은 길이를 번역할 수 있을까?" "다른 언어로 번역하려면?" 등을 확인하려면 레퍼런스(reference)를 확인해야합니다. 아래에서 확인할 수 있습니다.

https://developers.naver.com/docs/papago/papago-nmt-api-reference.md#%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0

메모장 내용 번역

메모내용 가져오고 번역 요청까지

한글내용이 써진 메모 파일(txt)을 번역하여 새로운 메모 파일을 만들어봅시다. 여기서 원본은 source.txt, 번역 파일은 translate.txt로 만들겠습니다. 미리 source.txt를 생성하고 내용을 적어주세요.

일단 잘 가져와져서 번역까지 되는지 확인합니다.

import os
import sys
import urllib.request
client_id = "발급받은ID" 
client_secret = "발급받은SECRET" 

#번역할 메모장 불러오기
with open('source.txt','r',encoding='utf8') as f:
    srcText = f.read()

encText = urllib.parse.quote(srcText)
data = "source=ko&target=en&text=" + encText
url = "https://openapi.naver.com/v1/papago/n2mt"
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request, data=data.encode("utf-8"))
rescode = response.getcode()
if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)

메모장에 내용과 응답데이터는 다음과 같습니다.

#메모장 내용 source.txt
안녕하세요.
저는 반원입니다.
안녕히계세요.

#응답 결과 출력
{"message":{"@type":"response","@service":"naverservice.nmt.proxy","@version":"1.0.0","result":{"srcLangType":"ko","tarLangType":"en","translatedText":"Hello.\nI'm half-won.\nGoodbye."}}}

"translatedText" 이후에 번역된 내용이 있습니다.

응답데이터로 메모파일 생성까지

응답데이터가 JSON형식이므로 변환 후 "translatedText"의 값을 추출합시다. 이후 이 내용을 가진 메모파일을 생성합시다.

import os
import sys
import urllib.request
import json
client_id = "발급받은ID" 
client_secret = "발급받은SECRET" 

#번역할 메모장 불러오기
with open('source.txt','r',encoding='utf8') as f:
    srcText = f.read()

encText = urllib.parse.quote(srcText)
data = "source=ko&target=en&text=" + encText
url = "https://openapi.naver.com/v1/papago/n2mt"
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request, data=data.encode("utf-8"))
rescode = response.getcode()
if(rescode==200):
    response_body = response.read()
    # print(response_body.decode('utf-8'))

    #json 형 변환
    res = json.loads(response_body.decode('utf-8'))
    from pprint import pprint
    pprint(res)

    #파일 생성
    with open('translate.txt', 'w',encoding='utf8') as f:
        f.write(res['message']['result']['translatedText'])

else:
    print("Error Code:" + rescode)

원본 메모파일(source.txt)와 번역하여 생성한 메모파일(translate.txt)의 결과입니다.

#원본 내용 source.txt
안녕하세요.
저는 반원입니다.
안녕히계세요.

#번역 내용 translate.txt
Hello.
I'm half-won.
Goodbye.

처리한도

현재 처리한도는 하루 당 10000글자이니 참고하시길 바랍니다.
https://developers.naver.com/products/nmt/

Comments