반원 블로그

9. Naver Developer api(3) - Papago NMT API, 인공신경망 번역 본문

2018~/Python Skill Up

9. Naver Developer api(3) - Papago NMT API, 인공신경망 번역

반원_SemiCircle 2019. 9. 6. 10:27

개요

  • 네이버에서 제공하는 인공신경망 번역인 Papago NMT 서비스를 이용해본다.
  • NMT(Neural Machine Translation) : 인공신경망 기반 기계 번역, 링크
  • SMT(Statistical Machine Translation) : 통계 기반 기계 번역. 링크

같이 읽으면 좋은 글

제공되는 기본 예제

  • 가이드 링크 참고
  • urllib으로 작성되어있다. 이후 requests로 고칠 예정
  • urllib을 사용했기때문에 요청 매개변수(여기선 data변수)가 문자열로 작성되고 있다. 나중에 data 변수에 dict형으로 고칠 예정
  • add_header로 헤더를 삽입하고 있다. requests 모듈은 헤더를 딕셔너리로 만들기때문에 이 부분도 고칠 예정.
  • 예제 맨 아래줄인 print("Error Code:" + rescode) 는 틀린 코드다. rescode는 int형이라 해당 줄은 에러가 발생한다.
import os
import sys
import urllib.request
client_id = "YOUR_CLIENT_ID" # 개발자센터에서 발급받은 Client ID 값
client_secret = "YOUR_CLIENT_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)

위 코드에서 나온 urllib 모듈 설명

  • urllib.parse: URL 해석·조작 기능을 담은 모듈

  • urllib.request: HTTP 요청 기능을 담은 모듈

  • urllib.request.urlopen() 함수 : 웹 서버에 정보를 요청 후, 돌려받은 응답을 저장. 응답 객체(HTTPResponse) 반환.

  • urllib.parse.quote() 함수 : 기본적으로 url에 한글을 적을 수 없으므로 퍼센트 인코딩 방식을 거치게된다. requests 모듈은 이를 알아서 해준다.

requests 모듈로 코드 변경

  • api 레퍼런스를 보면 post방식 요청이다.
import os
import sys
#import urllib.request
import requests

client_id = "YOUR_CLIENT_ID" # 개발자센터에서 발급받은 Client ID 값
client_secret = "YOUR_CLIENT_SECRET" # 개발자센터에서 발급받은 Client Secret 값

# encText = urllib.parse.quote("반갑습니다")
encText = '반갑습니다'
# data = "source=ko&target=en&text=" + encText
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)
headers = {'X-Naver-Client-Id':client_id,'X-Naver-Client-Secret':client_secret}

# response = urllib.request.urlopen(request, data=data.encode("utf-8"))
response = requests.post(url, data=data, headers=headers )

# rescode = response.getcode()
rescode = response.status_code
print(response.url)

if(rescode==200):
    # response_body = response.read()
    # print(response_body.decode('utf-8'))
    print(response.text)
else:
    # print("Error Code:" + rescode) 
    print("Error Code:", rescode)

Comments