기타

구글 클라우드 번역(3)-동의어집 번역

Aostols 2022. 4. 28. 19:00
반응형

https://cloud.google.com/translate/docs/advanced/glossary?hl=ko#create_a_glossary 

 

용어집 만들기 및 사용(Advanced)  |  Cloud Translation  |  Google Cloud

의견 보내기 용어집 만들기 및 사용(Advanced) 용어집은 Cloud Translation API가 분야별 용어를 일관성 있게 번역하는 데 사용하는 커스텀 사전입니다. 여기에는 일반적으로 명명된 항목을 번역하는 방

cloud.google.com

 

구글 클라우드에서는 용어집이 있고 동의어 집이 있습니다.

용어집은 ko-en 같이 단방향 단어집이고 동의어집은 ko-en-ja-ge 같이 해당 단어를 언어별로 정리한 것 입니다.

동의어 집을 만들기 위해서는 예제에 나와 있듯이 엑셀로 정리 후 csv 파일을 만들어 주어야 합니다.

 

1번째 줄에 언어 코드를 적어주고 2번째 줄부터 단어를 적어 줍니다.

그렇게되면 sourceLanguage 에 있는것을 기준으로 targetLanguage 로 치환 하게 됩니다.

 

엑셀에서 csv UTF-8로 저장해 줍니다.

이렇게되면 바로 사용 될 줄 알았는데 UTF-8 BOM 타입이라서 바로 사용이 안되었습니다.

 

메모장에서 UTF-8 로 다시 저장 해 줍니다.

BOM 타입이면 안됩니다.

이제 cloud console 로 들어갑니다.

 

curl -X GET \

-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \

https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries

명령어를 넣어 기존에 있던 용어집을 확인 합니다.

 

명령어가 실행되면 어떤 용어집이 있고 용어집의 시작어와 도착어가 무엇인지 등등등이 나와 있습니다.

저같은 경우는 필요없는거 하나를 삭제 해 보겠습니다.

 

curl -X DELETE \

-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \

https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries/glossary-id

 

명령어가 수행되면 state 에 SUCCEEDED 라고 뜨게 됩니다.

혹시 다른것이 표시된다면 내용을 확인 해 주시고 수정하시면 됩니다.

이제 동의어집 생성을 할 차래인데 용어집은 시작어->도착어의 1:1 구조였는데 동의어집은 배열이라고 보시면 됩니다.

각각의 매칭 단어들이 언어별로 이루어 져 있다고 생각하시면 됩니다.

 

{ "name":"projects/project-number-or-id/locations/us-central1/glossaries/glossary-id",

   "languageCodesSet": { 

   "languageCodes": ["ko", "en", "fr", "de", "ja", "zh-CN", "zh-TW"] 

}, 

"inputConfig": {

   "gcsSource": { 

      "inputUri": "gs://bucket-name/glossary-file-name" 

   }

  }

}

동의어집 생성 요청용 json 파일을 만듭니다.

버킷은 결과를 받는 버킷이 아니어야 합니다.

동의어집용 파일은 csv 에 utf-8 BOM타입이 아니어야 하구요.

 

curl -X POST \

-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \

-H "Content-Type: application/json; charset=utf-8" \

-d @request.json \

https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries

위에서 작성한 json 파일명을 확인하여 넣어주시고 명령어를 실행 해 주시면 됩니다.

 

바로 처리가 안되고 RUNNING 이라고 표시가 됩니다.

operation-id 를 복사해서 내용을 추가적으로 확인해 봅니다.

 

curl -X GET \

-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \

https://translation.googleapis.com/v3/projects/project-number-or-id/locations/location-id/operations/operation-id

이전에도 이야기 했지만 location-id 는 버킷이 있는 위치 입니다.

저같은 경우는 us-central1 입니다.

 

동의어집 생성이 완료 되었다면 결과가 위와 같은 화면으로 표시 됩니다.

지정했던 언어들도 제대로 다 표시 되었습니다.

에러가 뜬다면 내용을 확인하여 수정해 줍니다.

보통 argument 가 이상하다고 하면 UTF-8이 아니거나 BOM 타입이거나 하는 상황 입니다.

 

{

    "sourceLanguageCode": "ko",

    "targetLanguageCodes": ["en", "fr", "de", "ja", "zh-CN", "zh-TW],

    "glossaries": {

        "en": {

            "glossary": "projects/project-number-or-id/locations/us-central1/glossaries/glossary-id"

        },

        "fr": {

            "glossary": "projects/project-number-or-id/locations/us-central1/glossaries/glossary-id"

        },

        "de": {

            "glossary": "projects/project-number-or-id/locations/us-central1/glossaries/glossary-id"

        },

        "ja": {

            "glossary": "projects/project-number-or-id/locations/us-central1/glossaries/glossary-id"

        },

        "zh-CN": {

            "glossary": "projects/project-number-or-id/locations/us-central1/glossaries/glossary-id"

        },

        "zh-TW": {

            "glossary": "projects/project-number-or-id/locations/us-central1/glossaries/glossary-id"

        }

    },

    "inputConfigs": [{

        "gcsSource": {

            "inputUri": "gs://bucket-name-source/input-file-name1"

        }

    }

], 

"outputConfig": {

    "gcsDestination": {

        "outputUriPrefix": "gs://bucket-name-destination/"

        }

    }

}

동의어 번역용 json 파일 입니다.

targetLanguageCodes 가 배열로 여러개 들어가고 거기에 매칭되는 용어집 경로도 여러개 들어갑니다.

다만 여기서 동의어 집이기 때문에 용어집 경로는 모두 동일 합니다.

 

curl -X POST \

-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \

-H "Content-Type: application/json; charset=utf-8" \

-d @request.json \

https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1:batchTranslateText

 

명령어를 실행 해 줍니다.

역시나 json 파일명을 잘 확인 합니다.

 

RUNNING 상태를 확인하고 아까와 마찬가지로 operation-id를 체크해 줍니다.

 

아직까지는 RUNNING 상태입니다.

최초에 RUNNING 이고 실제 operation-id를 체크할때만 에러가 나는 경우도 있습니다.

 

동의어 번역이 완료 되었습니다.

이제 대상으로 삼았던 버킷에 가서 파일을 확인 해 줍니다.

 

언어코드_translations.txt 가 있고

언어코드_glossary_translations.txt 가 있습니다.

일반번역과 동의어집을 활용한 번역이 항상 2벌 다 나옵니다.

 

https://aostols.tistory.com/6

 

구글 클라우드 번역(2)-용어집 + 일괄 요청 번역

https://cloud.google.com/translate/docs/advanced/batch-translation?hl=ko 일괄 요청(Advanced)  | Cloud Translation  | Google Cloud 의견 보내기 일괄 요청(Advanced) 오프라인에서 명령어로 일괄 번역을..

aostols.tistory.com

위 포스트에서 적은것과 마찬가지로 용어집(동의어집)을 활용한 번역은 결과가 좋지 못해서 실제로 쓰지 못할것 같습니다.

70%정도는 좋은 결과를 보여줬고 30%정도는 아예 문맥 자체가 어그러지는 결과가 나왔습니다.

 
반응형