Естонська до B1 з власним GenAI-додатком

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

Tere kõigile! — Привіт всім!

Мене звати Микола Мозговий, і це моя історія вивчення естонської крізь експерименти з GenAI.

Ніколи не очікував, що буду писати про свій досвід вивчення естонської мови. Естонія мала стати цікавою зупинкою на рік перед переїздом до США. Але «немає нічого більш постійного, ніж тимчасове». Звісно, 2022 рік суттєво скоригував життєві плани. В Естонії я проживаю з 2021 року. 2022–2024 активно займався доставкою авто для Сил оборони. У 2024 році моя донька пішла до місцевого дитячого садка, і з цього моменту настав час зайнятися естонською мовою більш серйозно.

Особливості естонської мови

«В естонців немає сексу і немає майбутнього» — це їхня гра слів стосовно власної граматики. Взагалі, самоіронія та чорний гумор — характерні риси місцевої словесності, наприклад:

  • Киваючи у бік кладовища, знайома зауважує: «Більшість місцевих ‘проживає’ тут».
  • Книжка для першокласників досліджує питання: «Що єднає всіх естонців?» і дає відповідь: «Нежить та застуда».

Є інші відомі приклади, які я не наважуюсь написати.

Втім, на відсутності гендеру та майбутнього часу простота естонської мови закінчується. Мова не є індоєвропейською, тому знайомими є лише запозичені слова. Зокрема є чимало спільних запозичень з німецької мови:

ETDEUA
SuhkurZuckerЦукор
SibulZwiebelЦибуля
KöökKücheКухня
VärvFarbeФарба
MaalerMalerМаляр
MeisterMeister/MasterМайстер
PaberPapierПапір
TrükkDruckenДрук
VäärtWertВартість

Мій досвід навчання в групі свідчить про те, що фонетика може бути проблемною для західних європейців, але не стільки для нас. Зокрема є такі особливості:

  • Повсюдне використання ‘õ’, що відповідає нашому ‘и’/‘ы’. Навіть на початку слів: Õnn (щастя), õige (правильний), rõõm (радість).
  • Приховане пом’якшення приголосних. В естонській мові є звуки, що відповідають нашому м’якому знаку, але на письмі це пом’якшення ніяк не позначається. Тому вимову таких слів доводиться просто запам’ятовувати на слух: наприклад, kass вимовляється м’яко — «кась» (кіт), а konn — «конь» (жаба).
  • Є ä, ö, ü, які важко пояснити, не почувши їх.
  • Є також š = ш та ž = ж, які використовуються лише для запозичених слів (імен).

Далі вас чекають 14 відмінків, проте проблемними є не всі: родовий (від якого виводяться 12 інших), знахідний (який за логікою не однаковий з українським) та їхня форма в множині.

Проте для носіїв слов’янської мови хоча б зрозумілим є концепт відмінків. Найвідомішим родичем естонської мови є фінська. Між ними є обмежене взаємне розуміння, проте на практиці носії переходять на англійську для спілкування. За відгуками, фінська є ще складнішою для вивчення, ніж естонська. Ключовою відмінністю між ними є відкритість до запозичень в естонській мові та політика архаїзації/нативізації у фінській.

Мій шлях вивчення

До осені 2024 року вивчення було спорадичним і несистемним. Проте саме до того часу у мене не було певності, що ми лишаємося тут «назавжди». З 2021 року я використовував додаток Language Drops, по суті, ситуативні картки для запам’ятовування (flashcards). Duolingo для естонської не існує. Проте існує місцевий якісний додаток Lingvist, яким я майже не користувався (можливо, через обмеження безкоштовної версії).

Я маю зауважити, що ключовим інструментом навчання я все ж вважаю роботу з репетитором, що є носієм мови: спочатку групову до A2 і потім індивідуальну до B1. Виконання письмових вправ та діалоги з носієм — це, якщо не 80%, то 66% успіху.

Навіщо робити свій додаток?

Саме через відсутність Duolingo та обмеження Language Drops (картки є статичними і детермінованими) виникла ідея створення власного додатка на основі GenAI. Також було цікаво застосувати генеративний ШІ на практиці та не забувати навички .NET. Окрім того, на момент 2024 року сама ідея динамічного освітнього контенту була свіжою і цікавою для випробування.

