Commonsense rules development
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:
- Finding predicates and specify their arguments (number, type)
- Concepts and events - predicate/1
- Roles - predicate/2
- Constructing corresponding atoms
- Dividing atoms on same level into groups
- Specifying connectives between atoms of each group and construct corresponding formulas.
- Dividing formulas and/or any of the remaining atoms of the same level into groups. If there are no groups go to step 7
- Specifyng connectives between elements of each group
- Specifying quantifers for the variables.
- Constructing the final FOL formula.
Finding the predicates
(From Jurafsky: 15.4 "Event and State Representation")
- Events are captured with predicates that take single event variable as an argument. Events are denoted by verbs.
- 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
- No more roles are postulated than are mentioned in input.
- The logical connections between closely related inputs that share same predicate are satisfied without the need for additional inference.
- Syntactic arguments form the arguments of semantic predicates.