이 글에서는 파파고 API를 활용해서 문장을 번역해 본다.
순서는 애플리케이션을 등록하고 access token 받기 -> request(한국어 메시지 서버로 보내기) -> response (서버의 응답받기) -> 번역된 text 출력이다.
1. App 등록 - access token 받기
https://developers.naver.com/main/ 로그인 후
Application -> 애플리케이션 등록 클릭
애플리케이션 이름 설정, 사용 API Papago 번역 설정, http://localhost 입력 후 등록하기 클릭
등록했다면 내 애플리케이션에 추가가 됐을 것이고 Client ID와 Client Secret을 확인할 수 있다.
코드 작성시 이 정보를 사용해야 정상적으로 서버에 요청을 보내고 응답을 받을 수 있다.
# 사용할 라이브러리 import, 정보 등록
import requests
import json
CLIENT_ID, CLIENT_SECRET = '(MY Client ID)', '(MY Client Secret)'
(MY Client ID), (MY Client Secret) 부분에 위에서 발급 받은 정보를 입력해준다.
2. 서버에 request
본인의 정보를 등록한 후 API 가이드에 따라 URL, Header, Data를 입력한다.
text = '파이썬은 재미있습니다.'
url = 'https://openapi.naver.com/v1/papago/n2mt'
headers = {
'Content-Type': 'application/json',
'X-Naver-Client-Id': CLIENT_ID,
'X-Naver-Client-Secret': CLIENT_SECRET
}
data = {'source': 'ko', 'target': 'en', 'text': text}
번역할 문장을 입력해주고, url과 header를 입력했다.
Content-Type은 가이드에 써있는대로 하지 않고 이렇게 작성해야한다.
그리고 data에 소스 언어와 타깃 언어를 설정하고 문장을 담아준다.
꼭 영어가 아니어도 en, zh-CN, zh-TW, es, fr, vi 등 다른 언어도 사용할 수 있다.
# post 방식으로 서버 쪽으로 요청
response = requests.post(url, json.dumps(data), headers=headers)
# print(response) # status code : response 200번대가 나오면 성공, 400번대는 실패
데이터에 한글을 쓸 수 없기 때문에 한글을 encoding 해서 전송하기 위해 json.dumps를 사용해야한다.
원한다면 print(response)로 응답을 잘 받았는지 확인해 볼 수도 있다.
3. response 확인
서버로부터 받은 응답을 출력해 보면
print(response.text)
print(type(response.text))
# 실행 결과
{"message":{"result":{"srcLangType":"ko","tarLangType":"en","translatedText":"Python is fun.","engineType":"N2MT","pivot":null,"dict":null,"tarDict":null},"@type":"response","@service":"naverservice.nmt.proxy","@version":"1.0.0"}}
str
dictionary처럼 생긴 문자열을 확인할 수 있다.
json()을 통해 응답을 dictionary로 변경한 후 원하는 데이터 translatedText에 접근하면 번역 결과를 얻을 수 있다.
en_text = response.json()['message']['result']['translatedText']
print(en_text)
# 실행 결과
Python is fun
파이썬은 재미있습니다 -> Python is fun 번역이 잘 되었다.
전체 코드
# papago 번역 API 사용
import requests
import json
# 1. APP 등록 - access token
CLIENT_ID, CLIENT_SECRET = '(MY Client ID)', '(MY Client Secret)'
# 2. request (en 외 언어로 번역도 가능)
text = '파이썬은 재미있습니다.'
url = 'https://openapi.naver.com/v1/papago/n2mt'
headers = {
'Content-Type': 'application/json',
'X-Naver-Client-Id': CLIENT_ID,
'X-Naver-Client-Secret': CLIENT_SECRET
}
data = {'source': 'ko', 'target': 'en', 'text': text}
# post 방식으로 서버 쪽으로 요청
response = requests.post(url, json.dumps(data), headers=headers)
# print(response) # 정상 응답인지 확인
# 3. response(en) -> en_txt
# print(response.text) # 응답 출력 - 내용이 dictionary인 str
# json() 후 key 값을 사용하여 원하는 텍스트 접근
en_text = response.json()['message']['result']['translatedText']
print(en_text)
# 실행 결과 : 파이썬은 재미있습니다 -> Python is fun 번역 완료!
Python is fun
추가적으로 함수를 사용하여 구현해보자
# papago 번역 API 사용 - 함수 활용
import requests
import json
# translate 함수 선언
def translate(text, source='ko', target='en'):
CLIENT_ID, CLIENT_SECRET = '(MY Client ID)', '(MY Client Secret)'
url = 'https://openapi.naver.com/v1/papago/n2mt'
headers = {
'Content-Type': 'application/json',
'X-Naver-Client-Id': CLIENT_ID,
'X-Naver-Client-Secret': CLIENT_SECRET
}
data = {'source': 'ko', 'target': 'en', 'text': text}
response = requests.post(url, json.dumps(data), headers=headers)
return response.json()['message']['result']['translatedText']
# 번역할 문장 입력 후 함수에 전달
text = '파파고 API 실습이 재미있네요.'
en_text = translate(text)
print(en_text)
# 실행 결과
The Papago API practice is fun
'Python' 카테고리의 다른 글
[Python 이메일 발송] 파일 첨부하여 Gmail 보내기 (SMTP) (4) | 2023.01.08 |
---|---|
[예외처리] Exception Handling - try, except, else, finally, raise (0) | 2023.01.07 |
[Python methods] 인스턴스 메소드, 클래스 메소드, 스태틱 메소드 (0) | 2023.01.06 |
[Python 구글 번역기] googletrans 사용해보기 (0) | 2023.01.05 |
[OpenWeatherMap] 날씨 API 사용해보기 (0) | 2023.01.05 |
댓글