"Начиная"

Руководство по графам знаний

Консолидация заметок, которая кратко, но мягко представляет графики знаний и проливает свет на несколько практических аспектов.

Оглавление

  • Введение
    - Что такое сеть знаний (KG)?
    - Почему KG?
    - Как использовать KG?
  • KG на практике
    - KG с открытым исходным кодом
    - Создание пользовательских KG
    - KG Ontology
    - Хостинг KG (база данных)
    - Факты запроса из КГ

Вступление

В этом разделе мы познакомим вас с KG, задав несколько простых, но интуитивно понятных вопросов о KG. Фактически, мы рассмотрим, что, почему и как графа знаний. Мы также рассмотрим несколько реальных примеров.

Что такое граф знаний?

  • Чтобы лучше понять графы знаний, давайте начнем с понимания их основной единицы, то есть «факта». Факт - это самая основная информация, которую можно сохранить в KG. Факты могут быть представлены в виде троек любым из способов,
    - HRT: ‹голова, отношение, хвост›
    - SPO: ‹ подлежащее, сказуемое, объект ›
  • Помните, что приведенные выше представления приведены только для обозначения, поэтому вы можете встретить людей, ссылающихся на этот факт в любом случае. Давайте проследим за представлением HRT в этой статье. Так или иначе, факты содержат 3 элемента (поэтому факты также называются триплетами), которые могут помочь с интуитивным представлением KG в виде графа,
    - Голова или хвост: это сущности, которые являются объекты реального мира или абстрактные концепции, представленные в виде узлов
    - Связь: это связь между объектами, которые представлены в виде ребер.
  • Ниже показан простой пример KG. Одним из примеров фактов может быть <BoB, is_interested_in, The_Mona_Lisa>. Как видите, KG - это не что иное, как собрание множества подобных фактов.

  • Обратите внимание, что нет ограничений на тип данных факта, хранящегося в KG. Как показано в приведенном выше примере, у нас есть лица (Боб, Алиса, ..), картины (Мона Лиза), даты и т. Д., Представленные в виде узлов в KG.

Почему граф знаний?

Это самый первый и правильный вопрос, который задаст каждый, когда знакомится с KG. Мы попытаемся пройти через некоторые моменты, в которых мы сравниваем KG с обычными графиками и даже с другими способами хранения информации. Цель состоит в том, чтобы выделить основные преимущества использования KG.

По сравнению с обычными графиками

  • Гетерогенные данные: поддерживает различные типы сущностей (человек, дата, картина и т. д.) и отношения (лайки, рожденные и т. д.).
  • Модель реальной информации: ближе к ментальной модели мира нашего мозга (представляет информацию, как это делает нормальный человек).
  • Выполните логические рассуждения: перемещайтесь по графам, чтобы установить логические связи (отец A - это B, а отец B - это C, следовательно, C - дедушка A)

По сравнению с другими типами хранилищ

  • Структурированное представление: в отличие от неструктурированных представлений, таких как текстовые данные.
  • Удаляет избыточность: по сравнению с табличными данными, нет необходимости добавлять в основном пустые столбцы или строки для добавления новых данных (несколько фактов).
  • Запрашивать сложную информацию: лучше, чем SQL для данных, в которых взаимосвязь важнее отдельных точек данных (например, если вам нужно сделать много JOIN операторов в SQL-запросе, который по своей сути медленный)

Как использовать КГ?

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

Панель знаний Google

  • При запросе Google об известном человеке, месте или концепции он возвращает панель знаний справа. Панель содержит широкий спектр информации (описание, образование, родился, умер, цитаты и т. Д.) И, что интересно, в разных форматах - (текст, изображение, даты, числа и т. Д.).
  • Всю эту информацию можно сохранить в KG, и один из таких примеров показан ниже. Это демонстрирует, насколько легко хранить информацию, а также отмечает, насколько интуитивно понятно просто прочитать и понять факт из KG. Фактически, Google использует KG как базу для хранения такой информации.

Система рекомендаций

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

Сеть знаний на практике

