text generation for instances in the component library

28
Text Generation for Instances in the Component Library Ken Barker, Jarred McGinnis Monday afternoon

Upload: jara

Post on 06-Jan-2016

37 views

Category:

Documents


0 download

DESCRIPTION

Text Generation for Instances in the Component Library. Ken Barker, Jarred McGinnis Monday afternoon. Outline. Motivation Why UT is doing text generation Interface What goes in and what comes out Customization How to adapt for new classes Future Work What to do next. Motivation. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Text Generation for Instances in the Component Library

Text Generation for Instances in the Component Library

Ken Barker, Jarred McGinnis

Monday afternoon

Page 2: Text Generation for Instances in the Component Library

Outline

• Motivation– Why UT is doing text generation

• Interface– What goes in and what comes out

• Customization– How to adapt for new classes

• Future Work– What to do next

Page 3: Text Generation for Instances in the Component Library

Motivation

• the point of SHAKEN is to make formal KR palatable to normal people, mostly through graphical I/O (CMAPs)

• there are many places where even a CMAP is too clunky or inappropriate

• English text is still the most efficient way to describe some bit of knowledge– interpreting English is still too hard– generating English from KM is a little easier

Page 4: Text Generation for Instances in the Component Library

Still Not Convinced?

This?(*Manny has (instance-of (Person)) (trait ((a

Trait-Value with (value (*lazy))))) (size ((a Size-Value with (value ((:pair *big Person)))))))

(_Cage44 has (instance-of (Cage))(is-possessed-by ((a Hamster with(is-possessed-by (*Manny))))) (smell ((a Smell-Value with (value (*stinky))))) (capacity ((a Capacity-Value with (value ((:pair *capacious Cage)))))) (is-inside ((a Room))) (is-near ((a Door))))

or This?

“Manny’s hamster’s capacious stinky cage is near the door and inside the room.”

Page 5: Text Generation for Instances in the Component Library

Shouldn’t This be part of SHAKEN?

• no.

• the lexicon and grammar rules are specific to components– each component must be responsible for its

own text generation

• any class can define its own text generation words, phrases and rules

Page 6: Text Generation for Instances in the Component Library

Generic vs. Component-Specific

“The entity let-falls the tangible-entity.”

“The agent lets the object fall.”

generic:

“The entity move-intos the tangible-entity with respect to the tangible-entity along the spatial-entity.”

component-specific:

“The agent moves the object into the container through the portal.”

“The tangible-entity is received to the tangible-entity from the tangible-entity.”

“The recipient receives the object from the donor.”

Page 7: Text Generation for Instances in the Component Library

Outline

• Motivation– Why UT is doing text generation

• Interface– What goes in and what comes out

• Customization– How to adapt for new classes

• Future Work– What to do next

Page 8: Text Generation for Instances in the Component Library

Interface

• every instance of Entity and Event has a slot called text-gen– the text-gen of an Event is a sentence

• a single clause with the Event as the main verb and select EventEntity slots as arguments

• can be redefined by any class

– the text-gen of an Entity is a noun phrase• the Entity is the head noun, some property values are premodifiers, some

EntityEntity slots are postmodifiers, determiner may include is-possessed-by

• can be redefined

– the text-sentence of an Entity is its text-gen reworded as a sentence

• can be redefined

Page 9: Text Generation for Instances in the Component Library

The text-gen of Entities

• for named instances… just the name!KM> (the text-gen of *Manny)("manny")

• for anonymous instances… – <determiner> <premods> <head> <postmods>KM> (the text-gen of _Cage44)("manny's hamster's capacious stinky cage near the door and inside the room")

Page 10: Text Generation for Instances in the Component Library

The text-sentence of Entities

• for named instances and anonymous instances…– <determiner> <premods> <head> “is” <postmods>KM> (the text-sentence of _Cage44)("manny's hamster's capacious stinky cage is near the door and inside the room.")

– <determiner> <head> “is” <postmods>KM> (the text-sentence of _Room74)("The room is inside the house.")

– <determiner> <head> “is” <premods>KM> (the text-sentence of *Manny)("Manny is big and lazy.")

– <determiner> <head> “is a” <Classes>KM> (the text-sentence of _Hamster43)("manny's hamster is a hamster.")

Page 11: Text Generation for Instances in the Component Library

Heads

• for named instances… just the name!• for anonymous instances…

– <Class> (<u-called> or <called>)• for very general Entities (E, T-E, I-E, S-E, P) <Class> is the

Role played by the Entity• otherwise, <Class> is one of the instance-of

KM> (make-phrase (the text-head of(a Boy called "Sue")))

("boy (called Sue)")KM> (make-phrase (the text-head of

(a Entity with (plays ((a Container))))))("container")

Page 12: Text Generation for Instances in the Component Library

Postmods

• is-part-of, material, content,+ spatial rels (is-above, etc.)

• any class can define its own postmod slots• for each of these slots that has a value…

– <the (the text-slot of It) of Self> “the” <the It of Self>

KM> (the text-slot of is-part-of)(text-is-part-of)

KM> (the text-is-part-of of (a Knob))("part of")

KM> (the is-part-of of (a Knob))(_Door189)

KM> (make-phrase (the text-postmods of (a Knob))) ("part of the door")

Page 13: Text Generation for Instances in the Component Library

Premods

• the properties (color, length, sex, etc.)

• for scalars…– <scalar constant> only when the reference class is the

same as the instance-of of the Entity

• for categoricals…– <categorical constant>

KM> (make-phrase (the text-premods of (*Manny)))("big lazy")

Page 14: Text Generation for Instances in the Component Library

Determiners

• for named instances– <>

• for anonymous instances– if the Entity is-possessed-by P

• <P’s <determiner> + <head>> “ ’s ”

– otherwise “the” or “a”

KM> (make-phrase (the text-def-determiner of (_Hamster43)))("manny's")

KM> (make-phrase (the text-def-determiner of (_Cage44)))("manny's hamster's")

KM> (make-phrase (the text-indef-determiner of (a Door)))("a")

Page 15: Text Generation for Instances in the Component Library

The text-gen of Events

• for “active” Events…– <subject> <active-verbseq> <d-obj> <arguments>KM> (the text-gen of _Move-Into49)("The agent moves the object into the container through the portal.")

• for “passive” Events…– <d-obj> <passive-verbseq> <arguments> KM> (the text-gen of (a Move-Into))("The object gets moved into the container through the portal.")

Page 16: Text Generation for Instances in the Component Library

The <verbseqs> of Events

• <active-verbseq> and <passive-verbseq> defined for every Event instance, with both singular and plural forms

KM> (the text-gen of (a Break))("The object gets broken.")

KM> (the text-gen of (a Break with (agent ((a Entity)))))("The agent breaks the object.")

KM> (the text-gen of (a Break with(agent ((a Living-Entity) (a Substance)))))

("The living-entity and the substance break the object.")

KM> (the text-gen of(a Break with (object ((a Object) (a

Bond)))))("The object and the bond get broken.")

Page 17: Text Generation for Instances in the Component Library

The <subject> of Events

• <det>+<head> of the agent or instrument (or some other role)• for very general Entities, use the case name instead

KM> (the text-gen of(a Move with (agent (_Hamster43))))

("Manny's hamster moves the object.")KM> (the text-gen of (a Move with

(instrument ((a Tangible-Entity with(plays ((a Vehicle))))))))

("The vehicle moves the object.")KM> (the text-gen of

(a Receive with (recipient (*Manny))))("Manny receives the object.")

Page 18: Text Generation for Instances in the Component Library

The <d-obj> of Events

• <det>+<head> of the object (or some other role)• for very general Entities, use the case name instead• if there is no object, use “something”

KM> (the text-gen of(a Move with (object (_Hamster43))))

("Manny's hamster moves.")KM> (the text-gen of (a Move with

(instrument ((a Tangible-Entity with(plays ((a Vehicle))))))))

("The vehicle moves the object.")KM> (the text-gen of (a Produce))

