В чем основная сложность формализации естественного языка? В том, что нам привычней формализовывать его с помощью языка же, что приводит к дурной бесконечности. Язык – сам по себе средство формализации, которым человечество давно и небезуспешно пользуется.

Берем первое попавшееся определение:
Полет – самостоятельное перемещение объекта в газообразной среде или вакууме.

В нем шесть терминов, которые в свою очередь требуют определения:

  • самостоятельный,
  • перемещение,
  • объект,
  • газообразный,
  • среда,
  • вакуум.

Каждый из терминов имеет свои дефиниции, через которые получим новые дефиниции, требующие нового определения, и т.д. В конце концов окажется, что всем использованным терминам дефиниции даны ранее, то есть мы получили цикл. Что не является предметом наших мечтаний, конечно же. На какой-то из транзакций необходимо остановиться, но… Когда остановиться? что выбрать за критерий останова? – вот в чем проклятые вопросы.

Вспомним, для чего нам вообще необходим язык. Для корректного отражения окружающей нас действительности в процессе коммуникации. Окружающая действительность, между прочим, состоит из физических объектов. Воспринять ничего другого мы не в состоянии: физические объекты – это и есть то, что изначально воспринимается человеком.

Из этого можно сделать вывод, что останавливаться в процессе выдачи дефиниций необходимо на терминах, обозначающих физические объекты. Принцип таков: о чем видим, о том сообщаем.
Логическая ловушка подстерегает и тут: для понимания того, о чем пытаемся сообщить, необходимо дать термину определение.

Допустим, кто-то, указывая пальцем, изумленно восклицает:
– Заяц!

«Заяц» требует либо предметного знания, либо дефиниции – мы оказываемся все в том же незавидном положении. Но незавидное положение исчезнет, если взять что-нибудь элементарное – к примеру, крикнуть:
– Нечто белое!

Что такое «белое»? Не предмет, конечно, но его характеристика – цвет. Термин, не требующий дефиниции: белый он и есть белый. Количество цветов, доступных для человеческого глаза, ограничено – соответственно, ограничено и количество терминов, не требующих дефиниции.

Считается, что человек обладает пятью органами чувств (иногда называют больше, но это не принципиально):

  • зрением,
  • осязанием,
  • обонянием,
  • слухом,
  • вкусом.

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

Спрашивается, какие элементы окружающей действительности могут быть охарактеризованы в качестве простой совокупности пяти ощущений? Элементарные же объекты! Идея состоит в том, чтобы сложный объект – того же «зайца» – разложить на элементарные составные части, каждую из которых охарактеризовать ощущениями. Сложив составные части обратно, получим «зайца» в сборе: объект, имеющий формальное и, главное, завершенное вербальное определение.

Давайте посмотрим, как это возможно.

Вот наблюдается физический объект. Обратите внимание, что наблюдать (точнее, ощущать, потому что воспринимать объект можно не только зрительно, но и с помощью других органов чувств) доступно исключительно конкретный, то есть индивидуализированный объект. Когда я вижу зайца, это очень конкретный заяц – вот именно этот, – а не вообще какой-то из зайцев.

Как правило, индивидуализация объекта происходит посредством его именования, но, как в случае с зайцем, далеко не всегда (только в том случае, если в этом есть необходимость). Таким образом, в зависимости от ситуации термин «заяц» может означать:

  1. конкретного зайца,
  2. название класса, к которому относятся любые зайцы.

Эти нюансы необходимо различать – предположим, что посредством сокращений от «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 – формульные понятия. Являются существительными, или глаголами, или прилагательными.

И следующую последовательность словообразования:

  1. На нижнем уровне находятся характеристики элементарных объектов, а через них – классов: красный, твердый, круглый и т.п.
  2. Совокупность оригинальных характеристик дает возможность присвоить элементарному объекту название: например, все круглые и красные предметы, растущие на деревьях, можно именовать яблоками. В результате получаем термин, пригодный для обозначения как класса (яблоки в целом), так и индивидуального объекта (вот именно это яблоко).
  3. Наличие индивидуальных объектов позволяет присваивать им уникальные наименования (заяц Степашка).
  4. Начальные термины образуются произвольно, по необходимости (вот этого зверя можно было назвать зайцем, а можно – рэббитом, ничего от этого бы не поменялось).
  5. От начальных терминов образуются зависимые, как правило, являющиеся иными частями речи.
  6. На основе терминов, получивших дефиниции, могут быть составлены формулы для определения последующих терминов, со сложными логическими условиями.

Вероятно, у читателей уже возник вопрос, для чего все это нужно?

