![](https://habrastorage.org/webt/hs/vj/xr/hsvjxr6mzn8xkuy3rbfwsde23fw.jpeg)
В чем основная сложность формализации естественного языка? В том, что нам привычней формализовывать его с помощью языка же, что приводит к дурной бесконечности. Язык – сам по себе средство формализации, которым человечество давно и небезуспешно пользуется.
Берем первое попавшееся определение:
Полет – самостоятельное перемещение объекта в газообразной среде или вакууме.
В нем шесть терминов, которые в свою очередь требуют определения:
- самостоятельный,
- перемещение,
- объект,
- газообразный,
- среда,
- вакуум.
Каждый из терминов имеет свои дефиниции, через которые получим новые дефиниции, требующие нового определения, и т.д. В конце концов окажется, что всем использованным терминам дефиниции даны ранее, то есть мы получили цикл. Что не является предметом наших мечтаний, конечно же. На какой-то из транзакций необходимо остановиться, но… Когда остановиться? что выбрать за критерий останова? – вот в чем проклятые вопросы.
Вспомним, для чего нам вообще необходим язык. Для корректного отражения окружающей нас действительности в процессе коммуникации. Окружающая действительность, между прочим, состоит из физических объектов. Воспринять ничего другого мы не в состоянии: физические объекты – это и есть то, что изначально воспринимается человеком.
Из этого можно сделать вывод, что останавливаться в процессе выдачи дефиниций необходимо на терминах, обозначающих физические объекты. Принцип таков: о чем видим, о том сообщаем.
Логическая ловушка подстерегает и тут: для понимания того, о чем пытаемся сообщить, необходимо дать термину определение.
Допустим, кто-то, указывая пальцем, изумленно восклицает:
– Заяц!
«Заяц» требует либо предметного знания, либо дефиниции – мы оказываемся все в том же незавидном положении. Но незавидное положение исчезнет, если взять что-нибудь элементарное – к примеру, крикнуть:
– Нечто белое!
Что такое «белое»? Не предмет, конечно, но его характеристика – цвет. Термин, не требующий дефиниции: белый он и есть белый. Количество цветов, доступных для человеческого глаза, ограничено – соответственно, ограничено и количество терминов, не требующих дефиниции.
Считается, что человек обладает пятью органами чувств (иногда называют больше, но это не принципиально):
- зрением,
- осязанием,
- обонянием,
- слухом,
- вкусом.
Результатом функционирования каждого из органов является определенное ощущение, значения которого не требуют определений, поскольку соответствуют неопределяемым элементам окружающей действительности.
Спрашивается, какие элементы окружающей действительности могут быть охарактеризованы в качестве простой совокупности пяти ощущений? Элементарные же объекты! Идея состоит в том, чтобы сложный объект – того же «зайца» – разложить на элементарные составные части, каждую из которых охарактеризовать ощущениями. Сложив составные части обратно, получим «зайца» в сборе: объект, имеющий формальное и, главное, завершенное вербальное определение.
Давайте посмотрим, как это возможно.
Вот наблюдается физический объект. Обратите внимание, что наблюдать (точнее, ощущать, потому что воспринимать объект можно не только зрительно, но и с помощью других органов чувств) доступно исключительно конкретный, то есть индивидуализированный объект. Когда я вижу зайца, это очень конкретный заяц – вот именно этот, – а не вообще какой-то из зайцев.
Как правило, индивидуализация объекта происходит посредством его именования, но, как в случае с зайцем, далеко не всегда (только в том случае, если в этом есть необходимость). Таким образом, в зависимости от ситуации термин «заяц» может означать:
- конкретного зайца,
- название класса, к которому относятся любые зайцы.
Эти нюансы необходимо различать – предположим, что посредством сокращений от «individ» (для обозначения берем первую букву) и «class» (для обозначения берем последнюю букву, потому что «с» в скобках ассоциируется со знаком авторского права):
Заяц(i).
Текстовый аналог: заяц – личное имя;
Заяц(s).
Текстовый аналог: заяц – название класса;
Если бы заяц имел уникальное имя, стало бы очевидней:
Степашка(i).
«Степашка» не может быть названием класса, зато требует указания на принадлежность к тому или иному классу. Мало ли кого так обозвали?! Приходится обозначать принадлежность к классу. Используем для этого символ "∈":
Степашка(i) ∈ заяц(s).
Теперь определено, что Степашка – один из зайцев, но не определено, что такое зайцы. Как было сказано ранее, «зайца» необходимо разложить на составные части, каждой из которых дать характеристики, соответствующие воспринимаемым человеком ощущениям.
Это весьма сложно, в основном в связи с трехмерностью составных частей объекта, поэтому может быть выполнено лишь условно. Но в принципе может.
Предположим, что заяц состоит из головы, туловища, лап и хвоста, и что перечисленные объекты являются элементарными (на самом деле нет, конечно). Тогда, используя символ "⊂" для обозначения вхождения составной части в материальное целое, получим:
голова(s) && туловище(s) && 4*лапа(s) && хвост(s) ⊂ заяц(s).
Текстовый аналог: голова, и туловища, и 4 лапы, и хвост составляют зайца.
Так как объекты предполагаются элементарными, для них можно указать характеристики по каждому из ощущений. Ввиду комбинированного воздействия ощущений на человека, могут потребоваться определения в пространстве и времени.
Получаем приблизительный набор характеристик:
• цвет,
• форма,
• запах,
• вкус,
• поверхность (результат осязания),
• звучание,
• местоположение (пространственная координата),
• перемещение (как разница между двумя местоположениями),
• момент времени,
• продолжительность (как разница между двумя моментами времени),
• скорость (как частное между перемещением и продолжительностью).
Набор, как я сказал, приблизительный: безусловными являются только характеристики, соответствующие ощущениям, остальное обсуждаемо. Например, ясно, что время как таковое человек не воспринимает: его можно определить по символам на гаджете или по положению солнца на небе, но не непосредственно ощущением. Точно так же местоположение устанавливается не абсолютно, а относительно других объектов.
Теперь попробую охарактеризовать «голову»:
- форма: круглая,
- поверхность: твердая.
Остальные характеристики не определены.
То есть голова, если условно рассматривать ее в качестве элементарного объекта – это нечто круглое и твердое. Условно, конечно, исключительно условно. Язык как средство формализации тоже ведь дает приблизительные результаты: как, к примеру, вербально описать пятно сложной геометрической формы? Никак: точно не опишешь. Поэтому в условном примере голова примерно круглая и примерно твердая – и точка на этом.
Если согласны, так и запишем, в фигурных скобках:
голова(s) {форма: круглая; поверхность: твердая}.
То есть указанный объект обладает указанными характеристиками.
Разумеется-разумеется, головы могут быть не только круглыми, но и иными: например, у Вовочки из бородатого анекдота советского периода голова квадратная. Ничто не мешает ввести в нашу систему обозначений логические операнды, в частности операнд «или»:
голова(s) {форма: круглая II квадратная; поверхность: твердая}.
Но у зайца-то голова круглая, а не квадратная, как у Вовочки! Ну и черт с ними обоими, введем импликацию:
голова(s) {форма: круглая} if голова(s) ⊂ заяц(s).
Вместо зайца можно было указать конкретного зайца Степашку, задавая тем самым его индивидуальные характеристики:
голова(s) {форма: круглая} if голова(s) ⊂ Степашка(i).
Термины, использованные в характеристиках («круглый», «квадратный», «твердый» и т.п.) – неопределяемые: мы их непосредственно ощущаем, посему никакого вербального определения не требуется.
Обозначу данный тип слов символом «a» – от «attribute», вот так:
круглый(a).
Обращаю внимание, что индивидуальные объекты и классы являются существительными (это же сущности!), тогда как характеристики являются прилагательными (на то они и характеристики!). С точки зрения соответствия типов частям речи все совершенно законно.
Прилагательное «круглый» – неопределяемая характеристика, но, допустим, прилагательное «заячий», не соответствуя ни одному из имеющихся у человека ощущений, под attribute никак не подходит.
Очевидно, что определять «заячий» следует через «зайца», что мной уже проделано (посредством разложения «зайца» на составные части). То есть сначала появился термин «заяц», а затем уже от него образовалось прилагательное «заячий», обозначающее: относящееся к зайцу, похожее на зайца.
Получаем новый тип, обозначаемый символом «d» – от «dependence». Указания типа, конечно, недостаточно – необходима ссылка на родительский термин. Вводим новое обозначение, используя символ «=>» для обозначения зависимости:
заячий(d) => заяц(s).
Теперь термин «заячий» определен – через родительское существительное «заяц».
Мы определили зависимое прилагательное через родительское существительное. Случается и наоборот: когда от родительского прилагательного образуется зависимое существительное. Например, «квадратный» – прилагательное, обозначающее форму объекта. В свете вышесказанного становится ясным, что «квадрат» произошел от «квадратного», но не «квадратный» от «квадрата».
квадрат(d) => квадратный(a).
Таким образом, в каждой группе однокоренных терминов имеется родительский термин, от которого ведут происхождение все остальные.
Теперь-то мне удалось вывести все термины из первоначальных неопределяемых? По-прежнему нет – остается значительная терминологическая группа, пока не охваченная: те понятия, которые могут быть выведены посредством формул.
Возьмем глагол – к примеру, «передвигать»: с глаголами мы пока не сталкивались. Что такое «передвигать»? Использую не академическое определение, а то, которое, с моей точки зрения, отражает суть дела:
«Передвигать» – это когда предмет меняет свое местоположение под воздействием другого предмета.
Формула получилась такой:
X(i)1 #передвигать(f) X(i)3 {перемещение: ненулевое(a)}.
Спешу дать необходимые пояснения.
Формула состоит из трех частей, обозначающих субъекта, действие и объект:
- X(i)1 – это субъект. «X» обозначает любой субъект, индивидуальный, под порядковым номером 1.
- #передвигатьf – это действие. «f» – формула, от «formula». Решеткой обозначено определяемое слово (в данном примере это излишне, но могло потребоваться при указании на конкретный субъект или объект).
- X(i)3 – это объект. Остальное идентично субъекту. В фигурных скобках указана характеристика, изменившаяся в результате воздействия субъекта.
Правила гибкие: в соответствии с ними легко конструируются новые понятия. Берется общая незаполненная структура (субъект – действие — объект):
X(i)1 X(f)2 X(i)3.
Нужные элементы замещаются конкретными терминами, указываются характеристики, определяемый элемент помечается решеткой, при необходимости используются логические операнды.
Давайте немного поупражняемся, например с наречиями, которыми также могут быть выражены формульные понятия.
Возьмем наречие «бережно» – с моей точки зрение, родительское в группе однокоренных слов («бережность», «бережный», «бережно», «беречь»). Слово обозначает характеристику, но не предмета, а действия. Дам такое условно-примитивное определение:
«Бережно» – это когда кто-то передвигает какую-либо вещь медленно.
Вещи определены, «медленно» – зависимое от «медленный», которое является характеристикой предметов по скорости.
медленно(d) => медленный(a).
И термин «передвигать» уже обработан. Тем самым имеется все необходимое для определения термина «бережно»:
X(i)1 передвигать(f) {#бережно(f)} X(i)3 {скорость: медленный(a)}.
Здесь «бережно» определено через «передвигать» и «медленно» и, как всякое наречие, относится к действию.
По таким правилам возможно определять новые формульные понятия по ранее полученным, и так далее, в том числе с использованием импликаций, а возможно, и других логических методов. Чем сложнее абстрактное понятие, тем сложнее и глубже по структуре получится формула. Мы сможем получить формальное определение любого термина, а уж насколько оно окажется корректным, зависит от нас.
Естественно, предложенный язык можно расширять – возможностей хоть отбавляй. Например, напрашивается обозначение синонимов:
бегемот(s) = гиппопотам(s).
Не говорится о других частях речи: тех, которые используются для эмоциональной окраски предложения (междометия) или разных технических надобностей (союзы).
Да мало ли что еще! Важно, однако, направление мысли, тогда как синтаксис подобного языка – вопрос сугубо вторичный и прикладной.
Резюмирую.
Имеем следующие типы слов:
- i – индивидуальные объекты: определяются принадлежностью к классу, являются существительными;
- c – классы: определяются разложением на составные части, до уровня элементарных классов. Элементарные классы определяются характеристиками. И те, и другие являются существительными;
- a – характеристики объектов и классов. Являются прилагательными;
- d – зависимые термины. Образуются от родительского термина. Могут оказаться любой частью речи;
- f – формульные понятия. Являются существительными, или глаголами, или прилагательными.
И следующую последовательность словообразования:
- На нижнем уровне находятся характеристики элементарных объектов, а через них – классов: красный, твердый, круглый и т.п.
- Совокупность оригинальных характеристик дает возможность присвоить элементарному объекту название: например, все круглые и красные предметы, растущие на деревьях, можно именовать яблоками. В результате получаем термин, пригодный для обозначения как класса (яблоки в целом), так и индивидуального объекта (вот именно это яблоко).
- Наличие индивидуальных объектов позволяет присваивать им уникальные наименования (заяц Степашка).
- Начальные термины образуются произвольно, по необходимости (вот этого зверя можно было назвать зайцем, а можно – рэббитом, ничего от этого бы не поменялось).
- От начальных терминов образуются зависимые, как правило, являющиеся иными частями речи.
- На основе терминов, получивших дефиниции, могут быть составлены формулы для определения последующих терминов, со сложными логическими условиями.
Вероятно, у читателей уже возник вопрос, для чего все это нужно?
Я столкнулся с данной проблемой, ваяя чат-бота. Тестировщики, которых удалось привлечь – всего-то несколько человек! – вели себя, с моей точки зрения, одинаково безумно: задавали вопросы, желая получить на них ответы. Наивные! Они будто не ведали, что прежде, чем задавать вопросы, следует ввести информацию в базу. Но даже при успешном преодолении этого препятствия оказалось весьма проблематично, ввиду инвариантности человеческой речи, предвидеть форму вопроса.
Ничего не стоит ввести в базу текст:
«Птицы летают».
Тогда ответ на вопрос может быть получен. Сложно дождаться ответа на более замысловатый вопрос, по сути являющийся вариацией первого:
«Машут ли какаду при полете крыльями?».
Для этого нужно знать многие взаимосвязи между словами, а именно:
- какаду относятся к классу птиц;
- «летать» и «полет» – однокоренные слова;
- летать можно при помощи крыльев;
- крыльями машут.
Первые два пункта в принципе можно загрузить в чат-бота из словарей (хотя, как я убедился с неизбывной печалью в душе, словарей днем с огнем не сыщешь). А реализовать последние два пункта попросту неоткуда. В наших головах информация имеется в том виде, в каком доктор прописал, но оттуда ее не вытащить. В то время как словари с требуемым содержанием отсутствуют по определению: то убогое, что изредка попадается, предлагает вербальные формулировки, тогда как нужны – строгие формальные.
Вот я и задался вопросом: как формализовать речь, с тем чтобы на основе неопределяемых терминов дать дефиниции остальным, чтобы стало возможным составить полноценный Словарь лексических связей. В случае успеха чат-бот сможет ответить на вопрос, машут ли какаду в полете крыльями.
Указать путь – единственное, что посильно мне на текущем жизненном этапе. При этом не уверен, что высказанные здесь соображения абсолютно оригинальны: попытки формализовать речь при разработке ИИ имели место, и уж точно неоднократные. Однако, фишка моего предложения — не просто в заполнении базы фразами на естественном или искусственном языке (содержательное заполнение базы к обсуждаемой теме не относится), а в определении любых последующих терминов из ограниченного числа неопределяемых понятий. О попытках реализации данной идеи мне ничего не известно.
Собственно, все.
[ joke ]
Не подскажете, нобелевскую премию выдают чеком, безналичным перечислением или налом?
[ / joke ]