Онтоинженерна работа върху концепции

- как извличаме факти и обекти от текстове,
- които са онтоинженери,
- защо отделят труповете от костите,
- И ето го Лев Толстой.
Колкото по-навътре в гората: лоши програмисти и добри традиции
Анализаторът ABBYY Compreno превръща текста в гора от дървета, които съчетават свойствата на граматиката на зависимостта (използва се от познатия на мнозина анализатор Станфорд) и граматиката на съставните части (граматика на съставните единици). Няма да навлизам в подробности и да навлизам в джунглата на теорията на синтаксиса - тук е достатъчно да разберем, че възлите в дърветата приблизително съответстват на думите на изречението, а дъгите отразяват зависимостите между тях. При коетовъзлите са снабдени с огромно количество съпътстваща езикова информация. Ето как изглежда дървото за фразатаПрограмистът е написал лош код.
Сега го сравнете с дървото за фразатаПрограмистът е въвел грешен код
Текст със зелени капачки са семантичните класове, които са избрани за всяка дума в нашата универсална семантична йерархия. Семантичната йерархия е огромно дърво от понятия, организирано според принципа на наследяване на езиковата информация и обхващащо всички части на речта; освен това съдържа нашия синтактичен модел. Семантичните класове в йерархията традиционно се наименуват на английски и съответстват на едно конкретно значение на думата, някакво понятие, което не е свързано с конкретен език. По този начин в момента на избор на семантичен клас се разрешава лексикалната неяснота. Пример за такъв избор се вижда в думата код, за която в първото изречение е избран SC “CODE_OF_PROGRAM” (код като част от компютърна програма), а във второто изречение е избран SC “CODE” (код като шифър, парола). Решението на системата в такива случаи се влияе както от статистиката, така и от ограниченията на езиковата структура, дадена в нашата семантична йерархия.


Ето как се получават фрагментите от йерархията, в която са разположени споменатите класове
И ето още един пример за уточнение -Програмистът въведе традицията на кодиране без грешки. Тук, както виждаме, е избран съвсем различен семантичен клас за словоформатавъведен, тъй като думата се използва в съвсем различно значение.
Синьото в дърветата показва позициите на възлите всинтаксиса на повърхността- това е формалната структура на изречението, която не е пряко свързана със значението му. Това е много близко до училищния модел със субект, сказуемо, обекти така нататък. Дълбоките позиции са обозначени в червено - те вече показват каква роля играе елементът в описаната ситуация. Следователно, ако преведем първия пример за програмиста в пасивен —Програмистът написа лош код— повърхностният субект ще се промени в дървото (защото субектът вече не епрограмист, акод), но не и дълбокият агент (защото в реалността, описана от фразата, действието все още се извършва от програмиста):
В допълнение към семантико-синтактичните дървета, анализаторът на ABBYY Compreno връща информация за недървовидни връзки между техните възли. Например, за фразатаВася седеше на компютъраи кодираше глагола „код“, ще бъде възстановен нулев субект, който ще бъде свързан чрез недървовидна връзка към възела „Вася“:
Същото ще се случи в изречениетоВася остави да напише кода- от гледна точка на граматичната структура Вася активно извършва само действието, обозначено с глагола „ляво“, но знаем кой пише кода:
Вася няма да може да скрие тъмните си дела, като се крие зад местоимение. В примери като "Вася си тръгна.", "Той отиде на код" или "Вася харесва кода си", Compreno ще възстанови анафоричната връзка и ще замени местоименията ("Той", "неговият") с Вася:
създаване на света
Първият етап от работата - разработването на онтологичен модел - може да се сравни със създаването на класове в ООП. Например, ако онтологичният инженер има за задача да извлече лица от текст, е необходимо да създаде подходяща концепция (тази дума се използва като еквивалент на клас в онтологичното моделиране), да я вгради в онтологията, т.е. установяване на наследство с други понятия и създаване на необходимите атрибути - име, фамилия и др. За да направим това, ние използваме езика OWL - стандартът за описание на онтологии,поддържан от консорциума W3C. Лицето в нашата онтология ще изглежда така:
И така - нейният атрибут "Фамилия":
Концепцията, за която е зададен атрибут, се нарича домейн на този атрибут. В този случай обхватът е обектите, които принадлежат към понятието Лице. Типът данни, които могат да попълват даден атрибут, е посочен в областта на стойността (диапазон). В този случай това е низ. За удобство на работата на онтоинженерите е създадена специална графична среда за разработване на онтологии:


Кръговете представляват концепции; кръгове, свързани с линии – атрибути/отношения на понятия, В зависимост от концепцията, контейнерите за нейните атрибути могат да бъдат или прости типове данни (низ, число, булева стойност) или обекти, свързани с други понятия. Това е особено вярно за факти, в които участниците са субекти, извлечени от други правила. Ние моделираме почти всички факти с няколко възможни участници не като взаимоотношения, записани вътре в обекти, а като отделни информационни обекти, подобни на обекти (между другото, това също е препоръка на W3C). Ето как изглежда нашият факт за покупка и продажба (Purchase And Sale) в записа на OWL:
И така - неговата връзка: