Байт-код «Цифор» для любого языка из номера основы слова и номера грамматической формы

в 16:09, , рубрики: IT-стандарты, будущее здесь, изучение языков, Разработка для интернета вещей, Семантика

image

Byte-code “Tsifor” for any language as number of stem and number of grammatical form for man-machine interface and corpus linguistics

Дмитрий Тюрин (Dmitry Turin), vk.com/dima.turin, dima.turin@qq.com, dima.turin@gmail.com

Прочитана лекция (youtu.be/gl89IIvpgCg) на 6-м Фестивале языков в Великом Новгороде.

Ключевые слова: ЧМИ, машинный перевод, текстовый поиск, полнотекстовый поиск.

Аннотация: Машины мыслят идентификаторами, и ЧМИ требует назначить их основам слов и грамматическим формам, а в сообщениях указывать только числа. Форма слова задаются шестью «зубцами»: предлогом, префиксом, трансфиксом, постфиксом, послелогом, катализатором (последний стоит в любой части предложения). Изолирующие, аналитические и синтетические языки отличаются только тем, какие применяют зубцы. Инкорпорирующие и неинкорпорирующие, с левым или с правым ветвлением – только «лакуной»: между какими соседними зубцами главного слова стоит основа зависимого (и в каком порядке идут зубцы главного и зависимого слов, разных зависимых частей речи при одной главной, однородных членов). Таким образом перенумеровав основы слов и «расчёски» (композиции зубцов), заменяем каждое слово на два идентификатора. Языки разнятся также тем, какими граммемами обмениваются существительное, числительное и счетное слово – «блендингом», а также кто из них принимает константные грамматические формы и какие. Свойства языка – номер используемой лакуны, порядки зубцов, подробности блендинга, копируемые граммемы при вершинном и двойном маркировании и т.д. – выносятся из сообщений в специальные таблицы в операционной системе.

Keywords: MMI, human-machine interface, HMI, machine translation, text search, full-text search.

Abstract: Machines think by identifiers, and MMI requires to assign them to stems and to grammatical forms, and to use only these numbers in messages. Form of word is specified by six «teeth»: preposition, prefix, transfix, postfix, postposition, catalyst (the last stays in any place of clause). Isolating, analytical, synthetic languages differs only which teeth are used. Incorporating and non-incorporating languages, with left and with right branching differ only in «lacuna»: between which neighboring teeth of main word does stem of depending word stay (and what is the order of teeth of main and of depending words, of different depending parts of speech near the same main word, of homogeneous parts of the sentence). So emumerating stems and «combs» (compositions of teeth), we replace each word by two identifiers. Languages diverge too, by what grammemes do noun, numeral, and counting word exchange – by «blending», and also who from them accept constant grammatical forms and what forms. Features of language – number of lacuna, orders of teeth, specialities of blending, coping grammemes at top and double marking, etc – are carried out from messages into special tables of operating system.

Зубцовая классификация языков

Набор из катализиторов (отличаются от предлогов и послелогов тем, что могут стоять в предложении в любом месте), предлогов (и артиклей), префиксов, трансфикса, постфиксов, послелогов при одном корне назовем расчёской/comb, а каждое из этих шести слов – зубцом/tooth. Именовать зубцы будем номерами от 0 до 5 в упомянутом порядке. В общем случае зубец может состоять из нескольких слов, например, 1-й – из предлога и артикля в испанском и португальском. Расчёска может иметь не все шесть компонент: так у русского существительного есть только 1-й и 4-й зубцы (обобщенный падеж), у немецкого глагола – из 2-й и 4-й (циркумфикс). Изолирующие, аналитические и синтетические языки отличаются тем, что в первых нет зубцов, во вторых есть 1-ые и 5-ые зубцы, а в третьих – 2-ые и 4-ые.

Основы слов и расчёски перенумеруем, номера назовем бнарами/bnar и комодами/combod и вместе с основами и расчёсками сохраним в специальных таблицах операционной системы. Каждое слово представим в виде пары «бнар-комод». Новый формат назовем цифором/tsifor, старый текстовый – тефором/tefor; корпуса языков в новом занимают меньше, а обрабатываются быстрее (за счет замены многих букв на один идентификатор). Превращать из тефора в цифор назовем цифорвать/tsiforvate, а в обратную сторону – тефорвать/teforvate. Результат этих двух операций в любом порядке дает исходную последовательность байт, т.е. первоначальное сообщение.

Лакунная классификация языков

Положение между соседними зубцами назовем лакуной/lakuna, и в специальных таблицах для каждого языка укажем, в какую лакуну главного слова (далее чичара/chichar) ставится зависимое (далее зачар/zachar), в каком порядке идут чичарные и зачарные зубцы, в каком однородные чичарные, и в каком козачарные – зачарные разных частей речи при одном главном слове.

Группа может быть 01-лакунной/01-lakuna (ставится перед 1-м зубцом), 12-лакунной (между 1-м и 2-м, «свой» + «к сыну» = «к своему сыну»: в изолирующих, аналитических и синтетических языках с левым ветвлением, в т.ч. в английском и в русском), 23-лакунной (между 2-м зубцом и основой: в инкорпорирующих с левым ветвлением, например, чукотском, эскимосских), 34-лакунной (между основой и 4-м зубцом: в инкорпорирующих с правым ветвлением), 45-лакунной (между 4-м и 5-м: в изолирующих, аналитических и синтетических языках с правым ветвлением), 56-лакунной (обозначение условно, после 5-го).

Зубцы однородных чичаров могут идти в прямом порядке (в порядке следования самих чичаров), в обратном и в любом. Зубцы-с-одинаковыми-номероми чичара и зачара (родственные/related) могут идти в порядке чичар-зачар, зачар-чичар, произвольном; писаться слитно или раздельно.

Введем фиктивный порядок групп: глагольная только с существительными > глагольная только с наречиями, именная только с зависимыми существительными > именная только с прилагательными > только с числительными, группа прилагательного только с зависимыми существительными («горд братом, чужд разврата, скуп в движениях») > группа прилагательного только с наречиями. Зачары «большей» и «меньшей» групп являются друг другу, как мы уже сказали выше, козачарами/kozachar. Их зубцы (козачарные) могут идти в порядке «сначала из большей, потом из меньшей», наоборот или произвольно.

Группы могут иметь несколько лакунностей/lakunarity: она разная в английском в вопросительном и повествовательном предложениях, а в русском языке – в точном и приблизительном выражении количества (числительное впереди или позади существительного).

Классификация грамматических категорий

Все мыслимые грамматические категории назовем тиграми/tigr, они бывают трех видов. Вогры/vogr – присущие самой части речи, неизменяемые и хранящиеся вместе с основами в специальных таблицах ОС: спряжение, склонение, род (именной класс). Лугры/lugr – изменяемые и кодируемые в цифоре: эвиденциальность, наклонение, адмиратив, краткая или полная форма (у причастий и прилагательных), отрицание (в русском языке это – частица «не», а не приставки «без» или «анти»), время, залог, вид, модальность, число. Ныгры/nigr – изменяемые, но не кодируемые, а вычисляемые по положению в клаузе: двухбитный полоз/poloz (со значениями «первый, промежуточный, последний» для групповой флексии однородных существительных в тюркских и осетинском), правизна/pravizna – порядковый номер глагола в череде глаголов одной клаузы или порядковый номер существительного в цепочке зависящих друг от друга существительных (два соседних назовем по отношению друг к другу левым/left и правым/right, а первый – еще и левейшим/leftmost). Идентификатор конкретного значения тигра назовем тибом/tib, лугра – лубом/lub, вогра – вобом/vob, ныгра – ныбом/nib.

Квартет из бнара, нуса, нувара и нуба

Одно или два значения числительного (если это – дробь, например) храним в переменной нувар/nuvar («numeric variable»), и каждое значение будем величать нузном/nuzn (от слов «нумер, значение»), чтобы отличать от грамматической категории «число», которой числительное в некоторых языках обладает. Нувар тефорвируется в любой зубец: 1-й («десять человек» в русском, в индонезийском), 2-й (приставки СИ и МЭК типа «гига» и «гиби»), 5-й («человек десять» в русском, в суахили) и т.д.; в какой именно, прописью или цифрами и с какими особенностями укажем в трехбитном поле формат/format переменной нуб/nub. Оставшиеся её пять бит занимает тип/type, который указывает количество нузнов, их размер и субтип/subtype, т.е. тип-данных, разбитый на столько подтипов, сколько сортов/sort числительного (количественное, порядковое и пр.) нузн может содержать. Соответственно формат и сорт являются луграми.

Для фраз вроде «тройка сотней» введем полковой/polk нувар с двумя нузнами (не путайте с выражением «семью семь»: это – два нувара в разных падежах). Над дробями вида «семи целых трех пятых» проделаем наращивание/growing – операцию обратную сокращению дроби. Идентификаторы счетных слов будем называть нусами/nus, и тем отличать их от всех остальных существительных. Итого при одном бнаре существительного бывает не более одного нуса и не более двух нуваров: «вторые три четверти, пятая тройка сотней, семь целых три пятых».

Нузн имеет ныгр дводес/dvodes, содержащим тот же значение, что и нузн, но не в двоичном виде, а в двоично-десятичном (каждые четыре бита содержат цифру от нуля до девяти); ныгр наим/naim (от слова «наименьший»), содержащим младшую из этих двоично-десятичных цифр, т.е. если нузн и дводес равны 321, то наим равен 1; и ныгр знамен/znamen, равный true только для знаменателя в дробном и второго нузна в полковом. Последнее позволяет придать, например, знаменателю дробного числительного сорт «порядковое», число множественное (а в русском – еще и родительный комод) и оставлять его неизменяемым при склонении числителя.

Блендинг

Если изначально в квартете кто-то не имеет комода и числа, то получает именительный и единственное. Затем тибы квартета меняют свое состояние, процедуру эту назовем блендингом/ blending. Как она проходит в конкретном языке, указано в спецтаблицах ОС. Например, в русском при количественном сорте нувара он и нус принимают комод бнара (если был нус, бнар меняет свой комод на родительный); кроме того, если комод бнара был именительный или винительный, то при наим равном 1 бнар (или нус вместо него, если он есть) принимает единственное число и сохраняет комод, при найм 2…4 – единственное и родительной, а при большем – множественное и родительный. А если комод бнара был другим, то и при 2…4 множественное и родительный.

Так «молоко 21/24/25 литр» превращается в «двадцать один/четыре/пять литр/-а/-ов молока», а «молоком 21/24/25 литр» – в «двадцати одним/четырьмя/пятью литром/-ами/-ами молока». При собирательном сорте и нузне, большем единицы, число бнара всегда множественное, а комод родительный: «тройка/ тройки/ тройке/ тройку/ тройкой тракторов».

Тефорвание разрядов

Основы, в которые тефорвируются цифры (0…9), именуем будами/bud; а основы, называющие разряды позиционной системы счисления (единицы, десятки, сотни, тысячи и т.д) – фидами/fid. Их зубцы могут идти в порядке «сначала будные, потом фидные», наоборот или произвольно; слитно или раздельно. Зависит это и от сорта нузна (например, в русском количественное пишется раздельно, порядковое слитно: «два с половиной, двухсполовинный»), и от величины нузна (в русском числа меньшие 20 пишутся в одно слово, большие – в два).

И буды, и фиды имеют вогр вма (подробнее о нем ниже), дающий супплетивы для разного названия разряда: «(дв-е-)сти, (четыр-е-)сто, (пят-ь-)сот» и т.п., «восемь-десят, (девя-но-)сто». И имеют вогр полоз для конструкций вроде «двести пятьдесят шестой», «двести пятьдесят шестым». Супплетив для чисел от 11 до 99 в хинди, где один буд соответствует сразу паре разрядов, задается только для одного разряда, а в другом полагается пустой строке.

Копирование тигров с чара на чар

image
Пусть мачар/machar, чичар/chichar и зачар/zachar означают три бнара (чар – сокращенно «часть речи»), причем чичар («чистый») – зависимое слово при мачаре («main»), а зачар («зависимый») – зависимое при чичаре. Вогры, оказавшиеся в зачарах потому, что были скопированы из чичаров, назовем завограми/zavogr (так, например, в русском падеж, число, род существуют у прилагательного, причастия, притяжательного местоимения только потому, что были скопированы в них из существительного). А вогры, оказавшиеся в мачарах потому, что были скопированы из чичаров – мавограми/mavogr (так, например, в русском число, лицо, род существуют у глагола только потому, что скопированы в него из актанта, стоящего в именительном падеже: число и лицо копируются в настоящем и будущем временах, число и род – в прошедшем).

Но и некоторые чилугры копируются с чичаров на зачары – там они называются залуграми/zalugr. Так, например, в русском отрицание копируется с глагола в его актанты и корректирует их падеж: «вижу смысл» – «не вижу смысла», «есть смысл» – «нету смысла». А вот малугры/malugr – лугры, оказавшиеся у мачаров потому, что были скопированы в них с чичаров – в каком-либо языке нам неизвестны, но для завершенности систематики введем и этот термин.

Итак, чивогры, завогры и мавогры не кодируются в лубах и существуют единственно для связи чаров в предложении. Чилугры, залугры и малугры являются категориальным аппаратом, с помощью которого мы описываем окружающий мир.

Декомпозиция и пулид

Раз лугры обладают лексическим значением, проведем декомпозицию расчёски на её (расчески) начальную форму и лугры. Так 0-й зубец в австралийских изменяется по всем глагольным категориям (он их несет вместо глагола); 1-й в полинезийских – по вогру «собственное-нарицательное», в ирландском – по числам и лицам; 4-й в русском является фунцией склонения и бита отрицания. Начальную форму расчёски назовем пулом/pull, а ее идентификатор – пулидом/pulid, который также будем считать лубом. Итого комод расщепляется на последовательность лубов.

В языках с вершинным маркированием пулид тефорвируется в пул мачара, с двойным – и чичара (чипул/chipul), и мачара (мапул/mapul). Т.е. в общем случае пул чичара является комбинацией его чипула и мапулов зачаров. Запул/zapul (пул, появившийся у зачара как отражение пулида чичара) в каком-либо языке нам неизвестен, но для завершенности систематики введем и этот термин.

Некоторые слова изменяют свою роль, так в русском, например, слово «чем» после прилагательного в сравнительной степени является 1-м зубцом следующего за ним существительного или местоимения: «красивее чем ты» – это аналог «красивее тебя». Для разрешения неоднозначностей в неграмотной русской речи применяем правило «1-й зубец приоритетнее 4-го»: «в мозгу» означает «в мозге», а не «мозгу». Супплетив – основа, которая тефорвировалась не из одного бнара, а из бнара и пулида.

Неакадемические лугры и вогры

Суффиксы диминутивные (уменьшительно-ласкательные) и аугментативные (увеличительно-пренебрежительные) назовем улупами/ulup и будем считать их значениями лугра дак/dak. Улуп является частью основы слова, если кроме значений, доставшихся от родительского слова, имеет и самостоятельные значения, последнему не присущие («снежинка, ширина, бусина»). Для превращения существительных и местоимений в неопределенные введем однобитный мутен/muten. А однобитное отрицание существует вообще у всех частей речи. Для выбора способа выражения неопределенности («кое-, -то, -либо, -нибудь»), способа выражения отрицания («не» или «ни», слитно или раздельно), наклонения, залога, только-что-прошедшего и сейчас-будущего времён введем порядковый номер способа в виде лугра варьен/varien.

Вогр вма/vma копируется в мавоб, чтобы выбрать порядковый номер пула для мачара, например, в русском чтобы выбрать предлог среди «с/со, в/во, из/изо, под/подо, из-под/из-подо, о/об/обо». У бнара «свой» он установлен в единицу и, попав в существительное, дает фразу «со своим сыном» – а не «с своим сыном». Также вма равен единице у бнаров «далеко, вовсе, ничуть, нисколько, никогда», из-за чего их наречия-мачары пишутся с «не» раздельно («далеко не скромно»).

В некоторых пулах 0-й зубец выделяется с двух сторон запятыми (таковы в русском междометия), пометим его пулид единицей в однобитным запятен/zapaten.

