Всем привет!
Мы продолжаем развитие нашей системы анализа естественного языка и, завершив промежуточный этап работы над коммерческим сценарием выявления поручений из документов, решили выложить в отрытый доступ онлайн демо по нахождению в тексте объектов и соответствующих им характеристик. Как нам кажется, мы сделали уникальную вещь, по крайней мере, нам не известно о доступных онлайн системах построения смысловой модели текста с таким уровнем детализации.
Далее небольшое описание применяемой технологии, предметной области, ограничений и возможностей демо.
О технологии
Для моделирования предметной области мы используем собственный подход, который обозначили как «свойство-ориентированный». Методологически он заключается в рассмотрении текста как некоторого сообщения о действиях, их параметрах и результатах, а технологически – в применении единого структурного элемента для представления всех понятий.
![Схематичное отличие объектно-ориентированного и свойство-ориентированного подходов Схематичное отличие объектно-ориентированного и свойство-ориентированного подходов](https://habrastorage.org/getpro/habr/upload_files/a88/e35/b74/a88e35b7476f2bf3da0946fa49ac6557.png)
К основным преимуществам применяемого подхода можно отнести:
Возможность описания любой предметной области через один базовый элемент.
Гибкость в дополнении и масштабировании базы знаний системы за счет отсутствия необходимости использования иерархии классов.
Одинаковый формат описания знаний и запросов к ним.
Подробнее о подходе можно прочитать в предыдущих наших статьях – «Идея для языка программирования искусственного интеллекта. Свойство-ориентированный подход» и «Примеры представления смысла документа через действия».
Процесс обработки текста анализатором
Построение семантической модели текста включает в себя несколько этапов. Укрупненно они показаны на следующем рисунке.
![Этапы обработки текста семантическим анализатором Этапы обработки текста семантическим анализатором](https://habrastorage.org/getpro/habr/upload_files/094/bf8/6b5/094bf86b57a66c6c26a97a18c860e407.png)
О самом демо
Сценарий работы системы заключается в выявлении в тексте объектов и их характеристик. Демо распознает слова, соответствующие занесенным в базу знаний понятиям овощей и фруктов – яблокам, бананам, капустам и т.д., а также потенциально применимые к ним свойства – сладкие, крупные, зрелые, мои, твои и т.п. Ниже - пример построения модели фразы «Бананы "Кавендиш" твои, мои бананы "Вильямс". Моих бананов восемнадцать, твоих бананов 3»:
![Пример построенной семантической модели Пример построенной семантической модели](https://habrastorage.org/getpro/habr/upload_files/db4/28c/4d1/db428c4d115401042d2928b641595ffa.png)
Фраза может быть взята из числа имеющихся примеров или написана самостоятельно. Как и человек, система способна разбирать только известные ей понятия. Список этих понятий приведен на отдельной странице демо.
Неизвестные слова или слова с опечатками будут выявлены и выведены в отдельном блоке, но могут привести к некорректному построению модели данных. Например, разбор фразы «Бананы «Кавендиш» на столе» с неизвестными системе понятиями будет выглядеть вот так:
![Пример фразы с неизвестными системе понятиями Пример фразы с неизвестными системе понятиями](https://habrastorage.org/getpro/habr/upload_files/b6e/c0c/bb6/b6ec0cbb6f7fdad66f9b2e41b4f6f5da.png)
Возможности демо
Обработка ссылок
через местоимения, например при разборе фразы «Красная тыква и зеленое яблоко. Она спелая, оно кислое» будет произведена привязка свойств «спелая» и «кислое» через анафорические местоимения «Она» и «Он» к тыкве и яблоку соответственно.
через объект со свойствами, например «Красные яблоки и зеленые яблоки. Красные яблоки большие», свойство «большие» отнесется к яблокам, у которых до этого мы определили характеристику «красные».
через общий тип объектов предметной области. Сейчас в базу знаний системы внесены два понятия, разделяющие имеющиеся объекты – это Фрукты и Овощи. Группировка по данному типу является условной (например понятия «арбуз», «малина» и «клубника» отнесены к фруктам) и служит для демонстрации возможностей обработки ссылок на объекты. Пример ссылки через тип - «Груши, тыквы и бананы. Фрукты сладкие, овощи спелые», в котором характеристика «сладкие» сопоставится только с «Грушами» и «Бананами».
Понимание смысла слов
Система, исходя из имеющейся базы знаний, достраивает модель анализируемого текста элементами, которые отсутствуют на уровне слов. Например, при разборе фразы «Твои яблоки кислые, мои яблоки сладкие» появятся такие элементы как Автор текста и тот, кто данный текст читает с дальнейшим распределением фруктов и свойств по владельцам.
Понимание синонимов
Если системе известны слова-синонимы, то привязка свойств будет осуществлена к одному понятию. Например, во фразе «Картофель большой, капуста средняя. Картошка моя» будут выделены два объекта – «Картофель» и «Капуста». Свойства «Большой» и принадлежность будут отнесены к «Картофелю».
Понимание пропусков слов
Например, во фразе «Мои большие и его маленькие тыквы. Его тыкв пять» после слова «большие» пропущен объект, однако система, разобрав фразу целиком корректно привяжет два варианта принадлежности и размера к объекту «тыквы».
Понимание разных ролей слова
Например, при разборе фразы «Сорт яблок «Голден»» - «сорт» будет выступать свойством, а во фразе «Сортов яблок много» - объектом, имеющим свойство количество со значением «много».
Заключение
Нами создан и размещен в открытом доступе демо-сервис, базирующийся на нашей технологии семантического анализа Real AI, обеспечивающий построение смысловой модели текста предметной области, ограниченной занесенными в базу знаний понятиями.
Краткое резюме по демо:
Если понятий нет в базе знаний – система скорее всего не построит корректную смысловую модель.
Практическая задача, решаемая демо – выявлять объекты и характеристики. Демо не знает понятия действий, сравнительных отношений и т.д.
Сейчас предметная область очень ограничена, но дополнение базы знаний – больше количественная, чем качественная, задача. По мере наличия времени и ресурсов будем развивать демо - исправлять возможные ошибки, дополнять базу знаний и возможности анализатора по разбору грамматических конструкций.
Ну а разделение на типы «Фрукты» и «Овощи» условно и не должно быть предметом споров :)
Ссылка на демо – https://real-ai.ru/demo/
Ссылка на список известных системе понятий - https://real-ai.ru/demo/vocab.html
Спасибо что дочитали до конца!
Было бы здорово услышать ваши отзывы о демо, а также совместно рассмотреть другие сценарии, решение которых возможно при помощи нашего подхода.