번역하는 기능은 여러므로 쓸만 한다. 즉 현장에서 수리내역을 입력 할 때, 내역이 정리가 잘 되지 않는 경우가 있다. 그럴 때, 매우 쓸만 하다.
번역기능은 변역 기능에서 문장을 정리하여 주는 기능이 있기 때문에, 매우 유용하다.
아래는 kakao API를 이용해서, 변역을 한것이다.
첫번째, 아래와 같이 kakao 개발자 페이지에 가서 API를 다운 받는다.
https://developers.kakao.com
카카오 API 받기 |
카카오 로그인 후에 내 애플리케이션 -> 애플리케이션 추가하기 클릭 하면, 카카오 API를 받을 수 있다.
두번째, 로그인 된 상태에서 아래를 클릭 하여, 테스트를 해본다.
https://developers.kakao.com/tool/rest-api/open/get/v2-translation-translate
API 테스트 |
API 테스트가 끝나면, 아래의 요청 코드 예시 (URL)을 일부 발췌하여, 아래의 코드와 같이 만든다.
세번째 kakap API를 활용한 변역 한다.
구글 드라이브에 공유된 파일을 아래의 코드를 이용해서 가져온다.
# 라이브러리 불러오기
library(readxl)
library(httr)
library(stringr)
# 파일을 불러오는 path를 url 변수로 정의
url = "https://drive.google.com/u/0/uc?id=1O280S2GILbNKIQfqrv0id9kgjHsLhux_&export=download"
GET(url, write_disk(tf <- tempfile(fileext = ".xlsx")))
tf를 정의한 tempfile을 데이터 프레임으로 가져온다.
system.time( df <- read_excel(tf, 1L))
# 텍스트 내역 보기
head(df)
## # A tibble: 6 × 1 ## 텍스트 ## <chr> ## 1
배출
콘베어 진입 정지 작동 불능 ## 2 집진기 퍼징 V/V AIR 누기부분 수정 수리 5월 점검 ## 3 255B 진수전 엔진룸,FLAP GATE 작동불량 수리,점검 ## 4 구동 MOTOR 단자 전선 열화로 전선 교체 및 제어 전선 단자 BOX ## 5 훅크 주유및 볼트 체결 상태 점검작업 7대 동일 작업 ## 6 A,C LINE C/T측 경광등 파손 경광등 설치 작업
데이터 가져오고, 내역을 본다. 우리가 목표로 하는 것은 앞의 빨간 글자 "배출"이다. 문장 전체를 할 수 있지만, 단어 단위로 하는 것이 정리가 잘된다.
# 텍스트 데이터 가져오기
i =1
text <- df$텍스트[i]
token_c <- strsplit(text, " ")
n = length(token_c[[1]])
# 원본 내역 보기
ori_text <- token_c[[1]][1]
ori_text
## [1] "배출"
원본의 글자로 URL을 걸었을때, 변역 되는 것이 아니다. 아래와 같이 URL Encoding을 하여야 한다. 위에서 테스트 하였을때, 특수문자들이 조합된 것이 URL Encoding 된것이다.
# URL encode 내역보기
text_encode <- URLencode(ori_text)
text_encode
## [1] "%EB%B0%B0%EC%B6%9C"
아래에 URL을 paste0를 이용해서, " 배출"을 URL Encoding 된 것을 붙여 넣기 하여야 한다.
# 한국어에서 영문으로 변역
url= paste0( "https://dapi.kakao.com/v2/translation/translate?src_lang=kr&target_lang=en&query=",text_encode,"" )
# rest_api key
rest_api <- "aasdgasdgasdgasddkgosdol야하우향a"
# API Key 인증 및 번역값 가지고 오기
res=POST(str_c(url), add_headers("Authorization"=paste("KakaoAK",rest_api)) )
# 리스트 데이터 셋 가져오기
trans_list <- content(res)
trans_result <- trans_list[["translated_text"]][[1]][[1]]
# 변역된 데이터 가져오기
trans_result
## [1] "excretion"
data.frame(original = ori_text, translation = trans_result)
## original translation
## 1 배출 excretion
댓글 없음:
댓글 쓰기