Я столкнулся с данной проблемой, ваяя чат-бота. Тестировщики, которых удалось привлечь – всего-то несколько человек! – вели себя, с моей точки зрения, одинаково безумно: задавали вопросы, желая получить на них ответы. Наивные! Они будто не ведали, что прежде, чем задавать вопросы, следует ввести информацию в базу. Но даже при успешном преодолении этого препятствия оказалось весьма проблематично, ввиду инвариантности человеческой речи, предвидеть форму вопроса.

Ничего не стоит ввести в базу текст:
«Птицы летают».

Тогда ответ на вопрос может быть получен. Сложно дождаться ответа на более замысловатый вопрос, по сути являющийся вариацией первого:
«Машут ли какаду при полете крыльями?».

Для этого нужно знать многие взаимосвязи между словами, а именно:

  • какаду относятся к классу птиц;
  • «летать» и «полет» – однокоренные слова;
  • летать можно при помощи крыльев;
  • крыльями машут.

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

Вот я и задался вопросом: как формализовать речь, с тем чтобы на основе неопределяемых терминов дать дефиниции остальным, чтобы стало возможным составить полноценный Словарь лексических связей. В случае успеха чат-бот сможет ответить на вопрос, машут ли какаду в полете крыльями.

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

Собственно, все.

[ joke ]
Не подскажете, нобелевскую премию выдают чеком, безналичным перечислением или налом?
[ / joke ]