Союзы между однородными членами назовем рюзами/ruz («одноРодный союз»), а их идентификаторы – рюзидами/ruzid. Они имеют трехбитные вогры группер/groupper, фланкер/flanker и двухбитный рюзен/ruzen. Однородные дуады назовем рюдуадами/ruduad, и в группере укажем, к каким рюдуадам применить зубец: «и A, и B, и C, и D»; «A и B и C и D»; «A и B, C и D»; «и A B, и C D»; «A, B, C и D»; «A, и B, и C, и D»; «и A, B, C, D»; «A, B, C, D» (последнее означает не применять рюз вообще). Во фланкере зададим, в качестве какого зубца применить: в славянских рюз является 1-м, в адыгских – 4-м («Петярэ Сашарэ» означает «Петя и Саша»). А в рюзене – что рюз соединительно-присоединительный, разделительно-противительный, градационный или пояснительный: так в русском слитное написание «не» заменяется на раздельное под разделительно-противительным рюзом – «не скромный, а хвастливый». Если рюз состоит из двух частей («как – так и, не только – но и»), то они имеют разные идентификаторы, и в вогре четен/cheten первого указан идентификатор второго: первый применяется к каждому нечетному рюдуаду, а второй – к каждому четному.

Пул существительного может зависеть от того, обозначает ли оно, будучи нарицательным, вещество («сахар») или идею («любовь»), а будучи собственным – уникальный объект («Эверест») или неуникальный («Иван»), посему введем двухбитный вогр единен/edinen. От того, обозначает ли оно в единственном числе один предмет, неисчислимое количество или же является собирательным (как «коллектив, ряд, класс, жюри, армия, команда») – для таких случаев двухбитный собирен/sobiren. От того, является ли объект активным, одушевленным, разумным – для них однобитные активен/aktiven, одушен/odushen, разумен/razumen. Например, в русском одушен выбирает между «кто» и «что», между винительным пулидом («вижу три дерева») и родительным («вижу трех учениц»).

Форма Бэкуса-Наура для клаузы

Цифорвуя, приведем порядок бнаров к виду «глагол-существительное-прилагательное-наречие». Порядок следования самих зачаров в группах сохраняем тем, какой был в тефоре; а смещение чичара от начала последовательности зачаров и козачаров укажем в его переменной нутригруп/ nutrigrup. Далее такие технические переменные будем называть пеграми/pegr. Но нутригрупп должен рассматриваться как источник не только технических сведений, но и стилистических.

Назовем глабуром/glabur смешанную глагольную группу с существительными и наречиями, а цепочку вложенных друг от друга глабуров – стволом/stvol: «разрешите прекратим помогать бурить», «дай закончат строить». В ряде языков, например, в русском, в глабуры без подлежащего добавляется ангел/angel (неотображаемое местоимение), чтобы было откуда взяться мавограм глагола.

И глаголы, и существительные, и прилагательные имеют зонт/zont – в множество зависимых существительных, каждый в своем пулиде: «до сегодняшего дня скуп на эмоции к дяде из-за его опоздания, с каждым днем все скупее на эмоции к дяде из-за его опоздания, самым скупым на эмоции к дяде из-за его опоздания», «верен в чем-то долгу до гроба ради показухи, самый верный долгу на деле не ради показухи». Количество существительных укажем в пегре чичара кокоз/kokoz («количество компонентов зонта»), во всех языках их не более четырех, но на случай описания новых языков сделаем это поле трехбитным (до восьми существительных).

У существительного могут быть зависимые прилагательные в индифирентной [она же положительная, нейтральная], сравнительной и превосходной степенях («Ип, Сп, Пп»), но наречие – только в индифирентной («Ин»): «движение вперед, чтение вслух, рубашка навыпуск». А у глагола – и прилагательные в трех степенях, и наречия в трех степенях («Ин, Сн, Пн»). В свою очередь прилагательное может иметь зависимый глагол («he is certain to come») и зависимое существительное («коза слабее лошади»), существительное – тоже зависимый глагол («нетерпение доехать, man to beat»).

Наличиствующие зачары укажем в пегре чичара налик/nalik, а перестановку относительно стандартной, что в формулах ниже – в пегре внегруп/vnegrup (налики и внегрупы в гланости, суности, приности имеют разный размер). Будем нумеровать перестановки в лексикографическом порядке, считая, что сами элементы перестановки пронумерованы слева направо. Для кодирования выделим меньше бит, чем для записи n!, во-первых, потому что большая часть элементов обычно отсутствует, и во-вторых, потому что всегда можно записать в твин (см.ниже).

В форме Бэкуса-Наура ниже квадратные скобки охватывают зачары, которые могут отсутствовать. Фигурные скобки означают, что их содержимое может стоять в этом месте несколько раз (каждый раз с разным наполнением). Точка принадлежит не предложению, а маркирует конец формулы. Бнары глаголов – это #глаг, существительных – #сущ, прилагательных – #прил, наречий – #нач и #зач (начи обладает наностью, зачи – нет), нусов – #нус. Гланость, суность, приность, наность – последовательности их лубов. Иллюстративные и объемные числительные (см.ниже) обозначены как «Иллю» и «Объем».

ГЛАБУР ::= гланость #глаг {ЗОНТ} [ГЛАБУР] [Ин] [Сн] [Пн] [Ип] [Сп] [Пп].
ЗОНТ ::= суность #сущ {ЗОНТ} [ГЛАБУР] [Ин] [Объем] [Иллю] [#нус] [Ип] [Сп] [Пп].
Ип ::= приность #прил {ЗОНТ} [ГЛАБУР] [Ин].
Сп ::= приность #прил {ЗОНТ} [ГЛАБУР] [Ин].
Пп ::= приность #прил {ЗОНТ} [ГЛАБУР] [Ин].
Ин ::= наность #нач [#зач].
Сн ::= наность #нач [#зач].
Пн ::= наность #нач [#зач].
Объем ::= [нуб нувар].
Иллю ::= [нуб нувар].

Целый глабур или зонт, содержащие идиому («от мала до велика»), могут быть занесены в ОС под одним бнаром – идибнаром/idibnar. Его луб будет действовать на все бнары, из которых он состоит. Которые могут писаться слитно, через дефис («шкаф-купе»), раздельно («муки Тантала», «злые языки», «Млечный путь», «Белое море») или сворачиватсья в аббревиатуру. Способ написания является вогром идив/idiv идибнара.

