Изменения

Перейти к: навигация, поиск

Представление знаний

15 951 байт добавлено, 19:19, 4 сентября 2022
м
rollbackEdits.php mass rollback
===История===
[[Файл:Semantic_network.png|right|thumb|400px|Рис. 1. [https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%BC%D0%B0%D0%BD%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C Пример семантической сети]]]Семантические сети<ref>[https://wikipedia.org/wiki/Semantic_network Wikipedia {{---}} Semantic Network]</ref> (рис. 1) были разработаны в 1960 году из-за растущей необходимости в инструменте для представления знаний, который мог бы охватить широкий спектр сущностей: объекты реального мира, события, ситуации и отвлечённые концепты и отношения, — в конце концов будучи применённым в задаче поддержания диалога на естественном языке. Основной целью разработки семантических сетей было решение множества задач, например, представление планов, действий, времени, верований и намерений. При этом способ решения этих задач должен был быть достаточно обобщённым.
В 1980-х гг. Гронингенский университет и университет Твенте начали работу над совместным проектом, названным "Графы знаний", базируясь на устройстве семантических сетей с рёбрами, ограниченными наперёд заданным количеством отношений — для упрощения алгебры на графах. В последовавшие десятилетия граница между понятиями "Графов знаний" и "Семантических сетей" размывалась всё больше.
В 2012 же году Google представили свою версию графа знаний<ref>[https://en.wikipedia.org/wiki/Google_Knowledge_Graph Wikipedia {{---}} Google Knowledge Graph]</ref>.
===Определение===
Не существует формального определения графа знаний. Однако есть ряд аксиомтребований, которым граф знаний должен удовлетворять которых следует придерживаться при его построении<ref>[https://www.authorea.com/users/6341/articles/107281-what-is-a-knowledge-graph/_show_article Wikipedia {{---}} Knowledge graph definition]</ref>.:
# Граф знаний определяется своей структурой(сущностями и связями между ними).
# Утверждения внутри графа знаний являются однозначными.
# Граф знаний использует конечный набор типов отношений.
# Все указанные сущности внутри графа знаний, включая типы и отношения, должны быть определены с использованием глобальных идентификаторов с однозначными обозначениями.
# Утверждения в графе знаний должны иметь явно указанные (лучше всего, проверенные) источники.# Граф знаний может иметь оценки неопределённостей(вероятности, с которыми истинны те или иные утверждения<ref>[https://en.wikipedia.org/wiki/Fuzzy_logic Wikipedia {{---}} Fuzzy logic]</ref>).
===Применение===
===Открытые проблемы===
# '''Выявление лучших практик для построения графов знаний'''. Является важной Важной проблемой является создание единого набора эвристик и практик, которые можно было бы применить для построения графов знаний. Такой набор мог бы помочь разработчикам и исследователям в понимании и использовании графов знаний.
# '''Динамически изменяемые знания'''. Знания не статичны, они зависят от времени. Например, некоторое утверждение, которое было истинным в один момент времени, может перестать быть таковым в другой. Поэтому открытой проблемой является поддержка изменений в знаниях.
# '''Оценка корректности и полноты графа знаний'''. Не выработаны объективные критерии оценки графов знаний. Открытой проблемой является ответ на вопрос, какое качество более важно для графа знаний: корректность (непротиворечивость), полнота или другое.
|definition='''Онтология (в информатике)''' {{---}} формализация знаний, включающая в себя представление, формальное именование и определение категорий, свойств и отношений между понятиями, данными и сущностями некоторой области знаний.
}}
 
Термин «онтология» применительно к графам знаний это, прежде всего, способ моделирования и формального представления схемы данных, обеспечивающий гораздо большие возможности, чем традиционные базы данных или объектно-ориентированный подход.
 
Согласно общепринятому определению в компьютерных науках, онтология {{---}} это способ формализации знаний, абстрактных или специфических, в какой-либо предметной области, реализованный на основе формального описания объектов, фактов и отношений между ними.
===Формализация===
В каждой научной дисциплине или области знаний создают онтологии для организации данных в виде информации и знаний. С новыми онтологиями упрощается решение задач в этих областях. Однако при решении задач возникают определённые сложности, например, языковой барьер между исследователями разных стран. Эта сложность может быть нивелирована поддержкой контролируемых словарей<ref>[https://wikipedia.org/wiki/Controlled_vocabulary Wikipedia {{---}} Контролируемый словарь]</ref> жаргона.
===ЭлементыОбщие компоненты онтологий=== Общие компоненты онтологий включают в себя:
* {| class="wikitable"|-! Название !! Описание !! Пример|-| style="background:#eaecf0;" | '''Экземпляры (объекты)''' — базовые | Базовые или "наземные" объекты(индивиды).* | Мария, 1, Солнце.|-| style="background:#eaecf0;" | '''Классы (понятия)''' — наборы| Наборы, коллекции, концепции, классы в программировании, типы объектов или виды вещей.* | Человек, Число, Звезда.|-| style="background:#eaecf0;" | '''Атрибуты''' — аспекты| Аспекты, свойства, признаки, характеристики или параметры, которые могут иметь объекты (и классы).* | Возраст: 21, Чётность: нет, Спектральная классификация: жёлтый карлик.|-| style="background:#eaecf0;" | '''Отношения''' — способы| Способы, которыми классы и индивиды могут быть связаны друг с другом.* '''Термы функций''' — сложные структуры, образованные из определенных отношений, которые могут быть использованы вместо отдельного термина в высказывании| Люди являются Животными.* '''Ограничения''' — формально заявленные описания того, что должно быть истинным для того, чтобы какое|-то утверждение было принято в качестве входных данных.* | style="background:#eaecf0;" | '''Правила''' — высказывания | Высказывания в форме предложения if-then "Если ..., то ..." (антецедент-консеквент), описывающие логические выводы, которые могут быть сделаны из утверждения в определенной форме.* | Если <tex>X</tex> смертен, то <tex>X</tex> умрёт.|-| style="background:#eaecf0;" | '''Аксиомы''' — утверждения | Утверждения (включая правила) в логической форме, которые вместе составляют общую теорию, которую онтология описывает описываемую онтологией в своей её области применения. Это определение отличается от определения "аксиом" в [[Исчисление_высказываний|формальной логике]]. В этой дисциплине ней аксиомы включают только утверждения, утверждаемые как априорное знание. Здесь же "аксиомы" также включают в себя теорию, полученную из аксиоматических утверждений.* | Человек смертен. Сократ {{---}} человек.|-| style="background:#eaecf0;" | '''События''' — изменение | Изменение атрибутов или отношений.| <tex>X</tex> умер (<tex>X</tex> больше не является живым).|}
Онтологии обычно кодируются с помощью языков онтологий — специализированных [[:Основные_определения,_связанные_со_строками#Формальные_языки|формальных языков, используемых для этой цели]].
Примерами таковых являются OWL<ref>[https://wikipedia.org/wiki/Web_Ontology_Language Wikipedia {{---}} OWL]</ref>
===Векторные представления графов знаний===
[[Файл:Knowledge-graph-tensor.jpg|200px|thumb|Рис. 2. [https://www.researchgate.net/publication/221345089_A_Three-Way_Model_for_Collective_Learning_on_Multi-Relational_Data Тензорная модель представления графов знаний. <math>E_1 \dots E_n</math> обозначают объктыобъекты, а <math>R_1 \dots R_m</math> обозначают отношения]]]
Векторные представления графов знаний (англ. ''Knowledge graph embeddings, KGE'') являются малоразмерными представлениями объектов-узлов и связей между ними в графе знаний. Они обобщают информацию о семантике и локальной структуре вершин.
Существует множество различных моделей KGE, таких как TransE<ref>[https://papers.nips.cc/paper/2013/file/1cecc7a77928ca8133fa24680a88d2f9-Paper.pdf Translating Embeddings for Modeling Multi-relational Data] {{---}} Antoine Bordes, Nicolas Usunier, Alberto Garcia-Duran, Jason Weston, Oksana Yakhnenko (2013)</ref>, , TransR<ref>[https://www.aaai.org/ocs/index.php/AAAI/AAAI15/paper/view/9571 Learning Entity and Relation Embeddings for Knowledge Graph Completion] {{---}} Yankai Lin, Zhiyuan Liu, Maosong Sun, Yang Liu, Xuan Zhu (2015)</ref>, , RESCAL<ref>[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.383.2015&rep=rep1&type=pdf A Three-Way Model for Collective Learning on Multi-Relational Data] {{---}} Nickel Maximilian, Tresp Volker, Kriegel Hans-Peter (2011)</ref>, , DistMult<ref>[https://arxiv.org/abs/1412.6575 Embedding Entities and Relations for Learning and Inference in Knowledge Bases] {{---}} Bishan Yang, Wen-tau Yih, Xiaodong He, Jianfeng Gao, Li Deng (2015)</ref>, , ComplEx<ref>[http://proceedings.mlr.press/v48/trouillon16.pdf Complex Embeddings for Simple Link Prediction] {{---}} Théo Trouillon, Johannes Welbl, Sebastian Riedel, Éric Gaussier, Guillaume Bouchard (2016)</ref>, , and и RotatE<ref>[https://arxiv.org/pdf/1902.10197.pdf RotatE: Knowledge Graph Embedding by Relational Rotation in Complex Space] {{---}} Zhiqing Sun, Zhi-Hong Deng, Jian-Yun Nie, Jian Tang (2019)</ref>.
Как пример для представления графовых данных может использоваться семантика Cреды описания ресурса (англ. ''Resource Description Framework, RDF'')<ref>[https://en.wikipedia.org/wiki/Resource_Description_Framework, Wikipedia {{---}} Resource Description Framework]</ref> где связи представляются триплетом "''субъект — предикат — объект''". Для моделирования бинарных отношений на графе удобно использовать трехсторонний тензор <math>X</math>, в котором две размерности образованы на основе связываемых объектов-узлов, а третья размерность содержит отношения между ними (смрис. иллюстрацию2). Элемент тензора <math>x_{ijk} = 1</math>, когда существует отношение (i-й объект, k-е отношение, j-й объект). В противном случае для несуществующих или неизвестных отношений <math>x_{ijk} = 0</math>.
===Обучение онтологий===
[[Файл:Ontology-learning-layer-cake.png|400px|thumb|Рис. 3. Слоеный пирог обучения онтологий]]
Процесс получения онтологий начинается с вынесения множества терминов термов из текста и получения их синонимов. Далее они преобразуются во множество концептов. После чего выявляются связи между концептами, и в итоге формируются схемы аксиом и извлекаются аксиомы. Данный процесс называют '''слоеным пирогом обучения онтологии'''(рис. 3).
Алгоритмы, используемые в разных слоях при построении онтологии разбивают на 3 основные группы:
* Лингвистическиелингвистические;* Статистическиестатистические;* Логическиелогические.
===Лингвистические методы===
Лингвистические методы основаны на различных особеностях особенностях языка и играют ключевую роль на начальных стадиях обучения. В основном их используют для предобработки текста, а также в извлечении термов, концептов и связей.
====[[:Обработка_естественного_языка#Предобработка_текста|Предобработка текста]]====
На первой стадии текст [[:Обработка_естественного_языка#Предобработка_текста|предобрабатывается ]] для уменьшения размерности и повышения точности обучаемой модели. Обычно для этого используют такие методы, как:
* Частеречная [[:Обработка_естественного_языка#Частеречная_разметка|частеречная разметка ]]<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>.
====Извлечение термов и концептов====
Лингвистические техники также часто используют на этапе извлечения термов и концептов. Чтобы извлечь термы и концепты при помощи синтаксических структур слова помечают как части речи. Эта информация используется для извлечения синтаксических структур из предложений, таких как словосочетания и глагольные группы. Данные структуры анализируются на наличие различных слов и морфем для нахождения термов. К примеру словосочетание ''‘acute appendicitis’'' может быть извлечено в качестве кандидата на терм, так как является гипонимом к терму ''‘appendicitis’''. На китайских текстах данный метод достиг точности в <math>83.3\%</math><ref>The head-modifier principle and multilingual term extraction {{---}} Hippisley A., Cheng D. и Ahmad K. (2005)</ref>.
Распространёнными методами данного подхода являются:
* Рамки рамки валентностей (англ. ''Subcategorization Frames'')<ref>[https://en.wikipedia.org/wiki/Subcategorization#Subcategorization_Frames Wikipedia {{---}} Subcategorization Frames]</ref>;* Извлечение извлечение коренных слов (англ. ''Seed Words Extraction''). ====Нахождение связей==== С помощью анализа зависимостей можно находить связи между термами используя информацию, предоставленную в [[:Контекстно-свободные_грамматики,_вывод,_лево-_и_правосторонний_вывод,_дерево_разбора#Дерево_разбора|деревьях разбора]]. Таким образом, с помощью кратчайшего пути между двумя концептами в дереве разбора можно выявить связи между ними. Также можно использовать [[:Регулярные_языки:_два_определения_и_их_эквивалентность|регулярные выражения]]. Например, правило ''"<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>) может выявить такие образцы как ''"сезоны года, как например лето, осень, весна и зима"''. Данный подход полезен для выявления связей ''"является"'' к примеру ''(лето {{---}} сезон года)''.
===Статистические методы===
Статистические методы основаны на статистике и не полагаются на семантику языка. Большинство статистических методов преимущественно используют вероятностные техники и в основном применяются после предобработки текса текста лингвистическими методами на ранних этапах обучения (извлечение термов, конептов концептов и связей).
====Извлечение термов и концептов====
* 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. 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, LSA'') используют для извлечения концептов. Этот метод основан на том, что термы, встречающиеся вместе, будут схожи по значению. LSA уменьшает размерность данных, сохраняя структуру подобия, после чего к оставшимся термам применяется мера сходства (например ''косинусное сходство''<ref>[https://en.wikipedia.org/wiki/Cosine_similarity Wikipedia {{---}} Cosine Simularity]</ref>)для поиска похожих слов. * [[:Кластеризация|Кластеризация]]группирует множества объектов на подмножества (кластеры) таким образом, чтобы объекты из одного кластера были более похожи друг на друга, чем на объекты из других кластеров.
====Нахождение связей====
Статистические методы также используют для выявления связей. Распространнными Распространёнными техниками являются: * Категоризация термов (англ. ''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>.
* Категоризация термов (англ. ''Term subsumption'')* Анализ формальных понятий (англ. ''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'')находит правила, предугадывающие совпадение элементов в различных базах данных, для чего обычно применяют алгоритмы 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 используется на последней стадии необходимо для генерации аксиом по схемам аксиом (полжительным положительным и отрицательным примерам и фоновым знаниям).
===Оценка онтологии===
Эта оценка использует источники знаний конкретной области, чтобы определить степень покрытия этой области обучаемой онтологией. Главным преимуществом данной оценки является возможность сравнивать одну или несколько целевых онтологий с конкретными данными. Однако возникает проблема нахождения подходящего источника знаний (как и в оценке золотым стандартом).
 
==Особенности применения онтологии для конкретных задач==
 
===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> для данных проблем.
==См. также==
* [[:Обработка_естественного_языка|Обработка естественного языка]]
* [[:Векторное_представление_слов|Векторное представление слов]]
* [[:Кластеризация|Кластеризация]]
1632
правки

Навигация