Представление знаний — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Нахождение связей)
(Обучение онтологий)
(не показано 36 промежуточных версий 4 участников)
Строка 44: Строка 44:
 
|definition='''Онтология (в информатике)''' {{---}} формализация знаний, включающая в себя представление, формальное именование и определение категорий, свойств и отношений между понятиями, данными и сущностями некоторой области знаний.
 
|definition='''Онтология (в информатике)''' {{---}} формализация знаний, включающая в себя представление, формальное именование и определение категорий, свойств и отношений между понятиями, данными и сущностями некоторой области знаний.
 
}}
 
}}
 +
 +
Термин «онтология» применительно к графам знаний это, прежде всего, способ моделирования и формального представления схемы данных, обеспечивающий гораздо большие возможности, чем традиционные базы данных или объектно-ориентированный подход.
 +
 +
Согласно общепринятому определению в компьютерных науках, онтология {{---}} это способ формализации знаний, абстрактных или специфических, в какой-либо предметной области, реализованный на основе формального описания объектов, фактов и отношений между ними.
 
===Формализация===
 
===Формализация===
  
Строка 66: Строка 70:
 
В каждой научной дисциплине или области знаний создают онтологии для организации данных в виде информации и знаний. С новыми онтологиями упрощается решение задач в этих областях. Однако при решении задач возникают определённые сложности, например, языковой барьер между исследователями разных стран. Эта сложность может быть нивелирована поддержкой контролируемых словарей<ref>[https://wikipedia.org/wiki/Controlled_vocabulary Wikipedia {{---}} Контролируемый словарь]</ref> жаргона.
 
В каждой научной дисциплине или области знаний создают онтологии для организации данных в виде информации и знаний. С новыми онтологиями упрощается решение задач в этих областях. Однако при решении задач возникают определённые сложности, например, языковой барьер между исследователями разных стран. Эта сложность может быть нивелирована поддержкой контролируемых словарей<ref>[https://wikipedia.org/wiki/Controlled_vocabulary Wikipedia {{---}} Контролируемый словарь]</ref> жаргона.
  
===Элементы===
+
===Общие компоненты онтологий===
 
 
Общие компоненты онтологий включают в себя:
 
  
* '''Экземпляры (объекты)''' — базовые или "наземные" объекты.
+
{| class="wikitable"
* '''Классы (понятия)''' — наборы, коллекции, концепции, классы в программировании, типы объектов или виды вещей.
+
|-
* '''Атрибуты''' — аспекты, свойства, признаки, характеристики или параметры, которые могут иметь объекты (и классы).
+
! Название !! Описание !! Пример
* '''Отношения''' — способы, которыми классы и индивиды могут быть связаны друг с другом.
+
|-
* '''Термы функций''' — сложные структуры, образованные из определенных отношений, которые могут быть использованы вместо отдельного термина в высказывании.
+
| style="background:#eaecf0;" | '''Экземпляры (объекты)'''
* '''Ограничения''' — формально заявленные описания того, что должно быть истинным для того, чтобы какое-то утверждение было принято в качестве входных данных.
+
| Базовые или "наземные" объекты (индивиды).
* '''Правила''' — высказывания в форме предложения if-then (антецедент-консеквент), описывающие логические выводы, которые могут быть сделаны из утверждения в определенной форме.
+
| Мария, 1, Солнце.
* '''Аксиомы''' — утверждения (включая правила) в логической форме, которые вместе составляют общую теорию, которую онтология описывает в своей области применения. Это определение отличается от определения "аксиом" в [[Исчисление_высказываний|формальной логике]]. В этой дисциплине аксиомы включают только утверждения, утверждаемые как априорное знание. Здесь же "аксиомы" также включают в себя теорию, полученную из аксиоматических утверждений.
+
|-
* '''События''' — изменение атрибутов или отношений.
+
| style="background:#eaecf0;" | '''Классы (понятия)'''  
 +
| Наборы, коллекции, концепции, классы в программировании, типы объектов или виды вещей.  
 +
| Человек, Число, Звезда.
 +
|-
 +
| style="background:#eaecf0;" | '''Атрибуты'''  
 +
| Аспекты, свойства, признаки, характеристики или параметры, которые могут иметь объекты (и классы).  
 +
| Возраст: 21, Чётность: нет, Спектральная классификация: жёлтый карлик.
 +
|-
 +
| style="background:#eaecf0;" | '''Отношения'''  
 +
| Способы, которыми классы и индивиды могут быть связаны друг с другом.  
 +
| Люди являются Животными.
 +
|-
 +
| style="background:#eaecf0;" | '''Правила'''  
 +
| Высказывания в форме "Если ..., то ..." (антецедент-консеквент), описывающие логические выводы, которые могут быть сделаны из утверждения в определенной форме.  
 +
| Если <tex>X</tex> смертен, то <tex>X</tex> умрёт.
 +
|-
 +
| style="background:#eaecf0;" | '''Аксиомы'''  
 +
| Утверждения (включая правила) в логической форме, которые вместе составляют общую теорию, описываемую онтологией в её области применения. Это определение отличается от определения "аксиом" в [[Исчисление_высказываний|формальной логике]]. В ней аксиомы включают только утверждения, утверждаемые как априорное знание. Здесь же "аксиомы" также включают в себя теорию, полученную из аксиоматических утверждений.  
 +
| Человек смертен. Сократ {{---}} человек.
 +
|-
 +
| style="background:#eaecf0;" | '''События'''  
 +
| Изменение атрибутов или отношений.  
 +
| <tex>X</tex> умер (<tex>X</tex> больше не является живым).
 +
|}
  
 
Онтологии обычно кодируются с помощью языков онтологий — специализированных [[:Основные_определения,_связанные_со_строками#Формальные_языки|формальных языков]].
 
Онтологии обычно кодируются с помощью языков онтологий — специализированных [[:Основные_определения,_связанные_со_строками#Формальные_языки|формальных языков]].
Строка 108: Строка 133:
 
[[Файл:Ontology-learning-layer-cake.png|400px|thumb|Рис. 3. Слоеный пирог обучения онтологий]]
 
[[Файл:Ontology-learning-layer-cake.png|400px|thumb|Рис. 3. Слоеный пирог обучения онтологий]]
  
Процесс получения онтологий начинается с вынесения множества терминов из текста и получения их синонимов. Далее они преобразуются во множество концептов. После чего выявляются связи между концептами, и в итоге формируются схемы аксиом и извлекаются аксиомы. Данный процесс называют '''слоеным пирогом обучения онтологии''' (рис. 3).
+
Процесс получения онтологий начинается с вынесения множества термов из текста и получения их синонимов. Далее они преобразуются во множество концептов. После чего выявляются связи между концептами, и в итоге формируются схемы аксиом и извлекаются аксиомы. Данный процесс называют '''слоеным пирогом обучения онтологии''' (рис. 3).
  
 
Алгоритмы, используемые в разных слоях при построении онтологии разбивают на 3 основные группы:
 
Алгоритмы, используемые в разных слоях при построении онтологии разбивают на 3 основные группы:
Строка 124: Строка 149:
 
На первой стадии текст [[:Обработка_естественного_языка#Предобработка_текста|предобрабатывается]] для уменьшения размерности и повышения точности обучаемой модели. Обычно для этого используют такие методы, как:
 
На первой стадии текст [[:Обработка_естественного_языка#Предобработка_текста|предобрабатывается]] для уменьшения размерности и повышения точности обучаемой модели. Обычно для этого используют такие методы, как:
  
* [[:Обработка_естественного_языка#Частеречная_разметка|Частеречная разметка]]<sup>[на 09.01.21 не создан]</sup> (англ. ''Part-Of-Speech tagging POS tagging'')<ref>[https://wikipedia.org/wiki/Part-of-speech_tagging Wikipedia {{---}} Part-of-speech tagging]</ref>
+
* [[:Обработка_естественного_языка#Частеречная_разметка|частеречная разметка]]<sup>[на 09.01.21 не создан]</sup> (англ. ''Part-Of-Speech tagging POS tagging'')<ref>[https://wikipedia.org/wiki/Part-of-speech_tagging Wikipedia {{---}} Part-of-speech tagging]</ref>;
* [[:Обработка_естественного_языка#Лемматизация|Лемматиза́ция]] (англ. ''Lemmatization'')<ref>[https://wikipedia.org/wiki/Lemmatisation Wikipedia {{---}} Lemmatisation]</ref>
+
* [[:Обработка_естественного_языка#Лемматизация|лемматиза́ция]] (англ. ''Lemmatization'')<ref>[https://wikipedia.org/wiki/Lemmatisation Wikipedia {{---}} Lemmatisation]</ref>.
  
 
====Извлечение термов и концептов====
 
====Извлечение термов и концептов====
Строка 133: Строка 158:
 
Распространёнными методами данного подхода являются:
 
Распространёнными методами данного подхода являются:
  
* рамки валентностей (англ. ''Subcategorization Frames''<ref>[https://en.wikipedia.org/wiki/Subcategorization#Subcategorization_Frames Wikipedia {{---}} Subcategorization Frames]</ref>);
+
* рамки валентностей (англ. ''Subcategorization Frames'')<ref>[https://en.wikipedia.org/wiki/Subcategorization#Subcategorization_Frames Wikipedia {{---}} Subcategorization Frames]</ref>;
 
* извлечение коренных слов (англ. ''Seed Words Extraction'').
 
* извлечение коренных слов (англ. ''Seed Words Extraction'').
  
Строка 140: Строка 165:
 
С помощью анализа зависимостей можно находить связи между термами используя информацию, предоставленную в [[:Контекстно-свободные_грамматики,_вывод,_лево-_и_правосторонний_вывод,_дерево_разбора#Дерево_разбора|деревьях разбора]]. Таким образом, с помощью кратчайшего пути между двумя концептами в дереве разбора можно выявить связи между ними.
 
С помощью анализа зависимостей можно находить связи между термами используя информацию, предоставленную в [[:Контекстно-свободные_грамматики,_вывод,_лево-_и_правосторонний_вывод,_дерево_разбора#Дерево_разбора|деревьях разбора]]. Таким образом, с помощью кратчайшего пути между двумя концептами в дереве разбора можно выявить связи между ними.
  
Также можно использовать [[:Регулярные_языки:_два_определения_и_их_эквивалентность|регулярные выражения]]. Например правило ''"<math>N</math>, как например <math>N</math>, <math>N</math>, … , <math>N</math>"'' (где <math>N</math> {{---}} именная группа<ref>[https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B0 Википедия {{---}} Именная группа]</ref>) может выявить такие образцы как ''"сезоны года, как например лето, осень, весна и зима"''. Данный подход полезен для выявления связей ''"является"'' к примеру ''(лето {{---}} сезон года)''.
+
Также можно использовать [[:Регулярные_языки:_два_определения_и_их_эквивалентность|регулярные выражения]]. Например, правило ''"<math>N</math>, как например <math>N</math>, <math>N</math>, … , <math>N</math>"'' (где <math>N</math> {{---}} именная группа<ref>[https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B0 Википедия {{---}} Именная группа]</ref>) может выявить такие образцы как ''"сезоны года, как например лето, осень, весна и зима"''. Данный подход полезен для выявления связей ''"является"'' к примеру ''(лето {{---}} сезон года)''.
  
 
===Статистические методы===
 
===Статистические методы===
Строка 151: Строка 176:
  
 
* C/NC value<ref>Automatic Recognition of Multi-Word Terms: the
 
* C/NC value<ref>Automatic Recognition of Multi-Word Terms: the
C-value/NC-value Method {{---}} Katerina Frantziy, Sophia Ananiadouy, Hideki Mimaz (2000)</ref>
+
C-value/NC-value Method {{---}} Katerina Frantziy, Sophia Ananiadouy, Hideki Mimaz (2000)</ref> используют для извлечения многословных терминологий {{---}} групп термов, образующих концепты. Алгоритму на вход подаётся несколько многословных термов, для каждого из которых вычисляется оценка в форме C value и NC value. C value использует частоту встречаемости терма для его извлечения, что делает его эффективным для нахождения вложенных термов, а NC value по сути является модификацией C value, которая учитывает контекст.
* Сравнительный анализ (англ. ''Contrastive analysis'')<ref>[https://wikipedia.org/wiki/Contrastive_analysis#:~:text=Contrastive%20analysis%20is%20the%20systematic,used%20to%20establish%20language%20genealogies.  Wikipedia {{---}} Contrastive analysis]</ref>
+
 
* [[:Классификация_текстов_и_анализ_тональности#pLSA|Латентно-семантический анализ]] (англ. ''Latent Semantic Analysis'')
+
* В процессе извлечения термов могут быть получены термы, не относящиеся к целевой области. Для фильтрации таких термов применяется метод сравнительного анализа (англ. ''Contrastive analysis'')<ref>[https://wikipedia.org/wiki/Contrastive_analysis#:~:text=Contrastive%20analysis%20is%20the%20systematic,used%20to%20establish%20language%20genealogies.  Wikipedia {{---}} Contrastive analysis]</ref>. Он присуждает оценку для каждого терма, в зависимости от того, насколько он релевантен для целевой области, и насколько он нерелевантен в других областях.
* [[:Кластеризация|Кластеризация]]
+
 
 +
* [[:Классификация_текстов_и_анализ_тональности#pLSA|Латентно-семантический анализ]] (англ. ''Latent Semantic Analysis, LSA'') используют для извлечения концептов. Этот метод основан на том, что термы, встречающиеся вместе, будут схожи по значению. LSA уменьшает размерность данных, сохраняя структуру подобия, после чего к оставшимся термам применяется мера сходства (например ''косинусное сходство''<ref>[https://en.wikipedia.org/wiki/Cosine_similarity Wikipedia {{---}} Cosine Simularity]</ref>) для поиска похожих слов.
 +
 
 +
* [[:Кластеризация|Кластеризация]] группирует множества объектов на подмножества (кластеры) таким образом, чтобы объекты из одного кластера были более похожи друг на друга, чем на объекты из других кластеров.
  
 
====Нахождение связей====
 
====Нахождение связей====
Строка 160: Строка 188:
 
Статистические методы также используют для выявления связей. Распространёнными техниками являются:
 
Статистические методы также используют для выявления связей. Распространёнными техниками являются:
  
* Категоризация термов (англ. ''Term subsumption'')
+
* Категоризация термов (англ. ''Term subsumption'') находит связи между термами при помощи [[:Условная_вероятность|условной вероятности]]. Этот алгоритм ищет термы, являющиеся наиболее общими. Терм <math>t</math> считается более общим, чем терм <math>x</math> если <math>P(t \; | \; x) > P(x \; | \; t)</math>, где <math>P(t \; | \; x)</math> обозначает вероятность встречи терма <math>t</math> при наличии терма <math>x</math>.
* Анализ формальных понятий (англ. ''Formal Concept Analysis, FCA'')<ref>[https://wikipedia.org/wiki/Formal_concept_analysis#:~:text=Formal%20concept%20analysis%20(FCA)%20is,of%20objects%20and%20their%20properties. Wikipedia {{---}} Formal concept analysis]</ref>
+
 
* [[:Иерархическая_кластеризация|Иерархическая кластеризация]]
+
* Анализ формальных понятий (англ. ''Formal Concept Analysis, FCA'')<ref>[https://wikipedia.org/wiki/Formal_concept_analysis#:~:text=Formal%20concept%20analysis%20(FCA)%20is,of%20objects%20and%20their%20properties. Wikipedia {{---}} Formal concept analysis]</ref> основан на том, что объекты могут иметь схожие атрибуты. Алгоритм на вход принимает матрицу связей объектов и атрибутов и находит в ней все естественные кластеры, что позволяет построить иерархию концептов и атрибутов.
* Добыча ассоциативных правил (англ. ''Association rule mining, ARM'')
+
* [[:Иерархическая_кластеризация|Иерархическая кластеризация]] группирует термы в кластеры для нахождения концептов и построения иерархий.
 +
* Добыча ассоциативных правил (англ. ''Association rule mining, ARM'') находит правила, предугадывающие совпадение элементов в различных базах данных, для чего обычно применяют алгоритмы Apriori<ref>[https://wikipedia.org/wiki/Apriori_algorithm Wikipedia {{---}} Apriori algorithm]</ref> и FPG<ref>[https://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Frequent_Pattern_Mining/The_FP-Growth_Algorithm#FP-Growth_Algorithm Wikibooks {{---}} FP-Growth Algorithm]</ref>. Тут правило подразумевает импликацию <math>X \to Y</math>, где <math>X</math> и  <math>Y</math> {{---}} непустые подмножества множества всех элементов, такие, что  <math>X \cap Y = \varnothing</math>.
  
 
===Индуктивное логическое программирование===
 
===Индуктивное логическое программирование===
  
На последней стадии построения онтологии индуктивное логическое программирование (англ. ''Inductive Logic Programming, ILP'')<ref>[https://wikipedia.org/wiki/Inductive_logic_programming Wikipedia {{---}} Inductive Logic Programming]</ref> {{---}} раздел машинного обучения, который использует логическое программирование как форму представления примеров, фоновых знаний и гипотез. ILP используется для генерации аксиом по схемам аксиом (полжительным и отрицательным примерам и фоновым знаниям).
+
На последней стадии построения онтологии используется индуктивное логическое программирование (англ. ''Inductive Logic Programming, ILP'')<ref>[https://wikipedia.org/wiki/Inductive_logic_programming Wikipedia {{---}} Inductive Logic Programming]</ref> {{---}} раздел машинного обучения, который использует логическое программирование как форму представления примеров, фоновых знаний и гипотез. ILP необходимо для генерации аксиом по схемам аксиом (положительным и отрицательным примерам и фоновым знаниям).
  
 
===Оценка онтологии===
 
===Оценка онтологии===
Строка 195: Строка 224:
  
 
Эта оценка использует источники знаний конкретной области, чтобы определить степень покрытия этой области обучаемой онтологией. Главным преимуществом данной оценки является возможность сравнивать одну или несколько целевых онтологий с конкретными данными. Однако возникает проблема нахождения подходящего источника знаний (как и в оценке золотым стандартом).
 
Эта оценка использует источники знаний конкретной области, чтобы определить степень покрытия этой области обучаемой онтологией. Главным преимуществом данной оценки является возможность сравнивать одну или несколько целевых онтологий с конкретными данными. Однако возникает проблема нахождения подходящего источника знаний (как и в оценке золотым стандартом).
 +
 +
==Особенности применения онтологии для конкретных задач==
 +
 +
===Cистема автоматической обработки текста===
 +
 +
Лингвистическая онтология является одним из ключевых элементов в системе обработки текста и ее построение необходимо для решения задачи.
 +
 +
Как описано выше — для построения современных онтологий всегда является актуальным извлечение термов и концептов, в данном случае семантически связанных слов из текста на естественном языке.
 +
Однако общим недостатком таких онтологий является отсутствие специализированных терминов, специфичных для данной предметной области. В следствие этого появляется проблема дополнения существующей онтологии, а именно семантической сети узлами и связями из внешних источников. И так как имеется множество публичных ресурсов для дополнения новых узлов и связей, то выделяют следующие задачи:
 +
 +
* Автоматизированный поиск новых узлов, связанных семантическими отношениями.
 +
* Добавление новых узлов и связей в онтологию при обнаружении сущностей, признаки которых удовлетворяют заданным критериям.
 +
 +
Для решения данных задач существует множество способов анализа текстовой информации для извлечения из нее семантических отношений:
 +
* Методы извлечения связей, основанные на шаблонах такие как "Top down" и "Bottom up"<ref>[https://www.math.spbu.ru/user/tseytin/butdu.html Bottom-up and Top-down Approaches to Text Analysis]</ref>.
 +
* Группа методов, основанная на форматировании или на DOM<ref>[https://ru.wikipedia.org/wiki/Document_Object_Model Wikipedia {{---}} Document Object Model]</ref>.
 +
* Методы, основанные на машинном обучении. Одним из самых явных примеров реализации является [[:Векторное_представление_слов#word2vec|word2vec]], основанный на нейронных сетях.
 +
 +
Последняя группа методов является наиболее современной и показывает наилучшую точность, но не позволяет достичь приемлимой точности и полноты в общем случае, так как данные методы используются для конкретной предметной области. Таким образом поиск наиболее подходящих признаков для обучения нейронных сетей необходим для применения лингвистической онтологии в данной задаче.
 +
 +
====Обработка текста на русском языке====
 +
 +
Чтобы применить онтологию для автоматической обработки текстов, необходимо понятиям онтологии сопоставить набор языковых выражений (слов и словосочетаний), которыми понятия могут выражаться в тексте. Для русского языка, как и для многих других языков, содержащие многозначные понятия, имеется ряд проблем.
 +
 +
Хоть понятие, лексическое значение относятся к категориям мышления, при этом между ними есть существенные различия.
 +
Значение включает в себя помимо понятийного содержания (сигнификативно-денотативного<ref>[https://ru.wikipedia.org/wiki/Сигнификат Wikipedia {{---}} Сигнификат]</ref><ref>[https://ru.wikipedia.org/wiki/Денотат Wikipedia {{---}} Денонат]</ref> компонента значения), такие компоненты как оценочный, стилистический, сочетаемостный.
 +
Также значение включает лишь различительные черты объектов, иногда относительно поверхностные, а понятия охватывают их наиболее глубокие существенные свойства.
 +
Поэтому описать значения многих слов как совокупности общих и одновременно существенных признаков может быть очень трудно.
 +
В целом, считается, что значение и понятие совпадают лишь в сфере терминологии.
 +
 +
Многие понятия в русском языке сложно представить в виде формальной системы, пригодной для логического вывода, например, описать таксономические связи, по следующим причинам:
 +
 +
* Из-за их нечеткости, расплывчатости.
 +
 +
* Контекстной зависимости, когда реализация некоторых компонентов значения существенно зависит от контекста.
 +
 +
* Существования значительных рядов синонимов, отличающихся оттенками значений, что затрудняет разбиение таких рядов на совокупность взаимосвязанных понятийных единиц. Например, сколько понятий онтологии оптимально (и на основе каких принципов) сопоставить следующему ряду слов со значением ''ОШИБКА'': ''ошибка, погрешность, недосмотр, просмотр, ляп, промах, оплошность, осечка, прокол, упущение, недочет'', а также'' ослышка, описка, опечатка, оговорка''. Таким словам обычно трудно найти точные слова-соответствия в других языках, то есть слова, имеющие такой же оттенок значения и такие же особенности употребления.
 +
 +
Несмотря на описанные проблемы, разработка моделей представления знаний о мире и о языке в рамках онтологий имеет смысл. Так например появился РуТез<ref>[https://www.labinform.ru/pub/ruthes/ О лингвистической онтологии "Тезаурус РуТез"]</ref> — онтология для автоматической обработки текста на русском языке, которая представила свое решение<ref>[https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.671.6887&rep=rep1&type=pdf RuThes Linguistic Ontology vs. Russian Wordnets]</ref> для данных проблем.
  
 
==См. также==
 
==См. также==

Версия 22:47, 8 февраля 2021

Представление знаний (англ. knowledge representation) — направление в исследованиях искусственного интеллекта, посвящённое представлению информации о мире в форме, которую было бы возможно использовать в компьютерных системах для решения сложных прикладных задач. Таковыми являются, например, диагностирование заболеваний или ведение диалога на естественном языке. Представление знаний включает в себя психологические исследования по решению задач человеком для построения формализмов, которые упростили бы работу со сложными системами. Примерами формализмов представления знаний являются семантические сети, архитектуры систем, правила и онтологии.

Содержание

Графы знаний

История

Семантические сети[1] (рис. 1) были разработаны в 1960 году из-за растущей необходимости в инструменте для представления знаний, который мог бы охватить широкий спектр сущностей: объекты реального мира, события, ситуации и отвлечённые концепты и отношения, — в конце концов будучи применённым в задаче поддержания диалога на естественном языке. Основной целью разработки семантических сетей было решение множества задач, например, представление планов, действий, времени, верований и намерений. При этом способ решения этих задач должен был быть достаточно обобщённым.

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

В 2012 году Google представили свою версию графа знаний[2].

Определение

Не существует формального определения графа знаний. Однако есть ряд требований, которых следует придерживаться при его построении[3]:

  1. Граф знаний определяется своей структурой (сущностями и связями между ними).
  2. Утверждения внутри графа знаний являются однозначными.
  3. Граф знаний использует конечный набор типов отношений.
  4. Все указанные сущности внутри графа знаний, включая типы и отношения, должны быть определены с использованием глобальных идентификаторов с однозначными обозначениями.
  5. Утверждения в графе знаний должны иметь явно указанные (лучше всего, проверенные) источники.
  6. Граф знаний может иметь оценки неопределённостей (вероятности, с которыми истинны те или иные утверждения[4]).

Применение

Вопросно-ответные системы. Самым распространённым применением графов знаний являются вопросно-ответные системы. Графы знаний располагают огромным количеством информации, доступ к которой проще всего получать посредством схемы вопрос-ответ.

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

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

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

Открытые проблемы

  1. Выявление лучших практик для построения графов знаний. Важной проблемой является создание единого набора эвристик и практик, которые можно было бы применить для построения графов знаний. Такой набор мог бы помочь разработчикам и исследователям в понимании и использовании графов знаний.
  2. Динамически изменяемые знания. Знания не статичны, они зависят от времени. Например, некоторое утверждение, которое было истинным в один момент времени, может перестать быть таковым в другой. Поэтому открытой проблемой является поддержка изменений в знаниях.
  3. Оценка корректности и полноты графа знаний. Не выработаны объективные критерии оценки графов знаний. Открытой проблемой является ответ на вопрос, какое качество более важно для графа знаний: корректность (непротиворечивость), полнота или другое.

Онтология

Понятие онтологии существует как в информатике, так и в философии, однако эти понятия похожи.

Определение:
Онтология (в информатике) — формализация знаний, включающая в себя представление, формальное именование и определение категорий, свойств и отношений между понятиями, данными и сущностями некоторой области знаний.


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

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

Формализация

Для формализации используется концептуальная схема.

Определение:
Концептуа́льная схе́ма[5] — семантическая сеть из взаимосвязанных по определенным правилам понятий и концепций. Обычно такая схема состоит из структуры данных, содержащей все релевантные классы объектов, их связи и правила (теоремы, ограничения), принятые в этой области.

Философия

Термин «онтология» в информатике является производным от соответствующего древнего философского понятия.

Общее с философским понятием:

  • И то, и другое — попытка представить сущности, идеи и события со всеми их взаимозависимыми свойствами и отношениями в соответствии с системой категорий.
  • В обеих областях существует значительная работа по проблемам онтологической инженерии[6].

Отличия от философского понятия:

  • Онтология в информатике должна иметь формат, который компьютер сможет легко обработать.
  • Информационные онтологии создаются всегда с конкретными целями — решения конструкторских задач; они оцениваются больше с точки зрения применимости, чем полноты.

В каждой научной дисциплине или области знаний создают онтологии для организации данных в виде информации и знаний. С новыми онтологиями упрощается решение задач в этих областях. Однако при решении задач возникают определённые сложности, например, языковой барьер между исследователями разных стран. Эта сложность может быть нивелирована поддержкой контролируемых словарей[7] жаргона.

Общие компоненты онтологий

Название Описание Пример
Экземпляры (объекты) Базовые или "наземные" объекты (индивиды). Мария, 1, Солнце.
Классы (понятия) Наборы, коллекции, концепции, классы в программировании, типы объектов или виды вещей. Человек, Число, Звезда.
Атрибуты Аспекты, свойства, признаки, характеристики или параметры, которые могут иметь объекты (и классы). Возраст: 21, Чётность: нет, Спектральная классификация: жёлтый карлик.
Отношения Способы, которыми классы и индивиды могут быть связаны друг с другом. Люди являются Животными.
Правила Высказывания в форме "Если ..., то ..." (антецедент-консеквент), описывающие логические выводы, которые могут быть сделаны из утверждения в определенной форме. Если [math]X[/math] смертен, то [math]X[/math] умрёт.
Аксиомы Утверждения (включая правила) в логической форме, которые вместе составляют общую теорию, описываемую онтологией в её области применения. Это определение отличается от определения "аксиом" в формальной логике. В ней аксиомы включают только утверждения, утверждаемые как априорное знание. Здесь же "аксиомы" также включают в себя теорию, полученную из аксиоматических утверждений. Человек смертен. Сократ — человек.
События Изменение атрибутов или отношений. [math]X[/math] умер ([math]X[/math] больше не является живым).

Онтологии обычно кодируются с помощью языков онтологий — специализированных формальных языков.

Примерами таковых являются OWL[8] , KIF[9] , Common Logic[10] , CycL[11] , DAML+OIL[12].

Построение при помощи методов машинного обучения

Векторные представления графов знаний

Векторные представления графов знаний (англ. Knowledge graph embeddings, KGE) являются малоразмерными представлениями объектов-узлов и связей между ними в графе знаний. Они обобщают информацию о семантике и локальной структуре вершин.

Существует множество различных моделей KGE, таких как TransE[13], TransR[14], RESCAL[15], DistMult[16], ComplEx[17], и RotatE[18].

Как пример для представления графовых данных может использоваться семантика Cреды описания ресурса (англ. Resource Description Framework, RDF)[19] где связи представляются триплетом "субъект — предикат — объект". Для моделирования бинарных отношений на графе удобно использовать трехсторонний тензор [math]X[/math], в котором две размерности образованы на основе связываемых объектов-узлов, а третья размерность содержит отношения между ними (рис. 2). Элемент тензора [math]x_{ijk} = 1[/math], когда существует отношение (i-й объект, k-е отношение, j-й объект). В противном случае для несуществующих или неизвестных отношений [math]x_{ijk} = 0[/math].

Обучение онтологий

Рис. 3. Слоеный пирог обучения онтологий

Процесс получения онтологий начинается с вынесения множества термов из текста и получения их синонимов. Далее они преобразуются во множество концептов. После чего выявляются связи между концептами, и в итоге формируются схемы аксиом и извлекаются аксиомы. Данный процесс называют слоеным пирогом обучения онтологии (рис. 3).

Алгоритмы, используемые в разных слоях при построении онтологии разбивают на 3 основные группы:

  • лингвистические;
  • статистические;
  • логические.

Лингвистические методы

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

Предобработка текста

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

Извлечение термов и концептов

Лингвистические техники также часто используют на этапе извлечения термов и концептов. Чтобы извлечь термы и концепты при помощи синтаксических структур слова помечают как части речи. Эта информация используется для извлечения синтаксических структур из предложений, таких как словосочетания и глагольные группы. Данные структуры анализируются на наличие различных слов и морфем для нахождения термов. К примеру словосочетание ‘acute appendicitis’ может быть извлечено в качестве кандидата на терм, так как является гипонимом к терму ‘appendicitis’. На китайских текстах данный метод достиг точности в [math]83.3\%[/math][22].

Распространёнными методами данного подхода являются:

  • рамки валентностей (англ. Subcategorization Frames)[23];
  • извлечение коренных слов (англ. Seed Words Extraction).

Нахождение связей

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

Также можно использовать регулярные выражения. Например, правило "[math]N[/math], как например [math]N[/math], [math]N[/math], … , [math]N[/math]" (где [math]N[/math] — именная группа[24]) может выявить такие образцы как "сезоны года, как например лето, осень, весна и зима". Данный подход полезен для выявления связей "является" к примеру (лето — сезон года).

Статистические методы

Статистические методы основаны на статистике и не полагаются на семантику языка. Большинство статистических методов преимущественно используют вероятностные техники и в основном применяются после предобработки текста лингвистическими методами на ранних этапах обучения (извлечение термов, концептов и связей).

Извлечение термов и концептов

На этом этапе используются следующие статистические методы:

  • C/NC value[25] используют для извлечения многословных терминологий — групп термов, образующих концепты. Алгоритму на вход подаётся несколько многословных термов, для каждого из которых вычисляется оценка в форме C value и NC value. C value использует частоту встречаемости терма для его извлечения, что делает его эффективным для нахождения вложенных термов, а NC value по сути является модификацией C value, которая учитывает контекст.
  • В процессе извлечения термов могут быть получены термы, не относящиеся к целевой области. Для фильтрации таких термов применяется метод сравнительного анализа (англ. Contrastive analysis)[26]. Он присуждает оценку для каждого терма, в зависимости от того, насколько он релевантен для целевой области, и насколько он нерелевантен в других областях.
  • Латентно-семантический анализ (англ. Latent Semantic Analysis, LSA) используют для извлечения концептов. Этот метод основан на том, что термы, встречающиеся вместе, будут схожи по значению. LSA уменьшает размерность данных, сохраняя структуру подобия, после чего к оставшимся термам применяется мера сходства (например косинусное сходство[27]) для поиска похожих слов.
  • Кластеризация группирует множества объектов на подмножества (кластеры) таким образом, чтобы объекты из одного кластера были более похожи друг на друга, чем на объекты из других кластеров.

Нахождение связей

Статистические методы также используют для выявления связей. Распространёнными техниками являются:

  • Категоризация термов (англ. Term subsumption) находит связи между термами при помощи условной вероятности. Этот алгоритм ищет термы, являющиеся наиболее общими. Терм [math]t[/math] считается более общим, чем терм [math]x[/math] если [math]P(t \; | \; x) \gt P(x \; | \; t)[/math], где [math]P(t \; | \; x)[/math] обозначает вероятность встречи терма [math]t[/math] при наличии терма [math]x[/math].
  • Анализ формальных понятий (англ. Formal Concept Analysis, FCA)[28] основан на том, что объекты могут иметь схожие атрибуты. Алгоритм на вход принимает матрицу связей объектов и атрибутов и находит в ней все естественные кластеры, что позволяет построить иерархию концептов и атрибутов.
  • Иерархическая кластеризация группирует термы в кластеры для нахождения концептов и построения иерархий.
  • Добыча ассоциативных правил (англ. Association rule mining, ARM) находит правила, предугадывающие совпадение элементов в различных базах данных, для чего обычно применяют алгоритмы Apriori[29] и FPG[30]. Тут правило подразумевает импликацию [math]X \to Y[/math], где [math]X[/math] и [math]Y[/math] — непустые подмножества множества всех элементов, такие, что [math]X \cap Y = \varnothing[/math].

Индуктивное логическое программирование

На последней стадии построения онтологии используется индуктивное логическое программирование (англ. Inductive Logic Programming, ILP)[31] — раздел машинного обучения, который использует логическое программирование как форму представления примеров, фоновых знаний и гипотез. ILP необходимо для генерации аксиом по схемам аксиом (положительным и отрицательным примерам и фоновым знаниям).

Оценка онтологии

Оценка качества получения онтологии является важной частью процесса обучения. Благодаря ей можно уточнить или перестроить модели, не удовлетворяющие требованиям. Так как обучение состоит из различных этапов, процесс оценки онтологий является достаточно сложной задачей. По этой причине предлагались многочисленные техники оценки, однако их все можно разбить на следующие группы:

Золотой стандарт

Оценка с использованием золотого стандарта основана на наличии базовой онтологии. Золотой стандарт представляет собой пример идеальной онтологии в какой-то конкретной области. Сравнивая и оценивая обученную онтологию с золотым стандартом можно эффективно определить степень покрытия области знаний и консистентность. Золотым стандартом может быть как независимая онтология, так и статистическая модель, сформированная экспертами в данной области. Наличие золотого стандарта позволяет проводить регулярные и крупномасштабные оценки на различных этапах обучения. Однако получение золотого стандарта может оказаться проблемой, так как он должен быть смоделирован в условиях и с целью похожими на соответственно условия и цель обучаемой онтологии. Очень часто это приводит к выбору моделей, созданных человеком вручную.

Экспертная оценка

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

Оценка, основанная на конкретной задаче

Данная оценка применяется при построении онтологии для конкретных задач. Результаты, полученные в процессе решения задачи, определяют качество построенной онтологии, независимо от её структуры. Данная оценка позволяет выявить неустойчивые концепты и определить адаптивность конкретной онтологии, анализируя её эффективность в контексте различных задач.

К примеру, создаётся онтология для улучшения поиска документов. В таком случае можно проверить, получило ли приложение более релевантные документы после применения данной онтологии. Для этого можно применить традиционные методы оценки, такие как F мера.

Однако стоит отметить, что использование оценок, основанных на конкретных задачах, имеет несколько недостатков. К примеру:

  • Онтология может являться лишь малой частью приложения, и её эффект на общий результат может быть незначительным.
  • Онтология оценивается путём применения конкретным образом для конкретной задачи, а значит модель достаточно сложно обобщить.

Оценка с использованием конкретных источников знаний

Эта оценка использует источники знаний конкретной области, чтобы определить степень покрытия этой области обучаемой онтологией. Главным преимуществом данной оценки является возможность сравнивать одну или несколько целевых онтологий с конкретными данными. Однако возникает проблема нахождения подходящего источника знаний (как и в оценке золотым стандартом).

Особенности применения онтологии для конкретных задач

Cистема автоматической обработки текста

Лингвистическая онтология является одним из ключевых элементов в системе обработки текста и ее построение необходимо для решения задачи.

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

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

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

  • Методы извлечения связей, основанные на шаблонах такие как "Top down" и "Bottom up"[32].
  • Группа методов, основанная на форматировании или на DOM[33].
  • Методы, основанные на машинном обучении. Одним из самых явных примеров реализации является word2vec, основанный на нейронных сетях.

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

Обработка текста на русском языке

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

Хоть понятие, лексическое значение относятся к категориям мышления, при этом между ними есть существенные различия. Значение включает в себя помимо понятийного содержания (сигнификативно-денотативного[34][35] компонента значения), такие компоненты как оценочный, стилистический, сочетаемостный. Также значение включает лишь различительные черты объектов, иногда относительно поверхностные, а понятия охватывают их наиболее глубокие существенные свойства. Поэтому описать значения многих слов как совокупности общих и одновременно существенных признаков может быть очень трудно. В целом, считается, что значение и понятие совпадают лишь в сфере терминологии.

Многие понятия в русском языке сложно представить в виде формальной системы, пригодной для логического вывода, например, описать таксономические связи, по следующим причинам:

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

Несмотря на описанные проблемы, разработка моделей представления знаний о мире и о языке в рамках онтологий имеет смысл. Так например появился РуТез[36] — онтология для автоматической обработки текста на русском языке, которая представила свое решение[37] для данных проблем.

См. также

Примечания

  1. Wikipedia — Semantic Network
  2. Wikipedia — Google Knowledge Graph
  3. Wikipedia — Knowledge graph definition
  4. Wikipedia — Fuzzy logic
  5. Википедия — Концептуальная схема
  6. Wikipedia — Онтологическая инженерия
  7. Wikipedia — Контролируемый словарь
  8. Wikipedia — OWL
  9. Wikipedia — KIF
  10. Wikipedia — Common Logic
  11. Wikipedia — CycL
  12. Wikipedia — DAML+OIL
  13. Translating Embeddings for Modeling Multi-relational Data — Antoine Bordes, Nicolas Usunier, Alberto Garcia-Duran, Jason Weston, Oksana Yakhnenko (2013)
  14. Learning Entity and Relation Embeddings for Knowledge Graph Completion — Yankai Lin, Zhiyuan Liu, Maosong Sun, Yang Liu, Xuan Zhu (2015)
  15. A Three-Way Model for Collective Learning on Multi-Relational Data — Nickel Maximilian, Tresp Volker, Kriegel Hans-Peter (2011)
  16. Embedding Entities and Relations for Learning and Inference in Knowledge Bases — Bishan Yang, Wen-tau Yih, Xiaodong He, Jianfeng Gao, Li Deng (2015)
  17. Complex Embeddings for Simple Link Prediction — Théo Trouillon, Johannes Welbl, Sebastian Riedel, Éric Gaussier, Guillaume Bouchard (2016)
  18. RotatE: Knowledge Graph Embedding by Relational Rotation in Complex Space — Zhiqing Sun, Zhi-Hong Deng, Jian-Yun Nie, Jian Tang (2019)
  19. Wikipedia — Resource Description Framework
  20. Wikipedia — Part-of-speech tagging
  21. Wikipedia — Lemmatisation
  22. The head-modifier principle and multilingual term extraction — Hippisley A., Cheng D. и Ahmad K. (2005)
  23. Wikipedia — Subcategorization Frames
  24. Википедия — Именная группа
  25. Automatic Recognition of Multi-Word Terms: the C-value/NC-value Method — Katerina Frantziy, Sophia Ananiadouy, Hideki Mimaz (2000)
  26. Wikipedia — Contrastive analysis
  27. Wikipedia — Cosine Simularity
  28. Wikipedia — Formal concept analysis
  29. Wikipedia — Apriori algorithm
  30. Wikibooks — FP-Growth Algorithm
  31. Wikipedia — Inductive Logic Programming
  32. Bottom-up and Top-down Approaches to Text Analysis
  33. Wikipedia — Document Object Model
  34. Wikipedia — Сигнификат
  35. Wikipedia — Денонат
  36. О лингвистической онтологии "Тезаурус РуТез"
  37. RuThes Linguistic Ontology vs. Russian Wordnets

Источники информации