Всем привет!

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

Далее небольшое описание применяемой технологии, предметной области, ограничений и возможностей демо.

О технологии

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

Схематичное отличие объектно-ориентированного и свойство-ориентированного подходов
Схематичное отличие объектно-ориентированного и свойство-ориентированного подходов

К основным преимуществам применяемого подхода можно отнести:

  1. Возможность описания любой предметной области через один базовый элемент.

  2. Гибкость в дополнении и масштабировании базы знаний системы за счет отсутствия необходимости использования иерархии классов.

  3. Одинаковый формат описания знаний и запросов к ним.

Подробнее о подходе можно прочитать в предыдущих наших статьях – «Идея для языка программирования искусственного интеллекта. Свойство-ориентированный подход» и «Примеры представления смысла документа через действия».

Процесс обработки текста анализатором

Построение семантической модели текста включает в себя несколько этапов. Укрупненно они показаны на следующем рисунке.

Этапы обработки текста семантическим анализатором
Этапы обработки текста семантическим анализатором

О самом демо

Сценарий работы системы заключается в выявлении в тексте объектов и их характеристик. Демо распознает слова, соответствующие занесенным в базу знаний понятиям овощей и фруктов – яблокам, бананам, капустам и т.д., а также потенциально применимые к ним свойства – сладкие, крупные, зрелые, мои, твои и т.п. Ниже - пример построения модели фразы «Бананы "Кавендиш" твои, мои бананы "Вильямс". Моих бананов восемнадцать, твоих бананов 3»:

Пример построенной семантической модели
Пример построенной семантической модели

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

Неизвестные слова или слова с опечатками будут выявлены и выведены в отдельном блоке, но могут привести к некорректному построению модели данных. Например, разбор фразы «Бананы «Кавендиш» на столе» с неизвестными системе понятиями будет выглядеть вот так:

Пример фразы с неизвестными системе понятиями
Пример фразы с неизвестными системе понятиями

Возможности демо

Обработка ссылок

  • через местоимения, например при разборе фразы «Красная тыква и зеленое яблоко. Она спелая, оно кислое» будет произведена привязка свойств «спелая» и «кислое» через анафорические местоимения «Она» и «Он» к тыкве и яблоку соответственно.

  • через объект со свойствами, например «Красные яблоки и зеленые яблоки. Красные яблоки большие», свойство «большие» отнесется к яблокам, у которых до этого мы определили характеристику «красные».

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

Понимание смысла слов

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

Понимание синонимов

Если системе известны слова-синонимы, то привязка свойств будет осуществлена к одному понятию. Например, во фразе «Картофель большой, капуста средняя. Картошка моя» будут выделены два объекта – «Картофель» и «Капуста». Свойства «Большой» и принадлежность будут отнесены к «Картофелю».

Понимание пропусков слов

Например, во фразе «Мои большие и его маленькие тыквы. Его тыкв пять» после слова «большие» пропущен объект, однако система, разобрав фразу целиком корректно привяжет два варианта принадлежности и размера к объекту «тыквы».

Понимание разных ролей слова

Например, при разборе фразы «Сорт яблок «Голден»» - «сорт» будет выступать свойством, а во фразе «Сортов яблок много» - объектом, имеющим свойство количество  со значением «много».

Заключение

Нами создан и размещен в открытом доступе демо-сервис, базирующийся на нашей технологии семантического анализа Real AI, обеспечивающий построение смысловой модели текста предметной области, ограниченной занесенными в базу знаний понятиями.

Краткое резюме по демо:

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

  • Практическая задача, решаемая демо – выявлять объекты и характеристики. Демо не знает понятия действий, сравнительных отношений и т.д.

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

  • Ну а разделение на типы «Фрукты» и «Овощи» условно и не должно быть предметом споров :)

Ссылка на демо – https://real-ai.ru/demo/

Ссылка на список известных системе понятий - https://real-ai.ru/demo/vocab.html

Спасибо что дочитали до конца!

