Если вы не читали первую часть, то сделать это будет необходимо - https://zen.yandex.ru/media/id/5d283bde92414d00ac336903/universalnyi-perevodchik-c-podderjkoi-elfiiskogo-iazyka-5d2ca28395aa9f00b1bed6a6
Теория универсального переводчика и хранения текста в виде набора «смысловых кодов» родилась давно, но она будет неполной, если не описать хотя бы часть потенциальных областей применения.
В этой части я хочу описать наиболее интересное для меня применение - «смысловую математику». Идея предельно проста: Если мы записываем наш текст кодами смысловых значений, то результат у нас больше походит на математическое выражение, нежели на формат текста.
Рассмотрим ещё один пример: «Молодой человек вышел во двор в дождь, не взяв с собой зонт, и сел в машину совершенно мокрый».
Составим простенький «словарь» для смысловых значений в этом тексте, выбрав для значений случайные коды, и проигнорируем информацию о числе, времени и пр.
320: Молодой
100: Человек
71: Выходить
112: Двор
90: Дождь
150: Существовать
33: Брать
428: Зонт
99: Сесть
511: Автомобиль
900: Мокрый
Тогда у нас получится вот такая запись: «(100(320)→(71→112(90→150)),(!33→428)),(100(320,900)->99->511)», которую можно рассматривать не только, как последовательность кодов (скобки в записи не для красоты), но и как некую математическую формулу или задачу. Давайте перепишем это в более понятную форму.
(
Объект: Человек (
Свойство: Молодой
)→(
Действие: Выходить→Объект: Двор(
Свойство: Объект: Дождь→Действие: Существовать
)
),
(
Действие: НЕ Брать→Объект: Зонт
)
),
(
Объект: Человек (
Свойство: Молодой,
Свойство: Мокрый
)→Действие: Сесть→Объект: Автомобиль
)
Если переписать более читаемо, то получится - «Человек молодой выйти во двор, где в это время существовать дождь, и человек молодой мокрый сесть автомобиль».
Польза от этой «оцифровки» большая. Теперь мы можем представить нашу запись как абстрактный пример - «100(320)→(71→112(90→150)),(!33→428) = 100(320,900)→99→511».
Теперь перенесём объект из правой части уравнения в левую, с абстрактным знаком «минус» и аналогично выражение из левой части в правую - «100(320) - 100(320,900) = (71→112(90→150)),(!33→428) - (99→511)».
И «посчитаем» это уравнение - «900 = (71→112(90→150)),(!33→428) - (99→511)».
Теперь поменяем местами пару «слагаемых» - «900 = - (99→511) + (71→112(90→150)),(!33→428)».
И «декомпилируем» получившееся выражение: «Получить новое свойство «мокрый» = Исключить действие «сесть в машину», Выполнить действие «выйти во двор с существующим дождём», Выполнить действие «не брать зонт»».
Т.е. машина, даже без использования нейросетей, сможет провести анализ записи и сделать вывод: «Что бы стать мокрым, необходимо выйти во двор, когда идёт дождь, зонт с собой не брать, в машину не садиться».
Пример я привёл уж очень обобщённый но, надеюсь, суть передать смог. Если подобной машине «скормить» много записей одной направленности, а на результатах ещё и «натаскать» нейросеть, то вполне может получиться обучаемый простым текстом «мудрец», который сможет отвечать на вопросы:
- Мудрец, как не промокнуть на улице, если идёт дождь?
- 1. Не выходить на улицу.
2. Взять зонт и сесть в машину.
4. Взять с собой зонт.
5. Сесть в машину.
Безусловно, было бы очень интересно провести собственные эксперименты, по созданию чего-то подобного, но, увы, глобальной базы/списка смысловых значений с уникальными номерами не существует. По крайней мере, в открытом доступе.
Если вам интересна эта тема, или у вас есть по этому вопросу собственное мнение, буду рад прочитать ваши комментарии.