Commonsense rules development

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti

A place to develop and maintain commonsense rules for quasimodo etc.

Static knowledge encoding

Description of current Quasimodo/ConceptNet encoding coming soon

Event encoding

We use Neo-Davidsonian encoding with semantic roles:

  • actor (subject)
  • patient (object)
  • ...

Event type is the verb that describes the event.

Example: "Brutus stabbed Caesar in the agora"

 event_subject(brutus, ev1).
 event_object(caesar, ev1).
 event_type(stab, ev1).
 event_location(agora, ev1).

Connecting Static Knowledge to Events

This is mostly unsolved. This minimal example may help get things started:

"Did grape juice turn into wine?"

 event_subject(grape_juice, ev1).
 event_type(turn_into, ev1).

There are multiple ways of encoding that this is a question, for example:

 event_object(wine, ev1) => $ans(yes).

Assuming we have commonsense knowledge about fermenting grape juice:

 be(grape_juice, X) => ovs(wine, turn_into, X).
 % reflexivity
 be(X, X).

Proposal SVO triples can be connected to events like this:

 ovs(Z, Y, X) & event_type(Y, W) & event_subject(X, W) => event_object(Z, W).

This example does not fully make sense yet, since the event itself lacks context. Work in progress.


High level steps for constructing logical form

Construction of logical form consists of the following steps:

  1. Finding predicates and specify their arguments (number, type)
  1.1 Concepts and events - predicate/1
  1.2 Roles - predicate/2
  1. Constructing corresponding atoms
  2. Dividing atoms on same level into groups
  3. Specifying connectives between atoms of each group and construct corresponding formulas.
  4. Dividing formulas and/or any of the remaining atoms of the same level into groups. If there are no groups go to step 7
  5. Specifyng connectives between elements of each group
  6. Specifying quantifers for the variables.
  7. Constructing the final FOL formula.