В этом разделе мы рассмотрим KG с точки зрения практикующего врача. Мы рассмотрим несколько доступных KG с открытым исходным кодом. В некоторых случаях мы можем даже захотеть создать свой собственный KG, поэтому мы обсудим некоторые указатели на w.r.t. это тоже. Затем мы быстро поймем некоторые правила и способы структурирования KG, обсудив онтологию KG. Наконец, мы обсудим базы данных хостинга KG и узнаем, как мы можем запрашивать (извлекать факты) из KG.

Графики знаний с открытым исходным кодом

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

  • DBpedia: это краудсорсинговая кампания сообщества по извлечению структурированного содержания из информации, представленной в различных проектах Викимедиа.
  • Freebase: массивная, совместно редактируемая база данных с перекрестными ссылками. Рекламируется как «открытая база данных мировых знаний». Он был куплен Google и использовался для питания собственного KG. В 2015 году его окончательно сняли с производства.
  • OpenCyc: открывает доступ к полной мощности Cyc, одной из наиболее полных в мире баз общих знаний и систем здравого смысла.
  • Викиданные: это бесплатная многоязычная база данных для совместной работы, которая собирает структурированные данные для поддержки проектов Викимедиа.
  • YAGO: огромная база семантических знаний, полученная из Википедии, WordNet и GeoNames.

Создание персонализированной графы знаний

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

  • Создание фактов: это первый шаг, на котором мы анализируем текст (предложение за предложением) и извлекаем факты в формате триплета, например <H, R, T>. Когда мы обрабатываем текст, мы можем использовать этапы предварительной обработки, такие как токенизация, стемминг, лемматизация и т. Д., Чтобы очистить текст. Затем мы хотим извлечь из текста сущности и отношения (факты). Для сущностей мы можем использовать алгоритмы распознавания именованных сущностей (NER). Для отношения мы можем использовать методы синтаксического анализа зависимостей предложений, чтобы найти связь между любой парой сущностей. Пример статьи с кодом.
  • Выбор фактов. После того, как мы извлекли несколько фактов, следующим очевидным шагом может стать удаление дубликатов и определение соответствующих фактов, которые могут быть добавлены в KG. Чтобы идентифицировать дубликаты, мы можем использовать методы устранения неоднозначности сущностей и отношений. Идея состоит в том, чтобы закрепить одни и те же факты или элементы факта в случае повторения. Например, «Альберт Эйнштейн» можно также записать как «Альберт Э.». или «А. Эйнштейн »в тексте, но на самом деле все они относятся к одному и тому же объекту. Наконец, у нас может быть комплексная система, основанная на правилах, которая решает, какой триплет следует добавить в KG, а какой можно пропустить на основе таких факторов, как избыточная информация (присутствует A → sibling of → B, следовательно, B → sibling of → A избыточно) или нерелевантная информация.

Онтология графа знаний

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

  • RDF предоставляет языки для создания онтологий, которые мы будем использовать для создания образца KG. Ниже вы можете увидеть скрипт создания KG [слева] на языке Turtle для KG [справа]. Обратите внимание, что в верхней части скрипта мы создаем ссылки на множество предопределенных онтологий, так как нет необходимости изобретать велосипед. Затем, чтобы создать факты (или тройки) нашего KG, мы можем следовать строкам под командами PREFIX.
  • Обратите внимание, что у каждого объекта и отношения есть уникальный идентификатор (их уникальный ключ или UID). На протяжении всего кода на один и тот же объект или отношение должен указываться один и тот же UID. Затем, используя предопределенные схемы, мы можем добавить факты для объекта (в графических терминах добавить соединяющую кромку и хвостовой узел к головному узлу). Эти факты могут включать другую сущность (обозначенную по их UID), некоторый текст, дату (в формате DateTime), ссылки и т. Д.

  • Наконец, как только мы подготовили сценарий (с расширением ttl - для сценариев на языке Turtle), этот сценарий содержит полную схему и определение нашего KG. Само по себе это может быть неинтересно, поэтому файл можно импортировать в любую базу данных KG для красивой визуализации и эффективных запросов.

Графики знаний о хостинге

Есть два типа баз данных, которые можно использовать для хранения графической информации. Первый - это «графы свойств», такие как Neo4j и OrientDB, которые не поддерживают файл RDF (из коробки) и имеют свой собственный язык запросов. С другой стороны, у нас есть «хранилища триплетов RDF», которые поддерживают файлы RDF и поддерживают язык запросов, такой как SPARQL, который повсеместно используется для запросов KG. Некоторые из самых известных (с открытым исходным кодом),

  • GraphDB: решение от Ontotext, которое предоставляет клиентские (визуализационные) и внутренние (серверные) сервисы для просмотра и запроса размещенных графов знаний.
  • Виртуоз: решение от OpenLinkSoftware, которое предоставляет серверные сервисы для запроса размещенных KG. Он также поддерживает запросы KG с использованием комбинации SQL и SPARQL. Кроме того, на Virtuoso размещено множество KG с открытым исходным кодом, таких как DBpedia.

Запросы к диаграмме знаний

  • Как только факты созданы в виде RDF и размещены в хранилище триплетов RDF, таком как Virtuoso, мы можем запросить их для извлечения соответствующей информации. SPARQL - это язык запросов RDF, который может извлекать и обрабатывать данные, хранящиеся в формате RDF. Интересное прочтение для более подробной информации - Прохождение DBpedia и Triplestore.
  • Большинство хранилищ троек RDF предоставляют визуальную страницу запроса SPARQL для получения соответствующей информации. В нашем случае давайте воспользуемся одним из таких визуальных помощников по запросам, предоставляемым Викиданными (показано ниже). Показан пример запроса, в котором мы хотим извлечь все сущности, которые являются экземплярами домашней кошки (нам просто нужны кошки 🐱). Как обсуждалось ранее, каждый объект имеет UID, поэтому отношение <instance of> представлено как P31, а объект <house cat> представлено как Q146. Запрос довольно прост для понимания, поскольку в строках 2–5 мы просто пытаемся передать, что нам нужна любая сущность, являющаяся экземпляром домашней кошки. Поскольку Викиданные содержат данные на нескольких языках, строка 6 необходима для фильтрации результатов, специфичных для английского языка. Результаты (объекты с их UID и некоторые основные сведения) показаны под запросом.

  • KG с открытым исходным кодом также предоставляет несколько готовых API для часто используемых запросов. Один из таких API показан ниже (для Викиданных), который возвращает релевантную информацию для данного объекта. Ниже мы можем увидеть результат запроса wbgetentities API для объекта Q9141 , который является UID для Тадж-Махала.

Заключение

Остановимся на этом. До сих пор мы обсудили основы графов знаний и рассмотрели некоторые практические аспекты использования KG. Эта статья представляет собой слабую транскрипцию первой части гостевых лекций, которые я читал в UoT. И цель первой лекции (и, следовательно, этой статьи) - познакомить начинающую аудиторию с KG и направить промежуточную аудиторию к некоторым из наиболее важных и полезных источников и инструментов w.r.t. КГ. Что касается более продвинутой аудитории, которая хочет обсудить методы встраивания KG или исследования и пути применения KG, вы можете обратиться к второй лекции. Или, может быть, напишите нам для второй части этой статьи 🤗

Примечание автора: Эта статья также присутствует как глава в моей книге по науке о данных (WIP) - Ленивое руководство по науке о данных. расшифровка первой части гостевых лекций, которые я прочитал в Тартуском университете для Computational Social Science Group.

Ссылка

  1. Обзор рекомендательных систем на основе графов знаний, Qingyu Guo et.al. 2020 г.
  2. Какая сеть знаний лучше всего подходит для меня? Michael Färber et. al. 2018 г.
  3. Обзор графов знаний: представление, приобретение и приложения, Шаосюн Цзи и др., 2021 г.
  4. RDF Primer
  5. Помощник по запросам Wikidata SPARQL
  6. Сервисы API Викиданных

Ваше здоровье.