Wiki

Clone wiki

inf225public / Navigation DSL

(@badbadboy)

Background:

Ongoing master project, topic: “Natural language understanding and reasoning framework for use in a mobile/GPS navigation assistant”, where we represent current knowledge as fuzzy areas, and words/sentences as fuzzy operators/transformations on these areas.

Project idea

Small natural language- like navigation DSL prototype that can be used for talking to a GPS or a self- driving car.

Phrase examples

“I want to get to <location>”, “Drive slower”, “Drive much slower”, “I want to take a picture”, “Drive faster”, “Stop”, “Continue”, “I [don’t] like motorways”, “I [don’t] like country roads”, “I need gas station”, “I want coffee”, “I am tired”, “I need to sleep”, “This road is boring”, “You are stupid!”, “Very good!”.

What will it do

The interpreter will accept sentences one after another, and:

  • Validate sentences according to the grammar
  • Evaluate and update a set of the parameters according to the information received

Parameters

  • Level of understanding, current phrase
  • Level of understanding, overall (using different heuristics and maybe fuzzy logic-based word representation)
  • Current speed
  • Current location
  • Next destination/junction
  • Goal, short-term
  • Goal, long-term
  • User’s satisfaction level
  • User’s tiredness level
  • Faster roads vs. nicer routes rate

Scope

  • A very simple grammar (during this project, only a tiny bit of flexibility will be allowed in the grammar, while in the future the idea is to make it very relaxed and use rather as a kind of heuristics to help understand natural language input)
  • Some kind of environment to store/update values of the parameters
  • Evaluators for the different parameters. About semantics:
    • I plan to hardcode substantial part of the semantics for now. For example, if a user wants coffee, we will also increase the level of tiredness. Also, if tiredness is high, we will adjust “faster roads vs. nicer routes rate” etc.
    • As time allows, I will also try to implement some semantics in a non-hardcoded way. For example, composing what “drive faster” means from “drive” and “faster” using fuzzy operators. Another example would be decreasing understanding level because words combined in a phrase do not “fit together” according to their (fuzzy) definitions, examples here could include something like “wait faster”.

Technology

Probably Rascal, maybe F# and C#, less likely Haskell.

Updated