-
Notifications
You must be signed in to change notification settings - Fork 4
Tutorial: Retargeting
contact: [email protected]
In general, we believe that retargeting the application to a new application consists of several crucial steps:
- Identify application domain and its relevant vocabulary, as well as the API; if the API doesn't exist, define/design it.
- Design n-tuple templates to convey semantics to Problem Solver.
- Add relevant tokens (and schemas/constructions, if necessary) to the grammar with the Token Tool.
- Extend existing Core Specializer and Problem Solver as needed for application.
- Build and test the new product.
Below is a hypothetical example of retargeting this system to a new domain.
KARMA (Naryanan, 1997) was a system that made predictions about economic states and policies based on metaphors in language. The original project did not include a module for language analysis, however, and assumed as input an ntuple-like feature-structure.
We considered how one would integrate a working KARMA system with our system, and came up with the steps below.
- Identify application domain and its relevant vocabulary, as well as the API; if the API doesn't exist, define/design it.
Domain: Economic policy metaphors
Vocabulary:
Source: MOTION (stumble, collapse...)
HEALTH (cure, prescribe, sick ...)
TARGET: ECONOMIC POLICY (economy, depression..)
App: (after) KARMA
Example sentence:
India is stumbling in implementing its economic policy
- Design n-tuple templates to convey semantics to Problem Solver.
Action_is_Motion: {
mover: @India
actionary: @stumble
aspect: @progressive
frame: SelfMotion
action: {
actionary: @implement
createdThing: @policy
creator: @India
frame: Creation
}
}
- Add relevant tokens (and schemas/constructions, if necessary) to the grammar with the Token Tool.
India :: Country :: self.m.referent <-- @India
Stumble :: SelfMotion :: self.m.actionary <-- @stumble
Policy :: AbstractNoun :: self.m.ontological-category <-- @policy
Implement :: CreationType :: self.m.actionary <-- @implement
- Extend existing Core Specializer and Problem Solver as needed for application.
We didn't actually implement the application, but here is text describing how the Problem Solver can be extended:
Technically, one needs to extend the CoreProblemSolver Python class for this, and add API calls as appropriate. This >involves some programming, but it also gives a system integrator considerable flexibility for all kinds of APIs, no >matter if they are based on HTTP requests, Sockets, or other protocols.
And the Core Specializer:
Extending the Specializer can be done by subclassing the existing CoreSpecializer, and adding or overriding existing >methods when appropriate. The main methods of the CoreSpecializer govern how the Specializer crawls the SemSpec >according to the declarative instructions provided by ActionSpec templates; these methods should not have to change. >However, if the application-specific Problem Solver needs new types of ``descriptors'', some new code for extracting the >right information and formatting it appropriately might be necessary.
- Build and test the new product.
India is stumbling in implementing its economic policy.
Metaphor: DIFFICULTIES ARE OBSTACLES
Metaphor: INDIA IS A MOVER ALONG A PATH