Українська частотність · API на сервері · v0.1.0

Український лематизатор

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

POST /api/lemmatizeua.net.nlp:morfologik-ukrainian-lt:6.8.0LanguageTool 6.8перевірено 2026-09-14текст не зберігається

Навіщо він потрібен

Кожне зіставлення зі списком слів залежить від лематизатора, який погоджується зі списком у тому, що вважати заголовним словом. Частотний список, вивірене накладання CEFR і профілювач спираються на конвенцію VESUM (інфінітив для дієслів, називний відмінок однини для іменників, апостроф, записаний в один спосіб). Лематизатор з іншою конвенцією перетворює кожен токен на невідомий. Ця кінцева точка і є тією конвенцією, розміщеною на сервері, тож профілювач і будь-який сторонній інструмент можуть звертатися до одного місця й отримувати назад власні леми списку.

Усередині працює конвеєр аналізу української мови з LanguageTool, те саме ядро, яке обгортає TagText з nlp_uk: токенізатор, тегер VESUM і модуль зняття неоднозначності за правилами, над закріпленою версією словника (ua.net.nlp:morfologik-ukrainian-lt:6.8.0). Словник поширюється за ліцензією CC BY-NC-SA і ніколи не залишає сервера; кінцева точка повертає аналіз вашого власного тексту й нічого більше.

Спробуйте

Надішліть список токенів (кожен аналізується окремо, саме це потрібно для зіставлення зі списком слів):

curl -s https://www.jakelawrence.xyz/api/lemmatize \
  -H 'Content-Type: application/json' \
  -d '{"tokens": ["ім’я", "кав’ярня", "під’їзд", "м’ясо", "п’ять"]}'

Або текст (його розбито на токени, неоднозначність знято в контексті, з позиціями символів):

curl -s https://www.jakelawrence.xyz/api/lemmatize \
  -H 'Content-Type: application/json' \
  -d '{"text": "Вона повідомила про це вчора."}'

Відповідь має такий вигляд (показано один токен):

{
  "tokens": [
    {
      "token": "п'ять",
      "lemma": "п’ять",
      "pos": "numr",
      "ud": "NUM",
      "tags": "numr:p:v_naz",
      "known": true,
      "ambiguous": false,
      "alternatives": [
        {
          "lemma": "п’ять",
          "pos": "numr",
          "ud": "NUM",
          "tags": "numr:p:v_zna"
        }
      ]
    }
  ],
  "meta": {
    "service": "lemmatizer 0.1.0",
    "tagger": "LanguageTool Ukrainian 6.8",
    "vesum": "6.8.0",
    "mode": "tokens",
    "chars": 5,
    "tokens": 1,
    "ms": 3,
    "cache": "miss",
    "hash": "7fb62d674239a1c0"
  }
}

Для кожного токена: lemma (апостроф записано як U+2019, тобто гліфом списку), загальна частина мови VESUM у pos, наближений тег ud, повний рядок tags, known, ambiguous (після зняття неоднозначності лишилося більше ніж одна відмінна лема) і кожне інше вціліле прочитання в alternatives. Блок meta у кожній відповіді містить версії тегера та VESUM, тож результат ніколи не відірваний від словника, який його дав. Повний контракт описано в документі OpenAPI.

Обмеження і що буває в разі їх перевищення

обмеженнязначенняу разі перевищення
довжина тексту10,000 символів413, розділіть текст
токенів на запит2,000413, розділіть список
запитів з однієї IP-адреси30 за хвилину, 300 за годину429 із заголовком Retry-After у секундах
сервіс не під’єднано 503 із реченням, яке про це повідомляє; нічого не проаналізовано
Перш ніж щось аналізувати, запит нормалізують: Unicode NFC, знаки наголосу, які друкують у підручниках (U+0301, U+0300), вилучено, а кожен гліф апострофа (U+2019, U+2018, U+02BC та інші) зведено до одного. Від нормалізованого вмісту обчислюють геш, і цей геш є ключем кешу: на повтор того самого тексту відповідь надходить із пам’яті із заголовком X-Cache: hit. Сам текст ніде не записується; журнали містять лише префікс гешу й підрахунки, а повідомлення про помилку ніколи не повторює вхідних даних.

