Commonsense rules development

Allikas: Lambda
Redaktsioon seisuga 16. detsember 2021, kell 14:10 kasutajalt Martinv (arutelu | kaastöö) (→Finding the predicates)
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 a logical form

Construction of logical form consists of the following steps:

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


Identifying the predicates

(From Jurafsky: 15.4 "Event and State Representation")

  1. Events are captured with predicates that take single event variable as an argument. Events are denoted by verbs.
  2. There is no need to specifiy a fixed number of arguments for a given FOL predicate: as many roles and fillers can be glued on
  3. No more roles are postulated than are mentioned in input.
  4. The logical connections between closely related inputs that share same predicate are satisfied without the need for additional inference.
  5. Syntactic arguments form the arguments of semantic predicates.