'How It's Made: Little Language Lessons'에서는 Gemini의 다국어 기능을 사용하여 언어 학습을 맞춤 설정할 수 있습니다.

2025년 4월 29일

엔지니어로서 필자는 언제나 언어에 매력을 느꼈습니다. 프로그램 개발에 사용하는 코딩 언어든 일상에서 사용하는 언어든 둘 다 흥미로웠죠. 새로운 프로그래밍 언어 습득은 대체로 구체적인 무언가를 만들어 이론을 즉시 실무에 적용하는 것으로 시작합니다. 반면에 새로운 구어의 습득은 언어가 실제로 중요한 상황과는 이상하리만큼 동떨어진 느낌을 주는 교과서나 연습 문제를 통해 이루어지는 경우가 많습니다. 프로그래밍에서와 마찬가지로, 언어를 가장 효과적으로 습득하려면 사람들과 나누는 대화, 주변의 사물, 실제로 처한 순간 등 의미 있는 맥락을 활용해야 합니다. 전통적인 학습 도구와 달리, AI는 학습자의 상황에 맞춰 적응할 수 있으므로 보다 자연스럽고 개인에게 맞는 방식으로 언어를 연습하는 데 매우 적합합니다.

그래서 저는 몇몇 동료들과 함께 개발자가 Google의 최신 생성형 모델에 액세스할 수 있도록 지원하는 Gemini API를 실험하게 되었습니다. 그 결과, Google의 Gemini 모델을 기반으로 하는 소규모의 세 가지 학습 실험으로 구성된 Little Language Lessons를 완성했습니다.


실험 1, Tiny Lesson: 필요한 것을 필요할 때 배우기

언어를 학습하면서 가장 낙담하는 상황을 꼽자면, 아직 배우지 않은 특정한 단어나 표현을 써야 할 때입니다.

바로 이 때문에 Tiny Lesson을 착안하게 되었습니다. '길 물어보기' 또는 '잃어버린 여권 찾기'와 같은 상황을 설명하면 거기에 맞는 유용한 어휘, 구문 및 문법 팁을 받을 수 있습니다.

간단한 프롬프트 레시피를 사용하여 이런 결과를 얻을 수 있었습니다. 프롬프트는 다음과 같이 페르소나를 설정하는 서문으로 시작됩니다.

당신은 {target language}와 {source language}의 2개 국어를 구사하는 
{target language} 가정교사이자 학생들의 언어 사용 목표에 맞도록 
맞춤 설정된 교육 콘텐츠 제작 전문가입니다.
Markdown

이 프롬프트와 앞으로 나올 모든 프롬프트에서 구조화된 JSON으로 출력을 제공하는 Gemini의 기능을 활용해 원하는 결과를 객체의 키 목록으로 정의했습니다.

주어진 사용 맥락에 대해 'vocabulary'와 'phrases'라는 두 키를 
포함하는 JSON 객체를 제공하세요.
 
'vocabulary'의 값은 각각 
'term', 'transliteration', 'translation'이라는 세 키를 포함하는 객체로 구성된 배열이어야 합니다.
 
'term'의 값은 주어진 맥락에서 매우 관련성이 높고 
유용한 {target language} 단어여야 합니다.
관심 언어가 보통 라틴어 스크립트로 작성된 경우 
'transliteration'의 값은 빈 문자열이어야 합니다. 그렇지 않은 경우
'transliteration'의 값은 term의 음역이어야 합니다.
'translation'의 값은 term의
{source language} 번역이어야 합니다.
 
...
Markdown

전체적으로, 각 레슨은 Gemini API에 두 번 호출한 결과입니다. 한 프롬프트는 모든 어휘와 구문을 생성하는 문제를 처리하고, 다른 프롬프트는 관련 문법 주제를 생성하는 데 사용됩니다.

각 프롬프트의 마지막에는 사용자가 원하는 사용 컨텍스트를 다음과 같이 보간합니다.

INPUT (usage context): {user input}
Markdown

실험 2, Slang Hang 책 읽는 것처럼 들리지 않게 말하기

언어를 배우다 보면 편안한 느낌이 들기 시작하는 순간이 있습니다. 대화를 나누고 자신을 표현하고 대체로 의사소통이 되는 순간 말입니다. 그러나 여전히 뭔가 좀 어색하게 들린다는 걸 깨닫습니다. 즉, 너무 격식을 차려 딱딱하게 말한다는 걸 알게 되죠.

이런 문제를 개선하기 위해 Slang Hang을 개발했습니다. 아이디어는 간단합니다. 원어민 간에 실제로 이루어지는 현실적인 대화를 생성하고 사용자가 이를 통해 학습하도록 하는 것입니다. 전개되는 대화를 보면서 한 번에 하나의 메시지를 확인하고 낯선 용어가 등장할 때마다 그 의미를 파악할 수 있습니다.

Slang Hang 프롬프트의 서문은 다음과 같습니다.

당신은 {source language}와 {target language}를 모두 구사하는 
시나리오 작가이자 매력적인 대사를 만들어내는 전문가입니다. 
또한 언어 전문가로서 표현을 자연스럽게 만들어주는 
문화적 뉘앙스에 매우 능통합니다.
Markdown

사용자는 메시지를 한 번에 하나씩만 볼 수 있지만 Gemini API를 한 번만 호출해도 배경, 대화, 강조 표시된 용어에 대한 설명 등 모든 것이 생성됩니다. JSON 출력의 구조는 다음과 같이 정의됩니다.