Ідея полягає у тому, щоб зосередитися на збільшенні словникового запасу за пріоритетом вживаності слів. Далі кожне слово отримує приклад використання у типовому для нього контексті, візуальну ілюстрацію цього прикладу і мовлення.

Згенерований приклад до слова «lind»

Цей принцип використовують офіційні освітні матеріали Settle in Estonia — але з живими акторами. Далі можна додавати вправи, як-от переклад, відмінювання та інші.

Технічне рішення

Діаграма залежностей високого рівня

Зазначу, що я не рекламую жодну з компаній чи технологій (окрім Tartu NLP — вони круті, адже це університетський і некомерційний проєкт). Мій вибір був суб’єктивно адекватним на 2024 рік, імовірно, зараз він був би іншим.

ТехнологіяКоментар
.NET Core + Blazor + Blazor BootstrapЛогіка додатку та інтерфейс користувача
OpenAI GPT-4.1Генерація текстових даних, коментарі до вправ
Tartu NLPГенерація естонського мовлення з тексту
Stability AI (SDXL/SD1.6)Генерація зображень
Salad (portal.salad.com)Пакетна генерація/обробка зображень
Azure: Blob StorageЗберігання всіх згенерованих даних
Azure: Cosmos DBНасправді непотрібна для цього масштабу річ, але було найлегше увімкнути для ASP.NET Core Identity
PlaywrightE2E тести

Ціни

Вказані кумулятивні витрати з 2024 року:

Сервіс / РесурсВартість
Tartu NLP — text-to-speechбезкоштовно
OpenAI60$
Stability AI — [pre]pay-as-you-go (генерація зображень)30$ = 3000 кредитів (їх внутрішня валюта)
Salad — оренда серверного часу (генерація зображень)5$ за близько 2 тисячі зображень
Azure Web App — free tierБезкоштовно
Azure Blob Storage + Cosmos DBНаразі 0,07$ на місяць і, можливо, близько 5$ з 2024.

Що я дізнався в процесі?

  • Генеративний ШІ коштує дуже дорого порівняно зі стандартними ресурсами для обчислень, зберігання даних і хостингу.
  • Використовуйте пакетну обробку (batch processing) для генерування початкових даних — це може бути вдесятеро дешевше порівняно з генеруванням за моделлю оплати за фактом використання (pay-as-you-go) або за запитом.
  • Новіша модель не обов’язково означає кращу ефективність у виконанні конкретного завдання. Зокрема, GPT-5 (на момент виходу) продемонстрував цілковиту неспроможність (правильно) відмінювати слова за естонськими граматичними відмінками порівняно з GPT-4.1.
  • LLM може (чи навіть має) генерувати запити (prompt) для інших моделей або для самої себе. У моєму випадку промпт, що описує сцену для ілюстрації речення, генерується моделлю GPT-4.1 перед передачею до Stability AI.
  • LLM можна змусити дотримуватися заданого контракту вихідних даних; зокрема, метод ChatResponseFormat.CreateJsonSchemaFormat у SDK для .NET (OpenAI та Azure OpenAI) використовується для гарантування того, що моделі видаватимуть структуровані дані, які відповідають заданій JSON-схемі.
  • Цей файл проєкту демонструє, як можна отримати JSON Schema для .NET-типу.

DescriptionAttribute можна використовувати для передачі LLM додаткового контексту і сенсу щодо окремих властивостей, таким чином ви отримуєте промптинг на основі схем (schema-driven prompting):

public struct TranslatedString
{
    [Description("Tõlge eesti keelde")]
    public required string Et { get; set; }

    [Description("Translation in English")]
    public required string En { get; set; }
}

Що дає естонська мова?

Рівень B1 дає небагато з практичного погляду, але чимало з юридичного (легального). Так, наприклад, майже всі робочі професії все ж вимагають хоча б B2 (залежить від регіону), проте B1 є достатнім для отримання посвідки на постійне проживання і навіть для отримання громадянства (після 8 років проживання і тесту на конституційний устрій).

Мій сертифікат B1

