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

Safe HaskellNone

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]Source

Collection of lexical entries

mkLexEntrySource

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.

mkFullLexEntrySource

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 TextSource

normally just a singleton, useful for merging synonyms

ifamname :: LexEntry -> TextSource

tree family to anchor to

iparams :: LexEntry -> [GeniVal]Source

parameters (deprecrated; use the interface)

iinterface :: LexEntry -> Flist GeniValSource

features to unify with tree schema interface

ifilters :: LexEntry -> Flist GeniValSource

features to pick out family members we want

iequations :: LexEntry -> Flist GeniValSource

path equations

isemantics :: LexEntry -> SemSource

lexical semantics

isempols :: LexEntry -> [SemPols]Source

polarities (must be same length as isemantics)

Converting between lexical/normal semantics

type PolValue = (GeniVal, Int)Source

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])Source

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)Source

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