๐ŸฆœํŒŒํŒŒ๊ณ  api๋ฅผ ์ด์šฉํ•œ ๋ฒˆ์—ญ ํ”„๋กœ๊ทธ๋žจ (with. ํŒŒ์ด์ฌ pandas)

์ง€๋‹ˆ๋ฐ•๋ฐ•๊ตฌ๋ฆฌยท2021๋…„ 4์›” 9์ผ
0
post-thumbnail

๐Ÿฆœ ๋“ค์–ด๊ฐ€๊ธฐ ์ „, ์ž๋ฌธ ์ž๋‹ต!

Q1. ์™œ ๋ฒˆ์—ญ api๋ฅผ ์‚ฌ์šฉํ–ˆ๋‚˜์š”?

ํ•™๋ถ€์ƒ์œผ๋กœ ์ง„ํ–‰์ค‘์ธ ์—ฐ๊ตฌ์—์„œ
๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” csv ํŒŒ์ผ์˜ ์ผ๋ถ€๋ฅผ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•ด์•ผํ•˜๋Š” ์ผ์ด ์ƒ๊ฒผ๋‹ค!

Q2. ์™œ ํŒŒํŒŒ๊ณ  api๋ฅผ ์„ ํƒํ–ˆ๋‚˜์š”?

์ฒ˜์Œ๋ถ€ํ„ฐ ํŒŒํŒŒ๊ณ ๐Ÿฆœ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค..!
ํŒŒ์ด์ฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” googletrans ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ๊ณ„์† ๊ฐ™์€ ์˜ค๋ฅ˜ ๊ฐ€ ๋‚˜์™€ ์ง„ํ–‰์ด ์–ด๋ ค์› ๋‹ค.

2์ผ์„ ๊ตฌ๊ธ€๋งํ–ˆ๋˜ ์˜ค๋ฅ˜ :
googletrans attributeerror 'nonetype' object has no attribute 'group'

๊ฐ™์ด ๊ณ ์ƒํ•œ ์ง€ํ˜ธ ์–ธ๋‹ˆ ..๐Ÿ˜ญ

์ฐจ์„ ํƒ์œผ๋กœ ๊ตญ๋‚ด์—์„œ ์ œ์ผ ์œ ๋ช…ํ•œ ๋ฒˆ์—ญ๊ธฐ์ธ ํŒŒํŒŒ๊ณ ์˜ api๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.


๐Ÿฆœ Open API ์ด์šฉ ์‹ ์ฒญ

ํŒŒํŒŒ๊ณ  api ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ ๋ฒˆ์—ญ api๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๊ณ  ์‹ ์ฒญ์„œ๋ฅผ ์ œ์ถœํ•ด์•ผํ•œ๋‹ค.

์ด์šฉ์‹ ์ฒญ ๋งํฌ :
https://developers.naver.com/apps/#/register?api=ppg_n2mt

๊ฐ„๋‹จํ•œ ์–‘์‹์„ ์ ๊ณ  ๋‚˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด
๋‚ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์•„์ด๋””์™€ ํ‚ค๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.



๐Ÿฆœ ํŒŒ์ด์ฌ ์ฝ”๋“œ ์ž‘์„ฑ

1. ํŒ๋‹ค์Šค๋กœ csv ์ฝ์–ด์˜ค๊ธฐ

import pandas as pd

df1 = pd.read_csv("ํŒŒ์ผ ๊ฒฝ๋กœ")
print(df1.shape)
df1.head()

2. ๋ฒˆ์—ญํ•˜๊ณ ์‹ถ์€ ์ปฌ๋Ÿผ -> ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค๊ธฐ

c_list = df1['๋ฒˆ์—ญํ•˜๊ณ ์‹ถ์€ ์ปฌ๋Ÿผ'].tolist()

3. ๋ฒˆ์—ญ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์„ ๋นˆ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ

c_result_list = []

4. apiํ˜ธ์ถœ๋กœ c_list ๋ฒˆ์—ญ ๊ฒฐ๊ณผ c_result_list์— ๋‹ด๊ธฐ

import os
import sys
import json
import urllib.request
client_id = "๊ฐœ๋ฐœ์ž์„ผํ„ฐ์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ Client ID ๊ฐ’"
client_secret = "๊ฐœ๋ฐœ์ž์„ผํ„ฐ์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ Client Secret ๊ฐ’"

for i in range(len(c_list)) :
  encText = urllib.parse.quote(c_list[i])
  data = "source=en&target=ko&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):
    res = json.loads(response_body.decode('utf-8'))
    result = res['message']['result']['translatedText']
    c_result_list.append(result)
  else:
      print("Error Code:" + rescode)

for ๋ฌธ์œผ๋กœ c_list์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณตํ•œ๋‹ค!

encText ๋ณ€์ˆ˜์— ๋ฒˆ์—ญํ•˜๊ณ ์‹ถ์€ ๊ธ€์ž๋ฅผ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.
๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค๋ฅผ for๋ฌธ์œผ๋กœ ๋‹ค ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.

if๋ฌธ ์•ˆ์ด ์ค‘์š”ํ•œ๋ฐ
response ๋ฐ›์€ ๊ฒฐ๊ณผ๋ฅผ c_result_list์— ๋„ฃ๋Š”๋‹ค.







์ฐธ๊ณ 
https://developers.naver.com/products/papago/nmt/nmt.md

profile
ํ‚น์™•์งฑ DevOps Engineer๊ฐ€ ๋˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€