Окремо зазначу елемент взаємної поваги. Естонці розуміють складність та унікальність власної мови, і тому вони схильні схвально ставитися навіть до незграбних спроб спілкуватися з ними їхньою рідною мовою. Зі свого боку, я радий хоч трохи їх здивувати.

Майже всі естонці білінгви. Молодше покоління добре володіє англійською, старше покоління — російською. Майже всі сервіси дублюються двома-трьома (іноді чотирма) мовами. В цьому сенсі Естонія дуже комфортна для експатріантів. Проте повноцінна інтеграція у суспільне життя вимагає знання естонської.

Сподіваюсь, що ця стаття була вам цікава і, можливо, корисна. Створений мною проєкт можна скопіювати і використати для мови, яку ви вчите.

Посилання

👍ПодобаєтьсяСподобалось9
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Дуже незвично щодо саме мови, але в реаліях постійного проживання — дуже логічний крок. Бажаю вам удачі.

Майже всі естонці білінгви.

потрібне визначення терміну як то тут у контексті саме з естонської ))

ЗЫ: ми якраз днями може навіть учора сперечалися коли власне ставити native проти Full professional proficiency і зокрема що таке узагалі «білінгви»

ЗЫ: як то там далі вже купи азіатів як то китай та індокитай вони імперської мають чінів мандарин і всякі «сімейні» індокитайські тож там з одного боку вони стверджують якоби «їхні діти» то є «білінгви» але при цьому так само самі ж роказують «як воно є» як то «він думає на мандарині і будує думки та ідеї також тож іноді не знає як сказати недо мовою і говорить культурною імперською а мені доводиться розбирати через гугло перекладач»

ЗЫ: але то вже ошмьотки недо націй особисто мене цікавило чи не простіше мені самому писати зрешті native вже на мою власну «американську як не іноземну» ))

ЗЫ: ми якраз днями може навіть учора сперечалися коли власне ставити native проти Full professional proficiency і зокрема що таке узагалі «білінгви»

Метод виключення, скоріш. Я більш ставлю на bilingual:)

Рівень B1 дає небагато з практичного погляду
майже всі робочі професії все ж вимагають хоча б B2

імхо усі євро тести екзамені проходять одразу на б1-б2 або ж на а2-б1 (усі ті хто мені були відомі які я сам бачив) а з цього розкладу і з власного досвіду включно як «американської не іноземної» то б1 як рівень мови то радше такий собі а2+

Yes, B1 level is officially classified as Intermediate (often called threshold) under the Common European Framework of Reference for Languages (CEFR).

тобто імхо _реальний_ рівень то є саме б1 як саме «а2+» як завершення власне «самого початкового курсу взагалі»

майже всі робочі професії все ж вимагають хоча б B2

імхо маючи реальну потребу та то просто навіть витрачаючи певні затрати на сам екзамен сертифікат то при цьому не перейти одразу на б2 то є виглядає якось дивно

ЗЫ: так само як для прикладу узагалі як саме існування «наявні сертифікати а1-а2» як то буває зустрічається навіть та власне саме у «резюме»

ЗЫ: популярна тема «наших» емігрантів які усі там впираються і «адвокати» у них і «кейзи» і в країні вони вже живуть роками і взагалі розказують як вони прямо сюди хотіли ... але при цьому щось там запис «мова володіння а1 або навіть а2» от х.з. що хотів сказать узагалі

не перейти одразу на б2

Залежить від людини, але для мене це не тривіальне завдання. Проте, Inshallah.

не перейти одразу на б2
Залежить від людини, але для мене це не тривіальне завдання.

теоретично не має залежати бо у людини мова не є технічно як вища розумова діяльність саме усвідомлена а радше складний нейро біологічний процес для якого людина має усі вбудовані саме «апаратні» призначення

... ну хіба що та класика як то «щелепа генетично не пристосована до мови» ))

I think the required level of language for permanent residence and citizenship reflects willingness goverment to integrate foreiners. In Czechia it is A2/B1 (A2 — permanent residence, B1 — citizenship)

крутяк! шо сказать...

Congratulation to NL. I read in the Guardian that only Ireland nowadays does not have language level requirements.