In the previous sections, we have tried to give an outline of some of the different kinds of knowledge that are needed in text understanding (and hence, translation), and how they can be represented. We will now give an idea of how this knowledge can be manipulated automatically. We will do this in two stages. First, we will look at what is called analysis, or parsing . This is the process of taking an input string of expressions, and producing representations of the kind we have seen in the previous section. Second, we will look at synthesis, or generation , which is the reverse process -- taking a representation, and producing the corresponding sentence.
It may be helpful to point out at the beginning that though the representations we have given are generally graphic objects --- tree s or networks drawn with lines --- these are not themselves the representations that the computer deals with. For example, the standard internal representation of a tree is as a list, containing sublists, with any labels on a node being represented as the first element of the list. If we write lists between `(' and `)', and separate elements with commas, then the tree representation given in Figure would look as follows (in fact, we have already shown this sort of representation for linguistic trees).
(S, (NP, (N, users)), (AUX, should), (VP, (V, clean), (NP, (DET, the), (N, printer))))
Lists are one of the datastructures that can be represented and manipulated very easily within a computer.