Леми, частини мови й морфологічні теги для українського тексту в тій самій конвенції, за якою побудовано цей список.
Кожне зіставлення зі списком слів залежить від лематизатора, який погоджується зі списком у тому, що вважати заголовним словом. Частотний список, вивірене накладання 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,000 | 413, розділіть список |
| запитів з однієї IP-адреси | 30 за хвилину, 300 за годину | 429 із заголовком Retry-After у секундах |
| сервіс не під’єднано | 503 із реченням, яке про це повідомляє; нічого не проаналізовано |
X-Cache: hit. Сам текст ніде не записується; журнали містять лише префікс гешу й підрахунки, а повідомлення про помилку ніколи не повторює вхідних даних.Перевірка, яка справді важить. Детерміновану вибірку зі списку (ranks 1 to 200 in full, then every 50th rank: 436 лем) надіслано до сервісу, а відповідь порівняно з власною лемою списку на тому самому ранзі, звівши апостроф і наголос. Збіг зараховано лише тоді, коли словник знає слово; невідомий токен, повернений без змін, рахується як промах, а не як влучання.
| частина мови в списку | у вибірці | збіги лем | тег UD збігається |
|---|---|---|---|
| NOUN | 176 | 176 | 167 |
| VERB | 63 | 63 | 62 |
| ADJ | 61 | 61 | 61 |
| PROPN | 30 | 29 | 29 |
| ADV | 30 | 30 | 22 |
| ADP | 24 | 24 | 18 |
| DET | 16 | 16 | 14 |
| PRON | 14 | 14 | 12 |
| PART | 9 | 9 | 4 |
| CCONJ | 7 | 7 | 7 |
| SCONJ | 4 | 4 | 3 |
| NUM | 2 | 2 | 2 |
Стовпець 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 і самим токеном як лемою, а токен, що розпадається на кілька частин, так і позначено, а не злито в один.