В прошлой статье мы изучили применение графовой нейронной сети. Сегодня рассмотрим граф знаний и его применение в NLP и Computer vision.
Что такое граф знаний
Граф знаний — это такая структура данных, в которой информация представлена в виде графа. Можно сказать, что это топология для интеграции данных. В большинстве случаев граф знаний используется для хранения связной данных, т.е каким-то образом ссылающихся друг на друга. А, как всем известно, граф состоит из узлов и ребер.
В графе знаний узлы содержат некоторую сущность, а ребра содержат отношения между этими сущностями.
Представление знаний в графе
Но причем здесь знания? Представим, некоторого игрока в футбол (или любого угодного вам спорта). на рисунке ниже представлен узлы (сущности) с “игроком А” и “командной А”. При этом “игрок А” является капитаном команды, поэтому мы ставим проводим направленное ребро “капитан”. Это ребро и является знанием о сущностях, или ребро содержит знание о сущностях.
Допустим, “игрок А” является еще и нападающим. С другой стороны, мы можем сказать, что команда находится под управлением игрока. И это также можно отразить на графе знаний.
Исходя из подобного графа, мы можем заключить, кем является “игрок А”, “команда А” или другая любая сущность графа. Но вот вручную составлять его очень утомительно, особенно если он состоит из тысяч или миллионов сущностей. Однако для компьютера такое представление удобно для изучения естественного языка, где знаниями являются части речи (pos-tagging), распознавание именованных сущностей (NER), сегментированные предложения и т.д.
Что такое именованные сущности или Named Entity
В любом тексте данные могут иметь различные имен настоящих объектов. Эти имена и считаются именованными сущностями. Имя человека, название места могут быть рассмотрены как именованные сущности. Примерами является “игрок А”, “команда Б”, “MacBook pro” и т.д. Именованная сущность является представлением имени объекта.
Процедура поиска в тексте именованных сущностей называется распознаванием именованных сущностей. После поиска сущности можно вычислить ее класс (если стоит такая задача). Здесь важно осознать, что между именованными сущностями существует только некоторая связь.
Допустим есть предложение:
Игрок А отбил 10 мячей и выиграл кубок главного матча в Пекине в 2016 году.
Тогда система распознавания сущностей может выдать следующее:
Игрок А (субъект) отбил 10 (количество) мячей и выиграл (предикат) кубок (объект) главного матча (атрибут) в Пекине (место) в 2016 (время) году.
На основании полученного распознавания можно уже построить граф знаний. С помощью тех же же векторных представлений. Ведь векторное представление слов (word embeddings) можно рассматривать как граф знаний, в котором каждое слово является узлом с направленным ребром между словами.
Компьютерное зрение и граф знаний
Все знают, что некоторые алгоритмы компьютерного зрения (Computer vision) решают задачу детектирования объектов. Но ведь можно пойти дальше и на основании детектированных объектов построить граф знаний и более полно изучить изображение. Такой граф знаний мог бы пригодиться в таких приложениях, как поиск в Интернете картинки по описанию, генерация изображений, робототехники.
Некоторые исследования пытаются получить инвертированные отношения, например, “мужчина держит ведро” и “лошадь кормится из ведра” (см. рисунок заголовка выше).
Больше подробностей о графах знаний вы узнаете на специализированном курсе «Графовые алгоритмы. Бизнес-приложения» в лицензированном учебном центре обучения и повышения квалификации разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве.