Announce: GenI 0.22

Eric Kow eric.kow at gmail.com
Sun Apr 22 17:49:58 BST 2012


Hi all,

I'm pleased to announce the long overdue GenI and geni-gui 0.22 on Hackage.

GenI is a component for Natural Language Generation (NLG) systems.  NLG involves many jobs, and the one GenI does consists in putting words in the right order. You give it a grammar and a semantic graph as input, GenI does some crunching and spits out a list of sentences as output.  One of the interesting things you can do in GenI is to explore different ways of saying the same thing, for example, depending on the grammar you use, you can give it inputs that generate the (almost) equivalent sentences:

* John gave a present to Mary
* Mary was given a present by John
* It was John that gave Mary a present
* …

GenI also comes with a companion package geni-gui, which lets you study how GenI tries to build up its sentences from input.

To install GenI

    cabal update
    cabal install GenI

To install geni-gui, first install [wxHaskell](http://haskell.org/haskellwiki/wxHaskell), and then

    cabal install geni-gui

There are also a couple of free/open-source helper utilities, geniserver (HTTP/JSON interface to GenI) and genireport (for large scale grammar development).  I'll try to put together a bit more information on this later.

For more information about GenI, have a look at http://projects.haskell.org/GenI or just get in touch with me :-)

Thanks!

Eric

(who hopes that this marks an end to three years of “I'm sorry, can you grab the unstable version from the darcs repo?”)

GenI 0.22, 14 Apr 2012
----------------------
Note that the changes between this release and 0.20 are considered to be under
the BSD3 license.  GenI overall remains dual-licensed under the GPL and any
commercial-use terms you may wish to negotiate with INRIA. Having secured the
rights to use GenI 0.20, you may freely use GenI 0.22 in a similar fashion.

CHANGES TO WATCH OUT FOR

* Separation of geni and geni-gui into two packages;
  simpler installation
* Now using the top feature for lemanchors instead of bot
* Empty disjunctions forbidden in unification variables
* JSON input/output to morph processors have changed
* Lexical selection unifies semantics of tree schema + lemma with
  input semantics.

GUI

* New results tab with reminder of inputs
* Add gui element to display unanchored lexical selection.
* Jump to new tab in debugger panel when created.
* Update gui to use Pretty instead of Show
* Rename $algo-session tab to "tree assembly"
* Make warnings resizable.
* Fix display of path equations with 'interface' in them.
* Fix #50 - load button has no effect.
* Fix #49 - correct order that leaf nodes are returned.
* Show GenI version in About box.
* Add detect polarities and root feature editor to main gui.

DOCUMENTATION

* Literate GenI and genimanual replaced with
  http://projects.haskell.org/GenI/manual

GENERAL

* Builds with GHC 7
* Core behaviour
     * Early null-adjunction and semfilter obligatory
     * Handling of zero-literal semantic items restored
     * Unconstrained polarities in automaton construction.
       This makes it possible to do polarity detection with only a
       weakly specified root feature like [cat:_], and without needing
       the relevant feature to be implemented everywhere.

* Flags:
     * --trees (used to be --macros; latter is deprecated)
     * --batchdir now optional (defaults to a new temp dir)
     * --maxsteps (stop after N steps)
     * --extrapol REMOVED (use root feature instead)
* Logging facility (not used much in GenI yet)
  Can be configured in ~/.geni/config.yaml, for example
  logging:
   -
     name     : NLP.GenI.Console
     level    : WARN
     format   : simple "$msg"
   -
     name     : NLP.Geni.LexicalSelection
     level    : DEBUG
     format   : simple "$utcTime $loggername $msg"
     handler  : stderr
* Less repetition in warnings (hopefully easier to read)
* More hiding of constructors for safety
* New enrichment option for setting co-anchors (foo.lex=hello)
* Lexical selection performance enhancements
* Variables that only occur once are converted to anonymous,
  should make unification a bit more efficient
* Fix #39: reject malformed root feature input.
* New feature:
  * Variables with constraints on their possible values (?X/foo|bar)
  * Fancy disjunctions: tree schemata now allow disjunctions of
    unification variables (but not recursive). These must flatten down
    to plain old atomic disjunction once converted to elementary trees

* Time metric in statistics (Laura Perez)
* Do top/bottom unification on na-constrained nodes during initialisation.
* Polarity detection relaxed to work with constrained variables too.
  (?X/foo|bar gives the result as foo|bar)
* Bugfix in interpretation of root feature (it should be sorted).
* Flags:
  * --rootfeat always assumed, but defaults to '[cat:_]'
  * '-r' a short command line option for '--rootfeat'.

LIBRARY

* Somewhat safer and easier to understand API
  (still no stability yet)
* Replace String with Text in GeniVal
* Replace Show abuse with custom Pretty class
* Slightly less stateful (no target semantics in state)
* Much rearranging and renaming (sorry!)
* New: ability to provide custom lexical selection action
* New: ability to provide custom morph postprocessing action
* de-haskell98 (Gwern Branwen)
* No more null builder.

TOOLS (darcs get --lazy http://code.haskell.org/GenI)

* new tool, genireport: summarise batch generation results
* geniserver now talks over HTTP using a JSON format
* Use Sylvain Salvati's xmg2geni.xsl instead of geniconvert.
    * xmg2geni: fix treatment of missing lexemes.
    * xmg2geni: treat type=coanchor as other nodes in GenI.
* geniwrapper: illustrates C wrapper of GenI API

-- 
Eric Kow <http://erickow.com>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 203 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://projects.haskell.org/pipermail/nlp/attachments/20120422/ed1dc124/attachment.pgp>


More information about the NLP mailing list