GenI-0.23.20130212: A natural language generator (specifically, an FB-LTAG surface realiser)

Safe HaskellNone




This module provides basic datatypes specific to Tree Adjoining Grammar tree schemata.



data Ttree a



root :: Tree a -> a

rootUpd :: Tree a -> a -> Tree a

foot :: Tree (GNode a) -> GNode a

setLexeme :: [Text] -> Tree (GNode a) -> Tree (GNode a)

Given a lexical item l and a tree node n (actually a subtree with no children), return the same node with the lexical item as its unique child. The idea is that it converts terminal lexeme nodes into preterminal nodes where the actual terminal is the given lexical item

setAnchor :: FullList Text -> Tree (GNode a) -> Tree (GNode a)

Given a lexical item s and a Tree GNode t, returns the tree t' where l has been assigned to the anchor node in t'

lexemeAttributes :: [Text]

Attributes recognised as lexemes, in order of preference

data GNode gv

A single node of a TAG tree.




gnname :: NodeName
gup :: Flist gv

top feature structure

gdown :: Flist gv

bottom feature structure

ganchor :: Bool

False for na nodes

glexeme :: [Text]

[] for na nodes

gtype :: GType
gaconstr :: Bool
gorigin :: Text

for TAG, this would be the elementary tree that this node originally came from


Typeable1 GNode 
Loadable Macros 
Eq gv => Eq (GNode gv) 
Data gv => Data (GNode gv) 
Binary gv => Binary (GNode gv) 
NFData gv => NFData (GNode gv)

A single node of a TAG tree.

Pretty (GNode GeniVal)

The default show for GNode tries to be very compact; it only shows the value for cat attribute and any flags which are marked on that node.

This is one the places where the pretty representation of a GenI object is different from its GenI-format one

GeniShow gv => GeniShow (GNode gv) 
DescendGeniVal v => DescendGeniVal (GNode v) 
Collectable gv => Collectable (GNode gv) 

type NodeName = Text

gCategory :: Flist GeniVal -> Maybe GeniVal

Return the value of the cat attribute, if available

Fancy disjunction

data SchemaVal

A schema value is a disjunction of GenI values. It allows us to express “fancy” disjunctions in tree schemata, ie. disjunctions over variables and not just atoms (?X;?Y).

Our rule is that that when a tree schema is instantiated, any fancy disjunctions must be “crushed” into a single GeniVal lest it be rejected (see crushOne)

Note that this is still not recursive; we don't have disjunction over schema values, nor can schema values refer to schema values. It just allows us to express the idea that in tree schemata, you can have either variable ?X or ?Y.