Онтоінженер робота з понять

- як ми отримуємо факти та сутності з текстів,
- хто такі онтоінженери,
- навіщо вони відокремлюють трупи від кісток,
- причому тут Лев Толстой.
Чим далі в ліс: погані програмісти та добрі традиції
Парсер ABBYY Compreno перетворює текст на ліс з дерев, які поєднують у собі властивості граматики залежності (dependency grammar, її використовує знайомий багатьом стенфордський парсер) та граматики складових (constituency grammar). Не вдаватимуся до подробиць і йтиму в нетрі теорії синтаксису — тут достатньо розуміти, що вузли в деревах приблизно відповідають словам пропозиції, а дуги відображають залежності між ними. При цьомувузли забезпечені величезною кількістю супутньої лінгвістичної інформації. Ось так виглядає дерево для фразиПрограміст написав поганий код.
А тепер порівняйте його з деревом для фразиПрограміст ввів неправильний код
Зелений текст капсом – це семантичні класи, які вибираються кожному за слова нашої універсальної семантичної ієрархії. Семантична ієрархія - це величезне дерево понять, організоване за принципом успадкування лінгвістичної інформації та охоплює всі частини мови; крім того, в нього закладено нашу синтаксичну модель. Семантичні класи в ієрархії зазвичай називаються англійською мовою і відповідають одному конкретному значенню слова, деякому не зав'язаному конкретну мову поняттю. Таким чином, у момент вибору семантичного класу дозволяється лексична неоднозначність. Приклад такого вибору видно на слові код, для якого в першому реченні обрано СК "CODE_OF_PROGRAM" (код як частина комп'ютерної програми), а в другому - СК "CODE" (код як шифр, пароль). На розв'язання системи в таких випадках впливає як статистика, так і обмеження лінгвістичної структури, задані всередині нашої семантичної ієрархії.


Так виглядають фрагменти ієрархії, у яких перебувають згадані класи
А ось ще один приклад дозволу неоднозначності — Програміст ввів традицію кодити без багів. Тут, як бачимо, обрано зовсім інший семантичний клас словоформиввел, оскільки слово використовується у іншому значенні.
Синім у деревах відображаються позиції вузлів уповерхневому синтаксисі– це формальна структура пропозиції, яка не має прямого відношення до її змісту. Це дуже близько до шкільної моделі з підлеглим, присудком, доповненнямі т.п. Червоним кольором вказані глибинні позиції - вони вже показують, яку роль грає елемент в ситуації, що описується. Тому якщо перевести перший приклад про програміста в пасив -Програмістом написаний поганий код- у дереві зміниться поверхневий Subject (бо підлягає там стає вже непрограміст, акод), але не глибинний Agent (бо в реальності, яку описує фраза, дія, як і раніше, здійснює програміст):
Крім семантико-синтаксичних дерев парсер ABBYY Compreno повертає інформацію про недеревні зв'язки між їхніми вузлами. Наприклад, для фразиВася сидів за комп'ютеромі кодил для дієслова «кодити» буде відновлено нульовий суб'єкт, який буде пов'язаний недеревним зв'язком з вузлом «Вася»:
Те саме відбудеться і в пропозиціїВася пішов писати код— з погляду граматичної структури Вася активно виконує тільки дію, що позначається дієсловом «пішов», але ми знаємо, хто пише код:
Не вдасться Васі та приховати свої темні справи, сховавшись за займенником. У прикладах типу "Вася пішов.", "Він пішов кодувати" або "Васі подобається його код" Compreno відновить анафоричний зв'язок і замінить займенники ("Він", "його") на Васю:
створення світу
Перший етап роботи – розробку онтологічної моделі – можна порівняти із створенням класів у ОВП. Наприклад, якщо перед онтоінженером поставлено завдання витягувати з тексту персон, необхідно створити відповідний концепт (це слово в онтологічному моделюванні використовується як еквівалент класу), вбудувати його в онтологію, тобто. встановити успадкування з іншими концептами, та створити необхідні атрибути – ім'я, прізвище тощо. Для цього ми використовуємо мову OWL – стандарт опису онтологій,підтримуваний консорціум W3С. Персона в нашій онтології виглядатиме так:
А так – її атрибут «Прізвище»:
Концепт, якого задається атрибут, називається областю визначення (domain) цього атрибута. У разі область визначення – об'єкти, належать концепту Person. Тип даних, які можуть заповнювати атрибут, визначається в області значення (range). У разі це рядок. Для зручності роботи онтоінженерів створено спеціальне графічне середовище розробки онтологій:


Гуртки позначають концепти; гуртки, з'єднані лініями – атрибути/відносини концептів, Залежно від концепту заповнювачами його атрибутів може бути як прості типи даних (рядок, число, булево значення), і об'єкти, які стосуються іншим концептам. Особливо це актуально для фактів, у яких учасниками виступають витягнуті іншими правилами сутності. Майже всі факти з кількома можливими учасниками ми моделюємо не як відносини, що записуються всередину сутностей, а як окремі інформаційні об'єкти, аналогічні до сутностей (до речі, це теж рекомендація W3C). Так виглядає в OWL-записі наш факт купівлі-продажу (Purchase And Sale):
А так – його відносини: