안녕하세요. 오늘은 간단하게 용어사전 관련된 기능을 알아보겠습니다.
용어사전 기능은 특정 언어쌍에만 적용할 수 있는 사전집 같은 것인데요. 기본적인 번역에 내가 원하는 단어뜻을 엎어씌워서 원하는 번역을 만들어내는 기능이라고 할 수 있습니다.
간단한 예시를 들어보면 이런식입니다.
용어사전에선 make = 부수다 로 정의했다고 합시다.
용어사전 미사용시 : make the building => 빌딩을 만들다.
용어사전 사용시 : make the building => 빌딩을 부수다.
위에서 든 예는 좀 극단적이고, 실제로 적용을 시켜보면 번역 상황에 따라서 100% 적용은 안되는 경우들이 있습니다.
그럼에도 특정한 분야에서 일반적이지 않은 용어로 쓰는 뜻이 있다면 기본적으로 DeepL이 번역해서 주니 매우 매력적인 기능이라고 할 수 있겠네요.
참고로 사용하시다가 의문이 드실까봐 미리 알아본 내용도 공유드립니다.
- API로 생성된 용어사전과 웹이나 데스크톱 앱에서 생성된 용어사전은 공유되지 않습니다!
- DeepL API 는 무료 및 Pro 구독에서 최대 1000개의 용어 사전을 사용할 수 있으며, 크기 제한은 각 10MB , 각각의 용어 관련 텍스트는
UTF-8 , 1024바이트로 제한됩니다.
- 웹사이트나 데스크톱 앱에서 만든 용어집을 CSV 로 파일로 만든뒤 업로드 하면 API로 사용할 수 있습니다.
기본적으로는 HTTP API를 제공하고 있는데요. 직접 호출하시는 방법도 가능하고, 각 언어별 라이브러리를 이용할 때는 해당 라이브러리 별 함수를 사용하셔도 무방합니다. 저는 C# 을 이용해서 한 번 사용해보도록 하겠습니다.
1. 용어사전 생성하기
CreateGlossaryAsync 라는 함수를 사용하고, 0개의 데이터를 넣고 생성하게 되면 예외가 발생합니다.
단어 2개가 들어있는 용어사전을 만들어보았습니다.
// 용어사전 만들기
var entriesDictionary = new Dictionary<string, string> { { "artist", "재밌는 사람" }, { "teacher", "불쌍한 사람" } };
// 용어사전 이름 , 번역 source 언어 , 번역 target 언어, 용어사전에 넣을 내용
var glossaryEnToKo = await translator.CreateGlossaryAsync("My Glossary", "EN", "KO", new GlossaryEntries(entriesDictionary));
Console.WriteLine($"Created {glossaryEnToKo.Name}' ({glossaryEnToKo.GlossaryId}) " +
$"{glossaryEnToKo.SourceLanguageCode}->{glossaryEnToKo.TargetLanguageCode} " +
$"containing {glossaryEnToKo.EntryCount} entries"
);
///Created My Glossary' (<용어사전 ID>) en->ko containing 2 entries
그러면 glossaryEnToKo 라는 응답 데이터에는 실제로 생성된 용어사전의 ID와 이름, 번역에 사용가능여부, 생성시간, 용어사전에 들어있는 데이터 갯수 등이 포함되어 있습니다.
2. 용어사전 조회하기
생성을 한 용어 사전을 조회할 수 있어야겠죠? 기본적으로 전체 리스트를 조회할 수 있습니다. (0개도 조회됩니다)
var glossaries = await translator.ListGlossariesAsync();
Console.WriteLine(glossaries.Length);
foreach(var glInfo in glossaries){
Console.WriteLine(glInfo.GlossaryId);
Console.WriteLine(glInfo.Name);
}
바로 특정한 대상을 보고 싶다면 해당 용어사전의 ID를 입력하면 됩니다.
var myGlossary = await translator.GetGlossaryAsync("<용어사전ID>");
Console.WriteLine(myGlossary.GlossaryId);
Console.WriteLine(myGlossary.Name);
3. 용어사전에 저장된 용어 조회하기
용어사전 안에 저장되어 있는 용어들은 이렇게 조회해볼 수 있습니다.
var myGlossary = await translator.GetGlossaryAsync("<용어사전ID>");
var entries = await translator.GetGlossaryEntriesAsync(myGlossary);
foreach (KeyValuePair<string, string> entry in entries.ToDictionary())
{
Console.WriteLine($"{entry.Key}: {entry.Value}");
}
4. 용어사전 삭제하기
삭제는 조회한 GlossaryInfo 를 그대로 DeleteGlossaryAsync 함수에 넣어주면 됩니다.
var glossaries = await translator.ListGlossariesAsync();
foreach(var glinfo in glossaries){
await translator.DeleteGlossaryAsync(glinfo);
}
5. 용어사전을 이용해서 번역하기
용어사전을 이용해서 번역을 해보고 차이를 비교해보겠습니다.
위에서는 artist 와 teacher 만 사전으로 만들어뒀기 때문에 포함된 문장을 만들어보도록 하겠습니다.
용어 사전1 에는 artist : 음악가, teacher : 청소부으로
용어 사전2에는 artist : 운동선수, teacher : 교수으로 저장되어 있습니다.
그리고 원 뜻은 다들 아시고 계시죠? (힌트 : 예술가? 선생님?? )
var translatedText = await translator.TranslateTextAsync(
"He was a teacher when 20 years old, but now he is an artist",
LanguageCode.English,
LanguageCode.Korean);
Console.WriteLine(translatedText);
translatedText = await translator.TranslateTextAsync(
"He was a teacher when 20 years old, but now he is an artist",
LanguageCode.English,
LanguageCode.Korean,
new TextTranslateOptions { GlossaryId = "<용어사전ID 1>" });
Console.WriteLine(translatedText);
translatedText = await translator.TranslateTextAsync(
"He was a teacher when 20 years old, but now he is an artist",
LanguageCode.English,
LanguageCode.Korean,
new TextTranslateOptions { GlossaryId = "<용어사전ID 2>" });
Console.WriteLine(translatedText);
이렇게 실행한 결과는 다음과 같습니다.
용어사전 미사용 : 스무 살 때 교사였지만 지금은 예술가입니다.
용어사전1 사용 : 스무 살 때는 청소부였지만 지금은 음악가입니다.
용어사전2 사용 : 스무 살 때는 교수였지만 지금은 운동선수입니다.
보시면 용어사전을 적용시에는 artist 와 teacher 의 뜻이 다르게 적용된 것을 알 수 있습니다.
다만, 실제로 써보시면 용어사전을 적용한다고해서 100% 그 뜻대로 번역되지는 않아서 아쉽긴 합니다. 아마도 원래 단어의 뜻과 너무 뜻이 차이가 많이 나기 때문은 아닐까 싶기는 합니다만은 이런 문제 때문에 번역 후에는 한 번씩 확인 과정을 거쳐야 하지 않을까 싶기는 하네요.
이상으로 이번 DeepL 용어사전 기능에 대한 탐구는 마치도록 하겠습니다.
'기타Tip' 카테고리의 다른 글
맥북 소노마 업데이트 후 잠자기 안되는 문제 해결 (1) | 2024.06.17 |
---|---|
맥북 Sonoma 업데이트 후 날짜 및 시간 오류 해결 (1) | 2024.06.12 |
DeepL API 사용해보기 (1) | 2024.05.26 |
윈도우에서 프로그램 설치 없이 서버 통신 가능 여부 확인하기 (0) | 2024.04.18 |
필요해서 자주 방문하는 사이트 정리 (0) | 2024.01.26 |
댓글