Не во всех языках есть 8 наклонений, 6 залогов, 5 чисел и по 7 частей прошлого и будущего. В некоторых время является лугром не глагола, а существительного. Поэтому лугр в последовательности может отсутствовать, может быть сокращен в количестве принимаемых значений, может быть перемещен в другую последовательность. Аналогично и у вограма: например, в некоторых языках нет рода, а в некоторых – их десятки (так называемые именные классы). Поэтому будем различать значения, принимаемые грамматической категорией во всех возможных языках, и только в данном. Идентификаторы значений из первого набора назовем валуями/value, а из второго – минингами/meaning.

Следующие значения натуральной переменной назовем взмытами/vzmit:

  • NiM (next-is-more) – максимальная величина, все биты равны единице
  • NiM минус 1 – состояние NaN (not-a-number): в нуваре – вопросительное местоимение «сколько»
  • NiM минус 2 – состояние Null: в нуваре – относительное местоимение «столько/сколько»
  • NiM минус 3, 4, 5 – специальные значения для поддержания структуры блока баз данных
  • NiM минус 6, 7 – зарезервированы для будущего использования

NiM означает, что за ним находятся два байта (твин/twin), в которых и расположено число. В цифоре у нас 2-байтные бнары, а в ОС – 8-байтные, и мы вставляем NiM в цифор всякий раз, когда нужно сослаться на основу с номером, большим 65535. Твин тоже может принимать значение niM (все биты единичные), означающие, что за ним находятся четыре байта (тетрад/tetrad) и т.д. Переменную исходного размера назовем соло/solo. Твины, чьи соло входят в состав двухнузного нувара, идут в порядке следования за нуваром, а не разрывают его. А вот квадры разрывают строй твинов, и находятся каждый сразу за своим твином (октадры — сразу за своим квадром, гексадры — сразу за своим октадром и т.д.).

Чтобы те же величины могли считаться исключениями и в целых переменных, единицей в старшем знаковом бите кодируем плюс. Когда он равен нулю, а все остальные биты единице – это величина -1, а если и все остальные равные нулю, то это – самая большая по модулю отрицательная величина. Преобразование положительного целого в натуральное есть обнуление знакового бита, в целое большего размера – обнуление в старом положении и установка в единицу в новом крайнем положении (преобразование отрицательного целого в целое большего размера есть по-прежнему заполнение новых незнаковых бит единицами). Назовем этот код срединным/middle complement.

Важны значащие, а любые цифры, т.е. 500*106 не есть 5*108, поэтому для вещественных откажемся от формата IEEE754 и введем свой float: мантисса в младших байтах, экспонента – в старших, оба – целые числа в срединном коде и всегда занимают целое количество байт. Но особые состояния записываются в них так, как будто float4 – единое 4-байтное натуральное число, а float8 – единое 8-байтное натуральное: так при NaN все биты и маниссы, и экспоненты равны единице. Экспонента во float4 занимает один байт, во float8 – два.

Последовательность клауз

От одного до четырех знаков пунктуации между клаузами (как в составе сложного предложения, так и между ними) назовем марком/mark, а 6-битный идентификатор марка – маркидом/nut. Пусть «П» и «п» являются клаузами с прямой речью, а «А» и «а» – со словами автора, причем «П» и «А» начинаются с прописной буквы, а «п» и «а» – со строчной. И пусть символ «~» означает переход на новую строку, а «§» – новый абзац. 46 возможных марков перечислены в таблице ниже; добавлен даже вариант «а§а», встречающийся в чатах.

image

Красноватые ячейки – «П перед А», желтоватые – «П внутри А», оранжевая относится к обоим этим случаям; зеленоватые – «А внутри П», голубоватые – «А перед П». Перевернутые вопросительный и восклицательный знаки перед вопросительной или восклицательной клаузой должны быть добалены программой тефорвания в испанском и португальском в качестве исключения. Младшие два бита маркида содержат номер ряда в таблице (сверху вниз), старшие четыре – номер колонки. Тогда удобно выделять случай, когда клауза слева от марка вопросительная (самый нижний ряд); или случай, когда слова автора не поясняют прямую речь, а просто находятся рядом (номера колонок от нуля до семи).

Непарные союзы между клаузами и союзные слова, а также половинки парных назовем клюзами/rluz (от слов «клауза, союз»), а их идентификаторы – клюзидами/klyuzid. У всех глаголов есть гланость/glanost, но только у левейшего есть еще одна последовательность глолка/glolka, содержащая лугры, относящиеся ко всей клаузе в целом, а не являются разными у разных глаголов. Клюзид на правах луба содержится в глолке, потому что, например, в адыгских языках он должен тефорваться в 2-й зубец глагола (в русском – в 0-й: например, «чтоб, будто, хотя» могут стоять где угодно).

Частицы, междометия, вводные слова и обороты назовем тиклами/tikl (от слова «патикл»), их бнары – тиклидами/tiklid. В русском языке важно правильно распознавать 0-е зубцы и не цифорвировать их в тиклы: например, 0-ми зубцами являются «бы, пожалуйста, вероятно/наверное/возможно, чуть не [обозначают наклонения], чуть/ чуть только/ только что [только-что-прошедшее время]». Для справки: «да» в «да здравствует» является 1-м зубцом.

