Why Dyna?

From Dyna
Jump to: navigation, search

Overview papers

For the moment, the best published paper is our HLT-EMNLP 2005 paper. Please also see the other interesting overview pages on this site.

An even shorter overview was published at ACL 2004. Its abstract and intro are below.

Abstract of the overview paper

We present the first version of a new declarative programming language. Dyna has many uses but was designed especially for rapid development of new statistical NLP systems.

A Dyna program is a small set of equations, resembling Prolog inference rules, that specify the abstract structure of a dynamic programming algorithm. It compiles into efficient, portable, C++ classes that can be easily invoked from a larger application.

By default, these classes run a generalization of agenda-based parsing, prioritizing the partial parses by some figure of merit. The classes can also perform an exact backward (outside) pass in the service of parameter training.

The compiler already knows several implementation tricks, algorithmic transforms, and numerical optimization techniques. It will acquire more over time: we intend for it to generalize and encapsulate best practices, and serve as a testbed for new practices. Dyna is now being used for parsing, machine translation, morphological analysis, grammar induction, and finite-state modeling.

Introduction to the overview paper

Computational linguistics has become a more experimental science. One often uses real-world data to test one's formal models (grammatical, statistical, or both).

Unfortunately, as in other experimental sciences, testing each new hypothesis requires much tedious lab work: writing and tuning code until parameter estimation ("training") and inference over unknown variables ("decoding") are bug-free and tolerably fast. This is intensive work, given complex models or a large search space (as in modern statistical parsing and machine translation). It is a major effort to break into the field with a new system, and modifying existing systems -- even in a conceptually simple way -- can require significant reengineering.

Such "lab work" mainly consists of reusing or reinventing various dynamic programming architectures. We propose that it is time to jump up a level of abstraction. We offer a new programming language, Dyna, that allows one to quickly and easily specify a model´s combinatorial structure. We also offer a compiler, dynac, that translates from Dyna into C++ classes. The compiler does all the tedious work of writing the training and decoding code. It is intended to do as good a job as a clever graduate student who already knows the tricks of the trade (and is willing to maintain hand-tuned C++).

Personal tools