[GCP] cloud translate - glossary 등록

해질녘·2022년 8월 25일
0

구글 번역 api 사용 시에 참고할 용어집을 등록한다.

이 기능은 Cloud Translate v3에 해당한다.

  • iam 유저 생성 및 적절한 권한 필요
  • 터미널에 GCP CLI 설치 필요

들어가기 전에

Creating and using glossaries (Advanced)  |  Cloud Translation  |  Google Cloud

이것에 대한 보충설명이니 이것과 함께 보시오.

용어집 파일 작성

hellllllo,안ㄴㄴㄴ녕
yolo,욜로

도착어, 출발어 순으로 csv 구성

용어집 파일을 gcs 버킷에 업로드

gcp Cloud Storage에 버킷을 생성하고 파일을 업로드한다.

request.json 작성

{
  "name":"projects/플젝명/locations/us-central1/glossaries/글로서리명",
  "languagePair": {
    "sourceLanguageCode": "en",
    "targetLanguageCode": "ru"
    },
  "inputConfig": {
    "gcsSource": {
      "inputUri": "gs://zzzzzzzzz/zzzzzzzzz.csv"
    }
  }
}

해당 파일의 위치는 기억해 두어야 한다. 기억하기가 싫으면 디폴트 위치는 C:\WINDOWS\system32\request.json 이다.

(윈도우, 관리자 권한으로 실행 기준)

request 보내기

Windows PowerShell을 켠다. 관리자 권한으로 하긴 했음

환경변수 설정

powershell은 셸마다 환경변수 설정이 가능하다. gcp iam 유저에서 내려받은 인증 파일을 등록한다.

 $env:GOOGLE_APPLICATION_CREDENTIALS="C:/Users/경로....json"

이거까지 했으면

gcloud auth application-default print-access-toke

이렇게 gcp 명령어를 쳤을 때 이상한 글자(가 아니라 인증키뭐시기)가 나와야 한다.

  • gcloud 명령어를 찾을 수 없음 -> gcp cli 안 깔림
  • 인증안됨 -> 환경변수 설정 다시

request

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -InFile request.json `
  -Uri "https://translation.googleapis.com/v3/projects/플젝/locations/us-central1/glossaries
" | Select-Object -Expand Content

이 명령어를 파워쉘에 복붙하되 적절히 고친다.

이런 응답이 나오면 끝

{
  "name": "projects/project-number/locations/us-central1/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.translation.v3beta1.CreateGlossaryMetadata",
    "name": "projects/project-number/locations/us-central1/glossaries/글로서리명",
    "state": "RUNNING",
    "submitTime": "2019-11-19T19:05:10.650047636Z"
  }
}

나머지는 다시 공식튜토리얼을 보자 끝

마치며

이 과정은 윈도우 환경변수를 해야되나? gcp cli 어케깔음? 등등의 문제로 여러번 인내심의 한계를 느껴 때려쳤지만 성공했다. 왜안돼 싶을때는 컴퓨터를 재부팅 하는 것도 선택지이다.


+9/13 추가

glossary(단어집)을 이용하여 번역 결과를 얻는 것에 성공했지만 나는 이것을 사용하지 않는 것으로 결정을 내렸다.

  1. 일반 번역에 비해 소요 시간이 3배 정도 걸려 느리다.

  2. 번역 품질이 마음에 들지 않는다. 나는 glossary를 고유명사로 구성하여 명사 부분을 잘 대응해줄 거라고 생각했는데, 기계 번역이라는 게 형태소 분석을 하는 식으로 돌아가지 않는 건지 예상보다 품질이 떨어졌다. 오히려 고유 명사만 수정하는 것이라면 원문-오역 쌍을 수동으로 구성한 후 str.replace() 하는 것이 더 품질이 높을 수 있겠다.

0개의 댓글