ANNOUNCE: brillig 0.3 - not quite the Brill tagger

Eric Y. Kow eric.kow at
Sat Sep 3 11:12:55 BST 2011


On Sat, Sep 03, 2011 at 11:54:26 +0200, Daniël de Kok wrote:
> It's good to see some NLP infrastructure is being written. From a
> quick glance through the code, I wonder if transformation rules can be
> made more expressive easily. E.g. it would be nice if a rule has a
> list of atomic conditions that are checked. Something along these
> lines (String and less type classes used for brevity):

Hey, thanks for the suggestion! I've queued it up for my list of
things to play around with.  No promises on when I'll get around
to it, but would be thrilled to see patches and new maintainers
in the meantime

> data Context =
>   Context {
>     ctxWords :: Zipper Word,
>     ctxTags  :: Zipper Tag
>   }

Right, word conditions might be nice to have.  I guess
context should be represented as Zipper (Word, Tag)

> class Condition c where
>   conditionApplies :: c -> Context -> Bool
> data CondBox = forall c . (Condition c, Show c) => MkCond c
> instance Show CondBox where
>   show (MkCond c) = show c

Hmm, using existential types to support mixing and matching
of arbitrary conditions, even those defined outside the
library :-)

Also, one property that would be good to keep is easily reading
rules and writing them to files.  I guess a small issue to
resolve there is parse ambiguity (as in parsing the rules
files).  We'll probably have to move to something a tad more
verbose, like prefixing each condition with a name.

One other thing, is looking through hackage, I notice Grzegorz
Chrupała's sequor package which from the description sounds like
something brillig could try to use (it's meant to provide a family
of POS taggers)...

Eric Kow <>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <>

More information about the NLP mailing list