Комментарии (48)


  1. peacemakerv
    22.04.2019 11:28
    +1

    Ай, красиво, мне понравилось! Потому, что я точно так же люблю «оцифровывать» реальную жизнь в своих программах, строить модели. Только очень редко живые люди хотят пользоваться программами, «симулирующими» их реальную жизнь.
    К примеру, мне очень нравилось формализовывать процесс рыбалки в программе-игре, там тоже куча различных объектов, свойств, действий, условий, результатов… и алгоритмы и базы данных должны быть очень большими и непростыми, чтобы всё это было похоже на реальность, но… это скучно, однообразно в виде программы. А обычная реальная рыбалка — гораздо интереснее для живого человека.


    1. mikejum Автор
      22.04.2019 11:30

      Спасибо за похвалу.
      Самое забавное, что я тоже к рыбалке неравнодушно дышу. Очень неравнодушно.


      1. peacemakerv
        22.04.2019 11:37

        Вот чего уж гарантированно нельзя формализовать — это поведение рыбы :)
        Столетиями подтверждается, что поведение рыб — это симбиоз нескольких наук и… рандомов почти во всех параметрах «модели», неподвластных человеческому мозгу.


        1. mikejum Автор
          22.04.2019 11:45

          Формализовать поведение нельзя, но имеются подходы и к рыбам. К сожалению, это не тема для обсуждения на айтишном ресурсе.


        1. tvr
          22.04.2019 12:36

          Вот чего уж гарантированно нельзя формализовать — это поведение рыбы

          Здесь клевала вчера и будет клевать завтра. А сегодня клёв — в другом месте.


    1. exehoo
      22.04.2019 12:57

      И вся эта красота разбивается вдрызг уже на первом критерии


      1. mikejum Автор
        22.04.2019 13:04

        Вывод: дизайнеры — это не простые люди. Общение между ними невозможно.


        1. exehoo
          22.04.2019 13:12

          Напротив, вИдение дизайнеров вполне соответствует вашим критериям. А вот как формализовать «купи пачку розового», если на самом деле оно сиреневое и в бутылке?


          1. mikejum Автор
            22.04.2019 13:20

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


            1. exehoo
              22.04.2019 14:03

              Я тоже не про дальтоников, а про тезаурус, точнее про сложности дискретизации аналогового. Слов мало, оттенков цвета и вариантов формы гораздо больше. Где заканчивается синий и начинается голубой? Когда шар становится геоидом? Как-то так.
              Навеяло вот этой темой.


              1. mikejum Автор
                22.04.2019 15:00

                Понятно.
                Да, есть такая проблема. В посте я ее мельком коснулся, кстати:

                Язык как средство формализации тоже ведь дает приблизительные результаты: как, к примеру, вербально описать пятно сложной геометрической формы? Никак: точно не опишешь.

                Эта проблема не решается в естественном языке, соответственно не может быть решена в формализованном варианте. Результат всегда будет приблизителен. Это надо понимать.


      1. Vftdan
        22.04.2019 17:10

        Так на своём слое он красный opacity 60%, а после наложения на белый фон получается розовым.


        1. exehoo
          22.04.2019 17:56

          Это он в фотошопе по слоям. А, к примеру, у Есенина розовый конь — результат рассветного освещения и художественного воображения =)


  1. amarao
    22.04.2019 12:21

    Я как-то страдал этим вопросом. Проблема состоит в том, что отношения между объектами — ровно такие же термы (слова) как и то, что они описывают. Попытка вытащить определения в категории «принадлежит» не вытаскаивает его из лингвистической паутины.

    Каждое слово определяется бесконечным набором отношений с другими словами (графом), а получившаяся фраза — результат применения функции (нелинейной) к этим графам. Попытка распутать граф на базовые примитивы приводит только к тому, что у нас появляется ещё больше бесконечных графов, обработанных ещё большим числом нелинейных функций.


    1. mikejum Автор
      22.04.2019 12:42

      Вы изложили проблему, но почему-то не заметили предложенного мной решения. Количество графов увеличивается, конечно, но при этом количество слов не увеличивается, даже если обозначить отношение каким-то термином. Термин, обозначающий отношение, будет единственным.
      По сути, предлагается то, что реализовано в математике. Берется аксиома (неопределяемые понятия), из них выводятся теоремы, из них — последующие теоремы, и т.д.
      Неопределяемые понятия не составляют графы. Какой может быть граф в слове «синий»? Это непосредственно результат ощущения. Любое определение данного термина будет некорректно, т.к. сможет базироваться на последующих, более сложных понятиях.
      Соответственно, вся сложность в том, чтобы последовательно вывести из неопределяемых терминов все остальные.


      1. amarao
        22.04.2019 13:20

        Количество слов не увеличивается, но изменяется коннектом. Забуем на секунду бесконечность и представим, что у нас есть язык из трёх термов: A, B, C (для удобства '=' двусторонняя связь, '-' односторонняя).

        Они связаны таким образом (для B) A=B-C, (для A) B=A=C. Что будет в результате A?B? А чёрт его знает.

        Заметим, коннектом (граф) оказывается параметризирован словом. Например, если мы говорим про «процесс», то слово «удалённый» будет ограничено в связях с соседями семантикой слова «удалённый процесс» (т.е. процесс, который далеко). А если будет «удалённый» в контексте «файл», то семантика будет ограничивать смыслом «стёртый».

        Насчёт «синий». Нет синего. Есть то, на что показали окружающие и сказали «это синий». Я не буду постить это злосчастное платье, но «синего как ощущения» не существует. При этом можно притащить коннектом и сказать, что синий — это электромагнитная синусоида на 450 нм, но тут мы завязнем в «синусоиде», безумном научном жаргоне о том, что синусоида бывает только бесконечной, погрешности измерения и т.д.

        А можно притащить контекст и сказать «вон, небо синее», на что будет понятно, что оно голубое.

        Невозможно свести язык к «я мыслю, значит я существую». Язык требует слушателя, а значит, требует чужого сознания и чужого восприятия. В этом месте исчезает «реальность, данная нам в ощущениях» и появляется работа с проекциями, схождением к «компромиссу» и динамикой во времени и популяции, после чего модель становится бесконечно запутанной и неподъёмной.

        А при исключении этих элементов исчезает коммуникативная функция языка.


        1. mikejum Автор
          22.04.2019 13:33

          Вы весьма мудро и смачно излагаете, но согласиться не могу.
          1. Про двустороннюю-одлностороннюю связь, честно говоря, не понял. Я представляю, что это такое, но не вижу примеров односторонних связей в языке. По-моему, там все связи двусторонние.
          Я исхожу из структуры фраз: субъект — действие — объект. Для меня это сама очевидность.
          2. Про «удаленный». Да, проблема известна. Существуют многозначные слова. Некоторые слова могут использоваться в переносном значении. А еще существуют фразеологические обороты. Однако данных вопросов я не касался. Ясен пень, что практическое решение потребует преодоления куда бОльших сложностей, чем описано в коротеньком посте.
          3. «Синее» как ощущение безусловно есть. Давать «синему» определения через электромагнитную синосоиду некорректно.
          Извините, но вы приписываете мне иные цели. Я не рассматриваю вопрос межсубъектной синхронизации смыслов, а решаю лингвистические задачи. У меня «синий» — синий для всех, по умолчанию.
          4. С чем согласен, так это с тем, что проблема бесконечно запутанная и неподъемная. Но это не значит, что ее нельзя пытаться решить.


          1. zirix
            22.04.2019 22:53

            Да, проблема известна. Существуют многозначные слова. Некоторые слова могут использоваться в переносном значении. А еще существуют фразеологические обороты. Однако данных вопросов я не касался

            Тогда не очень понятно какую проблему вы решаете.

            Основная проблема в интерпретации естественного языка — это его неоднозначность. Не только отдельные слова могут быть интерпретированы по разному, но и целые фразы в засисимости от контекста.

            Задача создания «словаря» решается чтением википедии, викисловаря и прочих текстов. Там и про «машут крыльями» можно добыть информацию.


            1. mikejum Автор
              22.04.2019 22:59

              Основная проблема в интерпретации естественного языка — это его неоднозначность.

              Абсолютно согласен. Однако я решал другую проблему: наметить пути к созданию Словаря лексических связей — такого, в котором бы существовало конечное число начальных неопределяемых терминов, а все последующие термины выводились бы из предыдущих. Если вы этого не смогли понять, статья прошла мимо вас, конечно.


              1. zirix
                23.04.2019 00:17

                в котором бы существовало конечное число начальных неопределяемых терминов

                А какую проблему решают неопределяемые термины?

                Вы таким образом пытаетесь избавиться от рекурсивного определения? Если да, то:
                1. такие определения — это признак логической ошибки в определениях. Или того, что в определении используется слова с неоднозначностью (использование таких слов — это ошибка).
                2. это не защитит вас от циклических определений вида :«бегемот(s) = гиппопотам(s), гиппопотам(s) = бегемот(s)» и от менее банальных вещей.
                3. Почему вы считате «цикл» проблемой? При обработке (при извлечении данных) учитывайте возможную бесконечную рекурсию и не входите в нее.

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


                1. mikejum Автор
                  23.04.2019 08:19

                  Вы таким образом пытаетесь избавиться от рекурсивного определения?

                  Да.
                  такие определения — это признак логической ошибки в определениях.

                  Именно поэтому я и пытаюсь избавиться от рекурсии.
                  это не защитит вас от циклических определений вида :«бегемот(s) = гиппопотам(s), гиппопотам(s) = бегемот(s)» и от менее банальных вещей.

                  Защитит. Если «бегемот» уже определен, а «гиппопотам» нет, то определение «гиппопотама» следует давать через «бегемота», но не наоборот.
                  Почему вы считате «цикл» проблемой? При обработке (при извлечении данных) учитывайте возможную бесконечную рекурсию и не входите в нее.

                  Данные можно извлекать, не входя в рекурсию, а толку, если у полученных терминов не будет определения?


  1. third112
    22.04.2019 12:50

    ИМХО прежде всего нужно определить цель формализации. Нпр., для школьных целей формализация русского (английского и др.) очень даже существует и изложена в учебниках по языку. Если нужна более детальная формализация, нпр., для ИИ, то м.б. не начинать ее с нуля, а взять за основу уже проделанную в учебнике? Или объяснить, почему такой путь не подходит. Автор использует термины «существительное», «глагол», «наречие», которые используют школьные учебники языка, но почему-то не использует такие термины, как «подлежащее», «сказуемое», «дополнение»…


    1. mikejum Автор
      22.04.2019 13:07

      Ну мог бы я использовать термины «подлежащее», «сказуемое», «дополнение». Субъект — подлежащее. Действие — сказуемое. Объект — дополнение. Что бы это дало дополнительно к имеющемуся? Всегда приходится выбирать между синонимичными терминами, останавливаясь на чем-то одном.


      1. third112
        22.04.2019 13:25

        Что бы это дало дополнительно к имеющемуся?
        Возможность использовать в целях расширения существующую и оправдавшую себя формализацию, а не изобретать лишние сущности (см. Бритва Оккама). Учебники содержат не только термины, но и правила построения фраз (предложений). Применение этих правил необходимо для понимания ИИ естественного языка.


        1. mikejum Автор
          22.04.2019 13:39

          Не настолько использованная мной терминология и оригинальна, чтобы пенять на ее употребление. Тем более что никаких новых сущностей я не изобретал, так что говорить о бритве Оккама не приходится. Просто для изложения моей концепции больше подходят термины «субъект», «действие» и «объект», чем «подлежащее», «сказуемое» и «дополнение». Они мне кажутся более точными.
          Неужели в процессе чтения что-то оказалось непонятным?


          1. third112
            22.04.2019 13:50

            Когда один термин заменяют другим, то возникает возможность ошибок подмены термина. Уже на чисто формальном уровне становится непонятным, как использовать правила построения фраз из существующих учебников. А недоброжелателям (я не из их числа — я искренне пытаюсь разобраться в Вашем тексте) Вы даете возможность на Ваше утверждение:

            Не настолько использованная мной терминология и оригинальна, чтобы пенять на ее употребление. Тем более что никаких новых сущностей я не изобретал

            обвинить Вас в том, что ничего нового Вы не сказали, а просто заменили стандартные термины, чтобы выглядело, как новое.


            1. mikejum Автор
              22.04.2019 13:55

              Дело не в отношении к тексту или автору, а в сути претензий.
              Меня всегда интересовала философия. Язык для меня — продолжение философии. Соответственно, я употребил привычную для меня стандартную(!) терминологию. Термины «подлежащее», «сказуемое» и «дополнение» в философии, извините, не котируются.
              Сказал я что-то новое или не сказал, это вопрос не ко мне. Пытался сказать, а насколько получилось, пусть решают другие.


              1. third112
                22.04.2019 14:08

                Меня всегда интересовала философия. Язык для меня — продолжение философии.

                С точки зрения философии следует уважать традицию ссылки на предшественников. Возьмем один из самых известных для многих читателей источников (его не так давно во всех вузах сдавали):
                Что значит дать «определение»? Это значит прежде всего подвести данное понятие под другое, более широкое. Например, когда я определяю: осел есть животное, я подвожу понятие «осел» под более широкое понятие. Спрашивается теперь, есть ли более широкие понятия, с которыми могла бы оперировать теория познания, чем понятия: бытие и мышление, материя и ощущение, физическое и психическое? Нет. Это — предельно-широкие, самые широкие понятия, дальше которых по сути дела (если не иметь в виду всегда возможных изменений номенклатуры) не пошла сих пор гносеология. Только шарлатанство или крайнее скудоумие может требовать такого «определения» этих двух «рядов» предельно-широких понятий, которое бы не состояло в «простом повторении»: то или другое берется за первичное. (В. И. Ленин, Материализм и эмпириокритицизм, гл.3)

                Что принципиально нового добавили Вы?


                1. mikejum Автор
                  22.04.2019 15:04

                  1) Выделил неопределяемые понятия.
                  2) Показал, каким образом из неопределяемых понятий можно получить последующие.
                  3) Указал способ образования однокоренных групп: из одного начального термина.
                  4) Установил типы слов (по критерию происхождения).

                  Это с моей точки зрения. Но я могу заблуждаться.


                  1. third112
                    22.04.2019 15:11

                    Выделил неопределяемые понятия.

                    Нпр., если я правильно понял:
                    Термин, не требующий дефиниции: белый он и есть белый.

                    Но, нпр., в модели RGB белый определяется через R,G и B. Ваше выделение сомнительно.


                    1. mikejum Автор
                      22.04.2019 15:14

                      Да, поняли правильно.
                      А что сомнительно: это бывает. Любая концепция имеет тысячу альтернативных. Вопрос: какой концепции верить?


                      1. third112
                        22.04.2019 16:54

                        Вопрос: какой концепции верить?
                        ИМХО зарекомендовавшей себя на практике. А если существуют недостатки и нужно их преодолеть, то научная традиция предписывает:
                        1) Описание недостатков прежних наиболее распространенных концепций.
                        2) Сравнение предлагаемой концепции с существующими для демонстрации преодоления указанных недостатков.
                        3) Показать, что преодалев одни недостатки не внесли новых, которых не было в прежних концепциях.


                        1. mikejum Автор
                          22.04.2019 17:17

                          Во-первых, RGB нимало не противоречит моей концепции. Если вы считаете, что существует всего три цвета, можете использовать три значения атрибута «цвет», на здоровье. Иначе говоря, данные концепции вообще никак не соотносятся между собой, они о разном.
                          Во-вторых, у вас вопросы только по одному пункту из четырех? Остальные три пункта принимаются?


                          1. third112
                            22.04.2019 17:25

                            они о разном
                            О каком разном? RGB формализует цвет и Ваша формализует цвет. Но Вы утверждаете, что белый не требует дефиниции. Наверное, это будете утверждать и про любой другой цвет? Получается миллионы только цветов без дефиниции.


                            1. mikejum Автор
                              22.04.2019 17:37

                              Вы пытаетесь обсуждать действительно проблемную вещь, но при этом второстепенную.
                              Алгоритм такой:
                              1. Определяем атрибут. В данном случае «цвет».
                              2. Определяем область значений данного атрибута (конечный перечень возможных значений). Любой выбор может быть оспорен, потому что аналоговое не сводится один-в-один к дискретному. Если, к примеру, мы взяли цвета «красный», «синий», «зеленый», «черный» и «белый», то «оранжевый» потребует формульного определения: допустим, как «красный» и одновременно «белый». Мысль ясна?
                              Я упомянул «белый» исключительно в качестве примера. Вопрос корректного задания атрибутам областей определения в посте вообще не рассматривался.


                              1. InterceptorTSK
                                22.04.2019 18:56

                                Цвет — это переизлученное излучение, причем определенного типа т.е. электромагнитное, причем такое что видимо в условном видимом диапазоне. Причем далеко не всеми. Причем с учетом коррекций цветовой модели. Причем с учетом дефектов восприятия человеков. Причем с учетом региональных языковых особенностей, ибо не везде есть голубой и синий и прочее-прочее… У некоторых народов вообще четыре цвета и им хватает. А у некоторых художников 350 именованных цветов и им не хватает. Причем когда вы на два оттенка красного тычете пальцем и говорите что они оба красные — как такое может быть вообще?)

                                Вы точно понимаете, куда вы лезете? Вы масштаб проблемы действительно улавливаете?

                                Впрочем, когда я прочитал, что голова круглая и твердая, то в общем-то все стало понятно)))

                                пс: Чёрного цвета не существует, ибо это логический бред. А теперь поймите откуда оно пошло и как это исправить.

                                ппс: Даже шнобилевкой не пахнет. Уровень пту, не более… Извините, если слишком резко.


                                1. mikejum Автор
                                  22.04.2019 19:15

                                  Ага, цвет — это переизлученное излучение, чего ж непонятного?! А мой ноут черного цвета — логический бред. Как я сразу не догадался!


  1. fivehouse
    22.04.2019 12:58
    +1

    Вспомним, для чего нам вообще необходим язык. Для корректного отражения окружающей нас действительности в процессе коммуникации.
    Функций языка больше раз в 10. Вы нащупали только одну.
    Описанный вами подход тоже тупиковый. Т.к. само количество типов слов в реальности произвольно и задается в процессе обучения. А у вас оно фиксировано. Одни и те же слова могут быть разных типов. Каждый переход по предлагаемым вами отношениям слов искажает смысл начальной словесной конструкции (и теряется знание), а надо наоборот, чтобы смысл уточнялся и прояснялся.


    1. mikejum Автор
      22.04.2019 13:14

      Функций языка больше раз в 10. Вы нащупали только одну.

      Я не нащупывал, я просто указал, полагая, что для преамбулы достаточно.
      Описанный вами подход тоже тупиковый. Т.к. само количество типов слов в реальности произвольно и задается в процессе обучения. А у вас оно фиксировано
      .
      Хм… Я как раз доказываю, что количество типов фиксировано. Если вы считаете иначе, нужны пояснения.
      Одни и те же слова могут быть разных типов.

      Если вы имеете в виду многозначные слова, то да, данный аспект мной не рассмотрен. Но это же совсем несложно, в рамках заявленной логики. Ну, считайте каждое из значений отдельным словом, или одно слово группируйте по значениям, как это делается в словарных статьях. В чем проблема?


  1. AparnevAN
    22.04.2019 15:36

    Выскажу некоторые мои соображения, которые могут оказаться полезными для автора.

    Если ваша цель — интеллектуальный поиск в некой БД или БЗ, то вам нужно перевести предложение (запрос) в формулу логики 1 порядка, если это вообще возможно. Так как и первое, и второе связано с отношениями, что суть, предикаты. Можно как промежуточный язык использовать Логлан, Ложбан, по идее.

    Вообще, естественные языки нужны для взаимодействия агентов. У каждого агента — свои представления о реальности, и ТОЛЬКО представления. Представления не содержат объектов реальности, максимум — их образы, искажённые призмой восприятия агента, и отношения между этими образами. Также представления агента содержат образы объектов, не существующих в мире объектов реальности — например абстрактные понятия (число, функция), понятия о взаимодействии агентов (преступление, долг, честь), о состоянии агентов (эмоции, совесть), понятия об изменении реальности (плывёт, летает) и прочее.

    Язык может передавать только мелкие клочки этих представлений, и делает это более-менее эффективно за счёт передачи существенного (для текущего акта коммуникации) содержания. Но нельзя передать представления целиком — у принимающей стороны образы всегда формируются свои, даже если в процессе общения разницу найти нельзя — это изменение связей совершенно других нейронов.


  1. buriy
    22.04.2019 22:37

    Формализовать крупные классы — легко. И компьютер с их обработкой справляется на ура.
    Попробуйте формализуйте все слова здесь, особенно по вашим «аксиомам»:
    «я ещё не закончил», «оно мне сильно уж нравится», «ты такой необычный», «она её сделала довольно слабой», «тролль положил в карман куртки» и объясните, почему можно говорить «не началось уже», но не очень хорошо звучат фразы «ли можно уже», «Иван войдя в комнату, он сел» и «Я оставил день­ги для соседей друг у друга».
    И кстати, что такое «Российский сыр»? «Российский» — это отсылка к стране производителя, к месту производства, к марке, выражение отношения «свой-чужой», выражение отношения к (не)качественному товару, ничего не значащий набор букв, или, может, принятое между террористами обозначение для чего-то другого? (Кстати, может ли «Российский сыр» быть произведён в Крыму? ) Выходит, у фразы быть несколько значений одновременно, и не всегда можно своему знанию доверять, и что некоторые понятия вообще никак не сводятся к базовым (так какое, говорите, базовое понятие для «российского сыра»?). И как вы с такими фразами собираетесь тогда работать своей методикой?

    Хватит уже изобретать велосипед, прочитайте хоть одну профильную книгу.
    Например, «Тестелец Я.Г. Введение в общий синтаксис».

    Жду, когда вы осознаете, что описания эффекта одиночных слов мало, и вам нужно описать не менее 10 миллионов языковых единиц: различных слов, фраз и выражений, которые меняют смысл и употребимость в разных условиях. После чего, полученный набор вероятностных правил невозможно эффективно запрограммировать.
    А потом придут нейросети, которые хоть как-то позволят решать сложные практические задачи. Правда, для них нет больших датасетов для большинства задач… Но уж формально-лингвистическом подходом эти задачи тем более не решить.


    1. mikejum Автор
      22.04.2019 22:53

      1. Целью настоящего поста являлась формализация не фраз, а тезауруса. Если вас интересуют фразы, смотрите другой мой пост:
      habr.com/ru/post/420197
      2. За ссылку спасибо, гляну при случае.
      3. Нейросети давно пришли, а ИИ не видать. Не потому ли, что недооценивается формально-лингвистический подход?
      4. Я занимаюсь тем, чем мне нравится заниматься. Если вас что-то не устраивает, просто не читайте.


      1. buriy
        23.04.2019 00:19

        >1. Целью настоящего поста являлась формализация не фраз, а тезауруса. Если вас интересуют фразы, смотрите другой мой пост:
        habr.com/ru/post/420197
        Я читал, и даже комментировал. Не формализуете ли слова из моих предложений? Например, что значит «уже», «слабый» или «довольно»? Может, тогда возьмёте слово «её»? (Так, думаем. «её» — это вроде существо или объект женского пола… А что такое женский пол… И почему «сковородка» — женского пола, а «карандаш» — мужского? И как мы это наблюдаем своими органами чувств?)
        Тезаурус — это про смысл слов. Но слова имеют смысл в контексте. Но в вашем тезаурусе нет контекста!.. Шах и мат. Надеюсь, последний пример был наиболее наглядным.
        >2. За ссылку спасибо, гляну при случае.
        В прошлый раз вы ссылки, как я понимаю, не посмотрели. Зачем учиться на опыте других людей? Ведь можно повторить их ошибки самостоятельно!
        >3. Нейросети давно пришли, а ИИ не видать. Не потому ли, что недооценивается формально-лингвистический подход?
        Нет, вовсе не поэтому. Комбинация этих подходов имеет некоторый смысл, но сделать её пока не получается.
        Сам этот подход никто не недооценивает, просто любой приличный учёный учится на работах своих предшественниках: работах Витгенштейна (читая и раннюю, и позднюю его ключевые работы), и трудах Мински с его фреймами (это когда в 60е годы на ЛИСПе повторяли примерно то, чем занимаетесь вы со своим ботом). И даже английский WordNet в 80х-90х-00х сделали — довольно мощный тезаурус, кстати, до сих пор с ним сравнивают решения различных задач. И Тузов свою Семантику русского языка написал в 2003м и часть кода своего словаря в статьях и в диссертации описал.
        Зачем они это делали? Чтобы mikejum это потом описывал так, как будто сам всё изобрёл?
        >4. Я занимаюсь тем, чем мне нравится заниматься. Если вас что-то не устраивает, просто не читайте.
        Считаете ли вы, что недоговорённость во фразе может быть элементом обмана, введения других людей в заблуждение?
        Вы не ссылаетесь ни на кого, как будто находитесь в вакууме. Читающие вас могут пойти за вами и больно расшибить коленки. Их я и предостерегаю своим публичным комментарием, и рассказываю, куда нужно вместо этого идти, и почему. А вас убеждать не мыслить в духе анекдота, где «чукча не читатель, чукча писатель» — безусловно, не имеет никакого смысла. Пишите, но с дисклеймером: «Дисклеймер: я специально всё делаю не лучшим образом, ведь моя цель — заинтересовывать людей заниматься хайповыми чат-ботами, а не научить их использовать наилучшие технологии для решения задач». В общем, ваши бы писательские навыки направить на более современные технологии…


        1. mikejum Автор
          23.04.2019 08:41

          1. Да, читали, помню.
          2. «Ее» — это ссылка, вне конкретного контекста не имеющая смысла. «Сковородка» — женского пола, но могла бы быть мужского, ничего бы не изменилось. «Сковород». И что этим доказано? С другими словами несколько сложнее, но никакого шаха и мата не наблюдаю.
          3. Мне постоянно рекомендуют что-то прочитать, на большинство книг не хватает времени. К тому же чтение — занятие сугубо индивидуальное. Но вообще, я довольно прилично начитан, хотя список прочитанного не совпадает с вашим, конечно.
          4. Вы мне инкриминируете изобретение велосипеда. Есть мальца. Однако в любом случае я не краду, не занимаюсь цитированием общеизвестного в научных журналах, а прихожу к каким-либо выводам своим умом, затем публикую. Вы мне это запретите? Четверостишие такое знаете:

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

          5. За мной идти не надо, потому что действительно можно расшибить колени, вы правы. Это мой и только мой путь.
          6. Вам известно, какие технологии современные, а какие нет? А перспективные технологии вы так же легко отличаете от неперспективных? Мне бы ваши таланты.


  1. Ermit
    23.04.2019 01:55

    Насколько я понял, автор не знаком даже с Категориями Аристотеля. Долго придется догонять… )))


  1. in4
    23.04.2019 05:53

    Тоже появлялись похожие идеи. И нашел, что

    • В толковом словаре Longman меньше 2000 слов. Сказано, что через них определяются все остальные слова (дефиниции слов толкового словаря). Причем число понятий можно еще сократить!
    • В работе про «Универсальный семантический код» (автора сейчас не припомню) был перечислен исчерпывающий список из менее 2000 отношений понятий.
    • В толковом словаре Ожегова слов меньше 50000.
    • Активный словарный запас бывает 4000-10000 слов.
    • Использование некоторых терминов может более четко определять контекст — вариантов значений слов будет меньше.

    Так что сделать что-то более-менее работающее, похоже, можно. А если учитывать вероятности и использовать нейронные сети для уменьшения неопределенности поиска — можно еще улучшить «понимание» == уменьшить количество подходящих по контексту наборов дефиниций слов(понятий).

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

    Субъективно, детерминированный подход мне нравится больше, чем чисто вероятностный, основанный на нейронных сетях. Думаю, что нейронные сети должны быть вспомогательным инструментом для сужения пространства решений.


  1. Eldhenn
    24.04.2019 14:25

    > Термин, не требующий дефиниции: белый он и есть белый.

    Вы никогда не пытались подкрасить белой краской белую поверхность?

    > Когда я вижу зайца, это очень конкретный заяц – вот именно этот, – а не вообще какой-то из зайцев

    Когда вы видите зайца, в ваш глаз поступает большое количество электромагнитных волн из разных точек пространства, которые при постобработке, основанной на предыдущем опыте и обучении, превращаются в объекты. Никакого «зайца» не существует, как и ложки — это только ваш опыт. Как там у Юдковского было?

    Нет никаких частиц, есть лишь облака амплитуд в пространстве состояний множества частиц. И то, что его мозг наивно считает ластиком, не более чем гигантский множитель волновой функции, который тоже можно разложить на множители. Сказать, что он самостоятельно существует, всё равно, что сказать — внутри числа «шесть» существует независимый множитель «три».


    1. mikejum Автор
      24.04.2019 14:40

      Вы никогда не пытались подкрасить белой краской белую поверхность?

      На оттенки намекаете, что ли? Данный вопрос уже обсуждался, в других ветках.
      Никакого «зайца» не существует, как и ложки — это только ваш опыт.

      И я тоже так считаю. Однако, если эти «облака амплитуд» складываются в одинакового зайца для общающихся между собой субъектов, вопрос исчерпан. Далее можно рассматривать зайца как материальный объект, что я и делаю. Меня именно этот вопрос занимает, а не тот, который вы ставите. Пост совсем о другом.