A language of 45 meaning roots with value axes. A word is encoded in two ways — by AI (a language model) and by Vectors (pure math, no model) — and then decoded blind.
Язык из 45 смысловых корней с осями значений. Слово кодируется двумя способами — ИИ (языковая модель) и Векторы (чистая математика, без модели) — и раскодируется вслепую.
Results of blind tests: one model encoded, another decoded without seeing the word. Green — the word was guessed first, yellow — it is among the alternatives, red — a miss. Click a row: the model is not called, the math is recomputed.
Результаты слепых тестов: кодировала одна модель, раскодировала другая, не видя слова. Зелёным — слово угадано первым, жёлтым — оно среди альтернатив, красным — промах. Нажмите строку — модель не вызывается, математика считает заново.
Two series. Recipes (law, money, food, transport, society, health, direction of motion): the Sonnet decoders saw the recipe list, so this checks that a recipe reads unambiguously, not that it can be guessed from scratch. Substances and numbers: the decoder saw only the root tables.
Две серии. Рецепты (право, деньги, еда, транспорт, общество, здоровье, направление движения): декодеры Sonnet видели список рецептов, так что это проверка того, что рецепт читается однозначно, а не того, что его можно угадать с нуля. Вещества и числа: декодер видел только таблицы корней.
| wordслово | codeкод | read asпрочитано |
|---|
Put up to three roots into the slots and move their values: the vectors (no language model) read the code at once and show the words nearest to it. The first root is the head — what kind of thing it is; the next ones narrow it. Click a word in the cloud to see how it is coded.
Положите до трёх корней в ячейки и двигайте их значения: векторы (без языковой модели) сразу читают код и показывают ближайшие к нему слова. Первый корень — главный: что это за вещь; следующие его сужают. Нажмите на слово в облаке — увидите, как кодируется оно само.
A word is written as ROOTS | form. Before the bar is the meaning: the head root and up to two modifying roots, each with a value on its axis when needed: GOOD(=+3) (fairly good), TIME(=-2) (recently), MANY(=-5) (none at all). No value written means the value is unspecified. Each next root refines everything before it: GRAIN(=0) THING(=-5) PART(=-5) — “loose crumbs of stone” (sand).
After the bar comes the part of speech — o thing, i action, a property, e circumstance — then, for a noun, an optional role like the Esperanto suffixes -ist, -il, -aĵ, -ec: agent the one who does it or a person of that field (ART(=+5) | o agent artist), tool, result, quality; and the form labels below: SAY | i T-2 M-5 — “did not say”. Roots without an axis () take no value.
Quotes are used only for numbers, proper names and specific members of a family in Latin or international form: a species "Canis", a substance "iodine", an organ "hepar", a celestial body "Luna", a game "chess", a narrow term "enzyme". The category itself is built from roots: organ — BODY INSIDE(=+5) PART(=-2) | o, star — HEAT(=+5) ABOVE(=+5) PART(=-2) | o. If a word has a recipe, no quotes are needed.
Слово записывается как КОРНИ | форма. До черты — смысл: главный корень и до двух уточняющих, у каждого при необходимости значение его оси: GOOD(=+3) (скорее хороший), TIME(=-2) (недавно), MANY(=-5) (ни одного). Ось не написана — значение не указано. Каждый следующий корень уточняет всё, что стоит перед ним: GRAIN(=0) THING(=-5) PART(=-5) — «сыпучие крошки камня» (песок).
После черты — часть речи: o предмет, i действие, a признак, e обстоятельство, у имени — необязательная роль, как суффиксы эсперанто -ist, -il, -aĵ, -ec: agent тот, кто делает, или человек этой области (ART(=+5) | o agent художник), tool орудие, result результат, quality свойство; и метки формы ниже: SAY | i T-2 M-5 — «не сказал». Корни без оси () значений не берут.
В кавычках пишутся только числа, имена собственные и конкретные члены семейства в латинской или международной форме: вид "Canis", вещество "iodine", орган "hepar", светило "Luna", игра "chess", узкий термин "enzyme". Сама категория строится из корней: орган — BODY INSIDE(=+5) PART(=-2) | o, звезда — HEAT(=+5) ABOVE(=+5) PART(=-2) | o. Если для слова есть рецепт, кавычки не нужны.
Labels are not roots. They go after the bar, separated by spaces, once on the head word.
Метки — не корни. Ставятся после черты через пробел, один раз на главном слове.
| labelметка | whatчто | scaleшкала |
|---|
Single words use this notation (with the part of speech after the bar) because it is the one verified by blind tests on words. The Toki Pona-style notation (no bar) won on whole sentences but was not measured on single words.
Для отдельных слов используется эта запись (с частью речи после черты), потому что именно она проверена слепыми тестами на словах. Запись в стиле токи пона (без черты) выиграла на целых предложениях, на словах отдельно не измерялась.
Switch it on under the input field: every code gets a line with its pronunciation. Not checked by ear yet; the source is phonetics.yaml.
pona GOOD, suli BIG, sona KNOW, moku CONSUME), and the word itself never changes — the head of a word is always the plain Toki Pona word. The value on its axis is a suffix of syllables that Toki Pona forbids, so it cannot be mistaken for a word: ti positive, wu negative, repeated |v| times; an explicit (=0) is a short y (Russian ы, as in Polish); nothing written means no value. Roots without an axis take no suffix (SEE lukin, DO pali, TEXT lipu).GOOD is pona, GOOD(=+3) is ponatititi, GOOD(=-2) is ponawuwu, GOOD(=0) is ponay.-, then ' and the vowel of the part of speech, then the role and labels after · (ul il aj ec for agent, tool, result, quality; a label is a vowel and a consonant: at T+, ad T−, an T0).h: he E, hi PI, ha LA, hu AND, hen FROM, hon FOR, hin LIKE, ho PE; hem … hom are the brackets, hum is ;. Quoted names are read in their own language.In the Roots tab the sounds of each root show next to its name.
Включается под полем ввода: у каждого кода появляется строка с произношением. На слух ещё не проверено; источник — phonetics.yaml.
pona GOOD, suli BIG, sona KNOW, moku CONSUME); само слово не меняется, голова слова — всегда обычное токипонское слово. Значение оси — суффикс из слогов, которые запрещает токипонская фонотактика, поэтому он не спутается со словом: ti — положительное, wu — отрицательное, повторённые |v| раз; явный (=0) — короткое y (ы, как в польском); ничего не названо — значения нет. У корней без оси суффикса нет (SEE — lukin, DO — pali, TEXT — lipu).GOOD — pona, GOOD(=+3) — ponatititi, GOOD(=-2) — ponawuwu, GOOD(=0) — ponay.-, затем ' и гласная части речи, затем роль и метки после · (ul il aj ec — agent, tool, result, quality; метка — гласная и согласный: at — T+, ad — T−, an — T0).h: he E, hi PI, ha LA, hu AND, hen FROM, hon FOR, hin LIKE, ho PE; hem … hom — скобки, hum — ;. Имена в кавычках читаются на своём языке.В таблице «Корни» рядом с каждым корнем показано его звучание.
| rootкорень | −5 | 0 | +5 |
|---|
Source: the file roots.yaml; the table on the site is built from it.
Источник — файл roots.yaml; таблица на сайте собирается из него.
| wordслово | codeкод |
|---|
The recipes are collected from encoding.md and from the hints the model gets on the site; each was checked by a blind test (reports in data/translation_test). Click a row — the code opens in “Try it”: the model decodes it blind and the math reads it.
Рецепты собраны из encoding.md и подсказок, которые получает модель на сайте; каждый проверен слепым тестом (отчёты — в data/translation_test). Нажмите строку — код откроется на «Пробе»: модель раскодирует его вслепую, математика прочитает.
The main question: is meaning preserved along the chain text → code → text? The check is blind:
| check | result |
|---|---|
| Removed the roots CONTAINER and MAYBE (replaced by combinations and a label) | within noise; fewer roots |
| An axis on the root “see” | worse than without (−0.43, interval at the edge); not introduced |
| Curly braces around words | many more codes without format errors (8–10% errors instead of 30–58%), meaning unchanged (+0.04 [−0.20, +0.26]) |
| Recipes for gaps (law, money, food, transport, society, power, war, health) | in two blind tests 24 of 24 with recipes against 17, 13 and 19 without; no new roots needed |
| Toki Pona-style notation (root words, roles by position) | better meaning: +0.33 [+0.05, +0.60] on a held-out set of 40 sentences |
The right column in “Try it” encodes a word without a language model: the word vector (ConceptNet Numberbatch) is approximated by a sum of at most three roots with integer axis values, by trying all variants. A root is a “center” (what the axis is about) plus an axis direction, built from pole words in roots.yaml. The root directions are then fitted on 70% of frequent words, with the condition that each stays close to the original (cos ≥ 0.85). Decoding: a word must be close to each root of the code separately, and hub words that are close to any code are penalized.
What it gives: on the math's own codes (2000 words of the site dictionary) the word is restored first in 46–51% of cases and in the top ten in 91–93%. But people and models hardly read the math's codes (1–3 of 24 in an earlier blind test). So it serves as an analysis tool — finding missing roots, checking axis poles, finding duplicate roots (this is how MATTER and GRAIN were merged) — not as a translator. Details: docs/math.md (in Russian).
Protocol and scripts: scripts/eval; results: data/translation_test.
Главный вопрос: сохраняется ли смысл при цепочке текст → код → текст. Проверка слепая:
| проверка | результат |
|---|---|
| Убрали корни CONTAINER и MAYBE (вместо них сочетания и метка) | в пределах шума; корней стало меньше |
| Ось у корня «видеть» | хуже, чем без оси (−0,43, интервал на границе); не введена |
| Фигурные скобки вокруг слов | кодов без ошибок формата стало намного больше (8–10% ошибок вместо 30–58%), смысл не изменился (+0,04 [−0,20, +0,26]) |
| Рецепты для лакун (право, деньги, еда, транспорт, общество, власть, война, здоровье) | в двух слепых тестах по 24 из 24 с рецептами против 17, 13 и 19 без них; новых корней не понадобилось |
| Запись в стиле токи пона (слова-корни, роли по позиции) | смысл лучше: +0,33 [+0,05, +0,60] на отложенном наборе из 40 предложений |
Правая колонка на «Пробе» кодирует слово без языковой модели: вектор слова (ConceptNet Numberbatch) приближается суммой не больше трёх корней с целыми значениями осей, перебором всех вариантов. Корень — это «центр» (о чём ось) плюс направление оси, построенные из слов-полюсов в roots.yaml. Направления корней затем подогнаны по 70% частых слов с условием, что каждый остаётся похож на исходный (cos ≥ 0,85). Раскодирование: слово должно быть близко к каждому корню кода по отдельности, а слова-хабы, близкие к любому коду, штрафуются.
Что это даёт: на собственных кодах математики (2000 слов словаря сайта) слово восстанавливается первым в 46–51% случаев и в первой десятке в 91–93%. Но люди и модели коды математики почти не читают (1–3 из 24 в прежнем слепом тесте). Поэтому она служит инструментом анализа — искать недостающие корни, проверять полюса осей, находить корни-дубли (так слиты MATTER и GRAIN), — а не переводчиком. Подробно: docs/math.md.
Протокол и скрипты: scripts/eval; результаты: data/translation_test.
The documents in the repository are in Russian and still describe the previous notation (with | and suffixes). The Toki Pona-style notation is accepted for testing and has not been moved into them yet.
Документы в репозитории пока описывают предыдущую запись (с | и суффиксами). Запись в стиле токи пона принята для проверки и ещё не перенесена в них.