Клауза начинается с маркида, однобайтного конула («количество нулевых») и нескольких 4-битных диснулов («дисплейсменты нулевых»). Последние указывают смещения 0-х зубцов от начала клаузы в бнарах для всех чаров, их имеющих, подряд, невзирая на часть речи. Значение Null означает стать непосредственно перед своим чаром. Следующий нулевой зубец с таким же смещением ставится позади предыдущего, а уже расставленные не подлежат счету. Далее идут однобайтный котикл (количество тиклов) и последовательность «тиклид, дистикл, дистикл, тиклид»: два 4-битных дистикла (смещения тиклидов) образуют один байт. Аналогично следующий с таким же смещением ставится позади предыдущего, а уже расставленные не подлежат счету. Затем расположены глолка и глабур.

Цифор ::= {Клауза}.
Клауза ::= маркид {конул {диснул}} {котикл {дистикл тиклид}} глолка ГЛАБУР.

Cквозары

Бнары, которые во всех языках и во всех частях речи выполняют одну и ту же роль, назовем сквозарами/skvozar и выделим им номера от 0 до 255. Большинство из них зарезервированы для будущих расширений спецификации, а используемые сейчас перечислены ниже с указанием, что вставляется сразу за ними. Если вставляется клауза, то она называется нижней/lower, а та, в которую её вставляют – верней/upper, а самая верхняя – вершинной/top, уровень вложенности дается ныгром глубина/depth, отсчитываемым от нуля. Следующая за вершинной автоматически обрамляется с двух сторон запятыми, дальнейшие – скобками, изменяющимися с глубиной: (), [], ⟨⟩, {}, ⦅ ⦆, ⟦ ⟧, ⦉ ⦊, ⦃ ⦄, ⦓ ⦔, ⧙ ⧘, ⦕ ⦖, ༺ ༻. Глабур вставляется вместе с глолкой.

  • 0. времар/vremar: дата и время цифора в формате datetime5 (до первой клаузы означает дату публикации, после хотя бы одной клаузы – момент в видео-ролике)
  • 1. эмоцар/emotsar: четыре байта для голосового движка, а именно знак эмоции (положительная-отрицательная), степень страха, степень боли, количество бнаров, которые должны быть произнесены с этой эмоцией
  • 2. тефорар/teforar: однобайтная длина строки и строка нераспознанного тефора в UTF-8
  • 3. бращар/bratschar: зонт-обращение (в первую очередь для языков без звательного пулида)
  • 4. риложар/rilozhar: зонт-приложение – простое («учитель-француз») или обособленное («сын, мальчик лет четырнадцати»), стоит после бнара существительного, с коего лугры и копируются на приложение
  • 5. воднар/vodnar: глабур-вводное предложение («поспела уже, я уверен, клубника»)
  • 6. авторар/avtorar: глабур-слова автора, вставленные не между клаузами (и обрамленные бы тогда с двух сторон марком), а в разрыв клаузы
  • 7. ричастар/richastar: глабур-причастный оборот (не может иметь актант в именительном пулиде, стоит после бнара существительного, с коего лугры и копируются на причастный оборот)
  • 8. депрар/deprar: глабур-деепричастный оборот (не может иметь актант в именительном пулиде, стоит после бнара существительного, с коего лугры и копируются на деепричастный оборот)
  • 9. бнарар/bnarar: кусочек базы данных языка, т.е. номер части речи, бнар (можно переопределить любой), основа слова, его вогры — для ввода нового термина
  • 10. рюзар/ruzar: либо сюр, либо скарб, либо стринг, либо формула
  • 11. перемар/peremar: одна буква любого алфавита в UTF-8 (переменная в формуле)
  • 12. констар/konstar: нуб и нувар (константа в формуле)
  • 13. уназар/unazar: ломат (идентификатор унарной математической операции) и бнар
  • 14. двойкар/dvoykar: за ним ничего (обозначает двойку в корне и логарифме, но не отображается)
  • 15. главар/glavar: один байт (в двух младших битах «0» означает «новый заголовок на том же уровне вложенности, что и предыдущий заголовок», «1» — на уровень ниже и вложен в предыдущий заголовок, «2» — на уровень выше, чем предыдущий; два следующих бита содержат количество вершинных клауз в заголовке — т.е. длину заголовка в клаузах; четыре старших бита не используются) и цифор (заголовок подраздела)
  • 16. магнитар/magnitar: magnet-ссылка
  • 17. джин/gin: за ним ничего (обозначает неотображаемые глагол, существительное, прилагательное, наречие)
  • 18. бамар/bamar: версия цифора и язык, как они указываются в кодировке Бам (youtu.be/npahAiVt3Rc)

За рюзаром может стоять сюр/syur – конструкция из трехбитного эжектора/ejector, указывающего расположение обобщающего слова (0 – обобщающего нет; 1 – обобщающий первый бнар, значит за ним автоматически двоеточие; 2 – последний, значит перед ним тире), пятибитного корюда/koryud («количество рюдуадов»), рюзида (при существительных ему автоматически приписывается множественное число), последовательности лубов, общей для всех рюдуадов (в их индивидуальных лубах остаются только число, налики и внегрупы) и серии «луб, рюдуад … луб, рюдуад».

Или же за рюзаром может стоять скарб/skarb из эжектора (равного 3), корюда, рюзида и серии «нуб, нувар, нус … нуб, нувар, нус» (в корюде – количество нуваров; нус может быть NaN). Или же может стоять стринг/string из эжектора (равного 4), корюда, рюзида и серии «нувар … нувар».

Или же может стоять формула/formula из эжектора (равного 5), корюда и серии «бнар, димат, бнар, димат, … бнар», где димат – идентификатор бинарной математической операции или довеска/makeweight: верхнего и нижнего индексов, верхнего и нижнего пределов, конеца их череды. Несколько довесков подряд относятся к одному и тому же слову, а не последующий к предыдущему.

Форматы и сорта в нубе

