740 likes | 865 Views
Generic Adaptation Languages Explicit Intelligence in Adaptive Hypermedia . Dr. Alexandra Cristea a.i.cristea@warwick.ac.uk http://www.dcs.warwick.ac.uk/~acristea/. LAOS Model. Adaptation granularity. lowest level : direct adaptation techniques :
E N D
GenericAdaptation Languages Explicit Intelligence in Adaptive Hypermedia • Dr. Alexandra Cristea • a.i.cristea@warwick.ac.uk • http://www.dcs.warwick.ac.uk/~acristea/
Adaptation granularity • lowest level:direct adaptation techniques: • adaptive navigation support & adaptive presentation(Brusilovsky 1996), implem.: AHA!; expressed in AHAM syntax • techniques usually based on threshold computations of variable-value pairs. • medium level:goal / domain-oriented adaptation techniques: • based on a higher level language that embraces primitive low level adaptation techniques (wrapper) • new techniques: adaptation language (Calvi & Cristea 2002), • high level:adaptation strategies • wrapping layers above • goal-oriented Adaptation Assembly language Adaptation Programming language Adaptation Function calls
How to create an adaptation language? • Adaptation Language as an Intermediate Platform (between authoring environment and adaptation engine) • An interface between the adaptation engineer and the authoring system
“Authoring problem” Defining:- content alternatives & multiple paths through the content - adaptation techniques - whole user-interaction mechanism design Alleviating “Authoring problem”Improving reuse capabilities:(reuse of previously created material & other components)- reuse of static & dynamic parts of the courseware The solutionReuse of dynamics:“Exchanging not only the ingredients, but the recipes as well”Adaptation languages:-LAG - LAG-XLS (read as “LAG-excels”)
How to create an adaptation language? • We need to find out which are the: • Elements of course dynamics • For this, we need to analyse what happens in an adaptive course, and what is done dynamically:
Selection of Media Items • Visual style • Diagrams • Illustrations • Graphs • Flowcharts • Animations+ audio • Verbal style • More text • Possibly audio
Providing navigation paths Sequential style Linear step-by-step learning process Global style Global overview first, then details
Ordering information Reflective style Learn by looking at examples Active style Learn by doing things actively
Types of Adaptive Strategies • Instructional strategies - selection of media items - ordering information / different navigation paths • Instructional meta-strategies– monitoring e.g., preferences for: - certain types of information (e.g. text vs. image) - reading order (e.g. breadth-first vs. depth-first)
Classification of Actions in Adaptive Strategies (from N. Stash)
What does the LAG adaptation language do? • Turing-complete ? – no! • Captures adaptation patterns, typical for AHS, for reuse • We start with a set of desired adaptive behavior: • Inherited from direct adaptation techniques: If => Action • Conditions, Enough conditions • We add more, depending on adaptivity requirements
If, enough ifUM.knowledge > 1 then (PM.GM.Concepts.show = true) for-eachenough(GM.Concept.weight > 2GM.Concept.label== interesting,1) (PM.GM.Concept.show = true)
Select • selecting concept representation • In MOT, given by attributes, so LAG has: • DM.Concept.attribute • GM.Concept • E.g., presentation only: • PM.DM.Concept.attribute.show • PM.GM.Concept.show • PM.GM.Concepts.show
Sort • Sequencing concept representation • Content is sorted alphanumerically on the Concept’s “order” variable • Order of the current concept: • PM.GM.Concept.order • Defaults to Null
Show Content/Link • Showing content of a concept • PM.DM.Concept.attribute.show • PM.GM.Concept.show • Showing the concept in a specific area of the presentation: • PM.MENU.GM.Concept.show • PM.CONTENT.GM.Concept.show
Show Links • Displaying a link to a concept • No difference, only in the navigational areas can they be made available: • PM.TODO.GM.Concept.show • Navigational areas are displayed by default. To switch them off we need: • PM.MENU = false
setDefault • setting defaults FOR-EACH true ( PM.GM.Concept.show[label = ‘’] = true)
Hierarchical actions • Hierarchy attributes: • Parent: the parent concept of a given concept: GM.Concept.parent • Child: the child concept of a given concept: GM.Concept.child GM.Concept.parent.child GM.Concept.group
updates • updating the User Model Overlay variable: UM.GM.Concept.knowledge = 1 Free variable: UM.knowledge += 1
Actions on groups of items • for-each GM.Concept.label == mylabel ( if GM.Concept.weight > 1 then (PM.GM.Concept.show = false)) • PM.GM.Concepts.show = true
Dealing with multiple labels • Example of LIKE if (GM.Concept.label LIKE *text*) then (PM.GM.Concept.show = false)
Concepts & their contents Stressing the overlay structure of user model on top of • Conceptmaps (DM) • UM.DM.stereotype1 = beg • or Lessons (GM): • UM.GM.stereotype1 = beg • or as independent variables: • UM. stereotype1 = beg
Concepts & their contents Stressing the overlay structure of presentation model on top of • Lessons (GM): • PM.GM.Concepts.show = true • UM.GM.knowledge
Type & Order & Label of Attributes • Type of Attributes (in Lessons) usage • GM.Concept.type == title • DM.Concept.<attribute>.type == title • Order of Attributes (in Lessons) usage • PM.GM.Concept.order = 3 • Labels, weights of attributes (in Lessons) usage • GM.Concept.label == beg • GM.Concept.label LIKE *beg*
Special attributes • Event attributes: • Access: a concept is currently been accessed: UM.GM.Concept.access = true • Accessed: display count for a GM concept UM.GM.Concept.accessed > 1
Multiple Selection & Actions • Show all concepts that have not been accessed by the user • PM.GM.Concepts[UM.accessed<1].show = true • That shows all concepts in the GM where UM.GM.Concept.accessed < 1
Layout Adaptation • Menu • Progress Bars • List • Text
Default Layout Progress Bars Menu List Text
Layout Adaptation • Set the layout for an area • Layout[E].type = todo • Layout[E].title = “Todo List” • Set a HTML/Text Layout • Layout[S].type = text • Layout[S].content = “<imgsrc=logo.jpg/>”
Dimming • Example of Dimming content if (GM.Concept.label == “dimthis”) then (PM.GM.Concept.dim = true )
Overall structure of a LAG adaptation strategy // Description // Variables initialization( // what the user sees first ) implementation( // how the user interacts with the system )
Meta-strategies • strategy “[Stored Strategy Name]” “[Code to Execute]” • Meta-Strategy Exampleinitialization( strategy "qoeSetup" "initialization")implementation( strategy "qoeSetup" "implementation" strategy "qoeQOS" "implementation" strategy "qoeMM" "implementation")
LAG resources • LAG Example Strategies: http://adaptive.dcs.warwick.ac.uk/ • LAG Guide including Semantics and examples: http://adaptive.dcs.warwick.ac.uk/lagGuide.pdf • LAG Grammar: • http://adaptive.dcs.warwick.ac.uk/LAGGrammar.txt
LAG Example: Rollout This strategy slowly rolls out (and hides) the attributes of concepts based on how often a concept has been accessed. Concepts are monitored through the title attribute. Concept.beenthere keeps track of visits; Concepts have the label "showatmost" if they should disappear after a while (with weight indicating the number of visits required) and the label "showafter" if they should show up after a while (again, weight indicates the number of visits)
LAG Example: Rollout Code 1/2 • Initialization (UM.GM.Concepts.beenthere = 0PM.GM.Concepts.show = true for-each GM.Concept.label == showafter ( if GM.Concept.weight > 1 then (PM.GM.Concept.show = false ) ))
LAG Example: Rollout Code 2/2 implementation (for-eachUM.GM.Concept.access == true (UM.GM.Concept.beenthere += 1 ) for-each enough(UM.GM.Concept.beenthere >= GM.Concept.weightGM.Concept.label == showatmost ,2) (PM.GM.Concept.show = false ) for-each enough(UM.GM.Concept.beenthere >= GM.Concept.weightGM.Concept.label == showafter ,2) (PM.GM.Concept.show = true ))
LAG Example: BegIntAdv • This strategy shows the beginner concepts first (together with the concepts for all learners). • After all beginner concepts are read, the intermediate concepts are shown as well; • Finally, after all the intermediate concepts are read, the advanced concepts are shown and the course can be viewed completely
LAG Example: BegIntAdv 1/4 initialization(PM.next = truePM.ToDo = truePM.menu = true UM.GM.knowlvl = beg...
LAG Example: BegIntAdv 2/4 for-each (true) ( if ( GM.Concept.label == "beg") then (PM.GM.Concept.show = trueUM.GM.begnum += 1 ) elseif (GM.Concept.label == "int") then (PM.GM.Concept.show = falseUM.GM.intnum += 1 ) elseif (GM.Concept.label == "adv") then (PM.GM.Concept.show = false ) else (PM.GM.Concept.show = true ) ))
LAG Example: BegIntAdv 3/4 implementation ( for-each ( UM.GM.Concept.access == true ) ( if (UM.GM.Concept.accessed == 1) then ( if (GM.Concept.label == beg) then (UM.GM.begnum -= 1 ) elseif (GM.Concept.label == int) then (UM.GM.intnum -= 1 ) )) ...
LAG Example: BegIntAdv 4/4 if (UM.GM.begnum < 1 and UM.GM.knowlvl == beg) then (UM.GM.knowlvl = intPM.GM.Concepts[GM.label == UM.GM.knowlvl].show = true ) elseif (UM.GM.intnum < 1 and UM.GM.knowlvl == int) then (UM.GM.knowlvl = advPM.GM.Concepts[GM.label == UM.GM.knowlvl].show = true ))
LAG Example: instance usage initialization ( PM.GM.Concepts.show = false '\Neural Networks II\Neural Networks I\title'.show = true )
LAG Example: Parent/Child implementation ( // if you visited the parent you should be able to visit the child for-each (UM.GM.Concept.parent.access == true) then ( GM.Concept.show = true ) )
LAG Example: Positioning 1/2 initialization ( PM.CONTENT.GM.Concepts.show = true for-each (GM.Concept.label == menu) then ( PM.MENU.GM.Concept.show = true ) for-each (GM.Concept.label == todo) then ( PM.TODO.GM.Concept.show = true ) for-each (GM.Concept.label == next) then ( PM.NEXT.GM.Concept.show = true ) )