Чи збігається він зі списком?

Перевірка, яка справді важить. Детерміновану вибірку зі списку (ranks 1 to 200 in full, then every 50th rank: 436 лем) надіслано до сервісу, а відповідь порівняно з власною лемою списку на тому самому ранзі, звівши апостроф і наголос. Збіг зараховано лише тоді, коли словник знає слово; невідомий токен, повернений без змін, рахується як промах, а не як влучання.

435 / 436
лем збігаються
99.8%
вибірки
5 / 5
лем з апострофом розпізнано
102 мс
5,000 символів
частина мови в спискуу вибірцізбіги лемтег UD збігається
NOUN176176167
VERB636362
ADJ616161
PROPN302929
ADV303022
ADP242418
DET161614
PRON141412
PART994
CCONJ777
SCONJ443
NUM222

Стовпець UD довідковий: ud є наближеним відображенням тегів VESUM, а власні теги списку дав інший тегер на суцільному тексті, тож частки, прийменники й прислівники розходяться там, де дві конвенції проводять межі по-різному. Контрактом є стовпець лем.

Єдиний промах: Упл (ранг 11,950, PROPN; словник його не знає).

П’ять лем з апострофом, названих у технічному завданні, тобто слова, які розбіжність гліфів ламає першими: ім'яім’я (ранг 311), кав'ярнякав’ярня (ранг 9,089), під'їздпід’їзд (ранг 5,424), м'ясом’ясо (ранг 2,851), п'ятьп’ять (ранг 480).

Швидкість: 5,000 символів речень із Вікіпедії (710 токенів) за 102 мс загального часу, з них 92 мс усередині сервісу, медіана 5 запусків на локальному екземплярі; бюджет становив 2,000 мс. Перевірено 2026-09-14. Артефакт, на якому стоїть цей розділ: src/data/ukrainian-frequency/lemmatizer-roundtrip.json; CI перераховує головний показник з його рядків і падає, якщо закріплену версію змінено без повторного запуску.

Чого він не робить

Він не передає до браузера ні словника, ні жодної таблиці словоформ: VESUM поширюється за CC BY-NC-SA і лишається на сервері. Він не застосовує статистичного зняття неоднозначності чи семантичних тегів nlp_uk; для звірки зі списком вистачило зняття неоднозначності за правилами, а meta.pipeline точно каже, що саме виконано. Він не зберігає вашого тексту. І він не вгадує: невідоме слово повертається з позначкою known: false і самим токеном як лемою, а токен, що розпадається на кілька частин, так і позначено, а не злито в один.

Зіставлення поширюється на умовах CC-BY-SA-4.0: кожен рядок містить рівень PULS, а рівні PULS мають ліцензію CC-BY-SA-4.0, тож умова поширення на тих самих умовах переходить на всю об’єднану таблицю. Томи Бородіна самі по собі лишаються під CC-BY-4.0. Цитуйте джерела, які тут поєднано, а не лише файл.

  • Мінімуми (CC-BY-4.0): Бородін і Туркевич, A1, 10.18452/28236; Бородін і Лазаренко, A2, 10.11584/opus4-1448.
  • Вивірені рівні (CC-BY-SA-4.0, поширюються з дозволу авторів): Синчак, Старко, Бурак і Свистун, Профіль української лексики / PULS.
  • Частотні ранги (CC-BY-4.0): UberText 2.0, Чаплинський 2023, lang-uk.

Інше в цьому інструменті

Огляд
Список, крива покриття і висновки кожного напряму.
Тест словника
120 слів так чи ні, з поправкою на вгадування: приблизна кількість знаних лем.
Профілювач текстів
Вставте текст і побачте, яку частку прочитає учень певного рівня.
Зіставлення
Два мінімуми Бородіна, прочитані проти вивіреного профілю CEFR.
Метод зіставленняEN
Як побудовано зіставлення, крок за кроком, з кожною цифрою.

На огляд · Усі дослідження