Числительные с признаками прилагательных – порядковые («пятый»), мультипликативные («тройной, пятикратный») и счетные («шестнадцатеричный») – объединим в иллюстративные/ illustrative. Они принимают натуральные значения («natural») из весьма небольшого диапазона, для кодирования которого достаточно одного байта, и их типы назовем nat1p, nat1m, nat1c (цифра в названии указывает количество занимаемых байт, буква в конце – сорт числительного).

Все остальные – количественные («половина, полтора, пять, сто»), распределительные («по половине, по полтора, по пять, по сто»), GPS-координаты, дату-со-временем, дробные («семь целых две пятых»), полковые («тройка сотней»), собирательные («полушка, полторашка, пятеро, сотня»), десятичные/decimal – в совокупности назовем объемными/volume. Десятичные выделены из дробных только потому, что записываются одним нузном типа “float”.

Количественные принимают целые значения, и их типы назовем int1q, int4q, int8q, int12q. Этот же тип используется и для распределительных, которые отличаются от количественных пулидом (например, в русском есть 1-й зубец).

Для гпс-координат – тип gps4, для даты и грубого времени – datetime6: 4 бита – месяц, 4 бита – доли месяца [для других объектов Солнечной системы], 8 бит – объект Солнечной системы, 10 бит – год с января 2020, 5 бит – день, 5 бит – час, 6 бит – минуты, 6 бит – секунды; месяц не тефорвируется, если равен 15, день – если равен 31, час – опять же если равен 31, минуты – если равны 63, секунды – если опять же равны 63. Для точного времени со знаком – тип datetime4 (2-31 секунды). Для даты-и-грубого-времени с точным временем без знака – в datetime9 (точное в младших байтах).

Числительных с двумя нузнами два – дробные и полковые. Тип дробных назовем div2: ровно по полтипа на числитель и знаменатель, числитель целый в младших байтах, знаменатель натуральный в старших. В полковых нузну может соответствовать несколько основ (далее разно́стов/raznо́st: «пять, пятеро, пятерка, пяток»), поэтому нузн должен сопровождаться лугром сезн/sezn – серийным номером разноста. Тип полковых назовем mul3: первый с начала предложения нузн – в младших байте, второй – в среднем, оба натуральные, младшие четыре бита старшего байта содержат сезн первого, старшие – второго. Для собирательных введем тип sob1 с нузном в пяти младщих битах и сезном в трех старших.

Кроме этих 16 типов в разговорной речи есть еще 13 немашинных, человеческих типов:

  • собирательное числительное («два миллиона») с мантиссой, пробегающей значения через ¼ («два с половиной миллиона, два миллиона с четвертью»). Система счисления десятичная, а собирательные очень велики: сотня (102); тысяча (103); вань, манн, таун (104); лакх, тэйн (105); миллион (106); крор, мыой, тан (107); чам, оку, куде (108); миллиард, биллион (109); триллион, чжао, тё (1012). Нузн имеет 4 старших бита на экспоненту («2…12»), 10 средних бит на целую часть мантиссы («1…1000»), 2 младших бита на дробную часть мантиссы (четверти). Типы назовем kror2q, kror2p
  • системы недесятичные, нузны меньше полтысячи, и нет никакой надежды, что большими нузнами в них когда-нибудь начнут оперировать. Зато основание системы меняется от языка к языку: 4, 5, 6, 24/6, 8, 12, 20, 20/5, 32, 60, 100/20, 400/80/20, 60 (когда их в одном языке несколько для разных порядков, записываем их через слэш) – всего 13 вариантов/variant. Типы назовем pip2q, pip2p, pip2m, pip2c: 4 старших бита на код варианта, 3 средних – на сезн, 9 младших бит – на нузн. Для дробных числительных – тип pip4 (pip2 и pip2, на месте сезна знаменателя – знак, вариант знаменателя не используется)
  • система с основанием 1024, а числительными являются 2-е зубцы «киби, меби, гиби, теби, пеби, эксби, зеби, йоби». 1 старший бит зарезервирован, следующие 3 бита на экспоненту («0, 2, …, 7» кодируют «3, 6, …, 24»), 10 средних бит на целую часть мантиссы («1…1023»), 2 младших бита на дробную часть мантиссы (четверти). Типы назовем mek2q и mek2p
  • аналогичная система с основанием 1000, где числительными являются 2-е зубцы «кило, мега, гига, тера, пета, экса, зетта, йотта», аналогично и строение типов. Имена им si2q и si2p
  • то же основание 1000, те же 3 бита экспоненты, при этом не только целая, но и дробная части мантиссы занимает 10 бит (для чисел «двадцать миллионов четыреста», «двадцать четыреста», «двадцать два сорок»), типы называются brief3q и brief3p

Добавим еще несколько типов:

  • ссылка на ячейку базы данных – тип link (тогда формат не используется, а многобайтный нувар по-паскалевски в первом байте содержит длину адреса, в остальных – адрес)
  • комплексный complex4 (удвоенный decimal4)
  • углы Эйлера euler4 (утроенный decimal4)

Все типы в том порядке, в каком они упомянуты в настоящем документе, кодируем номерами 0…31 в младших пяти битах нуба. А в старших трех битах – форматы в том порядке, в каком они перечисленны внутри каждого пункта нижеследующего списка. Нувар обладает ныгром сорт/sort, который вычисляется по типу.

  • номера 0…3 означают формат «десятый» иллюстративного и одновременно
  • для дробного числительного – «7 3/5, семь целых три пятых, семь целых три слэш пять, семь целых три дробь пять»
    для полкового все четыре номера означают один формат
    для гпс-ного – «55.755831° 37.617673°, N55.755831° E37.617673°, 55°45.35′N 37°37.06′E, 55°45′20.9916″N 37°37′3.6228″E»
    для даты и времени – «2018/02/20 15:45:50, 20/02/2018 15:45:50, 20 февраля 2018 15:45:50, двадцатого февраля две тысячи восемнадцатого года пятнадцать часов сорок пять минут пятьдесят секунд»
    для остальных объемных – «2.5М, 2 500 000, 2.5*106, 2 миллиона 500 тысяч»
  • номера 4…7 означают форматы «десятый, 10, 10-й, 10й» («tenth, 10, 10-th, 10th») иллюстративного и одновременно формат «два миллиона пятьсот тысяч» объемного

