Interactive Unification in the LKB

When do you want to use interactive unification?

Interactive unification is useful when you find that a sentence which should parse isn't parsing. Go look at the parse chart, and look for the lowest point in the tree where an edge you expect to see isn't there. For example, you have a determiner and a noun, but no edge spanning both of them, and you expect that the head-specifier rule should have built one.

The parser will have of course tried to build a phrase using those daughters and that rule (because it tries everything, as it's doing an exhaustive search). Because it didn't succeed, you don't find the edge in the chart. You can find out why exactly it didn't succeed using interactive unification. This will tell you where you might want to make changes in your grammar so that you can build that edge. Or you might decide that that edge shouldn't be built after all, and go look for another edge that should be there.

How do you do interactive unification?

Some bugs that are hard to detect with interactive unification

The method described above makes use of the HEAD-DTR and NON-HEAD-DTR features. If you happen to have selected the wrong ordering supertype for your rule (head-final or head-initial), you might not be doing what you think you're doing. So, if the result of trying interactive unification is very surprising, consider doing it via the ARGS list instead, unifying the first daughter with the first thing on the ARGS list and the second with the second. (NB: ARGS is not ARG-S.)

Problems with the spelling change aspects of lexical rules can't be debugged in this way.

If you haven't in fact defined the rule (including an instance in rules.tdl) there won't be anything to try unifying with. But, you should discover the lack of the rule when you try to "view" it from the LKB menu.


Back to main course page