CHAPTER 2

Ambiguity, Pronominal Reference and Concepts

2.1 The Ambiguous 'A'

If the user of our natural language system does not avoid the use of the symbol 'a' as a label for a point, we may have to deal with the two sentences:

(a) a point fred has coordinates 259, 563.

(b) a has coordinates 259, 563

the system cannot 'know' which of the two sentence forms it is processing after it has read just one word 'a'. It could therefore take the wrong arc. If the user has input sentence (b) and the system has taken the arc Sl -> S2 the error will be discovered when it fails to find the word point which would enable it to take the arc S2 -> S3. What is required is a mechanism to allow the system to backtrack to Sl and reinstate the input text to its original condition. Our original ATN for this was shown in Figure 1.2. The ATN would advance to S2 and S3 if the 'det' arc and the 'point' arc failed. Unfortunately the 'det' arc will not fail because 'a' will be accepted as a determiner and the system will advance to S2. At this point the system will advance to S3. Instead of advancing to S3 it should fail and restore 'intext'. We do have a general solution for this problem. Note flTSt that every function produces the results shown below:




In the failure condition the intext is restored. One method of solution is therefore to make each of the alternative parsings a separate function or sub-function of ptname. Let these be called ptnamel and ptname2. Ptnamel will assume that 'a' is a determiner and will then fail if the word point is not found. It will exit and restore intext which will allow ptname2 to try by assuming that 'a' is a label for a point.




The program in POPll for 'ptname' utilising these two sub-functions would be:






2.2 The Prolog Equivalent

Earlier, in program 1.4, we suggested that 'isname' could be defined:

isname(W):-ismemb(W,[p, q, r, tom, dick,harry]).

This needs to be extended so that the list of items for which 'isname' yields 'true' includes 'a'.

The definition of ptname shown in program 2.2 will assume it should test for the pattern

'a point