Приложение

Перечень лубов

Перечислим все лугры и ныгры, встречающиеся во всех языках планеты (в реальном языке будет сокращенный их набор). После двоеточия указаны их размеры в битах, перед двоеточием – максимальное количество их валуев.

Глолка, максимум 3 байта (без ныгров)

  • нук :8
  • эвиденциальность 15:4 (таблица 5х3, по одной оси – «видел, слышал, ощутил, общеизвестно, пересказали»; по другой – «факт, основа вывода, основа догадки»)
  • сомнение 2:1 (является источником сомнения или подтверждения)
  • наклонение 8:3 (изъявительное, предвидетельное, ирреалис «чуть не», желательное, намерительное, повелительное, позволительное, предлагательное — но не «парафраз» латышского языка [кодируется эвиденциальностью] и не «отрицательно-просительное» наклонение [кодируется «не» и вопросительным знаком])
  • адмиратив-новизна :1
  • краткая форма :1 (если глабур превращен в причастие)
  • дак :2 (если глабур превращен в причастие)
  • 4 бита не используются

Гланость, максимум 5 байт (без ныгров)

  • наличие «не» :1 (кроме «без-, анти-»)
  • налик :7 (<Ип, Сп, Пп, ГЛАБУР, Ин, Сн, Пн>)
  • кокоз :3
  • внегруп :5 (<#глаг, ЗОНТ, Ип, Сп, Пп, ГЛАБУР, Ин, Сн, Пн>)
  • нутригруп :4
  • варьен :4
  • залог 6:3 (активный, страдательный, возвратный, обоюдный, кооперативный, казуальный)
  • вид 8:3 (несовершенный, совершенный, дозавершенный [завершенный до другого действия], пересекаются-и-задний, пересекаются-и-передний, вложенный, обрамляющий, равный)
  • модальность 4:2 («разрешить, мочь, быть должным, хотеть»)
  • часть жизни 7:3 (неизвестно когда, годы отстоят, недели отстоят, день отстоит [вчера или завтра], сегодня-было или сегодня-будет, только-что-было или прямо-сейчас-будет, сейчас)
  • часть суток 8:3 (до заморозков, до восхода, до зноя, до полудня, до прохлады, до заката, до сна, до полуночи)
  • время 2:1 (прошедшее, будущее)
  • 1 бит не используется
  • ныгр правизна :3
  • ныгр глубина 8:3

Суность, максимум 6 байт (без ныгров), в экзотическом случае – 7 байт

  • налик :8 (<Ип, Сп, Пп, ГЛАБУР, Объем, Иллю, #нус, Ин>)
  • кокоз :3
  • внегруп :5 (<#сущ, ЗОНТ, Ип, Сп, Пп, ГЛАБУР, Объем, Иллю, #нус, Ин>)
  • нутригруп :4
  • число 5:3 (единственное, двойственное, тройственное, паукальное, множественное)
  • наличие «не» :1 (кроме «без-, анти-»; местоимения превращает в отрицательные)
  • пулид :16
  • варьен :4
  • дак :2
  • мутен :1
  • герундий-масдар :1 (т.е. тогда в #суще стоит бнар глагола)
  • часть суток 8:3 (до заморозков, до восхода, до зноя, до полудня, до прохлады, до заката, до сна, до полуночи)
  • время 2:1 (прошедшее, будущее)
  • 4 бита не используются
  • ныгр полоз :2
  • ныгр правизна :3
    • ныгр глубина 8:3

Приность, максимум 2 байта

  • налик :2 (<Ин, ГЛАБУР>)
  • кокоз :3
  • внегруп :3 (<#прил, ЗОНТ, ГЛАБУР, Ин>)
  • нутригруп :4
  • наличие «не» :1 (кроме «без-, анти-»)
  • краткая форма :1
  • дак :2

Наность, максимум 1 байт

  • #зач перед #нач или позади :1
  • наличие «не» :1 (кроме «без-, анти-»)
  • дак :2
  • 4 бита не используются

Нуб, максимум 1 байт (без ныгров)

  • тип 32:6
  • формат 4:2
  • ныгр знамен (числитель, знаменатель) 2:1
  • ныгр сорт (порядковый, мультипликативный, счетный, количественный, распределительный, gps, дата, дробный, полковой, собирательный, десятичный) 11:4
  • ныгр дводес :80
  • ныгр наим 10:4

Работа со статьей

Участие. Ждем вас в группах “Tsifor: Proposals and remarks (Цифор: Предложения и замечания)” fb.com/groups/293119677993277, vk.com/club174581607 Просим в Excel-ном файле на отдельных листах перечислить основы слов из разных частей речи, а также расчески, пулы, лугры, вогры, ныгры. Крайне нужны перепосты и переводы этой статьи на другие языки.

Приглашаем волонтеров помочь создать бесплатный с открытым исходным кодом перекодировщик из тефора в цифор и обратно – как в виде отдельной программы, так и в виде расширения для текстового редактора (SciTE, notepad++, любого другого). Планируется, что при обнаружении омонимов расширение будет спрашивать пользователя, какую часть речи он имел ввиду.

Автор: Леонид Якубович

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js