Было бы здорово услышать ваши отзывы о демо, а также совместно рассмотреть другие сценарии, решение которых возможно при помощи нашего подхода.

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


  1. ebt
    23.01.2023 12:48
    +1

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


    1. Sanek22 Автор
      23.01.2023 13:06

      Что вы называете более реалистичным функционалом? Знание системой понятий в объеме какого-то усредненного человека или специалиста в какой-то области? Это трудоёмкие задачи, но если будет кто-то кто готов их финансировать, то можно и этим заняться.
      Если речь о каких-то особенных грамматических конструкциях, то будем постепенно их реализовывать. Как реализуем, сообщим.
      Где в онлайне можно посмотреть на работу программы SHRDLU?


  1. alisarin
    23.01.2023 13:14

    Можете пояснить, как вы понимаете известное в лингвистике соотношение "план выражения / план содержания", оно характерно неравновесное?

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

    Или в вашей концепции слово - это "конечный пункт назначения"?


    1. Sanek22 Автор
      23.01.2023 13:32

      Мы не используем такое понятие - "план выражения / план содержания", поэтому не могу про него ничего сказать.

      А то, что слово или другие элементы текста могут отображаться в разные понятия, то да. Какое понятие в данном случае выбрать решает анализатор. Например в данном демо "сорт" может выражать как связь между объектами (для фразы "сорт яблок "Голден", яблоки->сорт->"Голден"), так и объект (для фразы "сортов яблок много"). Это разные понятия, хотя и связанные.

      И нет, слово у нас не "конечный пункт назначения". Работа идет с понятиями, стоящими за словами.


      1. alisarin
        23.01.2023 18:06

        Тогда другой вопрос, если, конечно, не надоел. Выделяются ли в образуемой в программе коллекции понятий "верхи" и "низы"?

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

        В вашем случае "сорт" и название сорта (или - какие-то другие пары) находятся в отношениях подчинения или их отношения определяются как-то иначе?

        Если порядок подчинения задается, то тем самым фактически задается иерархия.


        1. Sanek22 Автор
          23.01.2023 18:23

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


          1. alisarin
            23.01.2023 21:48

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

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

            Можно предположить, что на такого рода принципе "проекции связи" построен и ChatGPT; если обучить его на абсурдистских романах, где "ходить по потолку" встречается в 10 раз чаще чем "ходить по полу", то на вопрос:

            - Что такое "ходить"?

            он будет отвечать -

            - Перемещаться по потолку.

            Тогда вопрос: что в вашей разработке принято за критерий четкости или несмешиваемости? Насколько однозначны те зависимости или характеристики понятий, которые образуются и используются?


            1. Sanek22 Автор
              24.01.2023 09:33

              Я, честно говоря, не совсем понял ваш вопрос. Мы не использовали в работе что-то, что я могу отнести к критерию "четкости" или "несмешиваемости". Характеристики и зависимости - однозначны. слова означают то, что записано в базу знаний системы. Значений может быть несколько. Какое из них использовать определяет программа на основе текущего текста и содержимого базы знаний.


              1. alisarin
                24.01.2023 13:47

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

                На практике это ведет к тому, что системы о которых идет речь удачно работают с простым текстом типа инструкции и неудачно - со сложным.


  1. prefrontalCortex
    23.01.2023 16:39

    Интересно. А на каком ЯП ваш проект создан, если не секрет?


    1. Sanek22 Автор
      23.01.2023 16:47
      +1

      На C++.


  1. CyaN
    23.01.2023 17:15

    Интересное решение, но не масштабируемое. Увы.


    1. Sanek22 Автор
      23.01.2023 17:22

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


      1. CyaN
        23.01.2023 17:29
        +1

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

        С ростом количества обрабатываемых предметных областей корректное определение предметной области и кросс-влияние предметных областей станет ограничивающим фактором. Типовой пример - значение слова "прокладка" зависит от контекста и предметной области. Фирма-прокладка, санитарно-техническое изделие, или санитарно-гигиеническое - разные термины.

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


        1. Sanek22 Автор
          23.01.2023 17:48

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


          1. CyaN
            23.01.2023 17:54

            Будет интересно поглядеть, что получится. Но что-то мне подсказывает, что в итоге придете к графу, который будет несколько более сложным, но в итоге упрется в свои ограничения, как и объектная модель.


  1. george3
    23.01.2023 20:47

    Занимался схожим проектом. https://docs.google.com/document/d/1lkqVj4YhzJAwpkphKXymOYb5KpQfoYI5-95DueRKTp0/edit?usp=sharing Несмотря на рабочее состояние свернул работы ввиду отсутствия коммерческого интереса на русский язык со стороны потенциальных интересантов. не смог найти кто платит короче.