("The result gets produced from the raw-material.")

Page 19: Text Generation for Instances in the Component Library

The <arguments> of Events

• <text-slot>+<slot> for some list of slots• for very general Entities, use the case name instead

KM> (the text-gen of(a Store with (base ((a Tangible-Entity)))))

("The object gets stored in the base.")KM> (the text-gen of

(a Withdraw with (base ((a Tangible-Entity)))))("The object gets withdrawn from the base.")

KM> (the text-gen of(a Enter with (base ((a Tangible-Entity)))))

("The object enters the container through the portal.")KM> (the text-gen of _Move138)

("The wheel moves manny's hamster from the cageto the door.")

Page 20: Text Generation for Instances in the Component Library

text-particle

• one more thing…– some verbs have particles that are part of the verbseq,

but may be separated from the main verb• look up a number look it up

– the text-particle slot can appear anywhere among the arguments

KM> (the text-gen of (a Knock-Down))("Something gets knocked down.")

KM> (the text-gen of (a Knock-Down with(agent ((a Entity))) (object ((a

Object)))))("The agent knocks the object down.")

Page 21: Text Generation for Instances in the Component Library

The text-gen of States

• mostly covered by the text-gen of Events– the <active-verbseq> is by default “keeps”

– the <passive-verbseq> is by default “is”– the state itself is handled by text-particle

KM> (the text-gen of (a Be-Accessible))("The object is accessible.")

KM> (the text-gen of (a Be-Accessible with(agent ((a Entity)))))

("The agent keeps the object accessible.")

Page 22: Text Generation for Instances in the Component Library

Outline

• Motivation– Why UT is doing text generation

• Interface– What goes in and what comes out

• Customization– How to adapt for new classes

• Future Work– What to do next

Page 23: Text Generation for Instances in the Component Library

Customizing Text Generation

• the text generation system involves 33 special slots that specify the words used in text generation and the rules for combining them

• all slots are inherit-with-overrides so any subclass can redefine any part of text generation

• all slots are dont-cache-values so when instances change their text-gen changes

Page 24: Text Generation for Instances in the Component Library

Roll Your Own

• usually the inherited text generation machinery is good enough for new classes

KM> (Sneak-In has (superclasses (Enter)))(Sneak-In)

KM> (the text-gen of (a Sneak-In with(base ((a Theater)))))

("The object enters the theater through the portal.")

Page 25: Text Generation for Instances in the Component Library

Roll Your Own (cont.)

• customizing text generation for a new Event class usually involves changes to only a few “lexicon” slots

KM> (every Sneak-In has(text-active-verbseq-sg

("sneaks"))(text-active-verbseq-pl ("sneak"))(text-base ("into")))

(Sneak-In)KM> (the text-gen of (a Sneak-In with

(base ((a Theater)))))("The object sneaks into the theater through the portal.")

Page 26: Text Generation for Instances in the Component Library

Roll Your Own (cont.)

• sometimes customization demands moreKM> (Bequeath has (superclasses (Action)))KM> (every Bequeath has (donor ((a Entity)))

(recipient ((a Entity))))KM> (the text-gen of (a Bequeath))

("Something has bequeath done to it.")KM> (every Bequeath has

(text-active-verbseq-sg ("bequeaths"))(text-active-verbseq-pl ("bequeath"))(text-passive-verbseq-sg ("is bequeathed"))(text-passive-verbseq-pl ("are bequeathed"))(text-subj ((the donor of Self)))(text-argslots ((:seq recipient instrument)))(text-recipient ("to"))(text-instrument ("in")))

KM> (the text-gen of (a Bequeath with(object ((a Money))) (instrument ((a Will)))))

("The donor bequeaths the money to the object in the will.")

Page 27: Text Generation for Instances in the Component Library

Outline

• Motivation– Why UT is doing text generation

• Interface– What goes in and what comes out

• Customization– How to adapt for new classes

• Future Work– What to do next

Page 28: Text Generation for Instances in the Component Library

Future Work

1. stop working on text gen, dammit!