In linguistics, realization is the process by which some kind of surface representation is derived from its underlying representation; that is, the way in which some abstract object of linguistic analysis comes to be produced in actual language. Phonemes are often said to be realized by speech sounds. The different sounds that can realize a particular phoneme are called its allophones.
Realization is also a subtask of natural language generation, which involves creating an actual text in a human language (English, French, etc.) from a syntactic representation. There are a number of software packages available for realization, most of which have been developed by academic research groups in NLG. The remainder of this article concerns realization of this kind.
NPPhraseSpec subject = nlgFactory.createNounPhrase("the", "woman"); subject.setPlural(true); SPhraseSpec sentence = nlgFactory.createClause(subject, "smoke"); sentence.setFeature(Feature.NEGATED, true); System.out.println(realiser.realiseSentence(sentence));
In this example, the computer program has specified the linguistic constituents of the sentence (verb, subject), and also linguistic features (plural subject, negated), and from this information the realiser has constructed the actual sentence.
Realisation involves three kinds of processing:
Syntactic realisation: Using grammatical knowledge to choose inflections, add function words and also to decide the order of components. For example, in English the subject usually precedes the verb, and the negated form of smoke is do not smoke.
Morphological realisation: Computing inflected forms, for example the plural form of woman is women (not womans).
Orthographic realisation: Dealing with casing, punctuation, and formatting. For example, capitalising The because it is the first word of the sentence.
The above examples are very basic, most realisers are capable of considerably more complex processing.
A number of realisers have been developed over the past 20 years. These systems differ in terms of complexity and sophistication of their processing, robustness in dealing with unusual cases, and whether they are accessed programmatically via an API or whether they take a textual representation of a syntactic structure as their input.
There are also major differences in pragmatic factors such as documentation, support, licensing terms, speed and memory usage, etc.
It is not possible to describe all realisers here, but a few of the emerging areas are:
- Simplenlg : a document realizing engine with an api which intended to be simple to learn and use, focused on limiting scope to only finding the surface area of a document.
- KPML : this is the oldest realiser, which has been under development under different guises since the 1980s. It comes with grammars for ten different languages.
- FUF/SURGE : a realiser which was widely used in the 1990s, and is still used in some projects today
- OpenCCG : an open-source realiser which has a number of nice features, such as the ability to use statistical language models to make realisation decisions.
- A Gatt and E Reiter (2009). SimpleNLG: A realisation engine for practical applications. Proceedings of ENLG09 
-  - ACL NLG Portal (contains links to the above and many other realisers)