공일
[python] 번역기 만들기 (파파고 API 신청 하기) 본문
반응형
번역을 자주 해야 할 일이 있는데 매번 파파고에서 번역하기가 귀찮아 이번 기회에 번역기를 만들어 보려고 한다.
1. 파파고 오픈 API 신청하기
첫 번째로 해야 할 일은 NAVER Developers에서 파파고 오픈 API를 신청하는 것이다.
Naver Developers에서는 Papago번역 외에도 검색, 네이버 로그인, 회원 프로필 조회 등 다양한 오픈 API를 제공하고 있다.

아래와 같이 '애플리케이션 이름', '사용 API', '비로그인 오픈 API 서비스 환경'을 입력해 주고 등록하기를 눌러주면 클라이언트 ID가 바로 생성된다. 예전에 트위터 API발급 과정에 비해 비교적 빠르고 간편하다.


2. 파이썬 예제 코드
Document > 파파고 > Papago 번역 에서 언어별 번역 API 예제를 확인할 수 있다.

네이버에서 제공하는 파이썬 API 코드 예제
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)
3. 활용
한글 -> 영어, 영어 -> 한글 두가지 종류의 번역기를 만들어서 테스트를 진행했다.
# papago python 구현 예제
import os
import sys
import urllib.request
import json
from pprint import pprint
# 바탕화면에 저장된 메모장에서 client id, pw 가져오기
# labels에 id, pw가 리스트 형태로 저장
file_path = '/Users/USER/Desktop/papago client.txt'
labels = open(file_path).read().splitlines()
client_id = labels[0] # 개발자센터에서 발급받은 Client ID 값
client_secret = labels[1] # 개발자센터에서 발급받은 Client Secret 값
def ToEn (koText) :
encText = urllib.parse.quote(koText)
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()
result = response_body.decode('utf-8')
d = json.loads(result)
print('--- Korean to English --- ')
print('번역전 : ', koText)
print('번역후 : ',d['message']['result']['translatedText'])
else:
print("Error Code:" + rescode)
def ToKo (egText) :
kocText = urllib.parse.quote(egText)
data = "source=en&target=ko&text=" + kocText
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()
result = response_body.decode('utf-8')
d = json.loads(result)
print('--- English to Korean --- ')
print('번역전 : ', egText)
print('번역후 : ',d['message']['result']['translatedText'])
else:
print("Error Code:" + rescode)
3-1) 테스트
from papago import ToEn, ToKo
ToEn('오늘부터 블로그를 시작하려고 합니다. 잘 부탁 드립니다.')
ToKo('This is the last post in an overview series on experimentation at Netflix')
3-2) 결과
--- Korean to English ---
번역전 : 오늘부터 블로그를 시작하려고 합니다. 잘 부탁 드립니다.
번역후 : I'm going to start my blog today. I look forward to your kind cooperation.
--- English to Korean ---
번역전 : This is the last post in an overview series on experimentation at Netflix
번역후 : 이것은 넷플릭스의 실험에 대한 개요 시리즈의 마지막 게시물이다.
반응형
'프로그래밍 > Python' 카테고리의 다른 글
| [python] 내 최애 생일카페 지도 시각화_(2탄. 시각화) (0) | 2022.07.30 |
|---|---|
| [python] 내 최애 생일카페 지도 시각화_(1탄. 자료수집 및 크롤링) (0) | 2022.07.30 |
| [python] 기사 요약 (feat. summa) (0) | 2022.05.13 |
Comments