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 смысловых корней с осями значений. Слово кодируется двумя способами — ИИ (языковая модель) и Векторы (чистая математика, без модели) — и раскодируется вслепую.
min-co (working name) is a small constructed language inspired by Toki Pona. It has about 45 roots, roughly a third of Toki Pona's vocabulary, and a word is up to three roots, the main one first: house = PLACE LIVE | o.
Every root name on this site is a link to the Roots tab; hover for a short hint.
In Esperanto, shades of meaning come from affixes: granda, grandega, malgranda, malgrandeta. In min-co a root carries a scale from −5 to +5, and a number says where on the scale you mean. One root, many words:
| code | meaning |
|---|---|
SAY(=-5) | i | mutter |
SAY(=-4) | i | whisper |
SAY | i | say, speak |
SAY(=+3) | i | call out, speak loudly |
SAY(=+5) | i | scream, roar |
SAY(=-3) | o | a whisper |
SAY(=+4) | o | a shout |
SAY(=+3) THING | o | noise |
The same works elsewhere: PLACE LIVE | o is a home, PLACE LIVE(=-2) | o a bedroom, PLACE LIVE(=-5) | o a morgue. A value left out means “not specified”; (=0) is the explicit middle.
Computers represent meaning as a long list of numbers per word (word2vec, GloVe, ConceptNet Numberbatch): a word is a point in a meaning-space. Dimensionality reduction such as PCA finds the few directions along which words differ most. In principle those could be the axes of a language.
In practice they are not readable. The axes PCA finds mix unrelated senses: one pole of the first axis is mandate, requirement, approval, the other fell, blast, hit, beat. Twenty axes explain only about 20% of the variation. They are made for computers and are not suitable for learning or speaking, and the words they give look odd: a knife comes out as LONG(=-1) PART(=-5) TOUCH(=+5) | o.
| axis | one pole | the other pole |
|---|---|---|
| 1 | mandate, requirement, approval, agreement | fell, blast, hit, beat |
| 2 | amount, extent, ratio, size | deputy, secretary, chairman, president |
| 3 | administrative, department, office | indeed, certainly, truly, really |
| 4 | downturn, slowdown, recession | unique, famous, wonderful, beautiful |
| 5 | final, deadline, next, last | deeply, strongly, leadership, advocate |
5,949 words of this site's vocabulary, Numberbatch vectors.
|.Some words: school = PLACE KNOW CONSUME(=+5) | o; teacher = SOMEONE KNOW GIVE(=+4) | o; money = VALUE GIVE(=0) | o; debt = VALUE GIVE(=+4) TIME(=+3) | o; hospital = PLACE LIVE(=0) GOOD(=-4) | o.
By math. The word's vector is approximated by a sum of at most three roots with integer axis values, found by trying all combinations (try the decoder, play with the mixer). It needs no model: on 2,000 words the original comes back first in about half the cases and in the top ten in over 90%. It is a good analysis tool: it shows which concepts have no root, whether two roots overlap, which poles of an axis are wrong. But its codes are hard to read by people and models (1–3 of 24 words in an early blind test): the math picks whatever fits the numbers, not what makes sense.
By a language model. A model that understands what the roots mean writes codes that read much better. In blind tests, with the recipes for hard words (law, money, food, transport…) 24 of 24 were restored against 13–19 without, and the Toki Pona-style notation scored +0.33 on a three-point scale over the earlier notation. The limit: on encyclopedic sentences the average is 1.2–1.4 of 3; the language carries the topic and the main relations, not the details. See Method.
Ideally the two work together: the math proposes a candidate, the model reads and corrects it.
Not decided yet. The current draft: a root is a Toki Pona word, an axis value is a repeated syllable (ti for plus, wu for minus, y for the explicit middle). Options still open: vowel or consonant quality for the sign, vowel length for the value.
min-co (рабочее название) — небольшой искусственный язык по мотивам Toki Pona. В нём около 45 корней, примерно треть словаря Toki Pona, а слово — это до трёх корней, главный первым: дом = PLACE LIVE | o.
Каждое название корня на сайте — ссылка на вкладку «Корни»; при наведении появляется короткая подсказка.
В эсперанто оттенки смысла дают аффиксы: granda, grandega, malgranda, malgrandeta. В min-co у корня есть шкала от −5 до +5, а число показывает, где на шкале вы находитесь. Один корень, много слов:
| код | значение |
|---|---|
SAY(=-5) | i | бормотать |
SAY(=-4) | i | шептать |
SAY | i | говорить |
SAY(=+3) | i | окликнуть, говорить громко |
SAY(=+5) | i | кричать, реветь |
SAY(=-3) | o | шёпот |
SAY(=+4) | o | крик |
SAY(=+3) THING | o | шум |
То же и в других местах: PLACE LIVE | o — дом, PLACE LIVE(=-2) | o — спальня, PLACE LIVE(=-5) | o — морг. Если значение не написано, оно «не указано»; (=0) — явная середина.
Компьютеры представляют смысл длинным списком чисел на слово (word2vec, GloVe, ConceptNet Numberbatch): слово — точка в пространстве смыслов. Методы сжатия, например PCA, находят немногие направления, по которым слова различаются сильнее всего. В принципе, это могли бы быть оси языка.
На практике их нельзя читать. Оси PCA смешивают несвязанные значения: один полюс первой оси — mandate, requirement, approval (поручение, требование, одобрение), другой — fell, blast, hit, beat (упасть, взрыв, удар, бить). Двадцать осей объясняют лишь около 20 % разброса. Они сделаны для компьютеров и не годятся для изучения и речи, а слова выходят странные: нож получается как LONG(=-1) PART(=-5) TOUCH(=+5) | o.
| ось | один полюс | другой полюс |
|---|---|---|
| 1 | mandate, requirement, approval, agreement | fell, blast, hit, beat |
| 2 | amount, extent, ratio, size | deputy, secretary, chairman, president |
| 3 | administrative, department, office | indeed, certainly, truly, really |
| 4 | downturn, slowdown, recession | unique, famous, wonderful, beautiful |
| 5 | final, deadline, next, last | deeply, strongly, leadership, advocate |
5949 слов словаря сайта, векторы Numberbatch.
|.Несколько слов: школа = PLACE KNOW CONSUME(=+5) | o; учитель = SOMEONE KNOW GIVE(=+4) | o; деньги = VALUE GIVE(=0) | o; долг = VALUE GIVE(=+4) TIME(=+3) | o; больница = PLACE LIVE(=0) GOOD(=-4) | o.
Математикой. Вектор слова приближается суммой не больше чем трёх корней с целыми значениями осей, перебором всех сочетаний (декодер, смеситель). Модель не нужна: на 2000 слов исходное слово возвращается первым примерно в половине случаев и в первой десятке больше чем в 90 %. Это хороший инструмент анализа: он показывает, для каких понятий нет корня, пересекаются ли два корня, неверны ли полюса оси. Но такие коды плохо читают люди и модели (1–3 слова из 24 в раннем слепом тесте): математика выбирает то, что подходит по числам, а не по смыслу.
Языковой моделью. Модель, которая понимает, что значат корни, пишет коды, которые читаются заметно лучше. В слепых тестах с рецептами для трудных слов (право, деньги, еда, транспорт…) восстановлено 24 из 24 против 13–19 без них, а токипонская запись дала +0,33 по трёхбалльной шкале против прежней. Предел: на энциклопедических предложениях средняя оценка 1,2–1,4 из 3; язык передаёт тему и главные связи, а не детали. См. Методологию.
В идеале они работают вместе: математика предлагает кандидата, модель читает и исправляет.
Пока не решено. Нынешний черновик: корень — слово Toki Pona, значение оси — повторённый слог (ti для плюса, wu для минуса, y для явной середины). Открытые варианты: качество гласной или согласной для знака, долгота гласной для значения.
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.
Документы в репозитории пока описывают предыдущую запись (с | и суффиксами). Запись в стиле токи пона принята для проверки и ещё не перенесена в них.