두 사람이 실제 {target language}로 대화하는 짧은 장면을 
생성하세요. 결과를 'context'와 'dialogue'라는 두 개의 키를 포함하는 
JSON 객체로 제공하세요.
 
'context'의 값은 장면의 
배경, 상황, 화자, 
화자 간의 관계를 설명하는 {SOURCE LANGUAGE}로 된 짧은 단락이어야 합니다.
 
'dialogue'의 값은 객체로 구성된 배열이어야 하며, 
여기서 각 객체는 하나의 대화 발화에 대한 정보를 포함합니다. 'dialogue' 배열의 
각 객체는 'speaker', 'gender', 'message', 'notes'라는 
키 네 개를 포함해야 합니다.
 
...
Markdown

대화는 사용자의 도착어로 생성되지만, 사용자는 메시지를 모국어로 번역할 수도 있습니다(Cloud Translation API에서 제공하는 기능).

이 실험에서 더욱 흥미로운 한 가지는 새로운 스토리텔링의 요소입니다. 각 장면은 고유하며 즉석에서 생성됩니다. 예를 들어 손님과 이야기를 나누는 노점상, 지하철에서 만난 두 명의 동료, 심지어 이국적인 반려동물 쇼에서 예기치 않게 재회한 두 명의 옛 친구일 수도 있습니다.

하지만 이 실험이 정확도 오류에 어느 정도 취약하다는 점이 발견되었습니다. 특정 표현과 속어를 잘못 사용하거나 심지어 만들어내는 경우도 있습니다. LLM은 아직 완벽하지 않으므로 신뢰할 수 있는 출처를 교차 참조하는 것이 중요합니다.


실험 3, Word Cam: 주변 환경으로부터 배우기

때로는 눈앞에 보이는 사물을 지칭하는 단어만 알면 될 때도 있습니다. 도착어로 어떻게 말해야 할지 모르는 것들이 정말 많다는 걸 깨닫는 순간, 언어를 배우는 사람들은 매우 겸손해지곤 합니다. 예컨대 '창문'이라는 단어는 알지만 '창틀'이나 '가림막' 같은 단어는 모를 수 있습니다.

Word Cam은 카메라를 즉석 어휘 도우미로 만들어 줍니다. 즉, 어떤 사물을 지칭하는 단어를 모를 때 해당 사물의 사진을 찍으면 Gemini가 사진 속 사물을 감지하고 도착어로 레이블을 지정하고 그 사물을 설명하는 데 사용할 수 있는 추가 단어를 알려줍니다.

이 실험에서는 객체 감지에 Gemini의 비전 기능을 활용합니다. 모델에 이미지를 전송하고 해당 이미지에 있는 다른 객체의 경계 상자 좌표를 요청합니다.

주어진 이미지에 존재하는 객체에 대한 유용한 정보를 제공하세요. 
결과를 objects"라는 단일 키를 포함하는 JSON 객체로 제공하세요.
 
'objects'의 값은 이미지에 존재하는 개별 객체의 수를 넘지 않는 길이의 객체로 
구성된 배열이어야 합니다. 배열의 각 객체는 
'name', 'transliteration', 'translation', 'coordinates'라는 4가지 키를 
포함해야 합니다.
 
...
 
'coordinates'의 값은 객체의 경계 상자 좌표를 
나타내는 정수 배열이어야 합니다. 좌표는 [ymin, 
xmin, ymax, xmax] 형식으로 제공하세요.
Markdown

사용자가 객체를 선택하면 잘린 이미지를 별도의 프롬프트로 Gemini에 전송하고 해당 객체에 대한 설명어를 사용자의 도착어로 생성하도록 요청합니다.

주어진 이미지에 표현된 객체에 대해 객체를 설명하는 
설명어를 제공하세요. 'descriptors'라는 단일 키를 포함하는 
JSON 객체로 결과를 제공하세요.
 
'descriptors'의 값은 객체로 구성된 배열이어야 하며, 여기서 각 객체는 'descriptor', 'transliteration', 'translation', 
'exampleSentence', 'exampleSentenceTransliteration', 
'exampleSentenceTranslation'의 5가지 
키를 포함합니다.
 
...
Markdown

또한 세 가지 실험에서 모두 텍스트 음성 변환 기능을 통합하여 사용자가 도착어로 발음을 들을 수 있도록 했습니다. 이를 위해 Cloud Text-to-Speech API를 사용했습니다. 이 API는 널리 사용되는 언어의 경우 자연스럽게 들리는 음성을 제공하지만 그렇지 않은 언어의 경우 제공되는 옵션이 제한적입니다. 때문에 지역별 고유한 억양이 잘 표현되지 않아 때로는 사용자가 선택한 방언과 재생되는 음성의 억양이 일치하지 않는 경우가 있습니다.


다음 단계

Little Language Lessons는 초기의 탐색 과정에 있지만 이러한 실험은 미래에 대한 흥미로운 가능성을 시사합니다. 이 연구는 또한 몇 가지 중요한 질문을 제기합니다. Little Language Lessons에서 조사한 접근 방식을 개선하기 위해 언어 전문가 및 교육자와 어떤 방식으로 협력할 수 있을까요? 더 나아가, 어떻게 AI가 자기 주도적인 학습을 보다 역동적이고 개인에게 맞는 형태로 설정할 수 있을까요?

현재로서는 계속 탐구하고 반복하고 질문을 던지고 있습니다. 이와 같은 실험을 더 살펴보려면 labs.google.com을 방문하세요.