Использование RDF для моделирования нормальных предложений - PullRequest
0 голосов
/ 28 января 2019

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

Очевидно, что предложения типа «Боб съел пирог» могут быть непосредственно сопоставлены с предметом.Тройной объект предиката (хотя я не знаю, как правильно определить время предиката):

:Bob :ate :Cake .

Затем я столкнулся с реификацией, которая преобразует одну тройку в 4-тройной граф, представляющийоператор с субъектом, предикатом и узлом объекта.Это позволяет отразить утверждения над утверждениями, например: «Алиса считает, что Боб съел торт».

_:stmt1 rdf:type rdf:Statement .
_:stmt1 rdf:subject :Bob .
_:stmt1 rdf:predicate :ate .
_:stmt1 rdf:object :Cake .
:Alice :thinks _:stmt1 .

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

  • Условия: «Если Алиса говорит правду, Боб съел торт».

  • Вспомогательные глаголы: «Алиса может испечь пироги».

  • Клаусал дополняет: «Алиса любит есть пирог».

  • Отрицание: ДаноВ предположении об открытом мире отсутствие тройного :Bob :ate :Cake . неоднозначно.Во многих практических ситуациях я бы сказал, что важно явно указывать отрицание.

  • Разъединение: «(Либо) Алиса или Боб съели торт».Большинство людей не могут достоверно различать OR и XOR на повседневном языке.

  • Квантор: «Большинству нравится пирог». «Очень немногие ненавидят пирог».

Я полагаю, что некоторые из них могут быть реализованы относительно простым способом.Например, «Алиса думает, что Боб не ел торт» можно представить как

_:stmt1 rdf:type rdf:Statement .
_:stmt1 rdf:subject :Bob .
_:stmt1 rdf:predicate _:predA .
_:predA :term :eat
_:predA :tense :past
_:predA :negated :true
_:stmt1 rdf:object :Cake .
:Alice :thinks _:stmt1 .

Это также может позволить выразить простые наречия (например, «Боб быстро съел торт»), имея тройной такойas

_:predA :advmod :quickly

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

nsubj(thinks, Alice)
ccomp(thinks, ate)
nsubj(ate, Bob)
dobj(ate, cake)
...

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

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

...