Another problem is posed by rules where the logical form of the head is
shared with the logical form of some other daughter. In fact the rule
of 2.1 is such a rule:
node(np/LF,P0-PN) ---> % np rule [ node(n/LF,P1-PN),node(det/LF,P0-P1) ].
In principle, this situation can lead to nontermination of the algorithm.
A simple (partial) solution to the problem is to augment the algorithm as
follows. In BUG1 only semantic top-down information is used (in the prediction
step). The prediction step can easily be augmented to use some syntactic
information as well. Assuming that the predicate is
a precompiled table of the transitive closure of possible syntactic
links between mothers and heads,
similar to the link predicate in the BUP parser [13] between
mothers and left-most
daughters, the definition
of
and
can be changed as follows:
select_word(node(M/LF,_),node(S/LF,P)):- ( node(S/LF,P) ---> [] ), link(M,S). select_rule(Head,node(M/S,P),Others,node(Syn/_,_)):- ( node(M/S,P) ---> [Head|Ds] ), link(Syn,M).
In most practical cases this technique solves the problem.