Методика автоматического создания машиночитаемого представления текстов

From Стандартопедия
Jump to navigation Jump to search

Машиночитаемое представление предметных областей в проекте Стандартопедия будет создаваться как экспертами, так и с использованием алгоритмов обработки естественного языка (natural language processing - NLP). На первом этапе в проекте используются тексты на естественном языке, тексты с вики-разметкой, и связанный с текстами граф знаний (knowledge graph), реализованный на технологии коллаборативной работы MediaWiki/Wikibase.

Автоматическая предобработка текста

Для автоматической предобработки текста на первой стадии обработки текста на естественном языке предлагается использовать программный пакет NLP - natasha (https://github.com/natasha/natasha).

Для задач:

  • разделения текста на предложения (sentences)
  • разделения предложений на токены (tokens)
  • для выделения частей речи (POS-tagging)
  • для разметки синтаксиса (syntax)

Выделение сущностей и связей в тексте (rule-based)

Задача выделения триплетов связей в общем формате <субъект, действие, объект> сводится к этапам:

  • выделение субъекта и объекта из текста (в форме noun phrases или более общем)
  • выделение связи между ними (relation)

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

Для выделения связи в синтаксическом дереве находится поддерево и последовательность слов, которая связывает объект и субъект.

Типизация синтаксических связей типам связей (property) в графе знаний

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

  • отношения композиции (часть-целое)
  • отношения специализации-генерализации (is a и иные его формы)
  • логические связки (и, или, одно из, все из)
  • отношения цели - "используется для"

Для решения такой задачи возможно: 1) построение классификаторов, которые будут размечать выделенные из текста связи на предмет принадлежности к одному из заданных типов 2) построение вероятностной (скоринговой) модели, которая бы для каждой выделенной из текста связи находила наиболее близкое ей по смыслу property, которое есть в wikidata. Это возможно с помощью использования эмбеддингов слов (word2vec), в котором выделенная связь векторизуется, и ищется наиболее близкий по смыслу вектор из существующих properties (которые также векторизуются исходя из синонимов).

Есть также технологии, восстанавливающие тип связи исходя только из эмбеддингов узлов (graph missing link prediction with neural nets). При этом эмбеддинги узлов выучиваются с учётом связей, но при предсказании сама предполагаемая связь впрямую не векторизуется.

Выявление групп утверждений и их связей

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

Первоочередные задачи по выявлению логических конструкций:

  • Перечни (А, В, а также С или D)
  • Определения и классификации, содержащиеся в их структуре (A - это такое B, для которого выполняется С, A - это такое B, у которого есть С)
  • Роли объектов в действии (A предназначен для выполнения B с C)
  • Нормы ( "ЕСЛИ <персональные данные, находятся, публичный доступ> И НЕ <субьект персональных данных, давал, согласие на публикацию>, ТО <оператор персональных данных, несёт, ответственность>" )

Модальность связей

Кроме выделения связей, для проекта Стандартопедия необходимо выявление языковых модальностей, относящихся к связям, таких, как "желательно", "обязательно", "требуется", "запрещено" и т.п.

Выявленные модальности могут относиться как к отдельным триплетам (к их предикатам), так и к их группам или связям между группами.

Интеграция данных в граф знаний

Для привязки найденных триплетов к данным (items, properties) в графе знаний используется MediaWiki API (https://standartopedia.ru/mediawiki/api.php).

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

  • автоматическая предобработка целевого текста (уже опубликованного вики или только предложенного для публикации)
  • на основе синтаксического анализа - предложения по вики-разметке целевого текста (предложение линков на иные страницы вики)
  • автоматическое выделение триплетов
  • отождествление субъектов, объектов и предикатов триплетов c существующими элементами графа знаний (Items, Properties), то есть по сути - поиск существующих элементов
  • формирование предложений по добавлению данных в граф знаний:
    • если найденных сущностей нет - добавление Items и статей вики
    • если найденных типов связей нет - добавление Properties
    • если найденных триплетов нет - добавление утверждений (Statements)
  • отправка данных на рецензирование эксперту
  • при одобрении экспертом загрузка данных в систему

Проблема для обсуждения: рецензирование и редактирование можно проводить после загрузки в граф знаний, средствами редактирования wikibase. Но тогда не ясно, как одобрять или изменять предложения по новым сущностям и связям. Или же извлечённые знания стоит передавать экспертам в том формате, который будет получен перед загрузкой. Тогда надо обсудить, какие есть удобные средства работы для экспертов. Тут как раз нужно изучить формат для загрузки и возможности работы с ним в Protege.

Интерфейс машиночитаемого права в проекте Стандартопедия

В тестовом виде интерфейс для работы с алгоритмами машиночитаемого права реализован в виде дэшборда stpedia tools (http://83.136.252.178:8051/)

Надо изучить возможность присоединения к Wikibase SPARQL end point. Это вроде делается.