FROGS

FROGS stands for A Framework for Developing Natural Language Generation Software. We attempt to look for a reusable software architecture for NLG systems by applying design patterns to abstract the main design decisions involved in the construction of a system of this kind.

Three basic decisions must be taken: a division of the required funcionality into a set of modules, how control information flows between the modules, and which data structures are used to store the relevant information.

Two framework-like libraries of architectural classes have been developed to test these ideas: one in Java and one in C++.

A Java version: FROGS

FROGS is a flexible object-oriented Java-based framework to build Natural Language Generation (NLG) applications taking RAGS (Cahill, 1999) as a reference and thus implementing its main standard definitions for the abstract data model and using XML for the real source data. This tool, which also provides a sample default implementation called jGolen, supports a wide selection of the most common state-of-the-art generation architectures, ranging from a simple monolithic implementation to a revision-based architecture or a blackboard and including the frequently used Reiter's pipeline (Reiter, 1994) or the interactive feedback-based architecture. These architectures usually carry out a series of common generation tasks also provided by the framework, including content determination, discourse planning, sentence aggregation, lexicalization or linguistic realization.

A C++ version: cFROGS

This library, named cFROGS (a C++ Framework based on the Rags architecture for Object-oriented Generation Systems), includes a set of architecture templates that can help users to develop their own applications.

cFROGS provides implemented modules for some of the tasks involved in the text generation process. Each of them is implemented using different Artificial Intelligente paradigms:

  • A Referring Expression Generation module using Evolutionary Algorithms.

See "Uso flexible de soluciones evolutivas para tareas de GeneraciĆ³n de Lenguaje Natural" and "An Evolutionary Approach to Referring Expression Generation and Aggregation" in Publications.

  • A Referring Expression Generation module using Intelligent Agents.

See "Agent-based Solutions for Natural Language Generation Tasks" in Publications.

  • A Lexicalization module using Case-Based Reasoning (CBR).

See "Case Retrieval Nets for Heuristic Lexicalization in Natural Language Generation" and "Case-Based Reasoning for Knowledge-Intensive Template Selection During Text Generation" in Publications.

Existing Instantiations

These libraries have been used so far to implement the following NLG applications:

  • jGoLeN (FROGS), a module that provides textual readings of "conceptual blends", concept maps describing new concepts obtained by blending two existing ones (e.g. "horse-bird")
  • Discourse Director module of MIFE (FROGS), a module that generates customised natural language views of the game-play for each player of a larger application that implements text adventures
  • PipelineWeather (cFROGS), an application that generates simple weather forecasts in natural language
  • PipelineChess (cFROGS), an application that describes fragments of chess games in natural language
  • PRINCE (cFROGS), a text generator in the fairy tales domain.