Данные против информации против знаний
Перед построением сети знаний важно понять разницу между данными, информацией и знаниями (мудрость - это тема для другого дня!).
Данные обычно представляют собой набор фактов. После обработки, фильтрации и преобразования этих данных мы придаем им структуру и создаем информацию. Понимание, которое может быть получено из этой информации, называется Знания.
Семантическая сеть
Позвольте мне познакомить вас с мечтой, которая называется Семантическая сеть. Это представляет собой состояние мира, при котором все в Интернете полностью понимается машинами. Это означает, что весь текст, изображения, видео, аудио и т. Д. На веб-страницах полностью распознаются машинами. (Эта статья касается только текста.)
Когда мы осуществим эту мечту, это откроет множество возможностей в Интернете. Когда компьютеры могут понимать все в Интернете, Интернет превращается из платформы обмена информацией в платформу знаний. После этого компьютеры могут начать помогать вам находить контент, лучше соответствующий вашим потребностям. Они могут помочь вам принимать более правильные решения, показывая неочевидные идеи. Они могут лучше определять тенденции, аномалии, пробелы и т. Д. В различных областях. Это также откроет группу предприятий, которые преуспевают в Интернете, и превратятся в платформу знаний.
В Интернете полно контента, написанного на естественном языке (например, на английском). Чтобы реализовать эту мечту о семантической паутине, нам необходимо стандартизировать способ представления информации, извлеченной из контента на естественном языке. Эта стандартизация поможет всем понять извлеченную информацию. RDF (структура описания ресурсов) и OWL (язык веб-онтологий) - это несколько шагов, предпринятых на пути к стандартизации.
Сети знаний - это шаг в направлении реализации Семантической паутины!
Машинное обучение против структурированного реляционного обучения
Этот раздел предназначен только для того, чтобы дать более широкую картину. Совершенно нормально, если вы не будете следовать этому разделу.
Машинное обучение (ML) работает с матрицами данных, каждая строка которых представляет объект с характеристиками. Принимая во внимание, что Структурированное реляционное обучение (SRL) работает с предположением, что сами объекты связаны друг с другом, и, следовательно, представление, скорее всего, будет в форме графиков.
Методы обучения, применяемые в графах знаний, - это один из способов структурированного реляционного обучения!
Что такое сеть знаний?
База знаний - это любой набор информации. Сеть знаний - это структурированная база знаний.
Сети знаний хранят факты в виде отношений между различными объектами.
Помните, мы узнали, что понимание информации означает знание. Итак, извлекая факты из базы знаний и представляя эти факты в форме сущностей и отношений, граф знаний утверждает, что имеет понимание информации.
Многие графы знаний в настоящее время представляют извлеченные факты в форме троек субъект-предикат-объект (SPO), что соответствует стандарту, предписанному RDF (Resource Description Framework).
Итак, чтобы взять пример, давайте рассмотрим предложение:
Леонард Нимой был актером, сыгравшим персонажа Спока в фантастическом фильме "Звездный путь"
Тройки (факты) SPO, которые можно извлечь из этого предложения:
Приведенные выше факты при графическом представлении становятся графом знаний:
Теперь, когда мы поняли, как выглядит простая Сеть знаний (KG), давайте перечислим шаги, необходимые для построения KG (базового!).
- Извлечение знаний:
a. Извлечение SPO троек (фактов) из текста. Использует методы обработки естественного языка (NLP), такие как анализ зависимостей. НЛП - это основа построения хорошего графа знаний из текстовой информации.
б. Распознавание и связывание сущностей:
- Это шаг, на котором Леонард Н., Л. Нимой, Лео Нимой и т. д. сопоставляются с одним объектом, то есть с Леонардом Немоем.
- DBpedia, хранилище структурированных данных Википедии, используется в этом руководстве как единое глобальное хранилище всех сущностей. Таким образом, Леонард Немой будет отображен на https://dbpedia.org/page/Leonard_Nimoy. - Построение графа:
a. Устранение неоднозначности и сохранение троек SPO в базе данных Graph. Здесь факт, представленный как SPO, означает, что субъект связан с объектом через отношения, описанные предикатом.
b. Еще одним шагом здесь будет обработка Graph для достижения таких вещей, как заполнение недостающих ссылок, кластеризация объектов и т. Д.
Я настоятельно рекомендую вам прочитать НЛП, чтобы лучше понять методы, которые можно использовать на этапе извлечения знаний (для извлечения троек SPO), а также понять плюсы, минусы и уровень точности различных методов.
Приступим к самому интересному, то есть к демонстрации!
Реализация сети знаний
Код доступен по адресу:
https://github.com/kramankishore/Knowledge-Graph-Intro
- Извлечение знаний: SPO утраивает извлечение с помощью библиотеки spaCy в Python.
Проверьте файл knowledgeExtraction.py в репозитории, чтобы увидеть код . - Связывание объектов: использование API DBpedia для извлечения всех распознанных объектов и связывания их с URL-адресом DBpedia.
Проверьте файл entityRecognitionLinking.py в репозитории, чтобы увидеть код . - Сопоставьте троек SPO на шаге 1 с их соответствующими URL-адресами DBpedia из шага 2. Некоторые объекты могут не иметь прямого соответствия DBpedia. Для решения этой проблемы здесь необходимо применить более продвинутые техники устранения неоднозначности и связывания сущностей из НЛП.
- Тройки SPO, сопоставленные с их ссылками на сущности DBpedia, затем сохраняются в базе данных графов. Я использую neo4j в качестве базы данных графов и библиотеку neomodel в python. (хотя меня не особо впечатлила neomodel и документация к нему).
Проверьте файл graphPopulation.py в репозитории, чтобы увидеть код. - После приема данных графика в neo4j вы можете увидеть визуализацию графика в браузере neo4j, обычно доступном по адресу http: // localhost: 7474 / browser /
Код в приведенном выше репо выполняется для ввода текста:
Стартап-компании создают рабочие места и инновации. Билл Гейтс поддерживает предпринимательство.
И получившаяся сеть знаний выглядит так:
Это только начало, и код начнет показывать забавные результаты, когда вы начнете пробовать разные входные данные!
Теперь, когда у вас есть обзор того, что такое «Сеть знаний» и как ее построить, вы можете глубже исследовать каждый уровень извлечение знаний и заполнение графиков, чтобы повысить точность и сделать их подходящими для вашего приложения.
Спасибо!
Использованная литература: