maybe I just suck at this
I'm doing this all wrong. I keep telling myself that I'm doing this all wrong. I feel like I should
doing more
stuff, picking a direction and running with it. Instead, I just try to read things (which I don't understand, which just makes me fall asleep), or I spend a lot of time doodling, slash pacing the hall. Doodling and "thinking" is fine, as long as you got something to think with. All fire and no fuel.
It's not that I'm not trying. I'm just doing it all wrong. There is a difference.
At least I'm starting to put this stuff down in computer [in mindmap form; harness the chaos], so that I go around in circles less (less likely to forget what I just came across two days ago).
Furthermore, the Eric-is-dumb problem is not the point. Whatever my limitations are, I should be learning to work around them. If your brain is a lemon, make lemonaaaaaaaaaaade. It's all methodology, custom methodology. Yep.
underspecification for NLG
It occurred to me that I should go see what other people how other people use this notion of underspecification in NLG. Found a couple of papers, one on incremental generation (it uses this thing called Constraint Language for Lambda Structures), and then another thing by some folks in Italy that says something about mixing template based and NLG-based generation in a more principled fashion. I couldn't really read the articles very well, brain too foggy, rate of information absorption too low.
M+S
learning more about parsing (ch12) 12.1 is nice in a way, short bursts of info-nuggets. Was interested to learn about the PARSEVAL metric (which reminds me of some objections we had to n-gram based evaluation metrics; could something like this be applied? watch for easiness-to-fool though... or is that PTB related?). Grateful to be nudged into not thinking that PCFGs are the only way to add probabilities to a CFG (for example, p left-corner grammars [good thing I made the effort to understand that left-corner parsing stuff a couple of years ago]). Had a brief taste of dep parsing, very brief.
rtg
When searching for the above, I accidentally stumbled on some very fresh seminar slides (23 may 2008) on
Regular tree grammars as an underspecification formalism [A. Koller]. I wasn't really paying attention (again more of this inability to absorb information quickly), but I sort of get this idea of eliminating redundant/identical unpackings from a packed structure (i.e. before you actually do the unpacking)... and saw some impressive looking performance estimates (e.g. something which should take billions of years would only take 75 seconds). Sounds like a pretty cool idea, another variant of, eliminating combinatorial blow-up via exact [non-lossy] methods by getting rid of the stupid stuff. [which is makes the polarities stuff cool; thanks, G!]. Or maybe I didn't actually understand the slides. But it may be good to look into this. Downloaded a Graehl and Knight paper called
Training Tree Transducers which looks pretty incomprehensible to me (in the Eric-is-dumb sense)
underspecification bis
Still banging my head against the wall about this one. What the heck can I say about this? It occurred to me maybe that I am thinking about it completely the wrong way (no shit). Instead of saying "how do we introduce a notion of underspecification into our semantic inputs [which would work with the SCFG stuff] so as to permit saying things in more than one way", I should instead be working backwards, saying "what is the absolute minimum that goes into a message, and then how would we embellish it to guide the generator?"
For the trains time table, and just the simple examples we've seen, it looks like we can't say anything less than:
leave(train_1, city_1, times(t1,t2,t3))
Oh oops. I've implicitly aggregated the times (what if you want to print multiple slices, say tell about different cities). Would it be more something like
leave(train_1,city_1,t1), leave(train_1,city_1,t2), leave(train_1,city_1,t3)
? Hmm, ok, confusing myself. Maybe we should just make the assumption that pre-aggregated units are inviolable and that is that. In other words, if the input specification lumps something together, you can't split it up! (On the other hand, you could lump together other stuff if you wanted)
Idea then would be that you could add hints to bits of the message with extra information to guide the generator:
leave:[lex=depart](train_1:[ref=pronoun],city_1,times(t1,t2,t3))
Still not sure what to do about multi-sentential generation. We should really just have a philosophy of keeping things simple and stupid [because we don't understand all the literature out there]. Assume discourse is a tree, the leaves of which correspond to individual messages. Discourse relations are binary. No textual order implied [learned from context]. Still have no idea about what an appropriate inventory of relations should be, so I propose the make-it-up-as-we-go-along strategy (frantically flipping through related work to see what exists). Discourse relations can also be annotated in the same fashion with guiding information.
It's conceivable that this [the hints idea] could be made to work with the SCFG stuff. In its lexical acquisition phase, we would pick up the link between hints and specific connectives. Would also perform acquisition over un-hinted inputs, paired with same texts.
I'm also worried about the referring expressions. If we've got some entity to refer to, and it has some attributes (say, the big red onion), how do we make repeated references to it without having to duplicate all the attributes [baroque solution: go ahead and duplicate the attributes]. To be clear, we do not necessarily have to think about generating distinguishing descriptions [that would require more fancy tech], but we do want to be able to refer to it more than one way. Well, actually, what do we want really? We could just be happy with being able to discriminate between pronoun, common-noun phrase (the onion), and proper-name. We could treat the fully specified thing (the big red onion) the same as a proper name. We could maybe have a separate lookup table that maps from, say common-noun-phrase(x1) to "the onion" and pronoun(x1) to "it". We could then say that it's not the job of the probabilistic component to learn these. Just plug in templates like _COMMON-NOUN(x1)_ and let them be filled in with post-processing. All we do then is learn the distinction between types of expressions.
I have no idea what I'm saying. No justification for this, no prior research, no specific questions which lead me to think that this makes any sort of sense. Just making this shit up. It sort of sounds like an idea [likely a rehash of something I saw somewhere else]. Question is: how can I run with this? Could I write a MR grammar for a hinted input?