An Overview of SURGE: a Reusable Comprehensive Syntactic Realization Component
What it is about
A short demo paper on SURGE, a syntactic realisation front-end for generators, written in FUF, a functional unification formalism that carries a systemic grammar of English. Its input is a skeletal thematic tree: a process with its participants (agent, affected, possessor) and open-class lexemes, with no function words and no inflection. The realiser maps roles to syntactic functions, fills features by defaults, propagates agreement, selects closed-class words, applies precedence constraints, inflects and linearises. The grammar is split into sub-grammars per category, and the clause grammar into four systems: transitivity, voice, mood and adverbials. The authors report reuse in eight generators with different architectures. Nominals must be given directly in syntactic roles, since no semantic classification of them exists. The paper names ongoing work on Levin alternations, mental and verbal processes and nominalisation. It reports no measurements.
Ideas
- I1. Split the encoder's job as SURGE splits the clause: one table maps the role of a meta token (agent, process, patient) to a syntactic function, and a separate step chooses the voice. Keys are enums and the tables are BTreeMap. Measure the construction residual before and after the split.
- I2. Defaults as a counted table. SURGE fills definiteness and person by defaults and copies agreement from subject to verb. In
tools/translate/src/profile.rs, learn per (concept, tag) the most frequent value of such features on the target side, and let the encoder apply it unless an author delta overrides it. - I3. An over-generation guard. SURGE blocks "hands the editor it" with a feature on the possessed role. Add a check that refuses a pronoun when the same role already has a full noun in the meta token, and count how often it fires on KJV to WEB.
- I4. A coverage list by construction. SURGE's own list of what it cannot generate (inversion, topicalisation, complex relatives) is a ready checklist. Keep the same list in the translator's report and see which of its divergence classes already show these constructions.
For Mova
The code is tools/translate/src/profile.rs (the encoder) and en/src/lin.rs (linearisation). The ideas touch open problem 4 (function words and boundaries as features of meta tokens) and problem 3 (the encoder should write trees, not word strings). The paper gives a design, not numbers, so every gain must come from our own runs, measured twice.
Cite
@inproceedings{elhadad1996overview,
title = {{An Overview of SURGE: a Reusable Comprehensive Syntactic Realization Component}},
author = {Elhadad, Michael and Robin, Jacques},
booktitle = {Eighth International Natural Language Generation Workshop (Posters and Demonstrations)},
year = {1996},
doi = {10.18653/v1/w96-0501},
url = {https://doi.org/10.18653/v1/w96-0501}
}This page in Markdown → https://md.mova.elamur.ai/free/en/docs/papers/elhadad-1996-overview-surge-reusable-comprehensive-syntactic/