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

Safe HaskellSafe-Infered

NLP.GenI.Lexicon

Contents

Description

Lexical entries

As a factorisation technique, LTAG grammars are commonly separated into tree schemata (see TreeSchema) and lexical entries. The grammar is what you get by “anchoring” each lexical entry to the relevant tree schemata.

Synopsis

Documentation

type Lexicon = [LexEntry]

Collection of lexical entries

mkLexEntry

Arguments

:: FullList Text

word

-> Text

family name

-> [GeniVal]

parameters list (deprecated)

-> Flist GeniVal

interface (use instead of params)

-> Flist GeniVal

filters

-> Flist GeniVal

equations

-> Sem

semantics

-> LexEntry 

See also mkFullLexEntry This version comes with some sensible defaults.

mkFullLexEntry

Arguments

:: FullList Text

word

-> Text

family name

-> [GeniVal]

parameters list (deprecated)

-> Flist GeniVal

interface (use instead of params)

-> Flist GeniVal

filters

-> Flist GeniVal

equations

-> Sem

semantics

-> [SemPols]

semantic polarities

-> LexEntry 

Variant of mkLexEntry but with more control

iword :: LexEntry -> FullList Text

normally just a singleton, useful for merging synonyms

ifamname :: LexEntry -> Text

tree family to anchor to

iparams :: LexEntry -> [GeniVal]

parameters (deprecrated; use the interface)

iinterface :: LexEntry -> Flist GeniVal

features to unify with tree schema interface

ifilters :: LexEntry -> Flist GeniVal

features to pick out family members we want

iequations :: LexEntry -> Flist GeniVal

path equations

isemantics :: LexEntry -> Sem

lexical semantics

isempols :: LexEntry -> [SemPols]

polarities (must be same length as isemantics)

Converting between lexical/normal semantics

type PolValue = (GeniVal, Int)

An annotated GeniVal. This is for a rather old, obscure variant on the polarity filtering optimisation. To account for zero literal semantics, we annotate each value in the semantics with a positive/negative marker. These markers are then counted up to determine with we need to insert more literals into the semantics or not. See the manual on polarity filtering for more details

fromLexSem :: [Literal PolValue] -> (Sem, [SemPols])

Separate an input lexical semantics into the actual semantics and the semantic polarity entries (which aren't used very much in practice, being a sort of experimental feature to solve an obscure-ish technical problem)

fromLexLiteral :: Literal PolValue -> (Literal GeniVal, SemPols)

Note that by convention we ignore the polarity associated with the predicate itself