– Каждая новая ветка начинается с буквы А. Каждая добавочная в ряде одного порядка – следующий по значению код символа.
То есть, каждый новый уровень мы начнем с добавления «А» к коду, а если какой-то объект добавляется к существующему на одном уровне, то получим уже «В», «C», «D»… и т. д.
Начиная работу над базой кодов, я признаюсь, пытался «загуглить» некий «Классификатор всего», но не нашел. К сожалению, человечество так и не пришло к простой идее создания универсального классификатора всего сущего. Сначала мне было сложно классифицировать все неживые понятия, поскольку даже сложно представить, с чего начать. Но впоследствии дело пошло вперед.
Я начал работу над собственным классификатором, и прорисовал его графически для простоты представления в powerpoint, и на первом этапе это выглядело, как на рисунке 10.
Рис. 10. Графический пример ветвлений в начале классифицирования неживого (слева) и живого (справа).
(Левая часть рисунка – это часть классификатора наиболее разветвленного, «Неживого»). С правой частью особых проблем испытывать не пришлось, спасибо биологам и ботаникам, которые хорошо потрудились над проработкой классификации царства животных и растений.
Из рисунка видно, что схема кажется очень сложной, и запутанной, хотя здесь всего лишь около 150 базисных наименований. К моменту написания этих строк число основных объектов в базе данных рабочей программы уже составляет около 3000 (Продолжая работу по расширению ядра классификатора с использованием морфологии и толкового словаря это число уже приблизилось к 60 000 слов, но эта история достойна отдельной книги. Прим. автора ко второму изданию). И хотя эта схема еще слишком проста для классификации «ВСЕГО», но уже слишком сложна, чтобы изобразить ее в виде подобного двухмерного рисунка. В будущем мы обязательно это нарисуем.
Кстати говоря, мне очень импонирует, что эта схема чем-то напоминает человеческий мозг (рис. 11). Или мне кажется? Но это несущественный вопрос.
Рис. 11. Если разветвленную структуру «классификатора всего» «упаковать» в небольшом объеме, то он мог бы получить сходство со схематичным мозгом.
В принципе, нам и не нужно разбираться в сложностях классификатора, за нас это будет делать компьютерная программа.
Новые понятия в этот классификатор добавляются очень просто, с использованием легкой конструкции объяснений, к какому объекту какой принадлежит.
Посмотрим, как выглядит часть записей словаря «боевой» программы на рисунке 12.
Рис. 12. Фрагмент кодирования в словаре «боевой» (но все же, тестовой) программы.
Сохраняя новые и новые объекты и их коды в базу данных, мы получаем структуру, обладающую огромным потенциалом, которую я назвал «Многомерным строчным множеством» или «Multidimensional Strings Multiplicity» (англ.). (Сокращенно, можно использовать аббревиатуру MSM или «слово-множество»).
Глава 2. Невероятное многомерное множество
Слово «невероятное» используется в названии этой главы, не потому что для MSM есть что-то невозможное, а скорее наоборот, потому что само существование подобной структуры дает нам невероятное количество возможностей.
Что самое главное – эта структура обладает важнейшим свойством комплементарности элементов между собой. Элементы классов в отличие от других онтологий и классификаторов приобретают неявное свойство дополнительной операбельности, унификации во взаимоотношениях друг с другом и в связи с этим не требуют дополнительной памяти. Сравнивать классификаторы MSM и обычное ООП или классификатор – это как сравнивать паровой двигатель и двигатель внутреннего сгорания. Да, и то и другое едет, но первичные преимущества MSM очевидны: это и скорость и энергозатратность.
Приступив к изучению ресурса, неожиданно полученного в наше распоряжение, удивляет невероятное количество вариативности объектов многомерных множеств. Каждый «этаж» нашего дерева, даже если ограничиваться только доступной 8-битной таблицей символов ASCII, позволяет «разветвить» наше «дерево» вариантов до 256 элементов, и это же может сделать каждый следующий «этаж». Поэтому даже короткая 4-х этажная конструкция обладает невероятной емкостью – 256 х 256 х 256 х 256 = 4 294 967 296 элементов. То есть, чуть меньше, чем всех людей на земле мы можем записать в нем поименно. Напомню, этого числа нам нужно достигнуть всего в 4 классах элементов для того, чтобы достичь отказа системы принимать следующий элемент. Но, как мы поняли из предыдущей главы, нам столько и не понадобится, поскольку в большинстве случаев «ветки» дерева будут расти скорее в «длину» чем в «ширину».
Возможность роста в длину будет ограничена лишь отсутствием адекватной необходимости, поскольку для описания большинства объектов реального мира нам хватит до 30 символов, – прямо как в реальном языке. Увеличивая «словарный запас» этой конструкции кодов, мы получаем своеобразный язык логики, простой, и понятный. И если звуковой и буквенный код слова реального языка – это всего лишь ярлыки настоящего смысла, то буквенный код многомерного множества глобального классификатора содержит достаточное количество данных для определения и выявления отношений смысловых значений объектов.
По существу, многомерное множество оперирует смыслами, определяя место каждого объекта в иерархии сложных и запутанных дебрях понятий. Но запутанными они кажутся только на первый взгляд. Для любого компьютера они становятся простыми, а операции с ними порождают эффект, который можно назвать настоящим мышлением, а не симуляцией этой деятельности или статистическим анализом.
Разумеется, для того, чтобы сформировать «умное» и разветвленое многомерное множество требуются серьезные усилия, особенно в областях классификатора, относящихся к неживым объектам и понятиям. Но не будем забегать вперед. Подробно об этом можно прочитать в 4 главе.
2.1. Общее и частное
Остановимся на простых операциях со множествами MSM.
Например, мы имеем задачу найти общее свойство нескольких элементов, объектов реального мира.
Пусть это будет:
ABВACAAB Яблоко
АВВАСААС Апельсин
ABBBAA Трава
ABВAAAB Сосна
Для этого мы всего лишь сравниваем попарно слова-множества и запоминаем результат в совпадающей части:
в 1 паре ABBACAAB и ABBACAAC это будет ABBACAA – ФРУКТ
далее мы сравниваем полученное и следующее —
ABBACAA и АВВВАА – получаем АВВ – РАСТЕНИЕ, и сравниваем теперь его с последним:
АВВ и ABВAAAB – также находим общее АВВ – Растение;
Так мы получили ответ, что все 4 объекта относятся к «растениям».
Возьмем еще один пример:
AAAAAABABA Эмоции
AAAAAABBAA Симпатия
AAAAAABAAABA Миф
Так же сравниваем левые части кода этих слов-множеств, находим общее, и это будет AAAAAAB — Субъективное. И это совсем неочевидный ответ, который имеет место быть.
Для того, чтобы найти лишнее в ряде элементов, потребуются уже некоторые хитрости:
ABABACCABA Коза
ABABACCAAA Корова
ABABACDAA Лошадь
AAADAACBBA Стол
ABABABAAA Акула
И хотя для человека кажется очевидным лишнее (Стол), компьютерный алгоритм пришлось некоторое время совершенствовать для того, чтобы научить определять лишний элемент наиболее точно.
Сделать это можно следующим образом:
Мы сравниваем поочередно каждое из слов-множеств со всеми присутствующими; причем сравниваем по-хитрому, получая в качестве ответа процентное соотношение «попадания» в искомое.
Например, имея некие коды A B C D E, мы можем получить средневзвешенную оценку общности так: