December 2006 can be characterised by three activities: meeting with C, learning how other surface realisers and NLG systems work (particularly how the SFG camp approach things), and hacking on scripts. The hacking was fun, the reading was useful an the meeting with C was both. That being said, December was also a very lazy month. I think I spent half of my lab time either not there, not doing anything, or whining about my laziness afterwards. May future months be quieter and more productive.
2006 in review
code
2006 was chock full of code: I wrote Perl scripts, Python programs, a Makefile of Doom and Haskell everything.
The Perl scripts (sematiser) were for semi-automated generation of test suites from sentences. This was probably a colossal waste of time, considering that (1) we now have a perfectly good parser (2) the results were crap and wasted a lot of precious C-time cleaning shit up. That being said, it helped us to understand a little bit better what happens when you try to build a large-ish test suite for symbolic methods; and it helped us to get a clearer picture of the utility of TSNLP as a generation resource (eh... not so hot).
The Python program (gtester) was for batch-processing of GenI, being able to run different variants of GenI on the same input and compile the results into a PDF. Debugging gtester was a royal pain in the ass. I should either have thought to build unit tests or switched to a statically/fancilly typed language, hence my conclusion that Haskell is a geeeeeereat script language (except for that readFile thing).
The Makefile of Devastation was so that C could do the whole hack-the-test-suite (or the grammar), recompile via XMG, run via GenI/gtester loop without recompiling everything. Bugs crept in, usually because I got my dependencies wrong, but I get the feeling you can't really blame make for that. I mean, either you get things being run unnecessarily, and that's basically the same as not using Make, or you get things NOT being run when they really should [that's bad]. But then if you want to avoid running things, you need a dependency tracker of SOME sort, so why not use Make? Anyway, after much usage, the Makefile of Destruction seems to solid enough for daily C usage
The Haskell program was me attempting to implement the CKY algorithm for GenI and doing a craptastic job at it. I spent a lot of time coding, but most of this time was generalising GenI so that i could support multiple algorithms. 2006 was when I introduced Replaceable, Collectable, and dispatch filters. Even if it later turns out that we don't use different algorithms in GenI, it should at least make the code a lot cleaner. But please don't look at my CKY code. It sucks. There were also a bunch of Haskell scripts, itty bitty support utilities, largely for the Makefile of Demolition.
words
I did some reading in 2006, though not enough. I learned about efficient TAG parsing techniques, surface realisation search strategies, and chart parsing.
I wrote one paper (the Haskell workshop one) and added a supporting paragraph or two to a couple of others and built posters. I travelled to Sydney for ACL (mainly INLG and TAG+8), gave three posters [one of them not mine] again doing a crapful job. I also went to Portland to give a Haskell workshop talk. It seemed to be pretty well received, so I guess I should be happy or something.
In October, I started writing up my thesis, namely the state of the art. I only got up to 15 pages, or around 12 kilowords. C is pretty reassuring about that, saying that this is because it's the hardest part. I hope 12 kw for over a month is a reasonable amount of time.
ideas...
Did I have any ideas? I think I had a total of three: the latter two being the fruit of my most recent discussion with C. Only one of them is useful, and then, it was really just a technical thing. You could also count the use of typeclasses and combinators as ideas, but that's just engineering, nothing to do with NLG.




